diff --git a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/CustomComponentsSideTab.cs b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/CustomComponentsSideTab.cs index 147e954e64..487d6a61c0 100644 --- a/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/CustomComponentsSideTab.cs +++ b/src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Gui/CustomComponentsSideTab.cs @@ -33,7 +33,7 @@ namespace ICSharpCode.FormsDesigner.Gui { this.DisplayName = StringParser.Parse(this.Name); ScanProjectAssemblies(); - ProjectService.EndBuild += RescanProjectAssemblies; + ProjectService.BuildFinished += RescanProjectAssemblies; ProjectService.SolutionLoaded += RescanProjectAssemblies; ProjectService.ProjectItemAdded += ProjectItemAdded; } @@ -42,7 +42,7 @@ namespace ICSharpCode.FormsDesigner.Gui { if (!disposed) { disposed = true; - ProjectService.EndBuild -= RescanProjectAssemblies; + ProjectService.BuildFinished -= RescanProjectAssemblies; ProjectService.SolutionLoaded -= RescanProjectAssemblies; ProjectService.ProjectItemAdded -= ProjectItemAdded; } diff --git a/src/AddIns/Misc/UnitTesting/Src/RunTestCommands.cs b/src/AddIns/Misc/UnitTesting/Src/RunTestCommands.cs index 7fd6959429..6205b89e3f 100644 --- a/src/AddIns/Misc/UnitTesting/Src/RunTestCommands.cs +++ b/src/AddIns/Misc/UnitTesting/Src/RunTestCommands.cs @@ -412,17 +412,8 @@ namespace ICSharpCode.UnitTesting /// public override void BeforeBuild() { - ProjectService.RaiseEventStartBuild(); SaveAllFiles.SaveAll(); } - - /// - /// After a build do not show the errors list. - /// - public override void AfterBuild() - { - ProjectService.RaiseEventEndBuild(new BuildEventArgs(LastBuildResults)); - } } public class RunTestInPadCommand : AbstractRunTestCommand diff --git a/src/Main/Base/Project/Src/Commands/BuildCommands.cs b/src/Main/Base/Project/Src/Commands/BuildCommands.cs index 5db1eea651..7994ab9d33 100644 --- a/src/Main/Base/Project/Src/Commands/BuildCommands.cs +++ b/src/Main/Base/Project/Src/Commands/BuildCommands.cs @@ -111,22 +111,10 @@ namespace ICSharpCode.SharpDevelop.Project.Commands public class Build : AbstractBuildMenuCommand { - public override void BeforeBuild() - { - base.BeforeBuild(); - ProjectService.RaiseEventStartBuild(); - } - public override void StartBuild() { BuildEngine.BuildInGui(ProjectService.OpenSolution, new BuildOptions(BuildTarget.Build, CallbackMethod)); } - - public override void AfterBuild() - { - ProjectService.RaiseEventEndBuild(new BuildEventArgs(LastBuildResults)); - base.AfterBuild(); - } } public class BuildBeforeExecute : Build @@ -212,22 +200,10 @@ namespace ICSharpCode.SharpDevelop.Project.Commands this.targetProject = targetProject; } - public override void BeforeBuild() - { - base.BeforeBuild(); - ProjectService.RaiseEventStartBuild(); - } - public override void StartBuild() { BuildEngine.BuildInGui(this.ProjectToBuild, new BuildOptions(BuildTarget.Build, CallbackMethod)); } - - public override void AfterBuild() - { - ProjectService.RaiseEventEndBuild(new BuildEventArgs(LastBuildResults)); - base.AfterBuild(); - } } public class RebuildProject : BuildProject diff --git a/src/Main/Base/Project/Src/Gui/AbstractPadContent.cs b/src/Main/Base/Project/Src/Gui/AbstractPadContent.cs index 17994bc96c..c229418a72 100644 --- a/src/Main/Base/Project/Src/Gui/AbstractPadContent.cs +++ b/src/Main/Base/Project/Src/Gui/AbstractPadContent.cs @@ -20,14 +20,28 @@ namespace ICSharpCode.SharpDevelop.Gui { } - protected bool IsVisible { + public void BringToFront() + { + PadDescriptor d = this.PadDescriptor; + if (d != null) + d.BringPadToFront(); + } + + protected virtual PadDescriptor PadDescriptor { get { if (WorkbenchSingleton.Workbench == null || WorkbenchSingleton.Workbench.WorkbenchLayout == null) + return null; + return WorkbenchSingleton.Workbench.GetPad(GetType()); + } + } + + protected bool IsVisible { + get { + PadDescriptor d = this.PadDescriptor; + if (d != null) + return WorkbenchSingleton.Workbench.WorkbenchLayout.IsVisible(d); + else return false; - PadDescriptor d = WorkbenchSingleton.Workbench.GetPad(GetType()); - if (d == null) - return false; - return WorkbenchSingleton.Workbench.WorkbenchLayout.IsVisible(d); } } } diff --git a/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs b/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs index 25018e6a1a..e2b7d1822d 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs @@ -89,7 +89,7 @@ namespace ICSharpCode.SharpDevelop.Gui InternalShowResults(); }; - ProjectService.EndBuild += ProjectServiceEndBuild; + ProjectService.BuildFinished += ProjectServiceEndBuild; ProjectService.SolutionLoaded += OnSolutionOpen; ProjectService.SolutionClosed += OnSolutionClosed; diff --git a/src/Main/Base/Project/Src/Project/BuildEngine.cs b/src/Main/Base/Project/Src/Project/BuildEngine.cs index 8c3a03cb74..b4ba21f88b 100644 --- a/src/Main/Base/Project/Src/Project/BuildEngine.cs +++ b/src/Main/Base/Project/Src/Project/BuildEngine.cs @@ -49,17 +49,13 @@ namespace ICSharpCode.SharpDevelop.Project } else { guiBuildProgressMonitor = new CancellableProgressMonitor(StatusBarService.CreateProgressMonitor()); Gui.WorkbenchSingleton.Workbench.GetPad(typeof(Gui.CompilerMessageView)).BringPadToFront(); - GuiBuildStarted.RaiseEvent(null, new BuildEventArgs(project, options)); + ProjectService.RaiseEventBuildStarted(new BuildEventArgs(project, options)); StartBuild(project, options, new MessageViewSink(TaskService.BuildMessageViewCategory), guiBuildProgressMonitor); } } - // TODO: in 4.0, replace ProjectService.BuildStarted/BuildFinished with these events - public static event EventHandler GuiBuildStarted; - public static event EventHandler GuiBuildFinished; - /// /// Gets whether there is a build currently running inside the SharpDevelop GUI. /// @@ -110,7 +106,7 @@ namespace ICSharpCode.SharpDevelop.Project WorkbenchSingleton.SafeThreadAsyncCall( delegate { guiBuildProgressMonitor = null; - GuiBuildFinished.RaiseEvent(null, new BuildEventArgs(buildable, options, results)); + ProjectService.RaiseEventBuildFinished(new BuildEventArgs(buildable, options, results)); }); } } diff --git a/src/Main/Base/Project/Src/Services/ProjectService/CompileModifiedProjectsOnly.cs b/src/Main/Base/Project/Src/Services/ProjectService/CompileModifiedProjectsOnly.cs index a61cbd9299..ab24c3aad3 100644 --- a/src/Main/Base/Project/Src/Services/ProjectService/CompileModifiedProjectsOnly.cs +++ b/src/Main/Base/Project/Src/Services/ProjectService/CompileModifiedProjectsOnly.cs @@ -45,7 +45,7 @@ namespace ICSharpCode.SharpDevelop.Project ProjectService.SolutionClosed += MarkAllForRecompilation; ProjectService.SolutionConfigurationChanged += MarkAllForRecompilation; ProjectService.SolutionSaved += MarkAllForRecompilation; - BuildEngine.GuiBuildFinished += BuildEngine_GuiBuildFinished; + ProjectService.BuildFinished += ProjectService_BuildFinished; FileUtility.FileSaved += OnFileSaved; } @@ -55,7 +55,7 @@ namespace ICSharpCode.SharpDevelop.Project // first call to init causes static ctor calls } - static void BuildEngine_GuiBuildFinished(object sender, BuildEventArgs e) + static void ProjectService_BuildFinished(object sender, BuildEventArgs e) { // at the end of an successful build, mark all built projects as unmodified if (e.Results.Result == BuildResultCode.Success) { diff --git a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs index 5bf3c6bd44..a53cb95fab 100644 --- a/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs +++ b/src/Main/Base/Project/Src/Services/ProjectService/ProjectService.cs @@ -553,22 +553,34 @@ namespace ICSharpCode.SharpDevelop.Project } } - public static void RaiseEventStartBuild() + /// + /// Raises the event. + /// + /// You do not need to call this method if you use BuildEngine.BuildInGui - the build + /// engine will call these events itself. + /// + public static void RaiseEventBuildStarted(BuildEventArgs e) { + if (e == null) + throw new ArgumentNullException("e"); WorkbenchSingleton.AssertMainThread(); building = true; - if (StartBuild != null) { - StartBuild(null, EventArgs.Empty); - } + BuildStarted.RaiseEvent(null, e); } - public static void RaiseEventEndBuild(BuildEventArgs e) + /// + /// Raises the event. + /// + /// You do not need to call this method if you use BuildEngine.BuildInGui - the build + /// engine will call these events itself. + /// + public static void RaiseEventBuildFinished(BuildEventArgs e) { + if (e == null) + throw new ArgumentNullException("e"); WorkbenchSingleton.AssertMainThread(); building = false; - if (EndBuild != null) { - EndBuild(null, e); - } + BuildFinished.RaiseEvent(null, e); } public static void RemoveSolutionFolder(string guid) @@ -646,8 +658,8 @@ namespace ICSharpCode.SharpDevelop.Project public static event ProjectEventHandler ProjectAdded; public static event SolutionFolderEventHandler SolutionFolderRemoved; - public static event EventHandler StartBuild; - public static event EventHandler EndBuild; + public static event EventHandler BuildStarted; + public static event EventHandler BuildFinished; public static event SolutionConfigurationEventHandler SolutionConfigurationChanged; @@ -705,12 +717,6 @@ namespace ICSharpCode.SharpDevelop.Project this.Options = options; this.Results = results; } - - public BuildEventArgs(BuildResults results) - { - // TODO: remove this constructor in 4.0 - this.Results = results; - } } } diff --git a/src/Main/Core/Project/ICSharpCode.Core.csproj b/src/Main/Core/Project/ICSharpCode.Core.csproj index 454b77720f..8b2bac3fd0 100644 --- a/src/Main/Core/Project/ICSharpCode.Core.csproj +++ b/src/Main/Core/Project/ICSharpCode.Core.csproj @@ -17,9 +17,10 @@ Always False File - v2.0 + v3.5 False false + C:\Users\daniel\AppData\Roaming\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis true @@ -47,6 +48,9 @@ + + 3.5 + diff --git a/src/Main/Core/Project/Src/Util/CallbackOnDispose.cs b/src/Main/Core/Project/Src/Util/CallbackOnDispose.cs index 1db64aa893..1f1b871f60 100644 --- a/src/Main/Core/Project/Src/Util/CallbackOnDispose.cs +++ b/src/Main/Core/Project/Src/Util/CallbackOnDispose.cs @@ -13,12 +13,11 @@ namespace ICSharpCode.Core /// /// Invokes a callback when this class is dispsed. /// - sealed class CallbackOnDispose : IDisposable + public sealed class CallbackOnDispose : IDisposable { - // TODO: in 4.0, use System.Action and make this class public - System.Threading.ThreadStart callback; + Action callback; - public CallbackOnDispose(System.Threading.ThreadStart callback) + public CallbackOnDispose(Action callback) { if (callback == null) throw new ArgumentNullException("callback"); @@ -27,7 +26,7 @@ namespace ICSharpCode.Core public void Dispose() { - System.Threading.ThreadStart action = Interlocked.Exchange(ref callback, null); + Action action = Interlocked.Exchange(ref callback, null); if (action != null) action(); } diff --git a/src/Main/ICSharpCode.SharpDevelop.Sda/Src/CallHelper.cs b/src/Main/ICSharpCode.SharpDevelop.Sda/Src/CallHelper.cs index 87f7d550ce..a2c722576a 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Sda/Src/CallHelper.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Sda/Src/CallHelper.cs @@ -90,8 +90,8 @@ namespace ICSharpCode.SharpDevelop.Sda startup.RunInitialization(); // Register events to marshal back - Project.ProjectService.StartBuild += delegate { this.callback.StartBuild(); }; - Project.ProjectService.EndBuild += delegate { this.callback.EndBuild(); }; + Project.ProjectService.BuildStarted += delegate { this.callback.StartBuild(); }; + Project.ProjectService.BuildFinished += delegate { this.callback.EndBuild(); }; Project.ProjectService.SolutionLoaded += delegate { this.callback.SolutionLoaded(); }; Project.ProjectService.SolutionClosed += delegate { this.callback.SolutionClosed(); }; Project.ProjectService.SolutionConfigurationChanged += delegate { this.callback.SolutionConfigurationChanged(); };