diff --git a/data/resources/StringResources.resx b/data/resources/StringResources.resx index b1eec43930..f60e37e8a8 100644 --- a/data/resources/StringResources.resx +++ b/data/resources/StringResources.resx @@ -3583,6 +3583,9 @@ You can also choose to store the setting in the .user-file instead of the projec Yes to All + + Collapse all nodes + File or directory name is already in use, choose a different one. diff --git a/data/resources/image/BitmapResources/BitmapResources.res b/data/resources/image/BitmapResources/BitmapResources.res index 76615e2224..0301ff5694 100644 --- a/data/resources/image/BitmapResources/BitmapResources.res +++ b/data/resources/image/BitmapResources/BitmapResources.res @@ -29,6 +29,7 @@ ProjectBrowser.MissingSolution = ProjectBrowserIcons\MissingSolution.png ProjectBrowser.Solution = ProjectBrowserIcons\Solution.png ProjectBrowser.Toolbar.Refresh = ProjectBrowserIcons\Toolbar.Refresh.png ProjectBrowser.Toolbar.ShowHiddenFiles = ProjectBrowserIcons\Toolbar.ShowHiddenFiles.png +ProjectBrowser.Toolbar.Collapse = ProjectBrowserIcons\Toolbar.Collapse.png ProjectBrowser.SolutionFolder.Closed = ProjectBrowserIcons\SolutionFolder.Closed.png ProjectBrowser.SolutionFolder.Open = ProjectBrowserIcons\SolutionFolder.Open.png ProjectBrowser.SolutionFolder.CreateNew = ProjectBrowserIcons\SolutionFolder.CreateNew.png diff --git a/data/resources/image/BitmapResources/ProjectBrowserIcons/Toolbar.Collapse.png b/data/resources/image/BitmapResources/ProjectBrowserIcons/Toolbar.Collapse.png new file mode 100644 index 0000000000..7bbd6e713a Binary files /dev/null and b/data/resources/image/BitmapResources/ProjectBrowserIcons/Toolbar.Collapse.png differ diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin index 6613b5a6ba..c064e8a3fe 100755 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.addin @@ -182,6 +182,11 @@ icon = "ProjectBrowser.Toolbar.Refresh" tooltip = "${res:AddIns.HtmlHelp2.Refresh}" class = "ICSharpCode.SharpDevelop.Project.Commands.RefreshProjectBrowser"/> + + @@ -768,6 +773,11 @@ label = "${res:MainWindow.Windows.ClassBrowser.ClassViewSettings.ShowOtherMembers.Label}" class = "ICSharpCode.SharpDevelop.Gui.ClassBrowser.ShowOtherMembers"/> + + diff --git a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs index eb96ad05d9..377a658c46 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs @@ -172,6 +172,16 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser UpdateToolbars(); } + public void CollapseAll() + { + if (this.classBrowserTreeView == null) return; + if (this.classBrowserTreeView.Nodes == null || this.classBrowserTreeView.Nodes.Count == 0) return; + + foreach(TreeNode node in this.classBrowserTreeView.Nodes) { + node.Collapse(false); + } + } + void ClassBrowserTreeViewAfterSelect(object sender, TreeViewEventArgs e) { if (navigateBack) { diff --git a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowserToolbarCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowserToolbarCommands.cs index 461f957913..a3566b259c 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowserToolbarCommands.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowserToolbarCommands.cs @@ -34,6 +34,17 @@ namespace ICSharpCode.SharpDevelop.Gui.ClassBrowser } } + public class ClassBrowserCollapseAll : AbstractMenuCommand + { + public override bool IsEnabled { + get { return true; } + } + public override void Run() + { + ClassBrowserPad.Instance.CollapseAll(); + } + } + #region Class browser filter public class SelectClassBrowserFilter : AbstractMenuCommand { diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ToolbarCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ToolbarCommands.cs index d9165e8ca6..5ae1990234 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ToolbarCommands.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/ToolbarCommands.cs @@ -37,4 +37,12 @@ namespace ICSharpCode.SharpDevelop.Project.Commands ProjectBrowserPad.Instance.ProjectBrowserControl.RefreshView(); } } + + public class CollapseAllProjectBrowser : AbstractMenuCommand + { + public override void Run() + { + ProjectBrowserPad.Instance.ProjectBrowserControl.ExpandOrCollapseAll(false); + } + } } 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 fabe7e2119..e04274091a 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs @@ -485,5 +485,22 @@ namespace ICSharpCode.SharpDevelop.Project this.ResumeLayout(false); } #endregion + + public void ExpandOrCollapseAll(bool expand) + { + if (this.treeView == null) return; + if (this.treeView.Nodes == null || this.treeView.Nodes.Count == 0) return; + + foreach(TreeNode node in this.treeView.Nodes) { + if (expand) { + node.ExpandAll(); + } + else { + node.Collapse(false); + } + } + + this.treeView.Nodes[0].Expand(); + } } } diff --git a/src/Main/StartUp/Project/Resources/BitmapResources.resources b/src/Main/StartUp/Project/Resources/BitmapResources.resources index 8740ee3c61..6c2cf3bb24 100644 Binary files a/src/Main/StartUp/Project/Resources/BitmapResources.resources and b/src/Main/StartUp/Project/Resources/BitmapResources.resources differ