From fdb8c49337e2978e417a85ba02ddc49a96f059d2 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sat, 11 Mar 2006 20:24:20 +0000 Subject: [PATCH] SD2-723. Can now use F2 key to edit a project browser node. The ExtTreeView checks the CanLabelEdit property on the node before allowing the edit. No error message shown if the project browser node's text is unchanged after renaming. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1214 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Gui/Components/ExtTreeView/ExtTreeNode.cs | 2 +- .../Gui/Components/ExtTreeView/ExtTreeView.cs | 17 ++++++++++------- .../TreeNodes/AbstractProjectBrowserTreeNode.cs | 11 ----------- .../ProjectBrowser/TreeNodes/DirectoryNode.cs | 6 ++++++ .../Pads/ProjectBrowser/TreeNodes/FileNode.cs | 4 +++- .../TreeNodes/SolutionFolderNode.cs | 1 + .../TreeNodes/SolutionItemNode.cs | 1 + .../ProjectBrowser/TreeNodes/SolutionNode.cs | 1 + 8 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs index f06ff92e3d..acd742041b 100644 --- a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs +++ b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs @@ -115,7 +115,7 @@ namespace ICSharpCode.SharpDevelop.Gui } #region Label edit - protected bool canLabelEdit = true; + protected bool canLabelEdit = false; public virtual bool CanLabelEdit { get { return canLabelEdit; diff --git a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs index ff1d2427cc..c810653a2e 100644 --- a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs +++ b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeView.cs @@ -139,21 +139,24 @@ namespace ICSharpCode.SharpDevelop.Gui if (node == null) { return; } - node.EnsureVisible(); - SelectedNode = node; - LabelEdit = true; - node.BeforeLabelEdit(); - node.BeginEdit(); + + if (node.CanLabelEdit) { + node.EnsureVisible(); + SelectedNode = node; + LabelEdit = true; + node.BeforeLabelEdit(); + node.BeginEdit(); + } } - protected override bool ProcessDialogKey(Keys keyData) + protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch (keyData) { case Keys.F2: StartLabelEdit(SelectedNode as ExtTreeNode); break; } - return base.ProcessDialogKey(keyData); + return base.ProcessCmdKey(ref msg, keyData); } protected override void OnAfterLabelEdit(NodeLabelEditEventArgs e) diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs index 47291e495a..8cfd9b8576 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/AbstractProjectBrowserTreeNode.cs @@ -30,17 +30,6 @@ namespace ICSharpCode.SharpDevelop.Project string toolbarAddinTreePath = null; protected bool autoClearNodes = true; - protected bool canLabelEdited = true; - - /// - /// True, if this node can be label edited, false otherwise. - /// - public bool CanLabelEdited { - get { - return canLabelEdited; - } - } - public virtual string ToolbarAddinTreePath { get { diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs index e89e5c2eb9..4a91024f72 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs @@ -244,11 +244,13 @@ namespace ICSharpCode.SharpDevelop.Project { sortOrder = 1; SetIcon(); + canLabelEdit = true; } public DirectoryNode(string directory) : this(directory, FileNodeStatus.None) { sortOrder = 1; + canLabelEdit = true; } CustomNode removeMe = null; public DirectoryNode(string directory, FileNodeStatus fileNodeStatus) @@ -262,6 +264,7 @@ namespace ICSharpCode.SharpDevelop.Project removeMe.AddTo(this); SetIcon(); + canLabelEdit = true; } /// @@ -482,6 +485,9 @@ namespace ICSharpCode.SharpDevelop.Project if (!FileService.CheckDirectoryName(newName)) { return; } + if (String.Compare(Text, newName, true) == 0) { + return; + } string oldText = Text; Text = newName; if (Directory != null) { diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs index af2a0013a1..a05641e275 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/FileNode.cs @@ -19,7 +19,7 @@ namespace ICSharpCode.SharpDevelop.Project string fileName = String.Empty; FileNodeStatus fileNodeStatus = FileNodeStatus.None; ProjectItem projectItem = null; - + public override bool Visible { get { return ShowAll || fileNodeStatus != FileNodeStatus.None; @@ -112,11 +112,13 @@ namespace ICSharpCode.SharpDevelop.Project autoClearNodes = false; SetIcon(); + canLabelEdit = true; } public FileNode(string fileName) : this (fileName, FileNodeStatus.None) { sortOrder = 5; + canLabelEdit = true; } public override void ActivateItem() diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs index c691ccf2af..46f55cfa3a 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionFolderNode.cs @@ -60,6 +60,7 @@ namespace ICSharpCode.SharpDevelop.Project public SolutionFolderNode(Solution solution, SolutionFolder folder) { sortOrder = 0; + canLabelEdit = true; ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionFolderNode"; this.solution = solution; diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs index c1ea4f88f1..21d4cbf95f 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionItemNode.cs @@ -35,6 +35,7 @@ namespace ICSharpCode.SharpDevelop.Project public SolutionItemNode(Solution solution, SolutionItem item) { sortOrder = 2; + canLabelEdit = true; ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionItemNode"; diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs index 0988727942..783a2483bc 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/SolutionNode.cs @@ -39,6 +39,7 @@ namespace ICSharpCode.SharpDevelop.Project this.solution = solution; Text = "Solution " + solution.Name; autoClearNodes = false; + canLabelEdit = true; ContextmenuAddinTreePath = "/SharpDevelop/Pads/ProjectBrowser/ContextMenu/SolutionNode";