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