Task contribution (#742)

* work in progress

* set up necessary code. need to work on getting it working

* formatting

* work in progress

* work in progress

* formatting

* work in progress

* work in progress

* work in progress

* formatting

* needs a lot of work regarding how we do actions vs how extensions do actions

* formatting

* use connection profile for actions

* change action to be
This commit is contained in:
Anthony Dresser
2018-02-27 11:40:13 -08:00
committed by GitHub
parent 5adab4fafb
commit 3432dac261
23 changed files with 518 additions and 323 deletions

View File

@@ -6,22 +6,9 @@
'use strict';
import * as sqlops from 'sqlops';
// A Connection Profile contains all the properties of connection credentials, with additional
// optional name and details on whether password should be saved
export interface IConnectionProfile extends sqlops.ConnectionInfo {
serverName: string;
databaseName: string;
userName: string;
password: string;
authenticationType: string;
savePassword: boolean;
groupFullName: string;
groupId: string;
export interface IConnectionProfile extends sqlops.IConnectionProfile {
getOptionsKey(): string;
matches(profile: IConnectionProfile): boolean;
providerName: string;
saveProfile: boolean;
id: string;
matches(profile: sqlops.IConnectionProfile): boolean;
}
export interface IConnectionProfileStore {

View File

@@ -41,6 +41,7 @@ import Severity from 'vs/base/common/severity';
import * as nls from 'vs/nls';
import { IPartService } from 'vs/workbench/services/part/common/partService';
import { deepClone } from 'vs/base/common/objects';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { IDashboardWebviewService } from 'sql/services/dashboardWebview/common/dashboardWebviewService';
@@ -133,6 +134,7 @@ export class DashboardServiceInterface implements OnDestroy {
private _storageService: IStorageService;
private _capabilitiesService: ICapabilitiesService;
private _configurationEditingService: ConfigurationEditingService;
private _commandService: ICommandService;
private _dashboardWebviewService: IDashboardWebviewService;
private _partService: IPartService;
@@ -166,6 +168,7 @@ export class DashboardServiceInterface implements OnDestroy {
this._storageService = this._bootstrapService.storageService;
this._capabilitiesService = this._bootstrapService.capabilitiesService;
this._configurationEditingService = this._bootstrapService.configurationEditorService;
this._commandService = this._bootstrapService.commandService;
this._dashboardWebviewService = this._bootstrapService.dashboardWebviewService;
this._partService = this._bootstrapService.partService;
}
@@ -190,6 +193,10 @@ export class DashboardServiceInterface implements OnDestroy {
return this._connectionManagementService;
}
public get commandService(): ICommandService {
return this._commandService;
}
public get themeService(): IWorkbenchThemeService {
return this._themeService;
}

View File

@@ -27,6 +27,7 @@ import { IAction } from 'vs/base/common/actions';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { generateUuid } from 'vs/base/common/uuid';
import { $ } from 'vs/base/browser/dom';
import { OEAction } from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
export class ObjectMetadataWrapper implements ObjectMetadata {
public metadataType: MetadataType;
@@ -370,14 +371,14 @@ function GetExplorerActions(element: TreeResource, instantiationService: IInstan
actions.push(instantiationService.createInstance(ScriptAlterAction, ScriptAlterAction.ID, ScriptAlterAction.LABEL));
}
} else {
actions.push(instantiationService.createInstance(NewQueryAction, NewQueryAction.ID, NewQueryAction.LABEL, NewQueryAction.ICON));
actions.push(instantiationService.createInstance(OEAction, NewQueryAction.ID, NewQueryAction.LABEL));
let action: IAction = instantiationService.createInstance(RestoreAction, RestoreAction.ID, RestoreAction.LABEL, RestoreAction.ICON);
let action: IAction = instantiationService.createInstance(OEAction, RestoreAction.ID, RestoreAction.LABEL);
if (capabilitiesService.isFeatureAvailable(action, info)) {
actions.push(action);
}
action = instantiationService.createInstance(BackupAction, BackupAction.ID, BackupAction.LABEL, BackupAction.ICON);
action = instantiationService.createInstance(OEAction, BackupAction.ID, BackupAction.LABEL);
if (capabilitiesService.isFeatureAvailable(action, info)) {
actions.push(action);
}

View File

@@ -12,7 +12,7 @@ import { DomSanitizer } from '@angular/platform-browser';
/* SQL imports */
import { DashboardWidget, IDashboardWidget, WidgetConfig, WIDGET_CONFIG } from 'sql/parts/dashboard/common/dashboardWidget';
import { DashboardServiceInterface } from 'sql/parts/dashboard/services/dashboardServiceInterface.service';
import { ITaskRegistry, Extensions, TaskAction } from 'sql/platform/tasks/taskRegistry';
import { TaskRegistry } from 'sql/platform/tasks/common/tasks';
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
import { BaseActionContext } from 'sql/workbench/common/actions';
@@ -20,7 +20,6 @@ import { BaseActionContext } from 'sql/workbench/common/actions';
import * as themeColors from 'vs/workbench/common/theme';
import * as colors from 'vs/platform/theme/common/colorRegistry';
import { registerThemingParticipant, ICssStyleCollector, ITheme } from 'vs/platform/theme/common/themeService';
import { Registry } from 'vs/platform/registry/common/platform';
import { Action } from 'vs/base/common/actions';
import Severity from 'vs/base/common/severity';
import * as nls from 'vs/nls';
@@ -29,6 +28,8 @@ import { ScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElemen
import { ScrollbarVisibility } from 'vs/base/common/scrollable';
import { $, Builder } from 'vs/base/browser/builder';
import * as DOM from 'vs/base/browser/dom';
import { CommandsRegistry, ICommand } from 'vs/platform/commands/common/commands';
import { MenuRegistry, ICommandAction } from 'vs/platform/actions/common/actions';
interface IConfig {
tasks: Array<Object>;
@@ -40,7 +41,7 @@ interface IConfig {
})
export class TasksWidget extends DashboardWidget implements IDashboardWidget, OnInit {
private _size: number = 98;
private _tasks: Array<TaskAction> = [];
private _tasks: Array<ICommandAction> = [];
private _profile: IConnectionProfile;
private _scrollableElement: ScrollableElement;
private $container: Builder;
@@ -55,30 +56,14 @@ export class TasksWidget extends DashboardWidget implements IDashboardWidget, On
) {
super();
this._profile = this._bootstrap.connectionManagementService.connectionInfo.connectionProfile;
let registry = Registry.as<ITaskRegistry>(Extensions.TaskContribution);
let tasksConfig = <IConfig>Object.values(this._config.widget)[0];
let taskIds: Array<string>;
let tasks = TaskRegistry.getTasks();
if (tasksConfig.tasks) {
taskIds = Object.keys(tasksConfig.tasks);
} else {
taskIds = registry.ids;
tasks = Object.keys(tasksConfig.tasks).filter(i => tasks.includes(i));
}
let ctorMap = registry.idToCtorMap;
this._tasks = taskIds.map(id => {
let ctor = ctorMap[id];
if (ctor) {
let action = this._bootstrap.instantiationService.createInstance(ctor, ctor.ID, ctor.LABEL, ctor.ICON);
if (this._bootstrap.capabilitiesService.isFeatureAvailable(action, this._bootstrap.connectionManagementService.connectionInfo)) {
return action;
}
} else {
this._bootstrap.messageService.show(Severity.Warning, nls.localize('missingTask', 'Could not find task {0}; are you missing an extension?', id));
}
return undefined;
}).filter(a => !types.isUndefinedOrNull(a));
this._tasks = tasks.map(i => MenuRegistry.getCommand(i));
}
ngOnInit() {
@@ -120,11 +105,15 @@ export class TasksWidget extends DashboardWidget implements IDashboardWidget, On
this.$container.style('height', height + 'px').style('width', width + 'px');
}
private _createTile(action: TaskAction): HTMLElement {
let label = $('div').safeInnerHtml(action.label);
let icon = $('span.icon').addClass(action.icon);
let innerTile = $('div').append(icon).append(label);
private _createTile(action: ICommandAction): HTMLElement {
let label = $('div').safeInnerHtml(types.isString(action.title) ? action.title : action.title.value);
let tile = $('div.task-tile').style('height', this._size + 'px').style('width', this._size + 'px');
let innerTile = $('div');
if (action) {
let icon = $('span.icon').addClass(action.iconClass);
innerTile.append(icon);
}
innerTile.append(label);
tile.append(innerTile);
tile.on(DOM.EventType.CLICK, () => this.runTask(action));
return tile.getHTMLElement();
@@ -142,11 +131,9 @@ export class TasksWidget extends DashboardWidget implements IDashboardWidget, On
}
}
public runTask(task: Action) {
let context: BaseActionContext = {
profile: this._profile
};
task.run(context);
public runTask(task: ICommandAction) {
let serverInfo = this._bootstrap.connectionManagementService.connectionInfo.serverInfo;
this._bootstrap.commandService.executeCommand(task.id, this._profile);
}
public layout(): void {

View File

@@ -4,17 +4,13 @@
*--------------------------------------------------------------------------------------------*/
import { IJSONSchema } from 'vs/base/common/jsonSchema';
import { registerDashboardWidget } from 'sql/platform/dashboard/common/widgetRegistry';
import { Extensions as TaskExtensions, ITaskRegistry } from 'sql/platform/tasks/taskRegistry';
import { Registry } from 'vs/platform/registry/common/platform';
let taskRegistry = <ITaskRegistry>Registry.as(TaskExtensions.TaskContribution);
import { TaskRegistry } from 'sql/platform/tasks/common/tasks';
let tasksSchema: IJSONSchema = {
type: 'object',
properties: {
tasks: {
type: 'object',
properties: taskRegistry.taskSchemas
type: 'object'
}
}
};

View File

@@ -9,7 +9,7 @@ import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
import { Modal } from 'sql/base/browser/ui/modal/modal';
import { IInsightsConfigDetails } from 'sql/parts/dashboard/widgets/insights/interfaces';
import { attachButtonStyler, attachModalDialogStyler, attachTableStyler } from 'sql/common/theme/styler';
import { ITaskRegistry, Extensions as TaskExtensions } from 'sql/platform/tasks/taskRegistry';
import { TaskRegistry } from 'sql/platform/tasks/common/tasks';
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
import * as TelemetryKeys from 'sql/common/telemetryKeys';
import { IInsightsDialogModel, ListResource, IInsightDialogActionContext, insertValueRegex } from 'sql/parts/insights/common/interfaces';
@@ -29,7 +29,6 @@ import { IThemeService } from 'vs/platform/theme/common/themeService';
import { IListService } from 'vs/platform/list/browser/listService';
import * as nls from 'vs/nls';
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
import { Registry } from 'vs/platform/registry/common/platform';
import { IAction } from 'vs/base/common/actions';
import { TPromise } from 'vs/base/common/winjs.base';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
@@ -37,6 +36,8 @@ import * as types from 'vs/base/common/types';
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { MenuRegistry, ExecuteCommandAction } from 'vs/platform/actions/common/actions';
const labelDisplay = nls.localize("item", "Item");
const valueDisplay = nls.localize("value", "Value");
@@ -127,7 +128,8 @@ export class InsightsDialogView extends Modal {
@IPartService partService: IPartService,
@IContextMenuService private _contextMenuService: IContextMenuService,
@ITelemetryService telemetryService: ITelemetryService,
@IContextKeyService contextKeyService: IContextKeyService
@IContextKeyService contextKeyService: IContextKeyService,
@ICommandService private _commandService: ICommandService
) {
super(nls.localize("InsightsDialogTitle", "Insights"), TelemetryKeys.Insights, partService, telemetryService, contextKeyService);
this._model.onDataChange(e => this.build());
@@ -284,12 +286,12 @@ export class InsightsDialogView extends Modal {
this._topTableData.clear();
this._topTableData.push(inputArray);
if (this._insight.actions && this._insight.actions.types) {
const taskRegistry = Registry.as<ITaskRegistry>(TaskExtensions.TaskContribution);
let tasks = taskRegistry.idToCtorMap;
let tasks = TaskRegistry.getTasks();
for (let action of this._insight.actions.types) {
let ctor = tasks[action];
if (ctor) {
let button = this.addFooterButton(ctor.LABEL, () => {
let task = tasks.includes(action);
let commandAction = MenuRegistry.getCommand(action);
if (task) {
let button = this.addFooterButton(types.isString(commandAction.title) ? commandAction.title : commandAction.title.value, () => {
let element = this._topTable.getSelectedRows();
let resource: ListResource;
if (element && element.length > 0) {
@@ -297,7 +299,7 @@ export class InsightsDialogView extends Modal {
} else {
return;
}
this._instantiationService.createInstance(ctor, ctor.ID, ctor.LABEL, ctor.ICON).run(this.topInsightContext(resource));
this._commandService.executeCommand(action, this._connectionProfile);
}, 'left');
button.enabled = false;
this._taskButtonDisposables.push(button);
@@ -333,14 +335,14 @@ export class InsightsDialogView extends Modal {
}
private get insightActions(): TPromise<IAction[]> {
const taskRegistry = Registry.as<ITaskRegistry>(TaskExtensions.TaskContribution);
let tasks = taskRegistry.idToCtorMap;
let tasks = TaskRegistry.getTasks();
let actions = this._insight.actions.types;
let returnActions: IAction[] = [];
for (let action of actions) {
let ctor = tasks[action];
if (ctor) {
returnActions.push(this._instantiationService.createInstance(ctor, ctor.ID, ctor.LABEL, ctor.ICON));
let task = tasks.includes(action);
let commandAction = MenuRegistry.getCommand(action);
if (task) {
returnActions.push(this._instantiationService.createInstance(ExecuteCommandAction, commandAction.title, commandAction.iconClass));
}
}
return TPromise.as(returnActions);
@@ -413,4 +415,4 @@ export class InsightsDialogView extends Modal {
}
}
}
}
}

View File

@@ -6,7 +6,7 @@
import { GlobalNewProfilerAction } from './profilerWorkbenchActions';
import { registerTask } from 'sql/platform/tasks/taskRegistry';
import { TaskRegistry } from 'sql/platform/tasks/common/tasks';
import { NewProfilerAction } from './profilerActions';
import { Registry } from 'vs/platform/registry/common/platform';
@@ -27,6 +27,5 @@ const newProfilerSchema: IJSONSchema = {
if (process.env['VSCODE_DEV']) {
const registry = Registry.as<IWorkbenchActionRegistry>(ActionExtensions.WorkbenchActions);
registry.registerWorkbenchAction(new SyncActionDescriptor(GlobalNewProfilerAction, GlobalNewProfilerAction.ID, GlobalNewProfilerAction.LABEL), 'Profiler: New Profiler', category);
registerTask('new-profiler', '', newProfilerSchema, NewProfilerAction);
new NewProfilerAction().registerTask();
}

View File

@@ -9,17 +9,18 @@ import { IProfilerService } from 'sql/parts/profiler/service/interfaces';
import { IProfilerController } from 'sql/parts/profiler/editor/controller/interfaces';
import { ProfilerInput } from 'sql/parts/profiler/editor/profilerInput';
import { BaseActionContext } from 'sql/workbench/common/actions';
import { TaskAction } from 'sql/platform/tasks/taskRegistry';
import { Task } from 'sql/platform/tasks/common/tasks';
import { ObjectExplorerActionsContext } from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
import { IConnectionManagementService, IConnectionCompletionOptions, ConnectionType } from 'sql/parts/connection/common/connectionManagement';
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
import { TPromise } from 'vs/base/common/winjs.base';
import { Action } from 'vs/base/common/actions';
import * as nls from 'vs/nls';
import { IEditorAction } from 'vs/editor/common/editorCommon';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { ObjectExplorerActionsContext } from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
import { IConnectionManagementService, IConnectionCompletionOptions, ConnectionType } from 'sql/parts/connection/common/connectionManagement';
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
export class ProfilerConnect extends Action {
public static ID = 'profiler.connect';
@@ -226,29 +227,20 @@ export class ProfilerFindPrevious implements IEditorAction {
}
}
export class NewProfilerAction extends TaskAction {
public static ID = 'newProfiler';
public static LABEL = nls.localize('newProfiler', 'New Profiler');
public static ICON = 'profile';
export class NewProfilerAction extends Task {
public static readonly ID = 'newProfiler';
public static readonly LABEL = nls.localize('newProfiler', 'New Profiler');
public static readonly ICON = 'profile';
private _connectionProfile: ConnectionProfile;
constructor(
id: string, label: string, icon: string,
@IWorkbenchEditorService private _editorService: IWorkbenchEditorService,
@IConnectionManagementService private _connectionService: IConnectionManagementService,
@IInstantiationService private _instantiationService: IInstantiationService
) {
super(id, label, icon);
constructor() {
super({ id: NewProfilerAction.ID, title: NewProfilerAction.LABEL, iconClass: NewProfilerAction.ICON });
}
run(actionContext: BaseActionContext): TPromise<boolean> {
if (actionContext instanceof ObjectExplorerActionsContext) {
this._connectionProfile = actionContext.connectionProfile;
}
let profilerInput = this._instantiationService.createInstance(ProfilerInput, actionContext.profile);
return this._editorService.openEditor(profilerInput, { pinned: true }, false).then(() => {
public runTask(accessor: ServicesAccessor, profile: IConnectionProfile): TPromise<void> {
let profilerInput = accessor.get<IInstantiationService>(IInstantiationService).createInstance(ProfilerInput, profile);
return accessor.get<IWorkbenchEditorService>(IWorkbenchEditorService).openEditor(profilerInput, { pinned: true }, false).then(() => {
let options: IConnectionCompletionOptions = {
params: undefined,
saveTheConnection: false,
@@ -256,11 +248,9 @@ export class NewProfilerAction extends TaskAction {
showDashboard: false,
showFirewallRuleOnError: true
};
this._connectionService.connect(this._connectionProfile, profilerInput.id, options).then(() => {
TPromise.as(true);
});
accessor.get<IConnectionManagementService>(IConnectionManagementService).connect(this._connectionProfile, profilerInput.id, options);
return TPromise.as(true);
return TPromise.as(void 0);
});
}
}

View File

@@ -11,8 +11,10 @@ import { ITree } from 'vs/base/parts/tree/browser/tree';
import { IConnectionManagementService, IConnectionCompletionOptions, IErrorMessageService } from 'sql/parts/connection/common/connectionManagement';
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile';
import { NewQueryAction, ScriptSelectAction, EditDataAction, ScriptCreateAction,
ScriptExecuteAction, ScriptDeleteAction, ScriptAlterAction } from 'sql/workbench/common/actions';
import {
NewQueryAction, ScriptSelectAction, EditDataAction, ScriptCreateAction,
ScriptExecuteAction, ScriptDeleteAction, ScriptAlterAction
} from 'sql/workbench/common/actions';
import { NodeType } from 'sql/parts/registeredServer/common/nodeType';
import { TreeUpdateUtils } from 'sql/parts/registeredServer/viewlet/treeUpdateUtils';
import { TreeSelectionHandler } from 'sql/parts/registeredServer/viewlet/treeSelectionHandler';
@@ -22,6 +24,9 @@ import { IQueryEditorService } from 'sql/parts/query/common/queryEditorService';
import { IObjectExplorerService } from 'sql/parts/registeredServer/common/objectExplorerService';
import * as Constants from 'sql/parts/connection/common/constants';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
import { ExecuteCommandAction } from 'vs/platform/actions/common/actions';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { IConnectionProfile } from 'sql/parts/connection/common/interfaces';
export class ObjectExplorerActionsContext {
public treeNode: TreeNode;
@@ -30,34 +35,33 @@ export class ObjectExplorerActionsContext {
public tree: ITree;
}
export class OENewQueryAction extends NewQueryAction {
public static ID = 'objectExplorer.' + NewQueryAction.ID;
export class OEAction extends ExecuteCommandAction {
private _objectExplorerTreeNode: TreeNode;
private _container: HTMLElement;
private _treeSelectionHandler: TreeSelectionHandler;
constructor(
id: string, label: string, icon: string,
@IQueryEditorService protected _queryEditorService: IQueryEditorService,
@IConnectionManagementService protected _connectionManagementService: IConnectionManagementService,
id: string, label: string,
@IInstantiationService private _instantiationService: IInstantiationService,
@IObjectExplorerService protected _objectExplorerService: IObjectExplorerService,
@IWorkbenchEditorService protected _workbenchEditorService: IWorkbenchEditorService
@ICommandService commandService: ICommandService,
@IConnectionManagementService private _connectionManagementService: IConnectionManagementService
) {
super(id, label, icon, _queryEditorService, _connectionManagementService, _objectExplorerService, _workbenchEditorService);
super(id, label, commandService);
}
public run(actionContext: any): TPromise<boolean> {
this._treeSelectionHandler = this._instantiationService.createInstance(TreeSelectionHandler);
if (actionContext instanceof ObjectExplorerActionsContext) {
//set objectExplorerTreeNode for context menu clicks
this._objectExplorerTreeNode = actionContext.treeNode;
this._container = actionContext.container;
let profile: IConnectionProfile;
if (actionContext.connectionProfile) {
profile = actionContext.connectionProfile;
} else {
profile = TreeUpdateUtils.getConnectionProfile(<TreeNode>actionContext.treeNode);
}
this._treeSelectionHandler.onTreeActionStateChange(true);
var connectionProfile = TreeUpdateUtils.getConnectionProfile(<TreeNode>this._objectExplorerTreeNode);
return super.run({ profile: connectionProfile }).then(() => {
return super.run(profile).then(() => {
this._treeSelectionHandler.onTreeActionStateChange(false);
return true;
});
@@ -443,13 +447,13 @@ export class ObjectExplorerActionUtilities {
let basicScripting = [OEScriptCreateAction, OEScriptDeleteAction];
let storedProcedureScripting = isMssqlProvider ? [OEScriptCreateAction, OEScriptAlterAction, OEScriptDeleteAction, OEScriptExecuteAction] :
basicScripting;
basicScripting;
let viewScripting = isMssqlProvider ? [OEScriptSelectAction, OEScriptCreateAction, OEScriptAlterAction, OEScriptDeleteAction] :
[OEScriptSelectAction, OEScriptCreateAction, OEScriptDeleteAction];
[OEScriptSelectAction, OEScriptCreateAction, OEScriptDeleteAction];
let functionScripting = isMssqlProvider ? [OEScriptCreateAction, OEScriptAlterAction, OEScriptDeleteAction] :
basicScripting;
basicScripting;
scriptMap.set(NodeType.AggregateFunction, functionScripting);
scriptMap.set(NodeType.PartitionFunction, functionScripting);
scriptMap.set(NodeType.ScalarValuedFunction, functionScripting);

View File

@@ -11,13 +11,14 @@ import { IAction } from 'vs/base/common/actions';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import {
DisconnectConnectionAction, AddServerAction, NewQueryAction,
DisconnectConnectionAction, AddServerAction,
DeleteConnectionAction, RefreshAction, EditServerGroupAction
}
from 'sql/parts/registeredServer/viewlet/connectionTreeAction';
import {
OENewQueryAction, DisconnectAction, ObjectExplorerActionUtilities,
ManageConnectionAction
DisconnectAction, ObjectExplorerActionUtilities,
ManageConnectionAction,
OEAction
} from 'sql/parts/registeredServer/viewlet/objectExplorerActions';
import { TreeNode } from 'sql/parts/registeredServer/common/treeNode';
import { NodeType } from 'sql/parts/registeredServer/common/nodeType';
@@ -26,6 +27,8 @@ import { ConnectionProfile } from 'sql/parts/connection/common/connectionProfile
import { NewProfilerAction } from 'sql/parts/profiler/contrib/profilerActions';
import { TreeUpdateUtils } from 'sql/parts/registeredServer/viewlet/treeUpdateUtils';
import { IConnectionManagementService } from 'sql/parts/connection/common/connectionManagement';
import { ExecuteCommandAction } from 'vs/platform/actions/common/actions';
import { NewQueryAction } from 'sql/workbench/common/actions';
/**
* Provides actions for the server tree elements
@@ -75,7 +78,7 @@ export class ServerTreeActionProvider extends ContributableActionProvider {
public getConnectionActions(tree: ITree, element: ConnectionProfile): IAction[] {
let actions: IAction[] = [];
actions.push(this._instantiationService.createInstance(ManageConnectionAction, ManageConnectionAction.ID, ManageConnectionAction.LABEL));
actions.push(this._instantiationService.createInstance(NewQueryAction, NewQueryAction.ID, NewQueryAction.LABEL));
actions.push(this._instantiationService.createInstance(OEAction, NewQueryAction.ID, NewQueryAction.LABEL));
if (this._connectionManagementService.isProfileConnected(element)) {
actions.push(this._instantiationService.createInstance(DisconnectConnectionAction, DisconnectConnectionAction.ID, DisconnectConnectionAction.LABEL));
}
@@ -83,7 +86,7 @@ export class ServerTreeActionProvider extends ContributableActionProvider {
actions.push(this._instantiationService.createInstance(RefreshAction, RefreshAction.ID, RefreshAction.LABEL, tree, element));
if (process.env['VSCODE_DEV']) {
actions.push(this._instantiationService.createInstance(NewProfilerAction, NewProfilerAction.ID, NewProfilerAction.LABEL, NewProfilerAction.ICON));
actions.push(this._instantiationService.createInstance(OEAction, NewProfilerAction.ID, NewProfilerAction.LABEL));
}
return actions;
@@ -112,7 +115,7 @@ export class ServerTreeActionProvider extends ContributableActionProvider {
return actions;
}
}
actions.push(this._instantiationService.createInstance(OENewQueryAction, OENewQueryAction.ID, OENewQueryAction.LABEL, OENewQueryAction.ICON));
actions.push(this._instantiationService.createInstance(OEAction, NewQueryAction.ID, NewQueryAction.LABEL));
let scriptMap: Map<NodeType, any[]> = ObjectExplorerActionUtilities.getScriptMap(treeNode);
let supportedActions = scriptMap.get(treeNode.nodeTypeId);
let self = this;
@@ -131,4 +134,4 @@ export class ServerTreeActionProvider extends ContributableActionProvider {
return actions;
}
}
}