diff --git a/extensions/data-workspace/package.json b/extensions/data-workspace/package.json index 92ce77c142..518e85e025 100644 --- a/extensions/data-workspace/package.json +++ b/extensions/data-workspace/package.json @@ -133,12 +133,12 @@ "view/item/context": [ { "command": "projects.manageProject", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project && azdataAvailable", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ && azdataAvailable", "group": "0_projectsFirst@1" }, { "command": "projects.removeProject", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/", "group": "9_dbProjectsLast@9" } ] diff --git a/extensions/sql-database-projects/package.json b/extensions/sql-database-projects/package.json index 2f670f0857..36ae9d4dad 100644 --- a/extensions/sql-database-projects/package.json +++ b/extensions/sql-database-projects/package.json @@ -185,6 +185,11 @@ "command": "sqlDatabaseProjects.generateProjectFromOpenApiSpec", "title": "%sqlDatabaseProjects.generateProjectFromOpenApiSpec%", "category": "%sqlDatabaseProjects.displayName%" + }, + { + "command": "sqlDatabaseProjects.convertToSdkStyleProject", + "title": "%sqlDatabaseProjects.convertToSdkStyleProject%", + "category": "%sqlDatabaseProjects.displayName%" } ], "menus": { @@ -296,77 +301,81 @@ { "command": "sqlDatabaseProjects.changeTargetPlatform", "when": "false" + }, + { + "command": "sqlDatabaseProjects.convertToSdkStyleProject", + "when": "false" } ], "view/item/context": [ { "command": "sqlDatabaseProjects.build", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/", "group": "1_dbProjectsFirst@1" }, { "command": "sqlDatabaseProjects.publish", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/", "group": "1_dbProjectsFirst@2" }, { "command": "sqlDatabaseProjects.schemaCompare", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project && azdataAvailable", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ && azdataAvailable", "group": "1_dbProjectsFirst@3" }, { "command": "sqlDatabaseProjects.updateProjectFromDatabase", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project && azdataAvailable", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ && azdataAvailable", "group": "1_dbProjectsFirst@4" }, { "command": "sqlDatabaseProjects.newItem", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder", "group": "2_dbProjects_newMain@1" }, { "command": "sqlDatabaseProjects.addExistingItem", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder", "group": "2_dbProjects_newMain@2" }, { "command": "sqlDatabaseProjects.newFolder", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder", "group": "2_dbProjects_newMain@3" }, { "command": "sqlDatabaseProjects.newTable", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder", "group": "3_dbProjects_newItem@1" }, { "command": "sqlDatabaseProjects.newView", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder", "group": "3_dbProjects_newItem@2" }, { "command": "sqlDatabaseProjects.newStoredProcedure", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder", "group": "3_dbProjects_newItem@3" }, { "command": "sqlDatabaseProjects.newExternalStreamingJob", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder", "group": "3_dbProjects_newItem@4" }, { "command": "sqlDatabaseProjects.newScript", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder", "group": "3_dbProjects_newItem@7" }, { "command": "sqlDatabaseProjects.newPreDeploymentScript", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder", "group": "3_dbProjects_newItem@8" }, { "command": "sqlDatabaseProjects.newPostDeploymentScript", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project || viewItem == databaseProject.itemType.folder", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/ || viewItem == databaseProject.itemType.folder", "group": "3_dbProjects_newItem@9" }, { @@ -389,19 +398,24 @@ "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.folder || viewItem =~ /^databaseProject.itemType.file/ || viewItem == databaseProject.itemType.reference", "group": "9_dbProjectsLast@2" }, + { + "command": "sqlDatabaseProjects.convertToSdkStyleProject", + "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.legacyProject", + "group": "9_dbProjectsLast@5" + }, { "command": "sqlDatabaseProjects.changeTargetPlatform", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/", "group": "9_dbProjectsLast@6" }, { "command": "sqlDatabaseProjects.editProjectFile", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/", "group": "9_dbProjectsLast@7" }, { "command": "sqlDatabaseProjects.openContainingFolder", - "when": "view == dataworkspace.views.main && viewItem == databaseProject.itemType.project", + "when": "view == dataworkspace.views.main && viewItem =~ /^(databaseProject.itemType.project|databaseProject.itemType.legacyProject)$/", "group": "9_dbProjectsLast@8" }, { diff --git a/extensions/sql-database-projects/package.nls.json b/extensions/sql-database-projects/package.nls.json index 46cfd10152..851ddbc606 100644 --- a/extensions/sql-database-projects/package.nls.json +++ b/extensions/sql-database-projects/package.nls.json @@ -32,6 +32,7 @@ "sqlDatabaseProjects.editProjectFile": "Edit .sqlproj File", "sqlDatabaseProjects.changeTargetPlatform": "Change Target Platform", "sqlDatabaseProjects.generateProjectFromOpenApiSpec": "Generate SQL Project from OpenAPI/Swagger spec", + "sqlDatabaseProjects.convertToSdkStyleProject": "Convert to SDK-style project", "sqlDatabaseProjects.Settings": "Database Projects", "sqlDatabaseProjects.dotnetInstallLocation": "Full path to .NET SDK on the machine.", diff --git a/extensions/sql-database-projects/src/common/constants.ts b/extensions/sql-database-projects/src/common/constants.ts index ea5b2c3dfc..541b5eb49f 100644 --- a/extensions/sql-database-projects/src/common/constants.ts +++ b/extensions/sql-database-projects/src/common/constants.ts @@ -481,6 +481,7 @@ export const sqlAuth = 'SqlAuth'; // Tree item types export enum DatabaseProjectItemType { project = 'databaseProject.itemType.project', + legacyProject = 'databaseProject.itemType.legacyProject', folder = 'databaseProject.itemType.folder', file = 'databaseProject.itemType.file', externalStreamingJob = 'databaseProject.itemType.file.externalStreamingJob', diff --git a/extensions/sql-database-projects/src/controllers/mainController.ts b/extensions/sql-database-projects/src/controllers/mainController.ts index dcbf427a74..065ed09f9d 100644 --- a/extensions/sql-database-projects/src/controllers/mainController.ts +++ b/extensions/sql-database-projects/src/controllers/mainController.ts @@ -81,6 +81,7 @@ export default class MainController implements vscode.Disposable { vscode.commands.registerCommand('sqlDatabaseProjects.addDatabaseReference', async (node: WorkspaceTreeItem) => { return this.projectsController.addDatabaseReference(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.openContainingFolder', async (node: WorkspaceTreeItem) => { return this.projectsController.openContainingFolder(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.editProjectFile', async (node: WorkspaceTreeItem) => { return this.projectsController.editProjectFile(node); }); + vscode.commands.registerCommand('sqlDatabaseProjects.convertToSdkStyleProject', async (node: WorkspaceTreeItem) => { return this.projectsController.convertToSdkStyleProject(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.delete', async (node: WorkspaceTreeItem) => { return this.projectsController.delete(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.exclude', async (node: WorkspaceTreeItem) => { return this.projectsController.exclude(node); }); vscode.commands.registerCommand('sqlDatabaseProjects.changeTargetPlatform', async (node: WorkspaceTreeItem) => { return this.projectsController.changeTargetPlatform(node); }); diff --git a/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts b/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts index 4aafa0a626..88bb2c024c 100644 --- a/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts +++ b/extensions/sql-database-projects/src/models/tree/projectTreeItem.ts @@ -47,7 +47,7 @@ export class ProjectRootTreeItem extends BaseProjectTreeItem { public get treeItem(): vscode.TreeItem { const projectItem = new vscode.TreeItem(this.fileSystemUri, vscode.TreeItemCollapsibleState.Expanded); - projectItem.contextValue = DatabaseProjectItemType.project; + projectItem.contextValue = this.project.isSdkStyleProject ? DatabaseProjectItemType.project : DatabaseProjectItemType.legacyProject; projectItem.iconPath = IconPathHelper.databaseProject; projectItem.label = path.basename(this.projectUri.fsPath, sqlprojExtension);