diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj
index 768084692a..0ca5cdeebf 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/AvalonEdit.AddIn.csproj
@@ -87,6 +87,7 @@
+
ContextActionOptions.xaml
diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ClipboardRing.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ClipboardRing.cs
index 0015a26541..a47657b084 100644
--- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ClipboardRing.cs
+++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ContextActions/ClipboardRing.cs
@@ -1,22 +1,90 @@
-/*
- * Created by SharpDevelop.
- * User: hp
- * Date: 2013-12-22
- * Time: 16:09
- *
- * To change this template use Tools | Options | Coding | Edit Standard Headers.
- */
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Windows;
+
+using ICSharpCode.Core;
+using ICSharpCode.Core.Presentation;
+using ICSharpCode.NRefactory.Semantics;
+using ICSharpCode.NRefactory.TypeSystem;
+using ICSharpCode.SharpDevelop;
+using ICSharpCode.SharpDevelop.Editor;
+using ICSharpCode.SharpDevelop.Editor.Commands;
+using ICSharpCode.SharpDevelop.Editor.ContextActions;
+using ICSharpCode.SharpDevelop.Refactoring;
namespace ICSharpCode.AvalonEdit.AddIn.ContextActions
{
- ///
- /// Description of ClipboardRing.
- ///
- public class ClipboardRing
+ public class ClipboardRing : ResolveResultMenuCommand
+ {
+ public override void Run(ResolveResult symbol)
+ {
+ ITextEditor editor = SD.GetActiveViewContentService();
+ EditorRefactoringContext context = new EditorRefactoringContext(editor);
+ MakePopupWithClipboardOptions(context).OpenAtCaretAndFocus();
+ }
+
+ static ContextActionsPopup MakePopupWithClipboardOptions(EditorRefactoringContext context)
+ {
+ var popupViewModel = new ContextActionsPopupViewModel();
+ popupViewModel.Title = MenuService.ConvertLabel(StringParser.Parse("${res:SharpDevelop.Refactoring.ClipboardRing}"));
+ popupViewModel.Actions = BuildClipboardRingData(context);
+ return new ContextActionsPopup { Actions = popupViewModel };
+ }
+
+ static ObservableCollection BuildClipboardRingData(EditorRefactoringContext context)
+ {
+ var clipboardRing = ICSharpCode.SharpDevelop.Gui.TextEditorSideBar.Instance;
+ var clipboardRingItems = clipboardRing.GetClipboardRingItems();
+
+ var list = new ObservableCollection();
+ foreach (var item in clipboardRingItems) {
+ list.Add(new ContextActionViewModel(new ClipboardRingAction(item), context));
+ }
+
+ return list;
+ }
+ }
+
+ public class ClipboardRingAction : IContextAction
{
- public ClipboardRing()
+ string Text;
+
+ public string DisplayName { get; private set; }
+
+ public IEntity Entity { get; private set; }
+
+ public ClipboardRingAction(string text)
+ {
+ string entry = text.Trim();
+ if(entry.Length > 50)
+ entry = entry.Substring(0,47) + "...";
+
+ this.DisplayName = entry;
+ this.Text = text;
+ }
+
+ public IContextActionProvider Provider
+ {
+ get { return null; }
+ }
+
+ public string GetDisplayName(EditorRefactoringContext context)
+ {
+ return DisplayName;
+ }
+
+ public void Execute(EditorRefactoringContext context)
{
+ /*
+ if(context == null)
+ MessageBox.Show("null context :" + Text);
+ else
+ MessageBox.Show(context.CaretLocation + " : " + Text);*/
}
}
}
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 4b8374bda6..e5090d3596 100644
--- a/src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs
+++ b/src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs
@@ -2,6 +2,8 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
+using System.Collections;
+using System.Collections.Generic;
using System.IO;
using System.Xml;
@@ -78,6 +80,17 @@ namespace ICSharpCode.SharpDevelop.Gui
this.ActiveTab = clipboardRing;
}
+ public List GetClipboardRingItems()
+ {
+ var list = new List();
+ foreach (var item in clipboardRing.Items) {
+ string itemData = item.Tag as string;
+ if (itemData != null)
+ list.Add(itemData);
+ }
+ return list;
+ }
+
public void PutInClipboardRing(string text)
{
if (clipboardRing != null) {