mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Fix up data explorer contributed actions on OE nodes (#11685)
* Fix up data explorer contributed actions on OE nodes * sql carbon edit * add Database node
This commit is contained in:
@@ -67,6 +67,23 @@
|
|||||||
"when": "isWindows && connectionProvider == MSSQL && serverInfo && nodeType && mssql:engineedition != 11 && nodeType =~ /^(Database|Table|Column|Index|Statistic|View|ServerLevelLogin|ServerLevelServerRole|ServerLevelCredential|ServerLevelServerAudit|ServerLevelServerAuditSpecification|StoredProcedure|ScalarValuedFunction|TableValuedFunction|AggregateFunction|Synonym|Assembly|UserDefinedDataType|UserDefinedType|UserDefinedTableType|Sequence|User|DatabaseRole|ApplicationRole|Schema|SecurityPolicy|ServerLevelLinkedServer)$/",
|
"when": "isWindows && connectionProvider == MSSQL && serverInfo && nodeType && mssql:engineedition != 11 && nodeType =~ /^(Database|Table|Column|Index|Statistic|View|ServerLevelLogin|ServerLevelServerRole|ServerLevelCredential|ServerLevelServerAudit|ServerLevelServerAuditSpecification|StoredProcedure|ScalarValuedFunction|TableValuedFunction|AggregateFunction|Synonym|Assembly|UserDefinedDataType|UserDefinedType|UserDefinedTableType|Sequence|User|DatabaseRole|ApplicationRole|Schema|SecurityPolicy|ServerLevelLinkedServer)$/",
|
||||||
"group": "z-AdminToolExt@2"
|
"group": "z-AdminToolExt@2"
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"dataExplorer/context": [
|
||||||
|
{
|
||||||
|
"command": "adminToolExtWin.launchSsmsMinGswDialog",
|
||||||
|
"when": "isWindows && connectionProvider == MSSQL && nodeType && nodeType == Database && mssql:engineedition != 11",
|
||||||
|
"group": "z-AdminToolExt@1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "adminToolExtWin.launchSsmsMinPropertiesDialog",
|
||||||
|
"when": "isWindows && connectionProvider == MSSQL && !isCloud && nodeType && nodeType == Server && mssql:engineedition != 11",
|
||||||
|
"group": "z-AdminToolExt@2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "adminToolExtWin.launchSsmsMinPropertiesDialog",
|
||||||
|
"when": "isWindows && connectionProvider == MSSQL && nodeType && mssql:engineedition != 11 && nodeType =~ /^(Database|Table|Column|Index|Statistic|View|ServerLevelLogin|ServerLevelServerRole|ServerLevelCredential|ServerLevelServerAudit|ServerLevelServerAuditSpecification|StoredProcedure|ScalarValuedFunction|TableValuedFunction|AggregateFunction|Synonym|Assembly|UserDefinedDataType|UserDefinedType|UserDefinedTableType|Sequence|User|DatabaseRole|ApplicationRole|Schema|SecurityPolicy|ServerLevelLinkedServer)$/",
|
||||||
|
"group": "z-AdminToolExt@2"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"outputChannels": [
|
"outputChannels": [
|
||||||
|
|||||||
@@ -7,15 +7,39 @@ import { IMainContext } from 'vs/workbench/api/common/extHost.protocol';
|
|||||||
import { ExtHostObjectExplorerShape, SqlMainContext, MainThreadObjectExplorerShape } from 'sql/workbench/api/common/sqlExtHost.protocol';
|
import { ExtHostObjectExplorerShape, SqlMainContext, MainThreadObjectExplorerShape } from 'sql/workbench/api/common/sqlExtHost.protocol';
|
||||||
import * as azdata from 'azdata';
|
import * as azdata from 'azdata';
|
||||||
import * as vscode from 'vscode';
|
import * as vscode from 'vscode';
|
||||||
|
import { ExtHostCommands } from 'vs/workbench/api/common/extHostCommands';
|
||||||
|
import { TreeViewItemHandleArg, NodeType } from 'sql/workbench/common/views';
|
||||||
|
|
||||||
export class ExtHostObjectExplorer implements ExtHostObjectExplorerShape {
|
export class ExtHostObjectExplorer implements ExtHostObjectExplorerShape {
|
||||||
|
|
||||||
private _proxy: MainThreadObjectExplorerShape;
|
private _proxy: MainThreadObjectExplorerShape;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
mainContext: IMainContext
|
mainContext: IMainContext,
|
||||||
|
commands: ExtHostCommands
|
||||||
) {
|
) {
|
||||||
this._proxy = mainContext.getProxy(SqlMainContext.MainThreadObjectExplorer);
|
this._proxy = mainContext.getProxy(SqlMainContext.MainThreadObjectExplorer);
|
||||||
|
|
||||||
|
function isDataExplorerTreeViewItemHandleArg(arg: any): boolean {
|
||||||
|
return arg?.$treeItem?.payload;
|
||||||
|
}
|
||||||
|
|
||||||
|
function convertDataExplorerArgument(arg: TreeViewItemHandleArg): any {
|
||||||
|
return <azdata.ObjectExplorerContext>{
|
||||||
|
connectionProfile: arg.$treeItem.payload,
|
||||||
|
isConnectionNode: arg.$treeItem?.type === NodeType.Server || arg.$treeItem?.type === NodeType.Database,
|
||||||
|
nodeInfo: arg.$treeItem.nodeInfo
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
commands.registerArgumentProcessor({
|
||||||
|
processArgument: arg => {
|
||||||
|
if (isDataExplorerTreeViewItemHandleArg(arg)) {
|
||||||
|
return convertDataExplorerArgument(arg);
|
||||||
|
}
|
||||||
|
return arg;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public $getNode(connectionId: string, nodePath?: string): Thenable<azdata.objectexplorer.ObjectExplorerNode> {
|
public $getNode(connectionId: string, nodePath?: string): Thenable<azdata.objectexplorer.ObjectExplorerNode> {
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import { IURITransformerService } from 'vs/workbench/api/common/extHostUriTransf
|
|||||||
import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService';
|
import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService';
|
||||||
import { ILogService } from 'vs/platform/log/common/log';
|
import { ILogService } from 'vs/platform/log/common/log';
|
||||||
import { IExtensionApiFactory as vsIApiFactory, createApiFactoryAndRegisterActors as vsApiFactory } from 'vs/workbench/api/common/extHost.api.impl';
|
import { IExtensionApiFactory as vsIApiFactory, createApiFactoryAndRegisterActors as vsApiFactory } from 'vs/workbench/api/common/extHost.api.impl';
|
||||||
|
import { IExtHostCommands } from 'vs/workbench/api/common/extHostCommands';
|
||||||
|
|
||||||
export interface IAzdataExtensionApiFactory {
|
export interface IAzdataExtensionApiFactory {
|
||||||
(extension: IExtensionDescription): typeof azdata;
|
(extension: IExtensionDescription): typeof azdata;
|
||||||
@@ -71,13 +72,14 @@ export function createAdsApiFactory(accessor: ServicesAccessor): IAdsExtensionAp
|
|||||||
const rpcProtocol = accessor.get(IExtHostRpcService);
|
const rpcProtocol = accessor.get(IExtHostRpcService);
|
||||||
const extHostLogService = accessor.get(ILogService);
|
const extHostLogService = accessor.get(ILogService);
|
||||||
const logService = accessor.get(ILogService);
|
const logService = accessor.get(ILogService);
|
||||||
|
const commands = accessor.get(IExtHostCommands);
|
||||||
|
|
||||||
// Addressable instances
|
// Addressable instances
|
||||||
const extHostAccountManagement = rpcProtocol.set(SqlExtHostContext.ExtHostAccountManagement, new ExtHostAccountManagement(rpcProtocol));
|
const extHostAccountManagement = rpcProtocol.set(SqlExtHostContext.ExtHostAccountManagement, new ExtHostAccountManagement(rpcProtocol));
|
||||||
const extHostConnectionManagement = rpcProtocol.set(SqlExtHostContext.ExtHostConnectionManagement, new ExtHostConnectionManagement(rpcProtocol));
|
const extHostConnectionManagement = rpcProtocol.set(SqlExtHostContext.ExtHostConnectionManagement, new ExtHostConnectionManagement(rpcProtocol));
|
||||||
const extHostCredentialManagement = rpcProtocol.set(SqlExtHostContext.ExtHostCredentialManagement, new ExtHostCredentialManagement(rpcProtocol));
|
const extHostCredentialManagement = rpcProtocol.set(SqlExtHostContext.ExtHostCredentialManagement, new ExtHostCredentialManagement(rpcProtocol));
|
||||||
const extHostDataProvider = rpcProtocol.set(SqlExtHostContext.ExtHostDataProtocol, new ExtHostDataProtocol(rpcProtocol, uriTransformer));
|
const extHostDataProvider = rpcProtocol.set(SqlExtHostContext.ExtHostDataProtocol, new ExtHostDataProtocol(rpcProtocol, uriTransformer));
|
||||||
const extHostObjectExplorer = rpcProtocol.set(SqlExtHostContext.ExtHostObjectExplorer, new ExtHostObjectExplorer(rpcProtocol));
|
const extHostObjectExplorer = rpcProtocol.set(SqlExtHostContext.ExtHostObjectExplorer, new ExtHostObjectExplorer(rpcProtocol, commands));
|
||||||
const extHostResourceProvider = rpcProtocol.set(SqlExtHostContext.ExtHostResourceProvider, new ExtHostResourceProvider(rpcProtocol));
|
const extHostResourceProvider = rpcProtocol.set(SqlExtHostContext.ExtHostResourceProvider, new ExtHostResourceProvider(rpcProtocol));
|
||||||
const extHostModalDialogs = rpcProtocol.set(SqlExtHostContext.ExtHostModalDialogs, new ExtHostModalDialogs(rpcProtocol));
|
const extHostModalDialogs = rpcProtocol.set(SqlExtHostContext.ExtHostModalDialogs, new ExtHostModalDialogs(rpcProtocol));
|
||||||
const extHostTasks = rpcProtocol.set(SqlExtHostContext.ExtHostTasks, new ExtHostTasks(rpcProtocol, extHostLogService));
|
const extHostTasks = rpcProtocol.set(SqlExtHostContext.ExtHostTasks, new ExtHostTasks(rpcProtocol, extHostLogService));
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { ITreeViewDataProvider, ITreeItem as vsITreeItem, IViewDescriptor, ITreeView as vsITreeView } from 'vs/workbench/common/views';
|
import { ITreeViewDataProvider, ITreeItem as vsITreeItem, IViewDescriptor, ITreeView as vsITreeView } from 'vs/workbench/common/views';
|
||||||
import { IConnectionProfile } from 'azdata';
|
import { IConnectionProfile, NodeInfo } from 'azdata';
|
||||||
|
|
||||||
export enum NodeType {
|
export enum NodeType {
|
||||||
Server = 'Server',
|
Server = 'Server',
|
||||||
@@ -28,6 +28,7 @@ export interface ITreeItem extends vsITreeItem {
|
|||||||
payload?: IConnectionProfile; // its possible we will want this to be more generic
|
payload?: IConnectionProfile; // its possible we will want this to be more generic
|
||||||
sqlIcon?: string;
|
sqlIcon?: string;
|
||||||
type?: NodeType;
|
type?: NodeType;
|
||||||
|
nodeInfo?: NodeInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ITreeView extends vsITreeView {
|
export interface ITreeView extends vsITreeView {
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions';
|
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, GENERATE_SCRIPTS_COMMAND_ID, PROPERTIES_COMMAND_ID, IMPORT_DATABASE_COMMAND_ID } from 'sql/workbench/contrib/dataExplorer/browser/extensionActions';
|
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, ContextKeyRegexExpr } from 'vs/platform/contextkey/common/contextkey';
|
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
|
||||||
import { MssqlNodeContext } from 'sql/workbench/services/objectExplorer/browser/mssqlNodeContext';
|
import { MssqlNodeContext } from 'sql/workbench/services/objectExplorer/browser/mssqlNodeContext';
|
||||||
import { mssqlProviderName } from 'sql/platform/connection/common/constants';
|
import { mssqlProviderName } from 'sql/platform/connection/common/constants';
|
||||||
import { NodeType } from 'sql/workbench/services/objectExplorer/common/nodeType';
|
import { NodeType } from 'sql/workbench/services/objectExplorer/common/nodeType';
|
||||||
@@ -85,41 +85,3 @@ MenuRegistry.appendMenuItem(MenuId.DataExplorerContext, {
|
|||||||
when: ContextKeyExpr.and(MssqlNodeContext.NodeProvider.isEqualTo(mssqlProviderName),
|
when: ContextKeyExpr.and(MssqlNodeContext.NodeProvider.isEqualTo(mssqlProviderName),
|
||||||
MssqlNodeContext.NodeType.isEqualTo(NodeType.Database))
|
MssqlNodeContext.NodeType.isEqualTo(NodeType.Database))
|
||||||
});
|
});
|
||||||
|
|
||||||
// Generate Scripts Action
|
|
||||||
MenuRegistry.appendMenuItem(MenuId.DataExplorerContext, {
|
|
||||||
group: 'z-AdminToolExt@1',
|
|
||||||
order: 12,
|
|
||||||
command: {
|
|
||||||
id: GENERATE_SCRIPTS_COMMAND_ID,
|
|
||||||
title: localize('generateScripts', "Generate Scripts...")
|
|
||||||
},
|
|
||||||
when: ContextKeyExpr.and(MssqlNodeContext.NodeProvider.isEqualTo(mssqlProviderName),
|
|
||||||
MssqlNodeContext.NodeType.isEqualTo(NodeType.Database),
|
|
||||||
MssqlNodeContext.IsWindows, MssqlNodeContext.EngineEdition.notEqualsTo(DatabaseEngineEdition.SqlOnDemand.toString()))
|
|
||||||
});
|
|
||||||
|
|
||||||
// Properties Action
|
|
||||||
MenuRegistry.appendMenuItem(MenuId.DataExplorerContext, {
|
|
||||||
group: 'z-AdminToolExt@2',
|
|
||||||
order: 13,
|
|
||||||
command: {
|
|
||||||
id: PROPERTIES_COMMAND_ID,
|
|
||||||
title: localize('properties', "Properties")
|
|
||||||
},
|
|
||||||
when: ContextKeyExpr.and(MssqlNodeContext.NodeProvider.isEqualTo(mssqlProviderName),
|
|
||||||
MssqlNodeContext.NodeType.isEqualTo(NodeType.Server), ContextKeyExpr.not('isCloud'),
|
|
||||||
MssqlNodeContext.IsWindows, MssqlNodeContext.EngineEdition.notEqualsTo(DatabaseEngineEdition.SqlOnDemand.toString()))
|
|
||||||
});
|
|
||||||
|
|
||||||
MenuRegistry.appendMenuItem(MenuId.DataExplorerContext, {
|
|
||||||
group: 'z-AdminToolExt@2',
|
|
||||||
order: 13,
|
|
||||||
command: {
|
|
||||||
id: PROPERTIES_COMMAND_ID,
|
|
||||||
title: localize('properties', "Properties")
|
|
||||||
},
|
|
||||||
when: ContextKeyExpr.and(MssqlNodeContext.NodeProvider.isEqualTo(mssqlProviderName),
|
|
||||||
MssqlNodeContext.IsWindows, MssqlNodeContext.EngineEdition.notEqualsTo(DatabaseEngineEdition.SqlOnDemand.toString()),
|
|
||||||
ContextKeyRegexExpr.create('nodeType', /^(Database|Table|Column|Index|Statistic|View|ServerLevelLogin|ServerLevelServerRole|ServerLevelCredential|ServerLevelServerAudit|ServerLevelServerAuditSpecification|StoredProcedure|ScalarValuedFunction|TableValuedFunction|AggregateFunction|Synonym|Assembly|UserDefinedDataType|UserDefinedType|UserDefinedTableType|Sequence|User|DatabaseRole|ApplicationRole|Schema|SecurityPolicy|ServerLevelLinkedServer)$/))
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -197,7 +197,8 @@ export class OEShimService extends Disposable implements IOEShimService {
|
|||||||
providerHandle: parentNode.childProvider,
|
providerHandle: parentNode.childProvider,
|
||||||
payload: node.payload || (databaseChanged ? updatedPayload : parentNode.payload),
|
payload: node.payload || (databaseChanged ? updatedPayload : parentNode.payload),
|
||||||
contextValue: node.nodeTypeId,
|
contextValue: node.nodeTypeId,
|
||||||
sqlIcon: icon
|
sqlIcon: icon,
|
||||||
|
nodeInfo: nodeInfo
|
||||||
};
|
};
|
||||||
this.nodeHandleMap.set(generateNodeMapKey(viewId, newTreeItem), nodePath);
|
this.nodeHandleMap.set(generateNodeMapKey(viewId, newTreeItem), nodePath);
|
||||||
this.nodeInfoMap.set(newTreeItem, nodeInfo);
|
this.nodeInfoMap.set(newTreeItem, nodeInfo);
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ export class ExtHostTreeViews implements ExtHostTreeViewsShape {
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
function isTreeViewItemHandleArg(arg: any): boolean {
|
function isTreeViewItemHandleArg(arg: any): boolean {
|
||||||
return arg && arg.$treeViewId && arg.$treeItemHandle;
|
return arg && arg.$treeViewId && arg.$treeItemHandle && !arg.$treeItem?.payload; // {{SQL CARBON EDIT}} Don't process Data Explorer tree items
|
||||||
}
|
}
|
||||||
commands.registerArgumentProcessor({
|
commands.registerArgumentProcessor({
|
||||||
processArgument: arg => {
|
processArgument: arg => {
|
||||||
|
|||||||
Reference in New Issue
Block a user