Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Imison <nosami@users.noreply.github.com>2019-11-26 03:46:11 +0300
committerGitHub <noreply@github.com>2019-11-26 03:46:11 +0300
commit7ff74522f1fcdacba1817c448d6ec2e3fb7a4d44 (patch)
treeb0312c041a556003f16f02b8ebd4b586278e88dd
parent1c1b628fd6e118ad4281ca1e300ea2424887a1c5 (diff)
parentcc734614616a2792210d445306e2ada074ffa368 (diff)
Merge pull request #9365 from mono/fix-1023764
Allow wizard to reopen. Fixes https://devdiv.visualstudio.com/DevDiv/…
-rw-r--r--main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Commands/ScaffoldCommandHandler.cs97
-rw-r--r--main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Scaffolding/ScaffolderWizard.cs10
-rw-r--r--main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Tests/MonoDevelop.AspNetCore.Tests/ScaffoldingTests.cs28
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);
}
}
+
+
}