From a8eed3eb46435df35971b748adb5938e5a56fc67 Mon Sep 17 00:00:00 2001 From: isidor Date: Tue, 8 Dec 2015 16:31:20 +0100 Subject: [PATCH] ShowExtensionsStatusAction --- .../electron-browser/extensionsActions.ts | 40 +++++++++++++++++++ .../electron-browser/extensionsWidgets.ts | 8 ++-- .../extensionsWorkbenchExtension.ts | 3 +- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts index 5d71a8d24bb..7abf87688ec 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts @@ -6,6 +6,9 @@ import nls = require('vs/nls'); import { Promise } from 'vs/base/common/winjs.base'; import { Action } from 'vs/base/common/actions'; +import Severity from 'vs/base/common/severity'; +import { IPluginService, IPluginStatus } from 'vs/platform/plugins/common/plugins'; +import { IMessageService } from 'vs/platform/message/common/message'; import { IExtensionsService } from 'vs/workbench/parts/extensions/common/extensions'; import { IQuickOpenService } from 'vs/workbench/services/quickopen/browser/quickOpenService'; @@ -32,6 +35,43 @@ export class ListExtensionsAction extends Action { } } +export class ShowExtensionsStatusAction extends Action { + + static ID = 'workbench.extensions.action.showExtensionsStatus'; + static LABEL = nls.localize('showInstalledExtensions', "Show Extensions Status"); + private status: { [id: string]: IPluginStatus }; + + constructor( + id: string, + label: string, + @IPluginService pluginService: IPluginService, + @IMessageService private messageService: IMessageService + + ) { + super(id, label, null, true); + + pluginService.onReady().then(() => { + this.status = pluginService.getPluginsStatus(); + }); + } + + public run(): Promise { + Object.keys(this.status).forEach(key => { + this.status[key].messages.forEach(m => { + if (m.type > Severity.Ignore) { + this.messageService.show(m.type, m.message); + } + }); + }); + + return Promise.as(null); + } + + protected isEnabled(): boolean { + return true; + } +} + export class InstallExtensionAction extends Action { static ID = 'workbench.extensions.action.installExtension'; diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsWidgets.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsWidgets.ts index 862c710e01c..8d8baa62547 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsWidgets.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsWidgets.ts @@ -9,7 +9,7 @@ import errors = require('vs/base/common/errors'); import dom = require('vs/base/browser/dom'); import lifecycle = require('vs/base/common/lifecycle'); import statusbar = require('vs/workbench/browser/parts/statusbar/statusbar'); -import { IPluginService, IPluginStatus } from 'vs/platform/plugins/common/plugins'; +import { IPluginService } from 'vs/platform/plugins/common/plugins'; import { IQuickOpenService } from 'vs/workbench/services/quickopen/browser/quickOpenService'; var $ = dom.emmet; @@ -20,13 +20,13 @@ export class ExtensionsStatusbarItem implements statusbar.IStatusbarItem { private domNode: HTMLElement; constructor( - @IPluginService private pluginService: IPluginService, + @IPluginService pluginService: IPluginService, @IQuickOpenService private quickOpenService: IQuickOpenService ) { this.toDispose = []; - this.pluginService.onReady().then(() => { - const pluginsStatus = this.pluginService.getPluginsStatus(); + pluginService.onReady().then(() => { + const pluginsStatus = pluginService.getPluginsStatus(); Object.keys(pluginsStatus).forEach(key => { const severity = pluginsStatus[key].messages.reduce((maxSeverity, message) => Math.max(maxSeverity, message.type), Severity.Ignore); this.domNode.classList.add(Severity[severity].toLowerCase()); diff --git a/src/vs/workbench/parts/extensions/electron-browser/extensionsWorkbenchExtension.ts b/src/vs/workbench/parts/extensions/electron-browser/extensionsWorkbenchExtension.ts index f968b308e05..fa3205a4d23 100644 --- a/src/vs/workbench/parts/extensions/electron-browser/extensionsWorkbenchExtension.ts +++ b/src/vs/workbench/parts/extensions/electron-browser/extensionsWorkbenchExtension.ts @@ -16,7 +16,7 @@ import { IWorkspaceContextService } from 'vs/workbench/services/workspace/common import { ReloadWindowAction } from 'vs/workbench/electron-browser/actions'; import wbaregistry = require('vs/workbench/browser/actionRegistry'); import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; -import { ListExtensionsAction, InstallExtensionAction, ListOutdatedExtensionsAction } from './extensionsActions'; +import { ListExtensionsAction, ShowExtensionsStatusAction, InstallExtensionAction, ListOutdatedExtensionsAction } from './extensionsActions'; import { IQuickOpenRegistry, Extensions, QuickOpenHandlerDescriptor } from 'vs/workbench/browser/quickopen'; import ipc = require('ipc'); @@ -45,6 +45,7 @@ export class ExtensionsWorkbenchExtension implements IWorkbenchContribution { const extensionsCategory = nls.localize('extensionsCategory', "Extensions"); const actionRegistry = ( platform.Registry.as(wbaregistry.Extensions.WorkbenchActions)); actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ListExtensionsAction, ListExtensionsAction.ID, ListExtensionsAction.LABEL), extensionsCategory); + actionRegistry.registerWorkbenchAction(new SyncActionDescriptor(ShowExtensionsStatusAction, ShowExtensionsStatusAction.ID, ShowExtensionsStatusAction.LABEL), extensionsCategory); (platform.Registry.as(Extensions.Quickopen)).registerQuickOpenHandler( new QuickOpenHandlerDescriptor( -- GitLab