diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin index 0788ce921d..25b759b018 100644 --- a/AddIns/ICSharpCode.SharpDevelop.addin +++ b/AddIns/ICSharpCode.SharpDevelop.addin @@ -1913,4 +1913,9 @@ class = "ICSharpCode.SharpDevelop.Commands.DebugViewMenuBuilder"/> + + + + diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index 41880d19ec..a9e3882ac5 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -720,6 +720,7 @@ + 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 af25fb9abe..bf1e6aef5a 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 @@ -57,7 +57,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands } newProject.Location = FileUtility.GetRelativePath(solutionFolderNode.Solution.Directory, fileName); solutionFolderNode.Container.AddFolder(newProject); - new DefaultDotNetNodeBuilder().AddProjectNode((TreeNode)solutionFolderNode, newProject).EnsureVisible(); + NodeBuilders.AddProjectNode((TreeNode)solutionFolderNode, newProject).EnsureVisible(); } public override void Run() diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/NodeBuilder/NodeBuilders.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/NodeBuilder/NodeBuilders.cs new file mode 100644 index 0000000000..4f9f2b7fdc --- /dev/null +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/NodeBuilder/NodeBuilders.cs @@ -0,0 +1,35 @@ +// +// 2002-2005 AlphaSierraPapa +// GNU General Public License +// +// $Revision$ +// + +using System; +using System.Windows.Forms; +using ICSharpCode.Core; + +namespace ICSharpCode.SharpDevelop.Project +{ + public static class NodeBuilders + { + /// + /// This method builds a ProjectBrowserNode Tree out of a given combine. + /// + public static TreeNode AddProjectNode(TreeNode motherNode, IProject project) + { + IProjectNodeBuilder projectNodeBuilder = null; + foreach (IProjectNodeBuilder nodeBuilder in AddInTree.BuildItems("/SharpDevelop/Views/ProjectBrowser/NodeBuilders", null, true)) { + if (nodeBuilder.CanBuildProjectTree(project)) { + projectNodeBuilder = nodeBuilder; + break; + } + } + if (projectNodeBuilder != null) { + return projectNodeBuilder.AddProjectNode(motherNode, project); + } + + throw new NotImplementedException("can't create node builder for project type " + project.Language); + } + } +} 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 999ee6bf33..9e8789916b 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserControl.cs @@ -148,11 +148,10 @@ namespace ICSharpCode.SharpDevelop.Project AbstractProjectBrowserTreeNode solutionNode = new SolutionNode(solution); treeView.Nodes.Clear(); solutionNode.AddTo(treeView); - DefaultDotNetNodeBuilder nodeBuilder = new DefaultDotNetNodeBuilder(); foreach (object treeObject in solution.Folders) { if (treeObject is IProject) { - nodeBuilder.AddProjectNode(solutionNode, (IProject)treeObject); + NodeBuilders.AddProjectNode(solutionNode, (IProject)treeObject); } else { SolutionFolderNode folderNode = new SolutionFolderNode(solution, (SolutionFolder)treeObject); folderNode.AddTo(solutionNode); 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 be680633da..15a2a5cf34 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 @@ -94,11 +94,10 @@ namespace ICSharpCode.SharpDevelop.Project protected override void Initialize() { Nodes.Clear(); - DefaultDotNetNodeBuilder nodeBuilder = new DefaultDotNetNodeBuilder(); foreach (object treeObject in folder.Folders) { if (treeObject is IProject) { - nodeBuilder.AddProjectNode(this, (IProject)treeObject); + NodeBuilders.AddProjectNode(this, (IProject)treeObject); } else if (treeObject is SolutionFolder) { SolutionFolderNode folderNode = new SolutionFolderNode(solution, (SolutionFolder)treeObject); folderNode.AddTo(this);