Browse Source

Refactored the AbstractMenuCommands in BuildCommands.cs

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@931 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Alpert 20 years ago
parent
commit
724ba72437
  1. 146
      src/Main/Base/Project/Src/Commands/BuildCommands.cs
  2. 4
      src/Main/Base/Project/Src/Commands/DebugCommands.cs
  3. 40
      src/Main/Base/Project/Src/Project/MSBuildEngine.cs

146
src/Main/Base/Project/Src/Commands/BuildCommands.cs

@ -16,9 +16,14 @@ using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Project.Commands namespace ICSharpCode.SharpDevelop.Project.Commands
{ {
public class Build : AbstractMenuCommand public abstract class AbstractBuildMenuCommand : AbstractMenuCommand
{ {
public static void BeforeBuild() public virtual bool CanRunBuild {
get {
return ProjectService.OpenSolution!=null;
}
}
public virtual void BeforeBuild()
{ {
TaskService.BuildMessageViewCategory.ClearText(); TaskService.BuildMessageViewCategory.ClearText();
TaskService.InUpdate = true; TaskService.InUpdate = true;
@ -27,145 +32,102 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
ICSharpCode.SharpDevelop.Commands.SaveAllFiles.SaveAll(); ICSharpCode.SharpDevelop.Commands.SaveAllFiles.SaveAll();
} }
public static int LastErrorCount; public virtual void AfterBuild() {}
public static int LastWarningCount;
public static void ShowResults(CompilerResults results) public override void Run()
{ {
if (results != null) { if (CanRunBuild) {
LastErrorCount = 0; BeforeBuild();
LastWarningCount = 0; RunBuild();
TaskService.InUpdate = true; AfterBuild();
foreach (CompilerError error in results.Errors) { } else {
TaskService.Add(new Task(error)); MSBuildEngine.AddNoSingleFileCompilationError();
if (error.IsWarning)
LastWarningCount++;
else
LastErrorCount++;
}
TaskService.InUpdate = false;
if (results.Errors.Count > 0) {
WorkbenchSingleton.Workbench.GetPad(typeof(ErrorListPad)).BringPadToFront();
} }
} }
public abstract void RunBuild();
} }
public static void AddNoSingleFileCompilationError() public class Build : AbstractBuildMenuCommand
{ {
LastErrorCount = 1; public override void RunBuild()
LastWarningCount = 0; {
TaskService.Add(new Task(null, StringParser.Parse("${res:BackendBindings.ExecutionManager.NoSingleFileCompilation}"), 0, 0, TaskType.Error)); MSBuildEngine.ShowResults(ProjectService.OpenSolution.Build());
WorkbenchSingleton.Workbench.GetPad(typeof(ErrorListPad)).BringPadToFront();
} }
public override void Run() public override void AfterBuild()
{ {
Build.BeforeBuild(); ProjectService.OnEndBuild();
if (ProjectService.OpenSolution == null) {
Build.AddNoSingleFileCompilationError();
} else {
Build.ShowResults(ProjectService.OpenSolution.Build());
} }
Build.AfterBuild();
} }
public static void AfterBuild() public class Rebuild : Build
{ {
ProjectService.OnEndBuild(); public override void RunBuild()
{
MSBuildEngine.ShowResults(ProjectService.OpenSolution.Rebuild());
} }
} }
public class Rebuild : AbstractMenuCommand public class Clean : AbstractBuildMenuCommand
{ {
public override void Run() public override void RunBuild()
{ {
Build.BeforeBuild(); MSBuildEngine.ShowResults(ProjectService.OpenSolution.Clean());
if (ProjectService.OpenSolution == null) {
Build.AddNoSingleFileCompilationError();
} else {
Build.ShowResults(ProjectService.OpenSolution.Rebuild());
}
Build.AfterBuild();
} }
} }
public class Clean : AbstractMenuCommand public class Publish : AbstractBuildMenuCommand
{ {
public override void Run() public override void RunBuild()
{ {
Build.BeforeBuild(); MSBuildEngine.ShowResults(ProjectService.OpenSolution.Publish());
if (ProjectService.OpenSolution == null) {
Build.AddNoSingleFileCompilationError();
} else {
Build.ShowResults(ProjectService.OpenSolution.Clean());
}
} }
} }
public class Publish : AbstractMenuCommand public abstract class AbstractProjectBuildMenuCommand : AbstractBuildMenuCommand
{
public override void Run()
{ {
Build.BeforeBuild(); public override bool CanRunBuild {
if (ProjectService.OpenSolution == null) { get {
Build.AddNoSingleFileCompilationError(); return base.CanRunBuild
} else { && ProjectService.CurrentProject!=null;
Build.ShowResults(ProjectService.OpenSolution.Publish());
} }
} }
} }
public class BuildProject : AbstractProjectBuildMenuCommand
public class BuildProject : AbstractMenuCommand
{ {
public override void Run() public override void RunBuild()
{ {
Build.BeforeBuild(); MSBuildEngine.ShowResults(ProjectService.CurrentProject.Build());
if (ProjectService.OpenSolution == null) {
Build.AddNoSingleFileCompilationError();
} else {
Build.ShowResults(ProjectService.CurrentProject.Build());
} }
Build.AfterBuild();
public override void AfterBuild()
{
ProjectService.OnEndBuild();
} }
} }
public class RebuildProject : AbstractMenuCommand public class RebuildProject : BuildProject
{ {
public override void Run() public override void RunBuild()
{ {
Build.BeforeBuild(); MSBuildEngine.ShowResults(ProjectService.CurrentProject.Rebuild());
if (ProjectService.OpenSolution == null) {
Build.AddNoSingleFileCompilationError();
} else {
Build.ShowResults(ProjectService.CurrentProject.Rebuild());
}
Build.AfterBuild();
} }
} }
public class CleanProject : AbstractMenuCommand public class CleanProject : AbstractProjectBuildMenuCommand
{ {
public override void Run() public override void RunBuild()
{ {
Build.BeforeBuild(); MSBuildEngine.ShowResults(ProjectService.CurrentProject.Clean());
if (ProjectService.OpenSolution == null) {
Build.AddNoSingleFileCompilationError();
} else {
Build.ShowResults(ProjectService.CurrentProject.Clean());
}
} }
} }
public class PublishProject : AbstractMenuCommand public class PublishProject : AbstractProjectBuildMenuCommand
{ {
public override void Run() public override void RunBuild()
{ {
Build.BeforeBuild(); MSBuildEngine.ShowResults(ProjectService.CurrentProject.Publish());
if (ProjectService.OpenSolution == null) {
Build.AddNoSingleFileCompilationError();
} else {
Build.ShowResults(ProjectService.CurrentProject.Publish());
}
} }
} }

4
src/Main/Base/Project/Src/Commands/DebugCommands.cs

@ -16,7 +16,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public override void Run() public override void Run()
{ {
new Build().Run(); new Build().Run();
if (Build.LastErrorCount == 0) { if (MSBuildEngine.LastErrorCount == 0) {
IProject startupProject = ProjectService.OpenSolution.StartupProject; IProject startupProject = ProjectService.OpenSolution.StartupProject;
if (startupProject != null) { if (startupProject != null) {
startupProject.Start(true); startupProject.Start(true);
@ -31,7 +31,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public override void Run() public override void Run()
{ {
new Build().Run(); new Build().Run();
if (Build.LastErrorCount == 0) { if (MSBuildEngine.LastErrorCount == 0) {
IProject startupProject = ProjectService.OpenSolution.StartupProject; IProject startupProject = ProjectService.OpenSolution.StartupProject;
if (startupProject != null) { if (startupProject != null) {
startupProject.Start(false); startupProject.Start(false);

40
src/Main/Base/Project/Src/Project/MSBuildEngine.cs

@ -44,6 +44,46 @@ namespace ICSharpCode.SharpDevelop.Project
MSBuildProperties.Add("SharpDevelopBinPath", Path.GetDirectoryName(typeof(MSBuildEngine).Assembly.Location)); MSBuildProperties.Add("SharpDevelopBinPath", Path.GetDirectoryName(typeof(MSBuildEngine).Assembly.Location));
} }
#region relocated from ICSharpCode.SharpDevelop.Project.Commands.Build in BuildCommands.cs
public static int LastErrorCount;
public static int LastWarningCount;
public static void ShowResults(CompilerResults results)
{
if (results != null) {
LastErrorCount = 0;
LastWarningCount = 0;
TaskService.InUpdate = true;
foreach (CompilerError error in results.Errors) {
TaskService.Add(new Task(error));
if (error.IsWarning)
LastWarningCount++;
else
LastErrorCount++;
}
TaskService.InUpdate = false;
if (results.Errors.Count > 0) {
WorkbenchSingleton.Workbench.GetPad(typeof(ErrorListPad)).BringPadToFront();
}
}
}
/// <summary>
/// Notifies the user that #develp's internal MSBuildEngine
/// implementation only supports compiling solutions and projects;
/// it does not allow compiling individual files.
/// </summary>
/// <remarks>Adds a message to the <see cref="TaskService"/> and
/// shows the <see cref="ErrorListPad"/>.</remarks>
public static void AddNoSingleFileCompilationError()
{
LastErrorCount = 1;
LastWarningCount = 0;
TaskService.Add(new Task(null, StringParser.Parse("${res:BackendBindings.ExecutionManager.NoSingleFileCompilation}"), 0, 0, TaskType.Error));
WorkbenchSingleton.Workbench.GetPad(typeof(ErrorListPad)).BringPadToFront();
}
#endregion
MessageViewCategory messageView; MessageViewCategory messageView;
/// <summary> /// <summary>

Loading…
Cancel
Save