From e0db259c31989ecb6260f63046ab08c5e7666686 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Thu, 13 Apr 2006 14:03:59 +0000 Subject: [PATCH] Fixed SD2-683: Class browser doesn't show newly added projects git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1300 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Src/Gui/Pads/ClassBrowser/ClassBrowser.cs | 8 +++++--- .../Commands/SolutionNodeCommands.cs | 4 +--- .../Src/Services/ParserService/ParserService.cs | 2 +- .../Src/Services/ProjectService/ProjectService.cs | 15 +++++++++++++++ .../ProjectService/SolutionFolderEventHandler.cs | 2 +- 5 files changed, 23 insertions(+), 8 deletions(-) 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 29de3d5341..fdf1658422 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/ClassBrowser.cs @@ -98,14 +98,16 @@ namespace ICSharpCode.SharpDevelop.Gui toolStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; contentPanel.Controls.Add(toolStrip); - ProjectService.SolutionLoaded += ProjectServiceSolutionLoaded; + ProjectService.SolutionLoaded += ProjectServiceSolutionChanged; + ProjectService.ProjectAdded += ProjectServiceSolutionChanged; // rebuild view when project is added to solution + ProjectService.SolutionFolderRemoved += ProjectServiceSolutionChanged; // rebuild view when project is removed from solution ProjectService.SolutionClosed += ProjectServiceSolutionClosed; ParserService.ParseInformationUpdated += new ParseInformationEventHandler(ParserServiceParseInformationUpdated); AmbienceService.AmbienceChanged += new EventHandler(AmbienceServiceAmbienceChanged); if (ProjectService.OpenSolution != null) { - ProjectServiceSolutionLoaded(null, null); + ProjectServiceSolutionChanged(null, null); } UpdateToolbars(); } @@ -275,7 +277,7 @@ namespace ICSharpCode.SharpDevelop.Gui } } - void ProjectServiceSolutionLoaded(object sender, SolutionEventArgs e) + void ProjectServiceSolutionChanged(object sender, EventArgs e) { classBrowserTreeView.Nodes.Clear(); foreach (IProject project in ProjectService.OpenSolution.Projects) { 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 498deaffc3..7a19671a69 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 @@ -50,9 +50,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands IProject newProject = LanguageBindingService.LoadProject(fileName, Path.GetFileNameWithoutExtension(fileName)); if (newProject != null) { newProject.Location = FileUtility.GetRelativePath(solutionFolderNode.Solution.Directory, fileName); - ParserService.CreateProjectContentForAddedProject(newProject); - solutionFolderNode.Container.AddFolder(newProject); - solutionFolderNode.Solution.FixSolutionConfiguration(new IProject[] { newProject }); + ProjectService.AddProject(solutionFolderNode, newProject); NodeBuilders.AddProjectNode((TreeNode)solutionFolderNode, newProject).EnsureVisible(); solutionFolderNode.Solution.ApplySolutionConfigurationToProjects(); solutionFolderNode.Solution.ApplySolutionPlatformToProjects(); diff --git a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs index 97c4d8ed6c..a21a3805b6 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs @@ -184,7 +184,7 @@ namespace ICSharpCode.Core newContent.Initialize2(); } - public static IProjectContent CreateProjectContentForAddedProject(IProject project) + internal static IProjectContent CreateProjectContentForAddedProject(IProject project) { lock (projectContents) { ParseProjectContent newContent = project.CreateProjectContent(); diff --git a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs index 990421539c..c01aadeec8 100644 --- a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs +++ b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs @@ -176,6 +176,14 @@ namespace ICSharpCode.SharpDevelop.Project CurrentProject = OpenSolution.FindProjectContainingFile(fileName) ?? CurrentProject; } + public static void AddProject(ISolutionFolderNode solutionFolderNode, IProject newProject) + { + solutionFolderNode.Container.AddFolder(newProject); + ParserService.CreateProjectContentForAddedProject(newProject); + solutionFolderNode.Solution.FixSolutionConfiguration(new IProject[] { newProject }); + OnProjectAdded(new ProjectEventArgs(newProject)); + } + /// /// Adds a project item to the project, raising the ProjectItemAdded event. /// Make sure you call project.Save() after adding new items! @@ -467,7 +475,14 @@ namespace ICSharpCode.SharpDevelop.Project ProjectItemRemoved(null, e); } } + static void OnProjectAdded(ProjectEventArgs e) + { + if (ProjectAdded != null) { + ProjectAdded(null, e); + } + } + public static event ProjectEventHandler ProjectAdded; public static event SolutionFolderEventHandler SolutionFolderRemoved; public static event EventHandler StartBuild; diff --git a/src/Main/Base/Project/Src/Services/ProjectService/SolutionFolderEventHandler.cs b/src/Main/Base/Project/Src/Services/ProjectService/SolutionFolderEventHandler.cs index 6a32bfd324..72ad672e20 100644 --- a/src/Main/Base/Project/Src/Services/ProjectService/SolutionFolderEventHandler.cs +++ b/src/Main/Base/Project/Src/Services/ProjectService/SolutionFolderEventHandler.cs @@ -11,7 +11,7 @@ namespace ICSharpCode.SharpDevelop.Project { public delegate void SolutionFolderEventHandler(object sender, SolutionFolderEventArgs e); - public class SolutionFolderEventArgs + public class SolutionFolderEventArgs : EventArgs { ISolutionFolder solutionFolder;