From b169fe63113b3379fb7615d584b9d7e7e02a61e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kon=C3=AD=C4=8Dek?= Date: Tue, 10 Aug 2010 15:58:27 +0000 Subject: [PATCH] - Implemented "Collapse all" context menu item in project browser. - Implemented "Navigate to file in project browser" context menu item for tab in tabstrip. This does not expand nodes that have not been loaded yet; probably it should. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6400 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- data/resources/StringResources.fr.resx | 6 +++++ data/resources/StringResources.nl.resx | 6 +++++ data/resources/StringResources.resx | 6 +++++ .../Src/ContextActions/CacheClassAtCaret.cs | 11 ++++++-- .../Project/ICSharpCode.SharpDevelop.addin | 13 +++++++++- .../Src/Commands/FileTabStripCommands.cs | 15 ++++++++++- .../Commands/SolutionNodeCommands.cs | 19 ++++++++++++++ .../ProjectBrowser/ProjectBrowserControl.cs | 26 +++++++++++++++++++ 8 files changed, 98 insertions(+), 4 deletions(-) diff --git a/data/resources/StringResources.fr.resx b/data/resources/StringResources.fr.resx index 2427767d59..1caf861360 100644 --- a/data/resources/StringResources.fr.resx +++ b/data/resources/StringResources.fr.resx @@ -7250,6 +7250,12 @@ Les fichiers de resources ont été renommés/déplacés en conséquence. Entrée du menu Outils + + Un projet pour une application Silverlight. + + + Application Silverlight + Un projet qui crée une application avec une icône dans la zone de notification de la barre des tâches. diff --git a/data/resources/StringResources.nl.resx b/data/resources/StringResources.nl.resx index b6d180ef44..d59f3bea9c 100644 --- a/data/resources/StringResources.nl.resx +++ b/data/resources/StringResources.nl.resx @@ -7252,6 +7252,12 @@ De hulpbron bestanden zijn hernoemd/verplaatst op de beschreven wijze. Eztra menu ingang + + Project voor het maken van een Silverlight applicatie. + + + Silverlight applicatie + Een project waarin een applicatie wordt gemaakt met een pictogram in het meldingengebied van de taakbalk. diff --git a/data/resources/StringResources.resx b/data/resources/StringResources.resx index 0db9a068e5..3ad119f76e 100644 --- a/data/resources/StringResources.resx +++ b/data/resources/StringResources.resx @@ -4269,6 +4269,9 @@ All changes get lost. File Saved + + Navigate to file in project browser + From VB.NET to C# @@ -5934,6 +5937,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Clea&n + + Collapse all + Delete '${FileName}' permanently? diff --git a/src/AddIns/Misc/SharpRefactoring/Project/Src/ContextActions/CacheClassAtCaret.cs b/src/AddIns/Misc/SharpRefactoring/Project/Src/ContextActions/CacheClassAtCaret.cs index 3d1c2cbfa9..3c0be26ea2 100644 --- a/src/AddIns/Misc/SharpRefactoring/Project/Src/ContextActions/CacheClassAtCaret.cs +++ b/src/AddIns/Misc/SharpRefactoring/Project/Src/ContextActions/CacheClassAtCaret.cs @@ -34,7 +34,14 @@ namespace SharpRefactoring.ContextActions public bool IsFixClassFileNameAvailable { get { - return !IsClassReadOnly && IsCaretAtClassDeclaration && !IsClassFileNameCorrect && IsCorrectClassFileNameAvailable; + return IsCaretAtClassDeclaration && Class.IsUserCode() && !IsClassReadOnly && !IsClassFileNameCorrect && IsCorrectClassFileNameAvailable; + } + } + + public bool IsCreateDerivedClassAvailable + { + get { + return IsCaretAtClassDeclaration && Class.IsUserCode() && !Class.IsStatic && !Class.IsSealed; } } @@ -52,7 +59,7 @@ namespace SharpRefactoring.ContextActions this.IsClassFileNameCorrect = (c.IsInnerClass() || (!c.IsUserCode()) || c.Name.Equals(Path.GetFileNameWithoutExtension(c.CompilationUnit.FileName), StringComparison.OrdinalIgnoreCase)); - if (string.IsNullOrEmpty(c.CompilationUnit.FileName)) { + if (string.IsNullOrEmpty(c.Name) || c.CompilationUnit == null || string.IsNullOrEmpty(c.CompilationUnit.FileName)) { // Cannot get path this.CorrectClassFileName = null; this.IsCorrectClassFileNameAvailable = false; diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin index 143b62e1bb..4b0eb5ac5d 100755 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin @@ -228,6 +228,9 @@ + + + @@ -297,6 +302,8 @@ + + @@ -552,6 +559,7 @@ class = "ICSharpCode.SharpDevelop.Project.Commands.AddExistingFolderToProject"/> + @@ -1005,6 +1013,9 @@ + @@ -1340,7 +1351,7 @@ - /// Opens the containing folder in the clipboard. + /// Expands and scrolls to this file in the project browser. + /// + public class NavigateToFileInProjectBrowser : AbstractMenuCommand + { + public override void Run() + { + var c = ProjectBrowserPad.Instance.Control as ProjectBrowserPanel; + c.ProjectBrowserControl.SelectFileAndExpand(((IWorkbenchWindow)Owner).ActiveViewContent.PrimaryFileName); + } + } + + /// + /// Opens the folder containing this file in the windows explorer. /// public class OpenFolderContainingFile : AbstractMenuCommand { diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs index 0f6e986823..7e6a8fe5d4 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/SolutionNodeCommands.cs @@ -148,4 +148,23 @@ namespace ICSharpCode.SharpDevelop.Project.Commands } } } + + public class CollapseAll : AbstractMenuCommand + { + public override void Run() + { + AbstractProjectBrowserTreeNode node = ProjectBrowserPad.Instance.ProjectBrowserControl.SelectedNode; + if (node is SolutionNode) { + // Solution node does not collapse fully, but its subitems stay visible + foreach (var subNode in node.Nodes) { + var subBrowserNode = subNode as AbstractProjectBrowserTreeNode; + if (subBrowserNode != null) { + subBrowserNode.Collapse(); + } + } + } else { + node.Collapse(); + } + } + } } diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs index b2e3b4511a..7768354a07 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs @@ -236,6 +236,32 @@ namespace ICSharpCode.SharpDevelop.Project inSelectFile = false; } } + + public void SelectFileAndExpand(string fileName) + { + try { + inSelectFile = true; + lastSelectionTarget = fileName; + TreeNode node = FindFileNode(fileName); + + if (node != null) { + // Expand to node + TreeNode parent = node.Parent; + while (parent != null) { + parent.Expand(); + parent = parent.Parent; + } + //node = FindFileNode(fileName); + treeView.SelectedNode = node; + } else { + // Node for this file does not exist yet (the tree view is lazy loaded) + SelectDeepestOpenNodeForPath(fileName); + } + this.Focus(); + } finally { + inSelectFile = false; + } + } #region SelectDeepestOpenNode internals //