From 71a6ee8bfc159e2cf8dde3a920bc01644f7f82b7 Mon Sep 17 00:00:00 2001 From: Patryk Mikos <patryk912@gmail.com> Date: Sat, 28 Dec 2013 12:51:10 +0100 Subject: [PATCH] ClipboardRingPopup support for empty ClipboardRing --- data/resources/StringResources.resx | 3 +++ .../Src/ContextActions/ClipboardRing.cs | 10 ++++++++-- .../Src/Gui/Components/SideBar/TextEditorSideBar.cs | 4 ++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/data/resources/StringResources.resx b/data/resources/StringResources.resx index 9dcde783ec..ccd573e577 100644 --- a/data/resources/StringResources.resx +++ b/data/resources/StringResources.resx @@ -6437,6 +6437,9 @@ Removed the end part of the original message ", reason '${Message}'" since this <data name="SharpDevelop.Refactoring.ClipboardRing" xml:space="preserve"> <value>Clipboard ring</value> </data> + <data name="SharpDevelop.Refactoring.ClipboardRingEmpty" xml:space="preserve"> + <value>Clipboard ring is empty</value> + </data> <data name="SharpDevelop.Refactoring.ClipboardRingCommand" xml:space="preserve"> <value>From clipboard ring</value> </data> diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ClipboardRing.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ClipboardRing.cs index 763a123525..61aa89f178 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ClipboardRing.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ClipboardRing.cs @@ -34,8 +34,14 @@ namespace ICSharpCode.AvalonEdit.AddIn.ContextActions static ContextActionsPopup MakePopupWithClipboardOptions(EditorRefactoringContext context) { var popupViewModel = new ContextActionsPopupViewModel(); - popupViewModel.Title = MenuService.ConvertLabel(StringParser.Parse("${res:SharpDevelop.Refactoring.ClipboardRing}")); - popupViewModel.Actions = BuildClipboardRingData(context); + var actions = BuildClipboardRingData(context); + + string labelSource = "${res:SharpDevelop.Refactoring.ClipboardRing}"; + if (actions == null || actions.Count == 0) + labelSource = "${res:SharpDevelop.Refactoring.ClipboardRingEmpty}"; + + popupViewModel.Title = MenuService.ConvertLabel(StringParser.Parse(labelSource)); + popupViewModel.Actions = actions; return new ClipboardRingPopup { Actions = popupViewModel }; } diff --git a/src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs b/src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs index a1b31ae7e8..2985cab7f9 100644 --- a/src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs +++ b/src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs @@ -83,11 +83,15 @@ namespace ICSharpCode.SharpDevelop.Gui public List<string> GetClipboardRingItems() { var list = new List<string>(); + if (clipboardRing == null || clipboardRing.Items == null) + return list; + foreach (var item in clipboardRing.Items) { string itemData = item.Tag as string; if (itemData != null) list.Add(itemData); } + return list; }