From 7b039c636886e1751f15aadd9fbd8fbb111d759a Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sun, 28 Jan 2007 18:51:52 +0000 Subject: [PATCH] NAnt pad now supports build files that are not part of a project. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2343 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- src/AddIns/Misc/NAntAddIn/Project/NAnt.addin | 16 ++---- .../Misc/NAntAddIn/Project/NAntAddIn.csproj | 1 + .../RunSelectedNAntCleanTargetCommand.cs | 39 +++++++++++++++ .../Project/Src/Gui/NAntBuildFileTreeNode.cs | 6 ++- .../Project/Src/Gui/NAntPadContent.cs | 49 +++++++++++++++++-- .../Project/Src/Gui/NAntPadTreeView.cs | 2 + 6 files changed, 96 insertions(+), 17 deletions(-) create mode 100644 src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RunSelectedNAntCleanTargetCommand.cs diff --git a/src/AddIns/Misc/NAntAddIn/Project/NAnt.addin b/src/AddIns/Misc/NAntAddIn/Project/NAnt.addin index caca257951..49691ae263 100644 --- a/src/AddIns/Misc/NAntAddIn/Project/NAnt.addin +++ b/src/AddIns/Misc/NAntAddIn/Project/NAnt.addin @@ -29,7 +29,6 @@ type="Menu"> - @@ -50,7 +49,6 @@ - - @@ -104,15 +101,12 @@ tooltip = "${res:ICSharpCode.NAntAddIn.NAntPadContent.RunCommandBarButtonText}" class = "ICSharpCode.NAntAddIn.Commands.RunSelectedNAntTargetCommand"/> - - - + - + class = "ICSharpCode.NAntAddIn.Commands.RunSelectedNAntCleanTargetCommand"/> + diff --git a/src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RunSelectedNAntCleanTargetCommand.cs b/src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RunSelectedNAntCleanTargetCommand.cs new file mode 100644 index 0000000000..2d72df2ec1 --- /dev/null +++ b/src/AddIns/Misc/NAntAddIn/Project/Src/Commands/RunSelectedNAntCleanTargetCommand.cs @@ -0,0 +1,39 @@ +// +// +// +// +// $Revision$ +// + +using System; +using ICSharpCode.Core; +using ICSharpCode.NAntAddIn.Gui; + +namespace ICSharpCode.NAntAddIn.Commands +{ + /// + /// Runs the NAnt clean target for the file selected in the NAnt Pad view. + /// + public class RunSelectedNAntCleanTargetCommand : AbstractRunNAntCommand + { + /// + /// Runs the . + /// + public override void Run() + { + try { + NAntBuildFile buildFile = NAntPadContent.Instance.SelectedBuildFile; + if (buildFile != null) { + RunPreBuildSteps(); + RunBuild(buildFile.FileName, + buildFile.Directory, + IsActiveConfigurationDebug, + "clean", + GetPadTextBoxArguments()); + } + } catch (Exception ex) { + MessageService.ShowMessage(ex.Message); + } + } + } +} diff --git a/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntBuildFileTreeNode.cs b/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntBuildFileTreeNode.cs index f3c275b40f..00d8511687 100644 --- a/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntBuildFileTreeNode.cs +++ b/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntBuildFileTreeNode.cs @@ -71,8 +71,10 @@ namespace ICSharpCode.NAntAddIn.Gui { StringBuilder nodeText = new StringBuilder(); - nodeText.Append(projectName); - nodeText.Append(Path.DirectorySeparatorChar); + if (projectName.Length > 0) { + nodeText.Append(projectName); + nodeText.Append(Path.DirectorySeparatorChar); + } nodeText.Append(buildFile.FileName); if (buildFile.DefaultTarget != null) { diff --git a/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadContent.cs b/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadContent.cs index bbc62ef4d5..16d27288d1 100644 --- a/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadContent.cs +++ b/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadContent.cs @@ -56,6 +56,8 @@ namespace ICSharpCode.NAntAddIn.Gui ProjectService.SolutionClosed += SolutionClosed; ProjectService.ProjectItemRemoved += ProjectItemRemoved; ProjectService.ProjectItemAdded += ProjectItemAdded; + WorkbenchSingleton.Workbench.ViewOpened += WorkbenchViewOpened; + WorkbenchSingleton.Workbench.ViewClosed += WorkbenchViewClosed; FileService.FileRenamed += FileRenamed; FileService.FileRemoved += FileRemoved; FileUtility.FileSaved += FileSaved; @@ -66,8 +68,7 @@ namespace ICSharpCode.NAntAddIn.Gui // Due to lazy loading we have missed the solution loaded event // so add it now. - - AddSolutionToPad(ProjectService.OpenSolution); + Refresh(); } /// @@ -97,6 +98,11 @@ namespace ICSharpCode.NAntAddIn.Gui if (solution != null) { treeView.AddSolution(solution); } + foreach (IViewContent view in WorkbenchSingleton.Workbench.ViewContentCollection) { + if (IsStandaloneNAntBuildFile(view.FileName)) { + treeView.AddBuildFile(String.Empty, view.FileName); + } + } } /// @@ -152,6 +158,8 @@ namespace ICSharpCode.NAntAddIn.Gui ProjectService.SolutionClosed -= SolutionClosed; ProjectService.ProjectItemRemoved -= ProjectItemRemoved; ProjectService.ProjectItemAdded -= ProjectItemAdded; + WorkbenchSingleton.Workbench.ViewOpened -= WorkbenchViewOpened; + WorkbenchSingleton.Workbench.ViewClosed -= WorkbenchViewClosed; FileService.FileRenamed -= FileRenamed; FileService.FileRemoved -= FileRemoved; FileUtility.FileSaved -= FileSaved; @@ -170,7 +178,6 @@ namespace ICSharpCode.NAntAddIn.Gui { LoggingService.Debug("SolutionClosed."); treeView.Clear(); - UpdateToolbar(); } void SolutionLoaded(object sender, SolutionEventArgs e) @@ -183,7 +190,6 @@ namespace ICSharpCode.NAntAddIn.Gui { if (solution != null) { treeView.AddSolution(solution); - UpdateToolbar(); } } @@ -236,6 +242,41 @@ namespace ICSharpCode.NAntAddIn.Gui } } + void WorkbenchViewOpened(object sender, ViewContentEventArgs e) + { + if (IsStandaloneNAntBuildFile(e.Content.FileName)) { + treeView.UpdateBuildFile(e.Content.FileName); + } + } + + void WorkbenchViewClosed(object sender, ViewContentEventArgs e) + { + if (IsStandaloneNAntBuildFile(e.Content.FileName)) { + treeView.RemoveBuildFile(e.Content.FileName); + } + } + + bool IsStandaloneNAntBuildFile(string fileName) + { + if (fileName != null) { + return NAntBuildFile.IsBuildFile(fileName) && !IsInProject(fileName); + } + return false; + } + + bool IsInProject(string fileName) + { + Solution solution = ProjectService.OpenSolution; + if (solution != null) { + foreach (IProject project in solution.Projects) { + if (project.IsFileInProject(fileName)) { + return true; + } + } + } + return false; + } + void FileSaved(object sender, FileNameEventArgs e) { LoggingService.Debug("FileSaved."); diff --git a/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadTreeView.cs b/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadTreeView.cs index 9442a007bd..ff439190cb 100644 --- a/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadTreeView.cs +++ b/src/AddIns/Misc/NAntAddIn/Project/Src/Gui/NAntPadTreeView.cs @@ -153,6 +153,8 @@ namespace ICSharpCode.NAntAddIn.Gui if (node != null) { NAntBuildFile buildFile = new NAntBuildFile(fileName); node.BuildFile = buildFile; + } else { + AddBuildFile(String.Empty, fileName); } }