plugins: getPluginsStatus()

This commit is contained in:
isidor
2015-12-04 11:17:46 +01:00
parent e8a61ac90f
commit 1a341b0cd2
3 changed files with 21 additions and 2 deletions
@@ -5,7 +5,7 @@
'use strict';
import nls = require('vs/nls');
import {IPluginDescription, IPluginService, IMessage, IPointListener, IActivationEventListener } from 'vs/platform/plugins/common/plugins';
import {IPluginDescription, IPluginService, IMessage, IPointListener, IActivationEventListener, IPluginStatus } from 'vs/platform/plugins/common/plugins';
import WinJS = require('vs/base/common/winjs.base');
import {IDisposable} from 'vs/base/common/lifecycle';
import Errors = require('vs/base/common/errors');
@@ -111,6 +111,10 @@ export abstract class AbstractPluginService implements IPluginService {
return this.activatedPlugins[pluginId].exports;
}
public getPluginsStatus(): { [id: string]: IPluginStatus } {
return null;
}
public isActivated(pluginId:string): boolean {
return hasOwnProperty.call(this.activatedPlugins, pluginId);
}
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import {IPluginDescription, IMessage} from 'vs/platform/plugins/common/plugins';
import {IPluginDescription, IMessage, IPluginStatus} from 'vs/platform/plugins/common/plugins';
import {PluginsRegistry} from 'vs/platform/plugins/common/pluginsRegistry';
import WinJS = require('vs/base/common/winjs.base');
import {Remotable, IThreadService} from 'vs/platform/thread/common/thread';
@@ -64,6 +64,7 @@ export class MainProcessPluginService extends AbstractPluginService {
private _telemetryService: ITelemetryService;
private _proxy: PluginHostPluginService;
private _isDev: boolean;
private _pluginsStatus: { [id: string]: IPluginStatus };
/**
* This class is constructed manually because it is a service, so it doesn't use any ctor injection
@@ -83,8 +84,13 @@ export class MainProcessPluginService extends AbstractPluginService {
this._threadService = threadService;
this._telemetryService = telemetryService;
this._proxy = this._threadService.getRemotable(PluginHostPluginService);
this._pluginsStatus = {};
PluginsRegistry.handleExtensionPoints((severity, source, message) => {
if (!this._pluginsStatus[source]) {
this._pluginsStatus[source] = { messages: [] };
}
this._pluginsStatus[source].messages.push({ type: severity, source, message });
this.showMessage(severity, source, message);
});
}
@@ -158,6 +164,10 @@ export class MainProcessPluginService extends AbstractPluginService {
}
}
public getPluginsStatus(): { [id: string]: IPluginStatus } {
return this._pluginsStatus;
}
// -- overwriting AbstractPluginService
protected _actualActivatePlugin(pluginDescription: IPluginDescription): WinJS.TPromise<ActivatedPlugin> {
@@ -40,6 +40,10 @@ export interface IMessage {
source: string;
}
export interface IPluginStatus {
messages: IMessage[];
}
export interface IPluginService {
serviceId: ServiceIdentifier<any>;
activateByEvent(activationEvent:string): TPromise<any>;
@@ -52,6 +56,7 @@ export interface IPluginService {
get(pluginId:string): any;
onReady(): TPromise<boolean>;
getPluginsStatus(): { [id: string]: IPluginStatus };
}
export var INSTANCE:IPluginService = null;