diff --git a/package.json b/package.json index ac5c2fe..d896858 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,8 @@ "activationEvents": [ "onLanguage:csharp", "onCommand:csharpextensions.createClass", - "onCommand:csharpextensions.createInterface" + "onCommand:csharpextensions.createInterface", + "onCommand:csharpextensions.createMVCControllerClass" ], "main": "./out/src/extension", "contributes": { @@ -31,17 +32,28 @@ { "command": "csharpextensions.createInterface", "title": "New C# Interface" + }, + { + "command": "csharpextensions.createMVCControllerClass", + "title": "New C# MVC Controller Class" } ], "menus": { "explorer/context": [ { + "when":"explorerResourceIsFolder", "group": "navigation@-1", "command": "csharpextensions.createClass" }, { + "when":"explorerResourceIsFolder", "group": "navigation@-1", "command": "csharpextensions.createInterface" + }, + { + "when":"explorerResourceIsFolder && resourceFilename == Controllers", + "group": "navigation@-1", + "command": "csharpextensions.createMVCControllerClass" } ] }, diff --git a/src/extension.ts b/src/extension.ts index ea4e490..cc547d0 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -32,6 +32,7 @@ export function activate(context: vscode.ExtensionContext) { //context.subscriptions.push(disposable); context.subscriptions.push(vscode.commands.registerCommand('csharpextensions.createClass', createClass)); context.subscriptions.push(vscode.commands.registerCommand('csharpextensions.createInterface', createInterface)); + context.subscriptions.push(vscode.commands.registerCommand('csharpextensions.createMVCControllerClass', createMVCControllerClass)); const codeActionProvider = new CodeActionProvider(); let disposable = vscode.languages.registerCodeActionsProvider(documentSelector, codeActionProvider); @@ -46,6 +47,10 @@ function createInterface(args) { promptAndSave(args, 'interface'); } +function createMVCControllerClass(args) { + promptAndSave(args, 'mvccontrollerclass'); +} + function promptAndSave(args, templatetype: string) { if (args == null) { args = { _fsPath: vscode.workspace.rootPath } diff --git a/templates/mvccontrollerclass.tmpl b/templates/mvccontrollerclass.tmpl new file mode 100644 index 0000000..fbfd96c --- /dev/null +++ b/templates/mvccontrollerclass.tmpl @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; + +namespace ${namespace} +{ + public class ${classname} : Controller + { + public ActionResult Index() + { + return View();${cursor} + } + } +} \ No newline at end of file