Organizes context menus for database projects tree (#10266)

* reoranizing existing context menu commands

* adding build/deploy/import stubs

* Update error message

* adding for schemaCompare
This commit is contained in:
Benjin Dubishar
2020-05-06 11:31:17 -07:00
committed by GitHub
parent dbb40d820c
commit 9b296c9f42
4 changed files with 117 additions and 15 deletions

View File

@@ -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"
}
]
},

View File

@@ -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",

View File

@@ -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); });

View File

@@ -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);
}
}