diff options
author | Jason Imison <nosami@users.noreply.github.com> | 2019-11-26 03:46:11 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-26 03:46:11 +0300 |
commit | 7ff74522f1fcdacba1817c448d6ec2e3fb7a4d44 (patch) | |
tree | b0312c041a556003f16f02b8ebd4b586278e88dd | |
parent | 1c1b628fd6e118ad4281ca1e300ea2424887a1c5 (diff) | |
parent | cc734614616a2792210d445306e2ada074ffa368 (diff) |
Merge pull request #9365 from mono/fix-1023764
Allow wizard to reopen. Fixes https://devdiv.visualstudio.com/DevDiv/…
3 files changed, 73 insertions, 62 deletions
diff --git a/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Commands/ScaffoldCommandHandler.cs b/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Commands/ScaffoldCommandHandler.cs index 2e38cceafc..3bd09af09a 100644 --- a/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Commands/ScaffoldCommandHandler.cs +++ b/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Commands/ScaffoldCommandHandler.cs @@ -1,50 +1,53 @@ -using System;
-using System.Linq;
-using System.Threading;
-using MonoDevelop.AspNetCore.Scaffolding;
-using MonoDevelop.Components.Commands;
-using MonoDevelop.Ide;
-using MonoDevelop.Ide.Gui.Components;
-using MonoDevelop.Ide.Gui.Pads.ProjectPad;
-using MonoDevelop.Projects;
-
-namespace MonoDevelop.AspNetCore.Commands
-{
- enum AspNetCoreCommands
- {
- Scaffold
- }
-
- class ScaffoldNodeExtension : NodeBuilderExtension
- {
- public override Type CommandHandlerType {
- get { return typeof (ScaffoldCommandHandler); }
- }
-
- public override bool CanBuildNode (Type dataType)
- {
- return true;
- }
- }
-
- class ScaffoldCommandHandler : NodeCommandHandler
- {
- [CommandHandler (AspNetCoreCommands.Scaffold)]
- public void Scaffold ()
- {
- var project = IdeApp.ProjectOperations.CurrentSelectedProject as DotNetProject;
- if (project == null)
- return;
-
- var folder = CurrentNode.GetParentDataItem (typeof (ProjectFolder), true) as ProjectFolder;
- string parentFolder = folder?.Path ?? project.BaseDirectory;
-
- Xwt.Toolkit.NativeEngine.Invoke (() => {
- var w = new ScaffolderWizard (project, parentFolder);
- var res = w.RunWizard ();
- });
- }
-
+using System; +using System.Linq; +using System.Threading; +using MonoDevelop.AspNetCore.Scaffolding; +using MonoDevelop.Components.Commands; +using MonoDevelop.Ide; +using MonoDevelop.Ide.Gui.Components; +using MonoDevelop.Ide.Gui.Pads.ProjectPad; +using MonoDevelop.Projects; + +namespace MonoDevelop.AspNetCore.Commands +{ + enum AspNetCoreCommands + { + Scaffold + } + + class ScaffoldNodeExtension : NodeBuilderExtension + { + public override Type CommandHandlerType { + get { return typeof (ScaffoldCommandHandler); } + } + + public override bool CanBuildNode (Type dataType) + { + return true; + } + } + + class ScaffoldCommandHandler : NodeCommandHandler + { + [CommandHandler (AspNetCoreCommands.Scaffold)] + public void Scaffold () + { + var project = IdeApp.ProjectOperations.CurrentSelectedProject as DotNetProject; + if (project == null) + return; + + var folder = CurrentNode.GetParentDataItem (typeof (ProjectFolder), true) as ProjectFolder; + string parentFolder = folder?.Path ?? project.BaseDirectory; + + Xwt.Toolkit.NativeEngine.Invoke (() => { + var args = new ScaffolderArgs (); + var selectionPage = new ScaffolderTemplateSelectPage (args); + + var w = new ScaffolderWizard (project, parentFolder, selectionPage, args); + var res = w.RunWizard (); + }); + } + [CommandUpdateHandler (AspNetCoreCommands.Scaffold)]
public void ScaffoldUpdate (CommandInfo info)
{
diff --git a/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Scaffolding/ScaffolderWizard.cs b/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Scaffolding/ScaffolderWizard.cs index 30dac0f11b..2d2ce22136 100644 --- a/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Scaffolding/ScaffolderWizard.cs +++ b/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Scaffolding/ScaffolderWizard.cs @@ -46,12 +46,11 @@ namespace MonoDevelop.AspNetCore.Scaffolding { class ScaffolderWizard : ScaffolderDialogController { - static readonly ScaffolderArgs args = new ScaffolderArgs (); readonly DotNetProject project; readonly FilePath parentFolder; - static ScaffolderTemplateSelectPage selectionPage = new ScaffolderTemplateSelectPage (args); + readonly ScaffolderArgs args; - public ScaffolderWizard (DotNetProject project, FilePath parentFolder) : base (GettextCatalog.GetString ("Add New Scaffolding"), selectionPage, args) + public ScaffolderWizard (DotNetProject project, FilePath parentFolder, ScaffolderTemplateSelectPage selectPage, ScaffolderArgs args) : base (GettextCatalog.GetString ("Add New Scaffolding"), selectPage, args) { this.DefaultPageSize = new Size (500, 400); @@ -61,12 +60,13 @@ namespace MonoDevelop.AspNetCore.Scaffolding this.RightSideWidget = new XwtControl (rightSideWidget); this.project = project; this.parentFolder = parentFolder; + this.args = args; args.Project = project; args.ParentFolder = parentFolder; this.Completed += (_, __) => Task.Run (() => OnCompletedAsync ()); - selectionPage.ScaffolderSelected -= ScaffolderSelected; - selectionPage.ScaffolderSelected += ScaffolderSelected; + selectPage.ScaffolderSelected -= ScaffolderSelected; + selectPage.ScaffolderSelected += ScaffolderSelected; } void ScaffolderSelected (object sender, EventArgs e) diff --git a/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Tests/MonoDevelop.AspNetCore.Tests/ScaffoldingTests.cs b/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Tests/MonoDevelop.AspNetCore.Tests/ScaffoldingTests.cs index 43d6d5cc0a..e435e8c864 100644 --- a/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Tests/MonoDevelop.AspNetCore.Tests/ScaffoldingTests.cs +++ b/main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Tests/MonoDevelop.AspNetCore.Tests/ScaffoldingTests.cs @@ -47,7 +47,7 @@ namespace MonoDevelop.AspNetCore.Tests var scaffolder = new RazorPageScaffolder (args); args.Scaffolder = scaffolder; scaffolder.GetField ("Name of the Razor Page:").SelectedValue = "PageName"; - var wizard = new ScaffolderWizard (project, args.ParentFolder); + var wizard = CreateWizard (args, project); var commandLineArgs = wizard.GetArguments (args); commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " "); Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" razorpage PageName Empty --referenceScriptLibraries --no-build -outDir ""/MyProject/Pages"" --namespaceName ProjectName", commandLineArgs); @@ -64,7 +64,7 @@ namespace MonoDevelop.AspNetCore.Tests args.Scaffolder = scaffolder; scaffolder.GetField ("Name of the Razor Page:").SelectedValue = "PageName"; (scaffolder.GetField ("Use a layout page") as BoolField).Selected = false; - var wizard = new ScaffolderWizard (project, args.ParentFolder); + var wizard = CreateWizard (args, project); var commandLineArgs = wizard.GetArguments (args); commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " "); Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" razorpage PageName Empty --referenceScriptLibraries --useDefaultLayout --no-build -outDir ""/MyProject/Pages"" --namespaceName ProjectName", commandLineArgs); @@ -80,8 +80,8 @@ namespace MonoDevelop.AspNetCore.Tests var scaffolder = new RazorPageScaffolder (args); args.Scaffolder = scaffolder; scaffolder.GetField ("Name of the Razor Page:").SelectedValue = "PageName"; + var wizard = CreateWizard (args, project); (scaffolder.GetField ("Reference script libraries") as BoolField).Selected = false; - var wizard = new ScaffolderWizard (project, args.ParentFolder); var commandLineArgs = wizard.GetArguments (args); commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " "); Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" razorpage PageName Empty --no-build -outDir ""/MyProject/Pages"" --namespaceName ProjectName", commandLineArgs); @@ -99,7 +99,7 @@ namespace MonoDevelop.AspNetCore.Tests scaffolder.GetField ("Name of the Razor Page:").SelectedValue = "PageName"; scaffolder.GetField ("Model class to use:").SelectedValue = "ModelClass"; scaffolder.GetField ("DbContext class to use:").SelectedValue = "DataContext"; - var wizard = new ScaffolderWizard (project, args.ParentFolder); + var wizard = CreateWizard (args, project); var commandLineArgs = wizard.GetArguments (args); commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " "); Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" razorpage PageName --model ModelClass --dataContext DataContext --referenceScriptLibraries --no-build -outDir ""/MyProject/Pages"" --namespaceName ProjectName", commandLineArgs); @@ -117,7 +117,7 @@ namespace MonoDevelop.AspNetCore.Tests // no name field scaffolder.GetField ("Model class to use:").SelectedValue = "ModelClass"; scaffolder.GetField ("DbContext class to use:").SelectedValue = "DataContext"; - var wizard = new ScaffolderWizard (project, args.ParentFolder); + var wizard = CreateWizard (args, project); var commandLineArgs = wizard.GetArguments (args); commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " "); Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" razorpage --model ModelClass --dataContext DataContext --referenceScriptLibraries --no-build -outDir ""/MyProject/Pages"" --namespaceName ProjectName", commandLineArgs); @@ -133,7 +133,7 @@ namespace MonoDevelop.AspNetCore.Tests var scaffolder = new EmptyMvcControllerScaffolder (args); args.Scaffolder = scaffolder; scaffolder.GetField ("Controller name:").SelectedValue = "ControllerName"; - var wizard = new ScaffolderWizard (project, args.ParentFolder); + var wizard = CreateWizard (args, project); var commandLineArgs = wizard.GetArguments (args); commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " "); Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" controller -name ControllerName --no-build -outDir ""/MyProject/Controllers"" --controllerNamespace ProjectName", commandLineArgs); @@ -148,7 +148,7 @@ namespace MonoDevelop.AspNetCore.Tests args.Project = project; var scaffolder = new EmptyApiControllerScaffolder (args); args.Scaffolder = scaffolder; - var wizard = new ScaffolderWizard (project, args.ParentFolder); + var wizard = CreateWizard (args, project); var commandLineArgs = wizard.GetArguments (args); commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ").TrimEnd (); Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" controller -name --no-build -outDir ""/MyProject/Controllers"" --controllerNamespace ProjectName --restWithNoViews", commandLineArgs); @@ -163,7 +163,7 @@ namespace MonoDevelop.AspNetCore.Tests args.Project = project; var scaffolder = new MvcControllerWithActionsScaffolder (args); args.Scaffolder = scaffolder; - var wizard = new ScaffolderWizard (project, args.ParentFolder); + var wizard = CreateWizard (args, project); var commandLineArgs = wizard.GetArguments (args); commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ").TrimEnd (); Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" controller -name --no-build -outDir ""/MyProject/Controllers"" --controllerNamespace ProjectName --readWriteActions", commandLineArgs); @@ -180,7 +180,7 @@ namespace MonoDevelop.AspNetCore.Tests args.Scaffolder = scaffolder; scaffolder.GetField ("Model class to use:").SelectedValue = "ModelClass"; scaffolder.GetField ("DbContext class to use:").SelectedValue = "DataContext"; - var wizard = new ScaffolderWizard (project, args.ParentFolder); + var wizard = CreateWizard (args, project); var commandLineArgs = wizard.GetArguments (args); commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ").TrimEnd (); Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" controller --model ModelClass --dataContext DataContext -name --no-build -outDir ""/MyProject/Controllers"" --controllerNamespace ProjectName", commandLineArgs); @@ -195,7 +195,7 @@ namespace MonoDevelop.AspNetCore.Tests args.Project = project; var scaffolder = new ApiControllerWithActionsScaffolder (args); args.Scaffolder = scaffolder; - var wizard = new ScaffolderWizard (project, args.ParentFolder); + var wizard = CreateWizard (args, project); var commandLineArgs = wizard.GetArguments (args); commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ").TrimEnd (); Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" controller -name --no-build -outDir ""/MyProject/Controllers"" --controllerNamespace ProjectName --restWithNoViews --readWriteActions", commandLineArgs); @@ -222,6 +222,12 @@ namespace MonoDevelop.AspNetCore.Tests return (DotNetProject)Services.ProjectService.CreateProject ("C#", info, projectOptions); } + + static ScaffolderWizard CreateWizard (ScaffolderArgs args, DotNetProject project) + { + var selectPage = new ScaffolderTemplateSelectPage (args); + return new ScaffolderWizard (project, args.ParentFolder, selectPage, args); + } } static class ScaffolderFieldExtension @@ -237,4 +243,6 @@ namespace MonoDevelop.AspNetCore.Tests return optionList.Options.FirstOrDefault (f => f.DisplayName == displayName); } } + + } |