Index: Core/Common/src/Core.Common.Controls.TreeView/ITreeView.cs =================================================================== diff -u -r8cae5d69ac2d4cf678486ac2b457c0dfe97089d5 -r80393d2db0b9788fbedadf667391f67f014086e4 --- Core/Common/src/Core.Common.Controls.TreeView/ITreeView.cs (.../ITreeView.cs) (revision 8cae5d69ac2d4cf678486ac2b457c0dfe97089d5) +++ Core/Common/src/Core.Common.Controls.TreeView/ITreeView.cs (.../ITreeView.cs) (revision 80393d2db0b9788fbedadf667391f67f014086e4) @@ -144,6 +144,12 @@ void StartLabelEdit(); /// + /// Checks if label of the can be edited and starts edit mode if this is the case. + /// + /// The to start editing the label for. + void StartLabelEdit(ITreeNode node); + + /// /// Attempts to delete the currently selected data. /// void TryDeleteSelectedNodeData(); Index: Core/Common/src/Core.Common.Controls.TreeView/TreeView.cs =================================================================== diff -u -r8cae5d69ac2d4cf678486ac2b457c0dfe97089d5 -r80393d2db0b9788fbedadf667391f67f014086e4 --- Core/Common/src/Core.Common.Controls.TreeView/TreeView.cs (.../TreeView.cs) (revision 8cae5d69ac2d4cf678486ac2b457c0dfe97089d5) +++ Core/Common/src/Core.Common.Controls.TreeView/TreeView.cs (.../TreeView.cs) (revision 80393d2db0b9788fbedadf667391f67f014086e4) @@ -181,16 +181,6 @@ } } - public bool CanDelete(ITreeNode node) - { - return controller.CanDeleteNode(node); - } - - public bool SelectedNodeCanRename() - { - return controller.CanRenameNode(SelectedNode); - } - public new void CollapseAll() { foreach (var node in Nodes) @@ -225,17 +215,19 @@ } } - /// - /// Checks if label of current node can be edited and starts edit mode if this is the case. - /// public void StartLabelEdit() { - if (!SelectedNodeCanRename()) + StartLabelEdit(SelectedNode); + } + + public void StartLabelEdit(ITreeNode node) + { + if (!controller.CanRenameNode(node)) { return; } - SelectedNode.BeginEdit(); + node.BeginEdit(); } public void RegisterNodePresenter(ITreeNodePresenter presenter) @@ -313,7 +305,7 @@ public void TryDeleteNodeData(ITreeNode treeNode) { - if (!CanDelete(treeNode)) + if (!controller.CanDeleteNode(treeNode)) { MessageBox.Show(Resources.TreeView_DeleteNodeData_The_selected_item_cannot_be_removed, BaseResources.Confirm, MessageBoxButtons.OK); return; Index: Core/Common/src/Core.Common.Gui/ContextMenu/ContextMenuBuilder.cs =================================================================== diff -u -r8cae5d69ac2d4cf678486ac2b457c0dfe97089d5 -r80393d2db0b9788fbedadf667391f67f014086e4 --- Core/Common/src/Core.Common.Gui/ContextMenu/ContextMenuBuilder.cs (.../ContextMenuBuilder.cs) (revision 8cae5d69ac2d4cf678486ac2b457c0dfe97089d5) +++ Core/Common/src/Core.Common.Gui/ContextMenu/ContextMenuBuilder.cs (.../ContextMenuBuilder.cs) (revision 80393d2db0b9788fbedadf667391f67f014086e4) @@ -39,6 +39,12 @@ contextMenu = new ContextMenuStrip(); } + public IContextMenuBuilder AddRenameItem() + { + AddItem(treeViewItemsFactory.CreateRenameItem()); + return this; + } + public IContextMenuBuilder AddDeleteItem() { AddItem(treeViewItemsFactory.CreateDeleteItem()); Index: Core/Common/src/Core.Common.Gui/ContextMenu/IContextMenuBuilder.cs =================================================================== diff -u -r8cae5d69ac2d4cf678486ac2b457c0dfe97089d5 -r80393d2db0b9788fbedadf667391f67f014086e4 --- Core/Common/src/Core.Common.Gui/ContextMenu/IContextMenuBuilder.cs (.../IContextMenuBuilder.cs) (revision 8cae5d69ac2d4cf678486ac2b457c0dfe97089d5) +++ Core/Common/src/Core.Common.Gui/ContextMenu/IContextMenuBuilder.cs (.../IContextMenuBuilder.cs) (revision 80393d2db0b9788fbedadf667391f67f014086e4) @@ -9,7 +9,14 @@ /// public interface IContextMenuBuilder { + /// + /// Adds an item to the , which starts edit mode for the name of . + /// + /// The itself. + IContextMenuBuilder AddRenameItem(); + + /// /// Adds an item to the , which deletes the . /// /// The itself. Index: Core/Common/src/Core.Common.Gui/ContextMenu/TreeViewContextMenuItemFactory.cs =================================================================== diff -u -r8cae5d69ac2d4cf678486ac2b457c0dfe97089d5 -r80393d2db0b9788fbedadf667391f67f014086e4 --- Core/Common/src/Core.Common.Gui/ContextMenu/TreeViewContextMenuItemFactory.cs (.../TreeViewContextMenuItemFactory.cs) (revision 8cae5d69ac2d4cf678486ac2b457c0dfe97089d5) +++ Core/Common/src/Core.Common.Gui/ContextMenu/TreeViewContextMenuItemFactory.cs (.../TreeViewContextMenuItemFactory.cs) (revision 80393d2db0b9788fbedadf667391f67f014086e4) @@ -31,8 +31,42 @@ } /// + /// Creates a which is bound to the action of renaming + /// the . + /// + /// The created . + public ToolStripItem CreateRenameItem() + { + var toolStripMenuItem = new ToolStripMenuItem(Resources.Rename) + { + ToolTipText = Resources.Rename_ToolTip, + Image = Resources.RenameIcon, + Enabled = treeNode.Presenter.CanRenameNode(treeNode) + }; + toolStripMenuItem.Click += (s, e) => treeNode.TreeView.StartLabelEdit(treeNode); + return toolStripMenuItem; + } + + /// + /// Creates a which is bound to the action of deleting + /// the . + /// + /// The created . + public ToolStripItem CreateDeleteItem() + { + var toolStripMenuItem = new ToolStripMenuItem(Resources.Delete) + { + ToolTipText = Resources.Delete_ToolTip, + Image = Resources.DeleteIcon, + Enabled = treeNode.Presenter.CanRemove(treeNode.Parent.Tag, treeNode.Tag) + }; + toolStripMenuItem.Click += (s, e) => treeNode.TreeView.TryDeleteNodeData(treeNode); + return toolStripMenuItem; + } + + /// /// Creates a which is bound to the action of expanding - /// the . + /// the . /// /// The created . public ToolStripItem CreateExpandAllItem() @@ -50,7 +84,7 @@ /// /// Creates a which is bound to the action of collapsing - /// the . + /// the . /// /// The created . public ToolStripItem CreateCollapseAllItem() @@ -65,22 +99,5 @@ toolStripMenuItem.Click += (s, e) => treeNode.TreeView.CollapseAll(treeNode); return toolStripMenuItem; } - - /// - /// Creates a which is bound to the action of deleting - /// the current . - /// - /// The created . - public ToolStripItem CreateDeleteItem() - { - var toolStripMenuItem = new ToolStripMenuItem(Resources.Delete) - { - ToolTipText = Resources.Delete_ToolTip, - Image = Resources.DeleteIcon, - Enabled = treeNode.Presenter.CanRemove(treeNode.Parent.Tag, treeNode.Tag) - }; - toolStripMenuItem.Click += (s, e) => treeNode.TreeView.TryDeleteNodeData(treeNode); - return toolStripMenuItem; - } } } \ No newline at end of file Index: Core/Common/src/Core.Common.Gui/Core.Common.Gui.csproj =================================================================== diff -u -r148b5639633795054317d492507c072ee0bd5ada -r80393d2db0b9788fbedadf667391f67f014086e4 --- Core/Common/src/Core.Common.Gui/Core.Common.Gui.csproj (.../Core.Common.Gui.csproj) (revision 148b5639633795054317d492507c072ee0bd5ada) +++ Core/Common/src/Core.Common.Gui/Core.Common.Gui.csproj (.../Core.Common.Gui.csproj) (revision 80393d2db0b9788fbedadf667391f67f014086e4) @@ -523,6 +523,9 @@ + + +