Skip to content
This repository was archived by the owner on Oct 4, 2021. It is now read-only.

Commit cc73461

Browse files
committed
1 parent 94bf65c commit cc73461

File tree

3 files changed

+73
-62
lines changed

3 files changed

+73
-62
lines changed

main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Commands/ScaffoldCommandHandler.cs

Lines changed: 50 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,53 @@
1-
using System;
2-
using System.Linq;
3-
using System.Threading;
4-
using MonoDevelop.AspNetCore.Scaffolding;
5-
using MonoDevelop.Components.Commands;
6-
using MonoDevelop.Ide;
7-
using MonoDevelop.Ide.Gui.Components;
8-
using MonoDevelop.Ide.Gui.Pads.ProjectPad;
9-
using MonoDevelop.Projects;
10-
11-
namespace MonoDevelop.AspNetCore.Commands
12-
{
13-
enum AspNetCoreCommands
14-
{
15-
Scaffold
16-
}
17-
18-
class ScaffoldNodeExtension : NodeBuilderExtension
19-
{
20-
public override Type CommandHandlerType {
21-
get { return typeof (ScaffoldCommandHandler); }
22-
}
23-
24-
public override bool CanBuildNode (Type dataType)
25-
{
26-
return true;
27-
}
28-
}
29-
30-
class ScaffoldCommandHandler : NodeCommandHandler
31-
{
32-
[CommandHandler (AspNetCoreCommands.Scaffold)]
33-
public void Scaffold ()
34-
{
35-
var project = IdeApp.ProjectOperations.CurrentSelectedProject as DotNetProject;
36-
if (project == null)
37-
return;
38-
39-
var folder = CurrentNode.GetParentDataItem (typeof (ProjectFolder), true) as ProjectFolder;
40-
string parentFolder = folder?.Path ?? project.BaseDirectory;
41-
42-
Xwt.Toolkit.NativeEngine.Invoke (() => {
43-
var w = new ScaffolderWizard (project, parentFolder);
44-
var res = w.RunWizard ();
45-
});
46-
}
47-
1+
using System;
2+
using System.Linq;
3+
using System.Threading;
4+
using MonoDevelop.AspNetCore.Scaffolding;
5+
using MonoDevelop.Components.Commands;
6+
using MonoDevelop.Ide;
7+
using MonoDevelop.Ide.Gui.Components;
8+
using MonoDevelop.Ide.Gui.Pads.ProjectPad;
9+
using MonoDevelop.Projects;
10+
11+
namespace MonoDevelop.AspNetCore.Commands
12+
{
13+
enum AspNetCoreCommands
14+
{
15+
Scaffold
16+
}
17+
18+
class ScaffoldNodeExtension : NodeBuilderExtension
19+
{
20+
public override Type CommandHandlerType {
21+
get { return typeof (ScaffoldCommandHandler); }
22+
}
23+
24+
public override bool CanBuildNode (Type dataType)
25+
{
26+
return true;
27+
}
28+
}
29+
30+
class ScaffoldCommandHandler : NodeCommandHandler
31+
{
32+
[CommandHandler (AspNetCoreCommands.Scaffold)]
33+
public void Scaffold ()
34+
{
35+
var project = IdeApp.ProjectOperations.CurrentSelectedProject as DotNetProject;
36+
if (project == null)
37+
return;
38+
39+
var folder = CurrentNode.GetParentDataItem (typeof (ProjectFolder), true) as ProjectFolder;
40+
string parentFolder = folder?.Path ?? project.BaseDirectory;
41+
42+
Xwt.Toolkit.NativeEngine.Invoke (() => {
43+
var args = new ScaffolderArgs ();
44+
var selectionPage = new ScaffolderTemplateSelectPage (args);
45+
46+
var w = new ScaffolderWizard (project, parentFolder, selectionPage, args);
47+
var res = w.RunWizard ();
48+
});
49+
}
50+
4851
[CommandUpdateHandler (AspNetCoreCommands.Scaffold)]
4952
public void ScaffoldUpdate (CommandInfo info)
5053
{

main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Scaffolding/ScaffolderWizard.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,11 @@ namespace MonoDevelop.AspNetCore.Scaffolding
4646
{
4747
class ScaffolderWizard : ScaffolderDialogController
4848
{
49-
static readonly ScaffolderArgs args = new ScaffolderArgs ();
5049
readonly DotNetProject project;
5150
readonly FilePath parentFolder;
52-
static ScaffolderTemplateSelectPage selectionPage = new ScaffolderTemplateSelectPage (args);
51+
readonly ScaffolderArgs args;
5352

54-
public ScaffolderWizard (DotNetProject project, FilePath parentFolder) : base (GettextCatalog.GetString ("Add New Scaffolding"), selectionPage, args)
53+
public ScaffolderWizard (DotNetProject project, FilePath parentFolder, ScaffolderTemplateSelectPage selectPage, ScaffolderArgs args) : base (GettextCatalog.GetString ("Add New Scaffolding"), selectPage, args)
5554
{
5655
this.DefaultPageSize = new Size (500, 400);
5756

@@ -61,12 +60,13 @@ public ScaffolderWizard (DotNetProject project, FilePath parentFolder) : base (G
6160
this.RightSideWidget = new XwtControl (rightSideWidget);
6261
this.project = project;
6362
this.parentFolder = parentFolder;
63+
this.args = args;
6464
args.Project = project;
6565
args.ParentFolder = parentFolder;
6666

6767
this.Completed += (_, __) => Task.Run (() => OnCompletedAsync ());
68-
selectionPage.ScaffolderSelected -= ScaffolderSelected;
69-
selectionPage.ScaffolderSelected += ScaffolderSelected;
68+
selectPage.ScaffolderSelected -= ScaffolderSelected;
69+
selectPage.ScaffolderSelected += ScaffolderSelected;
7070
}
7171

7272
void ScaffolderSelected (object sender, EventArgs e)

main/src/addins/MonoDevelop.AspNetCore/MonoDevelop.AspNetCore.Tests/MonoDevelop.AspNetCore.Tests/ScaffoldingTests.cs

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void RazorPageScaffolder ()
4747
var scaffolder = new RazorPageScaffolder (args);
4848
args.Scaffolder = scaffolder;
4949
scaffolder.GetField ("Name of the Razor Page:").SelectedValue = "PageName";
50-
var wizard = new ScaffolderWizard (project, args.ParentFolder);
50+
var wizard = CreateWizard (args, project);
5151
var commandLineArgs = wizard.GetArguments (args);
5252
commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ");
5353
Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" razorpage PageName Empty --referenceScriptLibraries --no-build -outDir ""/MyProject/Pages"" --namespaceName ProjectName", commandLineArgs);
@@ -64,7 +64,7 @@ public void RazorPageScaffolderWithoutLayoutPage ()
6464
args.Scaffolder = scaffolder;
6565
scaffolder.GetField ("Name of the Razor Page:").SelectedValue = "PageName";
6666
(scaffolder.GetField ("Use a layout page") as BoolField).Selected = false;
67-
var wizard = new ScaffolderWizard (project, args.ParentFolder);
67+
var wizard = CreateWizard (args, project);
6868
var commandLineArgs = wizard.GetArguments (args);
6969
commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ");
7070
Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" razorpage PageName Empty --referenceScriptLibraries --useDefaultLayout --no-build -outDir ""/MyProject/Pages"" --namespaceName ProjectName", commandLineArgs);
@@ -80,8 +80,8 @@ public void RazorPageScaffolderWithoutReferenceScriptLibraries ()
8080
var scaffolder = new RazorPageScaffolder (args);
8181
args.Scaffolder = scaffolder;
8282
scaffolder.GetField ("Name of the Razor Page:").SelectedValue = "PageName";
83+
var wizard = CreateWizard (args, project);
8384
(scaffolder.GetField ("Reference script libraries") as BoolField).Selected = false;
84-
var wizard = new ScaffolderWizard (project, args.ParentFolder);
8585
var commandLineArgs = wizard.GetArguments (args);
8686
commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ");
8787
Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" razorpage PageName Empty --no-build -outDir ""/MyProject/Pages"" --namespaceName ProjectName", commandLineArgs);
@@ -99,7 +99,7 @@ public void RazorPageEntityFrameworkScaffolder ()
9999
scaffolder.GetField ("Name of the Razor Page:").SelectedValue = "PageName";
100100
scaffolder.GetField ("Model class to use:").SelectedValue = "ModelClass";
101101
scaffolder.GetField ("DbContext class to use:").SelectedValue = "DataContext";
102-
var wizard = new ScaffolderWizard (project, args.ParentFolder);
102+
var wizard = CreateWizard (args, project);
103103
var commandLineArgs = wizard.GetArguments (args);
104104
commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ");
105105
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 @@ public void RazorPageEntityFrameworkCrudScaffolder ()
117117
// no name field
118118
scaffolder.GetField ("Model class to use:").SelectedValue = "ModelClass";
119119
scaffolder.GetField ("DbContext class to use:").SelectedValue = "DataContext";
120-
var wizard = new ScaffolderWizard (project, args.ParentFolder);
120+
var wizard = CreateWizard (args, project);
121121
var commandLineArgs = wizard.GetArguments (args);
122122
commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ");
123123
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 @@ public void EmptyMvcControllerScaffolder ()
133133
var scaffolder = new EmptyMvcControllerScaffolder (args);
134134
args.Scaffolder = scaffolder;
135135
scaffolder.GetField ("Controller name:").SelectedValue = "ControllerName";
136-
var wizard = new ScaffolderWizard (project, args.ParentFolder);
136+
var wizard = CreateWizard (args, project);
137137
var commandLineArgs = wizard.GetArguments (args);
138138
commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ");
139139
Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" controller -name ControllerName --no-build -outDir ""/MyProject/Controllers"" --controllerNamespace ProjectName", commandLineArgs);
@@ -148,7 +148,7 @@ public void EmptyApiControllerScaffolder ()
148148
args.Project = project;
149149
var scaffolder = new EmptyApiControllerScaffolder (args);
150150
args.Scaffolder = scaffolder;
151-
var wizard = new ScaffolderWizard (project, args.ParentFolder);
151+
var wizard = CreateWizard (args, project);
152152
var commandLineArgs = wizard.GetArguments (args);
153153
commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ").TrimEnd ();
154154
Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" controller -name --no-build -outDir ""/MyProject/Controllers"" --controllerNamespace ProjectName --restWithNoViews", commandLineArgs);
@@ -163,7 +163,7 @@ public void MvcControllerWithActionsScaffolder ()
163163
args.Project = project;
164164
var scaffolder = new MvcControllerWithActionsScaffolder (args);
165165
args.Scaffolder = scaffolder;
166-
var wizard = new ScaffolderWizard (project, args.ParentFolder);
166+
var wizard = CreateWizard (args, project);
167167
var commandLineArgs = wizard.GetArguments (args);
168168
commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ").TrimEnd ();
169169
Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" controller -name --no-build -outDir ""/MyProject/Controllers"" --controllerNamespace ProjectName --readWriteActions", commandLineArgs);
@@ -180,7 +180,7 @@ public void ApiControllerEntityFrameworkScaffolder ()
180180
args.Scaffolder = scaffolder;
181181
scaffolder.GetField ("Model class to use:").SelectedValue = "ModelClass";
182182
scaffolder.GetField ("DbContext class to use:").SelectedValue = "DataContext";
183-
var wizard = new ScaffolderWizard (project, args.ParentFolder);
183+
var wizard = CreateWizard (args, project);
184184
var commandLineArgs = wizard.GetArguments (args);
185185
commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ").TrimEnd ();
186186
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 @@ public void ApiControllerWithActionsScaffolder ()
195195
args.Project = project;
196196
var scaffolder = new ApiControllerWithActionsScaffolder (args);
197197
args.Scaffolder = scaffolder;
198-
var wizard = new ScaffolderWizard (project, args.ParentFolder);
198+
var wizard = CreateWizard (args, project);
199199
var commandLineArgs = wizard.GetArguments (args);
200200
commandLineArgs = Regex.Replace (commandLineArgs, @"\s+", " ").TrimEnd ();
201201
Assert.AreEqual (@"aspnet-codegenerator --project ""ProjectName.csproj"" controller -name --no-build -outDir ""/MyProject/Controllers"" --controllerNamespace ProjectName --restWithNoViews --readWriteActions", commandLineArgs);
@@ -222,6 +222,12 @@ DotNetProject CreateProject ()
222222

223223
return (DotNetProject)Services.ProjectService.CreateProject ("C#", info, projectOptions);
224224
}
225+
226+
static ScaffolderWizard CreateWizard (ScaffolderArgs args, DotNetProject project)
227+
{
228+
var selectPage = new ScaffolderTemplateSelectPage (args);
229+
return new ScaffolderWizard (project, args.ParentFolder, selectPage, args);
230+
}
225231
}
226232

227233
static class ScaffolderFieldExtension
@@ -237,4 +243,6 @@ public static ScaffolderField GetField (this ScaffolderBase scaffolder, string d
237243
return optionList.Options.FirstOrDefault (f => f.DisplayName == displayName);
238244
}
239245
}
246+
247+
240248
}

0 commit comments

Comments
 (0)