From 2c74a5b7709ce6b482c08eedeb1bb39e4ad0df19 Mon Sep 17 00:00:00 2001 From: t-amqi Date: Tue, 20 Jun 2017 17:19:20 -0700 Subject: [PATCH] Add actions to task panel --- .../parts/tasks/electron-browser/taskPanel.ts | 28 ++++++++++++--- .../electron-browser/taskPanelActions.ts | 36 +++++++++++++++++++ src/vs/workbench/workbench.main.ts | 2 +- 3 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 src/vs/workbench/parts/tasks/electron-browser/taskPanelActions.ts diff --git a/src/vs/workbench/parts/tasks/electron-browser/taskPanel.ts b/src/vs/workbench/parts/tasks/electron-browser/taskPanel.ts index 1bd14b6b506..c581b192b56 100644 --- a/src/vs/workbench/parts/tasks/electron-browser/taskPanel.ts +++ b/src/vs/workbench/parts/tasks/electron-browser/taskPanel.ts @@ -6,23 +6,29 @@ import * as nls from 'vs/nls'; import { Builder, Dimension } from 'vs/base/browser/builder'; +import { IAction } from 'vs/base/common/actions'; import { Panel, PanelRegistry, PanelDescriptor, Extensions } from 'vs/workbench/browser/panel'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IThemeService } from 'vs/platform/theme/common/themeService'; import { ITaskService } from 'vs/workbench/parts/tasks/common/taskService'; import { Registry } from 'vs/platform/registry/common/platform'; import { TPromise } from 'vs/base/common/winjs.base'; +import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; +import { ShowTasksAction } from 'vs/workbench/parts/tasks/electron-browser/taskPanelActions'; const TASK_PANEL_ID = 'workbench.panel.task'; export class TaskPanel extends Panel { + private _actions: IAction[]; + constructor( @ITelemetryService telemetryService: ITelemetryService, @IThemeService protected themeService: IThemeService, - @ITaskService private taskService: ITaskService + @ITaskService private taskService: ITaskService, + @IInstantiationService private _instantiationService: IInstantiationService ) { super(TASK_PANEL_ID, telemetryService, themeService); @@ -39,17 +45,31 @@ export class TaskPanel extends Panel { } } + public getActions(): IAction[] { + if (!this._actions) { + this._actions = [ + this._instantiationService.createInstance(ShowTasksAction, ShowTasksAction.ID, ShowTasksAction.LABEL) + ]; + this._actions.forEach(a => { + this._register(a); + }); + } + return this._actions; + } + public setVisible(visible: boolean): TPromise { return super.setVisible(visible); } + + public focus(): void { + } } (Registry.as(Extensions.Panels)).registerPanel(new PanelDescriptor( 'vs/workbench/parts/tasks/electron-browser/taskPanel.ts', 'TaskPanel', TASK_PANEL_ID, - nls.localize('task', "Tasks"), + nls.localize('tasks', "Tasks"), 'task', - 41, - 'testing' + 50 )); diff --git a/src/vs/workbench/parts/tasks/electron-browser/taskPanelActions.ts b/src/vs/workbench/parts/tasks/electron-browser/taskPanelActions.ts new file mode 100644 index 00000000000..765c3221d4d --- /dev/null +++ b/src/vs/workbench/parts/tasks/electron-browser/taskPanelActions.ts @@ -0,0 +1,36 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +'use strict'; + +import { TPromise } from 'vs/base/common/winjs.base'; +import nls = require('vs/nls'); +import { Action } from 'vs/base/common/actions'; +import { IQuickOpenService } from 'vs/platform/quickOpen/common/quickOpen'; +import { IConfigurationService } from "vs/platform/configuration/common/configuration"; + +export const ALL_COMMANDS_PREFIX = '>'; + +export class ShowTasksAction extends Action { + + public static ID = 'workbench.action.showTasks'; + public static LABEL = nls.localize('showTasks', "Show task menu"); + + constructor( + id: string, + label: string, + @IQuickOpenService private quickOpenService: IQuickOpenService, + @IConfigurationService private configurationService: IConfigurationService + ) { + super(id, label); + } + + public run(context?: any): TPromise { + const value = `${ALL_COMMANDS_PREFIX}tasks`; + this.quickOpenService.show(value); + + return TPromise.as(null); + } +} diff --git a/src/vs/workbench/workbench.main.ts b/src/vs/workbench/workbench.main.ts index 0dabe01ece7..9897e65e326 100644 --- a/src/vs/workbench/workbench.main.ts +++ b/src/vs/workbench/workbench.main.ts @@ -78,7 +78,7 @@ import 'vs/workbench/parts/trust/electron-browser/unsupportedWorkspaceSettings.c import 'vs/workbench/parts/relauncher/electron-browser/relauncher.contribution'; import 'vs/workbench/parts/tasks/electron-browser/task.contribution'; -import 'vs/workbench/parts/tasks/electron-browser/taskPanel'; +import 'vs/workbench/parts/tasks/electron-browser/taskPanel'; // can be packaged separately import 'vs/workbench/parts/emmet/browser/emmet.browser.contribution'; import 'vs/workbench/parts/emmet/electron-browser/emmet.contribution'; -- GitLab