From 85c7b54d859ea61e3a0be7b42e61030a769eba21 Mon Sep 17 00:00:00 2001 From: mrward Date: Sun, 6 Feb 2011 11:49:22 +0000 Subject: [PATCH] Fix right click menu in XML tree view. --- .../XmlEditor/Project/Src/CopyXmlTreeNode.cs | 21 ++++++ .../XmlEditor/Project/Src/CutXmlTreeNode.cs | 21 ++++++ .../Project/Src/DeleteXmlTreeNode.cs | 21 ++++++ .../XmlEditor/Project/Src/PasteXmlTreeNode.cs | 21 ++++++ .../Src/XmlTreeNodeClipboardCommand.cs | 40 +++++++++++ .../XmlEditor/Project/XmlEditor.addin | 67 ++----------------- .../XmlEditor/Project/XmlEditor.csproj | 5 ++ 7 files changed, 133 insertions(+), 63 deletions(-) create mode 100644 src/AddIns/DisplayBindings/XmlEditor/Project/Src/CopyXmlTreeNode.cs create mode 100644 src/AddIns/DisplayBindings/XmlEditor/Project/Src/CutXmlTreeNode.cs create mode 100644 src/AddIns/DisplayBindings/XmlEditor/Project/Src/DeleteXmlTreeNode.cs create mode 100644 src/AddIns/DisplayBindings/XmlEditor/Project/Src/PasteXmlTreeNode.cs create mode 100644 src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlTreeNodeClipboardCommand.cs diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/CopyXmlTreeNode.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/CopyXmlTreeNode.cs new file mode 100644 index 0000000000..cd4d5203fd --- /dev/null +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/CopyXmlTreeNode.cs @@ -0,0 +1,21 @@ +// 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 ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.XmlEditor +{ + public class CopyXmlTreeNode : XmlTreeNodeClipboardCommand + { + protected override bool GetEnabled(IClipboardHandler editable) + { + return editable.EnableCopy; + } + + protected override void Run(IClipboardHandler editable) + { + editable.Copy(); + } + } +} diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/CutXmlTreeNode.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/CutXmlTreeNode.cs new file mode 100644 index 0000000000..1a8bba9292 --- /dev/null +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/CutXmlTreeNode.cs @@ -0,0 +1,21 @@ +// 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 ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.XmlEditor +{ + public class CutXmlTreeNode : XmlTreeNodeClipboardCommand + { + protected override bool GetEnabled(IClipboardHandler editable) + { + return editable.EnableCut; + } + + protected override void Run(IClipboardHandler editable) + { + editable.Cut(); + } + } +} diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/DeleteXmlTreeNode.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/DeleteXmlTreeNode.cs new file mode 100644 index 0000000000..a6542e77a8 --- /dev/null +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/DeleteXmlTreeNode.cs @@ -0,0 +1,21 @@ +// 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 ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.XmlEditor +{ + public class DeleteXmlTreeNode : XmlTreeNodeClipboardCommand + { + protected override bool GetEnabled(IClipboardHandler editable) + { + return editable.EnableDelete; + } + + protected override void Run(IClipboardHandler editable) + { + editable.Delete(); + } + } +} diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/PasteXmlTreeNode.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/PasteXmlTreeNode.cs new file mode 100644 index 0000000000..3f5ddce0d7 --- /dev/null +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/PasteXmlTreeNode.cs @@ -0,0 +1,21 @@ +// 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 ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.XmlEditor +{ + public class PasteXmlTreeNode: XmlTreeNodeClipboardCommand + { + protected override bool GetEnabled(IClipboardHandler editable) + { + return editable.EnablePaste; + } + + protected override void Run(IClipboardHandler editable) + { + editable.Paste(); + } + } +} diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlTreeNodeClipboardCommand.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlTreeNodeClipboardCommand.cs new file mode 100644 index 0000000000..bb2949f222 --- /dev/null +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlTreeNodeClipboardCommand.cs @@ -0,0 +1,40 @@ +// 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 ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; + +namespace ICSharpCode.XmlEditor +{ + public abstract class XmlTreeNodeClipboardCommand : AbstractMenuCommand + { + public override bool IsEnabled { + get { + IClipboardHandler editable = GetClipboardHandler(); + if (editable != null) { + return GetEnabled(editable); + } + return false; + } + } + + IClipboardHandler GetClipboardHandler() + { + return WorkbenchSingleton.Workbench.ActiveContent as IClipboardHandler; + } + + protected abstract bool GetEnabled(IClipboardHandler editable); + protected abstract void Run(IClipboardHandler editable); + + public override void Run() + { + if (IsEnabled) { + IClipboardHandler editable = GetClipboardHandler(); + if (editable != null) { + Run(editable); + } + } + } + } +} diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin b/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin index f3508d1256..ac472dcdcf 100644 --- a/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.addin @@ -129,60 +129,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + class="ICSharpCode.XmlEditor.CutXmlTreeNode"/> + class="ICSharpCode.XmlEditor.CopyXmlTreeNode"/> + class="ICSharpCode.XmlEditor.PasteXmlTreeNode"/> + class="ICSharpCode.XmlEditor.DeleteXmlTreeNode"/> diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj b/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj index 12e980a04c..48be33f6a7 100644 --- a/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/XmlEditor.csproj @@ -83,10 +83,13 @@ Form + + + @@ -109,6 +112,7 @@ + @@ -168,6 +172,7 @@ + UserControl