|
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 async 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 w = new ScaffolderWizard (project, parentFolder); |
| 44 | + var res = w.RunWizard (); |
| 45 | + }); |
| 46 | + } |
| 47 | + |
48 | 48 | [CommandUpdateHandler (AspNetCoreCommands.Scaffold)] |
49 | 49 | public void ScaffoldUpdate (CommandInfo info) |
50 | 50 | { |
51 | 51 | var project = CurrentNode.GetParentDataItem (typeof (DotNetProject), true) as DotNetProject; |
| 52 | + info.Enabled = info.Visible = NodeIsFileOrFolder(CurrentNode) && IsAspNetCoreProject (project); |
| 53 | + } |
| 54 | + |
| 55 | + static bool NodeIsFileOrFolder (ITreeNavigator node) |
| 56 | + { |
| 57 | + return node.DataItem is ProjectFile || node.DataItem is ProjectFolder; |
| 58 | + } |
52 | 59 |
|
53 | | - info.Enabled = info.Visible = IsAspNetCoreProject (project); |
54 | | - } |
55 | | - |
56 | 60 | bool IsAspNetCoreProject (Project project) |
57 | | - { |
58 | | - //TODO: this only checks for SDK style project |
59 | | - return project != null |
| 61 | + { |
| 62 | + //TODO: this only checks for SDK style project |
| 63 | + return project != null |
60 | 64 | && (project.MSBuildProject.GetReferencedSDKs ().FirstOrDefault (x => x.IndexOf ("Microsoft.NET.Sdk.Web", StringComparison.OrdinalIgnoreCase) != -1) != null); |
61 | 65 | } |
62 | | - } |
63 | | -} |
| 66 | + } |
| 67 | +} |
0 commit comments