From 6e2626114918b989111c61b5d10b37a31acc1400 Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Tue, 11 Aug 2020 15:37:03 -0700 Subject: [PATCH] Move rest of DE actions into package contributions (#11755) * Move rest of DE actions into package contributions * Add sql-database-projects import --- extensions/dacpac/package.json | 17 +++ extensions/import/package.json | 31 +++-- extensions/profiler/package.json | 7 ++ extensions/schema-compare/package.json | 12 ++ extensions/sql-database-projects/package.json | 8 ++ .../dataExplorer/browser/extensionActions.ts | 111 ------------------ .../browser/extensions.contribution.ts | 87 -------------- .../browser/profilerActions.contribution.ts | 10 +- src/vs/workbench/workbench.common.main.ts | 1 - 9 files changed, 69 insertions(+), 215 deletions(-) delete mode 100644 src/sql/workbench/contrib/dataExplorer/browser/extensionActions.ts delete mode 100644 src/sql/workbench/contrib/dataExplorer/browser/extensions.contribution.ts diff --git a/extensions/dacpac/package.json b/extensions/dacpac/package.json index e4feb11482..4594763502 100644 --- a/extensions/dacpac/package.json +++ b/extensions/dacpac/package.json @@ -48,6 +48,23 @@ "when": "connectionProvider == MSSQL && nodeType && nodeType == Folder && nodeLabel == 'Databases' && mssql:engineedition != 11", "group": "export" } + ], + "dataExplorer/context": [ + { + "command": "dacFx.start", + "when": "connectionProvider == MSSQL && nodeType && nodeType == Database && mssql:engineedition != 11", + "group": "export" + }, + { + "command": "dacFx.start", + "when": "connectionProvider == MSSQL && nodeType && nodeType == Server && mssql:engineedition != 11", + "group": "export" + }, + { + "command": "dacFx.start", + "when": "connectionProvider == MSSQL && nodeType && nodeType == Folder && nodeLabel == 'Databases' && mssql:engineedition != 11", + "group": "export" + } ] } }, diff --git a/extensions/import/package.json b/extensions/import/package.json index bd53716aff..9660c88e34 100644 --- a/extensions/import/package.json +++ b/extensions/import/package.json @@ -13,7 +13,7 @@ "icon": "images/extension.png", "aiKey": "AIF-37eefaf0-8022-4671-a3fb-64752724682e", "activationEvents": [ - "onCommand:flatFileImport.start" + "onCommand:flatFileImport.start" ], "main": "./out/main", "repository": { @@ -49,6 +49,13 @@ "when": "connectionProvider == MSSQL && nodeType && nodeType == Database && mssql:engineedition != 11", "group": "import" } + ], + "dataExplorer/context": [ + { + "command": "flatFileImport.start", + "when": "connectionProvider == MSSQL && nodeType && nodeType == Database && mssql:engineedition != 11", + "group": "import" + } ] }, "configuration": { @@ -68,19 +75,19 @@ "htmlparser2": "^3.10.1", "service-downloader": "0.2.1", "vscode-extension-telemetry": "0.0.18", - "vscode-nls": "^3.2.1" + "vscode-nls": "^3.2.1" }, "devDependencies": { - "@types/mocha": "^5.2.5", - "@types/node": "^12.11.7", - "@types/sinon": "^9.0.4", - "mocha": "^5.2.0", - "mocha-junit-reporter": "^1.17.0", - "mocha-multi-reporters": "^1.1.7", - "should": "^13.2.1", - "sinon": "^9.0.2", - "typemoq": "^2.1.0", - "vscodetestcover": "^1.0.9" + "@types/mocha": "^5.2.5", + "@types/node": "^12.11.7", + "@types/sinon": "^9.0.4", + "mocha": "^5.2.0", + "mocha-junit-reporter": "^1.17.0", + "mocha-multi-reporters": "^1.1.7", + "should": "^13.2.1", + "sinon": "^9.0.2", + "typemoq": "^2.1.0", + "vscodetestcover": "^1.0.9" }, "__metadata": { "id": "23", diff --git a/extensions/profiler/package.json b/extensions/profiler/package.json index 75e444a205..49169f8c25 100644 --- a/extensions/profiler/package.json +++ b/extensions/profiler/package.json @@ -69,6 +69,13 @@ "when": "connectionProvider == MSSQL && nodeType && nodeType == Server && mssql:engineedition != 11", "group": "profiler" } + ], + "dataExplorer/context": [ + { + "command": "profiler.newProfiler", + "when": "connectionProvider == MSSQL && nodeType && nodeType == Server && mssql:engineedition != 11", + "group": "profiler" + } ] }, "outputChannels": [ diff --git a/extensions/schema-compare/package.json b/extensions/schema-compare/package.json index d3cbb13766..1cd37b7998 100644 --- a/extensions/schema-compare/package.json +++ b/extensions/schema-compare/package.json @@ -60,6 +60,18 @@ "when": "connectionProvider == MSSQL && nodeType && nodeType == Server && mssql:engineedition != 11", "group": "export" } + ], + "dataExplorer/context": [ + { + "command": "schemaCompare.start", + "when": "connectionProvider == MSSQL && nodeType && nodeType == Database && mssql:engineedition != 11", + "group": "export" + }, + { + "command": "schemaCompare.start", + "when": "connectionProvider == MSSQL && nodeType && nodeType == Server && mssql:engineedition != 11", + "group": "export" + } ] } }, diff --git a/extensions/sql-database-projects/package.json b/extensions/sql-database-projects/package.json index 1ec32caf72..20a77f398d 100644 --- a/extensions/sql-database-projects/package.json +++ b/extensions/sql-database-projects/package.json @@ -282,6 +282,14 @@ "group": "export" } ], + + "dataExplorer/context": [ + { + "command": "sqlDatabaseProjects.importDatabase", + "when": "connectionProvider == MSSQL && nodeType && nodeType == Database && mssql:engineedition != 11", + "group": "export" + } + ], "dashboard/toolbar": [ { "command": "sqlDatabaseProjects.importDatabase", diff --git a/src/sql/workbench/contrib/dataExplorer/browser/extensionActions.ts b/src/sql/workbench/contrib/dataExplorer/browser/extensionActions.ts deleted file mode 100644 index 84c2e77b1f..0000000000 --- a/src/sql/workbench/contrib/dataExplorer/browser/extensionActions.ts +++ /dev/null @@ -1,111 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { CommandsRegistry, ICommandService } from 'vs/platform/commands/common/commands'; -import { TreeViewItemHandleArg } from 'sql/workbench/common/views'; -import * as azdata from 'azdata'; -import { IOEShimService } from 'sql/workbench/services/objectExplorer/browser/objectExplorerViewTreeShim'; -import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService'; -import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement'; -import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile'; - -export const DATA_TIER_WIZARD_COMMAND_ID = 'dataExplorer.dataTierWizard'; -export const PROFILER_COMMAND_ID = 'dataExplorer.profiler'; -export const IMPORT_COMMAND_ID = 'dataExplorer.flatFileImport'; -export const SCHEMA_COMPARE_COMMAND_ID = 'dataExplorer.schemaCompare'; -export const GENERATE_SCRIPTS_COMMAND_ID = 'dataExplorer.generateScripts'; -export const PROPERTIES_COMMAND_ID = 'dataExplorer.properties'; -export const IMPORT_DATABASE_COMMAND_ID = 'dataExplorer.importDatabase'; - - -// Data Tier Wizard -CommandsRegistry.registerCommand({ - id: DATA_TIER_WIZARD_COMMAND_ID, - handler: (accessor, args: TreeViewItemHandleArg) => { - const commandService = accessor.get(ICommandService); - const connectedContext: azdata.ConnectedContext = { connectionProfile: args.$treeItem.payload }; - return commandService.executeCommand('dacFx.start', connectedContext); - } -}); - - -// Flat File Import -CommandsRegistry.registerCommand({ - id: IMPORT_COMMAND_ID, - handler: (accessor, args: TreeViewItemHandleArg) => { - const commandService = accessor.get(ICommandService); - let connectedContext: azdata.ConnectedContext = { connectionProfile: args.$treeItem.payload }; - return commandService.executeCommand('flatFileImport.start', connectedContext); - } -}); - -// Schema Compare -CommandsRegistry.registerCommand({ - id: SCHEMA_COMPARE_COMMAND_ID, - handler: (accessor, args: TreeViewItemHandleArg) => { - const commandService = accessor.get(ICommandService); - let connectedContext: azdata.ConnectedContext = { connectionProfile: args.$treeItem.payload }; - return commandService.executeCommand('schemaCompare.start', connectedContext); - } -}); - -// Profiler -CommandsRegistry.registerCommand({ - id: PROFILER_COMMAND_ID, - handler: (accessor, args: TreeViewItemHandleArg) => { - const commandService = accessor.get(ICommandService); - const oeShimService = accessor.get(IOEShimService); - const objectExplorerContext: azdata.ObjectExplorerContext = { - connectionProfile: args.$treeItem.payload, - isConnectionNode: true, - nodeInfo: oeShimService.getNodeInfoForTreeItem(args.$treeItem) - }; - return commandService.executeCommand('profiler.newProfiler', objectExplorerContext); - } -}); - -// Generate Scripts -CommandsRegistry.registerCommand({ - id: GENERATE_SCRIPTS_COMMAND_ID, - handler: (accessor, args: TreeViewItemHandleArg) => { - const commandService = accessor.get(ICommandService); - const oeShimService = accessor.get(IOEShimService); - const objectExplorerContext: azdata.ObjectExplorerContext = { - connectionProfile: args.$treeItem.payload, - isConnectionNode: true, - nodeInfo: oeShimService.getNodeInfoForTreeItem(args.$treeItem) - }; - return commandService.executeCommand('adminToolExtWin.launchSsmsMinGswDialog', objectExplorerContext); - } -}); - -// Properties -CommandsRegistry.registerCommand({ - id: PROPERTIES_COMMAND_ID, - handler: async (accessor, args: TreeViewItemHandleArg) => { - const commandService = accessor.get(ICommandService); - const capabilitiesService = accessor.get(ICapabilitiesService); - const connectionManagementService = accessor.get(IConnectionManagementService); - const oeShimService = accessor.get(IOEShimService); - const profile = new ConnectionProfile(capabilitiesService, args.$treeItem.payload); - await connectionManagementService.connectIfNotConnected(profile); - const objectExplorerContext: azdata.ObjectExplorerContext = { - connectionProfile: args.$treeItem.payload, - isConnectionNode: true, - nodeInfo: oeShimService.getNodeInfoForTreeItem(args.$treeItem) - }; - return commandService.executeCommand('adminToolExtWin.launchSsmsMinPropertiesDialog', objectExplorerContext); - } -}); - -// Import Database -CommandsRegistry.registerCommand({ - id: IMPORT_DATABASE_COMMAND_ID, - handler: (accessor, args: TreeViewItemHandleArg) => { - const commandService = accessor.get(ICommandService); - let connectedContext: azdata.ConnectedContext = { connectionProfile: args.$treeItem.payload }; - return commandService.executeCommand('sqlDatabaseProjects.importDatabase', connectedContext); - } -}); diff --git a/src/sql/workbench/contrib/dataExplorer/browser/extensions.contribution.ts b/src/sql/workbench/contrib/dataExplorer/browser/extensions.contribution.ts deleted file mode 100644 index e20e368e5b..0000000000 --- a/src/sql/workbench/contrib/dataExplorer/browser/extensions.contribution.ts +++ /dev/null @@ -1,87 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the Source EULA. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; -import { DATA_TIER_WIZARD_COMMAND_ID, PROFILER_COMMAND_ID, IMPORT_COMMAND_ID, SCHEMA_COMPARE_COMMAND_ID, IMPORT_DATABASE_COMMAND_ID } from 'sql/workbench/contrib/dataExplorer/browser/extensionActions'; -import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { MssqlNodeContext } from 'sql/workbench/services/objectExplorer/browser/mssqlNodeContext'; -import { mssqlProviderName } from 'sql/platform/connection/common/constants'; -import { NodeType } from 'sql/workbench/services/objectExplorer/common/nodeType'; -import { localize } from 'vs/nls'; -import { DatabaseEngineEdition } from 'sql/workbench/api/common/sqlExtHostTypes'; - -// Data-Tier Application Wizard -MenuRegistry.appendMenuItem(MenuId.DataExplorerContext, { - group: 'export', - order: 7, - command: { - id: DATA_TIER_WIZARD_COMMAND_ID, - title: localize('dacFx', "Data-tier Application Wizard") - }, - when: ContextKeyExpr.and(MssqlNodeContext.NodeProvider.isEqualTo(mssqlProviderName), - MssqlNodeContext.IsDatabaseOrServer, MssqlNodeContext.EngineEdition.notEqualsTo(DatabaseEngineEdition.SqlOnDemand.toString())) -}); - - -MenuRegistry.appendMenuItem(MenuId.DataExplorerContext, { - group: 'export', - order: 7, - command: { - id: DATA_TIER_WIZARD_COMMAND_ID, - title: localize('dacFx', "Data-tier Application Wizard") - }, - when: ContextKeyExpr.and(MssqlNodeContext.NodeProvider.isEqualTo(mssqlProviderName), - MssqlNodeContext.NodeType.isEqualTo(NodeType.Folder), - MssqlNodeContext.NodeLabel.isEqualTo('Databases'), - MssqlNodeContext.EngineEdition.notEqualsTo(DatabaseEngineEdition.SqlOnDemand.toString())) -}); - -// Import Database -MenuRegistry.appendMenuItem(MenuId.DataExplorerContext, { - group: 'export', - order: 8, - command: { - id: IMPORT_DATABASE_COMMAND_ID, - title: localize('importDatabase', "Import New Database Project") - }, - when: ContextKeyExpr.and(MssqlNodeContext.NodeProvider.isEqualTo(mssqlProviderName), - MssqlNodeContext.NodeType.isEqualTo(NodeType.Database), MssqlNodeContext.EngineEdition.notEqualsTo(DatabaseEngineEdition.SqlOnDemand.toString())) -}); - -// Profiler -MenuRegistry.appendMenuItem(MenuId.DataExplorerContext, { - group: 'profiler', - order: 9, - command: { - id: PROFILER_COMMAND_ID, - title: localize('profiler', "Launch Profiler") - }, - when: ContextKeyExpr.and(MssqlNodeContext.NodeProvider.isEqualTo(mssqlProviderName), - MssqlNodeContext.NodeType.isEqualTo(NodeType.Server), MssqlNodeContext.EngineEdition.notEqualsTo(DatabaseEngineEdition.SqlOnDemand.toString())) -}); - -// Schema Compare -MenuRegistry.appendMenuItem(MenuId.DataExplorerContext, { - group: 'export', - order: 10, - command: { - id: SCHEMA_COMPARE_COMMAND_ID, - title: localize('schemaCompare', "Schema Compare") - }, - when: ContextKeyExpr.and(MssqlNodeContext.NodeProvider.isEqualTo(mssqlProviderName), - MssqlNodeContext.NodeType.isEqualTo(NodeType.Database), MssqlNodeContext.EngineEdition.notEqualsTo(DatabaseEngineEdition.SqlOnDemand.toString())) -}); - -// Flat File Import -MenuRegistry.appendMenuItem(MenuId.DataExplorerContext, { - group: 'import', - order: 11, - command: { - id: IMPORT_COMMAND_ID, - title: localize('flatFileImport', "Import Wizard") - }, - when: ContextKeyExpr.and(MssqlNodeContext.NodeProvider.isEqualTo(mssqlProviderName), - MssqlNodeContext.NodeType.isEqualTo(NodeType.Database)) -}); diff --git a/src/sql/workbench/contrib/profiler/browser/profilerActions.contribution.ts b/src/sql/workbench/contrib/profiler/browser/profilerActions.contribution.ts index 6a97a5d5bc..24f0c0af98 100644 --- a/src/sql/workbench/contrib/profiler/browser/profilerActions.contribution.ts +++ b/src/sql/workbench/contrib/profiler/browser/profilerActions.contribution.ts @@ -12,7 +12,6 @@ import * as TaskUtilities from 'sql/workbench/browser/taskUtilities'; import { IProfilerService } from 'sql/workbench/services/profiler/browser/interfaces'; import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { ProfilerEditor } from 'sql/workbench/contrib/profiler/browser/profilerEditor'; -import { ObjectExplorerActionsContext } from 'sql/workbench/services/objectExplorer/browser/objectExplorerActions'; import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile'; import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService'; import { mssqlProviderName } from 'sql/platform/connection/common/constants'; @@ -32,9 +31,12 @@ CommandsRegistry.registerCommand({ let capabilitiesService: ICapabilitiesService = accessor.get(ICapabilitiesService); // If a context is available if invoked from the context menu, we will use the connection profiler of the server node - if (args && args.length === 1 && args[0] && args[0] instanceof ObjectExplorerActionsContext) { - let context = args[0] as ObjectExplorerActionsContext; - connectionProfile = ConnectionProfile.fromIConnectionProfile(capabilitiesService, context.connectionProfile); + if (args[0]?.connectionProfile) { + connectionProfile = ConnectionProfile.fromIConnectionProfile(capabilitiesService, args[0].connectionProfile); + } else if (args[0]?.$treeItem.payload) { + // Because this is contributed from core it doesn't go through the argument processor that extension commands do + // so we just pull out the payload directly + connectionProfile = ConnectionProfile.fromIConnectionProfile(capabilitiesService, args[0].$treeItem.payload); } else { // No context available, we will try to get the current global active connection diff --git a/src/vs/workbench/workbench.common.main.ts b/src/vs/workbench/workbench.common.main.ts index af6d188f9e..575c857c19 100644 --- a/src/vs/workbench/workbench.common.main.ts +++ b/src/vs/workbench/workbench.common.main.ts @@ -404,7 +404,6 @@ import 'sql/workbench/contrib/query/common/resultsGrid.contribution'; // data explorer import 'sql/workbench/contrib/dataExplorer/browser/dataExplorer.contribution'; import 'sql/workbench/contrib/dataExplorer/browser/nodeActions.common.contribution'; -import 'sql/workbench/contrib/dataExplorer/browser/extensions.contribution'; //editor replacement import 'sql/workbench/contrib/editorReplacement/common/editorReplacer.contribution';