diff --git a/extensions/sql-database-projects/package.json b/extensions/sql-database-projects/package.json index 5d45c37d96..23aa5c5978 100644 --- a/extensions/sql-database-projects/package.json +++ b/extensions/sql-database-projects/package.json @@ -82,6 +82,31 @@ "command": "sqlDatabaseProjects.newFolder", "title": "%sqlDatabaseProjects.newFolder%", "category": "%sqlDatabaseProjects.displayName%" + }, + { + "command": "sqlDatabaseProjects.build", + "title": "%sqlDatabaseProjects.build%", + "category": "%sqlDatabaseProjects.displayName%" + }, + { + "command": "sqlDatabaseProjects.deploy", + "title": "%sqlDatabaseProjects.deploy%", + "category": "%sqlDatabaseProjects.displayName%" + }, + { + "command": "sqlDatabaseProjects.import", + "title": "%sqlDatabaseProjects.import%", + "category": "%sqlDatabaseProjects.displayName%" + }, + { + "command": "sqlDatabaseProjects.properties", + "title": "%sqlDatabaseProjects.properties%", + "category": "%sqlDatabaseProjects.displayName%" + }, + { + "command": "sqlDatabaseProjects.schemaCompare", + "title": "%sqlDatabaseProjects.schemaCompare%", + "category": "%sqlDatabaseProjects.displayName%" } ], "menus": { @@ -119,36 +144,87 @@ { "command": "sqlDatabaseProjects.newFolder", "when": "false" + }, + { + "command": "sqlDatabaseProjects.build", + "when": "false" + }, + { + "command": "sqlDatabaseProjects.deploy", + "when": "false" + }, + { + "command": "sqlDatabaseProjects.import" + }, + { + "command": "sqlDatabaseProjects.properties", + "when": "false" + }, + { + "command": "sqlDatabaseProjects.schemaCompare", + "when": "false" } ], "view/item/context": [ { - "command": "sqlDatabaseProjects.close", - "when": "view == sqlDatabaseProjectsView" + "command": "sqlDatabaseProjects.build", + "when": "view == sqlDatabaseProjectsView", + "group": "1_dbProjectsFirst@1" }, { - "command": "sqlDatabaseProjects.newScript", - "when": "view == sqlDatabaseProjectsView" + "command": "sqlDatabaseProjects.deploy", + "when": "view == sqlDatabaseProjectsView", + "group": "1_dbProjectsFirst@2" }, { - "command": "sqlDatabaseProjects.newTable", - "when": "view == sqlDatabaseProjectsView" + "command": "sqlDatabaseProjects.schemaCompare", + "when": "view == sqlDatabaseProjectsView", + "group": "1_dbProjectsFirst@3" }, { - "command": "sqlDatabaseProjects.newView", - "when": "view == sqlDatabaseProjectsView" - }, - { - "command": "sqlDatabaseProjects.newStoredProcedure", - "when": "view == sqlDatabaseProjectsView" + "command": "sqlDatabaseProjects.import", + "when": "view == sqlDatabaseProjectsView", + "group": "1_dbProjectsFirst@4" }, { "command": "sqlDatabaseProjects.newItem", - "when": "view == sqlDatabaseProjectsView" + "when": "view == sqlDatabaseProjectsView", + "group": "2_dbProjects_newMain@1" }, { "command": "sqlDatabaseProjects.newFolder", - "when": "view == sqlDatabaseProjectsView" + "when": "view == sqlDatabaseProjectsView", + "group": "2_dbProjects_newMain@2" + }, + { + "command": "sqlDatabaseProjects.newTable", + "when": "view == sqlDatabaseProjectsView", + "group": "3_dbProjects_newItem@1" + }, + { + "command": "sqlDatabaseProjects.newView", + "when": "view == sqlDatabaseProjectsView", + "group": "3_dbProjects_newItem@2" + }, + { + "command": "sqlDatabaseProjects.newStoredProcedure", + "when": "view == sqlDatabaseProjectsView", + "group": "3_dbProjects_newItem@3" + }, + { + "command": "sqlDatabaseProjects.newScript", + "when": "view == sqlDatabaseProjectsView", + "group": "3_dbProjects_newItem@9" + }, + { + "command": "sqlDatabaseProjects.close", + "when": "view == sqlDatabaseProjectsView", + "group": "9_dbProjectsLast" + }, + { + "command": "sqlDatabaseProjects.properties", + "when": "view == sqlDatabaseProjectsView", + "group": "9_dbProjectsLast" } ] }, diff --git a/extensions/sql-database-projects/package.nls.json b/extensions/sql-database-projects/package.nls.json index 12763f535f..ac6a6658f2 100644 --- a/extensions/sql-database-projects/package.nls.json +++ b/extensions/sql-database-projects/package.nls.json @@ -6,6 +6,11 @@ "sqlDatabaseProjects.new": "New Database Project", "sqlDatabaseProjects.open": "Open Database Project", "sqlDatabaseProjects.close": "Close Database Project", + "sqlDatabaseProjects.build": "Build", + "sqlDatabaseProjects.deploy": "Deploy", + "sqlDatabaseProjects.import": "Import", + "sqlDatabaseProjects.properties": "Properties", + "sqlDatabaseProjects.schemaCompare": "Schema Compare", "sqlDatabaseProjects.newScript": "Add Script", "sqlDatabaseProjects.newTable": "Add Table", diff --git a/extensions/sql-database-projects/src/controllers/mainController.ts b/extensions/sql-database-projects/src/controllers/mainController.ts index 57e0ce163f..b4f08c9195 100644 --- a/extensions/sql-database-projects/src/controllers/mainController.ts +++ b/extensions/sql-database-projects/src/controllers/mainController.ts @@ -47,6 +47,12 @@ export default class MainController implements vscode.Disposable { vscode.commands.registerCommand('sqlDatabaseProjects.new', async () => { await this.createNewProject(); }); vscode.commands.registerCommand('sqlDatabaseProjects.open', async () => { await this.openProjectFromFile(); }); vscode.commands.registerCommand('sqlDatabaseProjects.close', (node: BaseProjectTreeItem) => { this.projectsController.closeProject(node); }); + vscode.commands.registerCommand('sqlDatabaseProjects.properties', async (node: BaseProjectTreeItem) => { await vscode.window.showErrorMessage(`Properties not yet implemented: ${node.uri.path}`); }); // TODO + + vscode.commands.registerCommand('sqlDatabaseProjects.build', async (node: BaseProjectTreeItem) => { await this.projectsController.build(node); }); + vscode.commands.registerCommand('sqlDatabaseProjects.deploy', async (node: BaseProjectTreeItem) => { await this.projectsController.deploy(node); }); + vscode.commands.registerCommand('sqlDatabaseProjects.import', async (node: BaseProjectTreeItem) => { await this.projectsController.import(node); }); + vscode.commands.registerCommand('sqlDatabaseProjects.newScript', async (node: BaseProjectTreeItem) => { await this.projectsController.addItemPrompt(node, templates.script); }); vscode.commands.registerCommand('sqlDatabaseProjects.newTable', async (node: BaseProjectTreeItem) => { await this.projectsController.addItemPrompt(node, templates.table); }); diff --git a/extensions/sql-database-projects/src/controllers/projectController.ts b/extensions/sql-database-projects/src/controllers/projectController.ts index f8e583dfab..91e22b2393 100644 --- a/extensions/sql-database-projects/src/controllers/projectController.ts +++ b/extensions/sql-database-projects/src/controllers/projectController.ts @@ -112,6 +112,21 @@ export class ProjectsController { this.refreshProjectsTree(); } + public async build(treeNode: BaseProjectTreeItem) { + const project = this.getProjectContextFromTreeNode(treeNode); + await vscode.window.showErrorMessage(`Build not yet implemented: ${project.projectFilePath}`); // TODO + } + + public async deploy(treeNode: BaseProjectTreeItem) { + const project = this.getProjectContextFromTreeNode(treeNode); + await vscode.window.showErrorMessage(`Deploy not yet implemented: ${project.projectFilePath}`); // TODO + } + + public async import(treeNode: BaseProjectTreeItem) { + const project = this.getProjectContextFromTreeNode(treeNode); + await vscode.window.showErrorMessage(`Import not yet implemented: ${project.projectFilePath}`); // TODO + } + public async addFolderPrompt(treeNode: BaseProjectTreeItem) { const project = this.getProjectContextFromTreeNode(treeNode); const newFolderName = await this.promptForNewObjectName(new templates.ProjectScriptType(templates.folder, constants.folderFriendlyName, ''), project); @@ -193,7 +208,7 @@ export class ProjectsController { return (treeNode.root as ProjectRootTreeItem).project; } else { - throw new Error('"Add item" command invoked from unexpected location: ' + treeNode.uri.path); + throw new Error('Unable to establish project context. Command invoked from unexpected location: ' + treeNode.uri.path); } }