提交 a9856260 编写于 作者: I isidor

show all extension commands on extension status bar click.

上级 b8953b71
......@@ -5,49 +5,40 @@
import nls = require('vs/nls');
import Severity from 'vs/base/common/severity';
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 { IMessageService } from 'vs/platform/message/common/message';
import { IQuickOpenService } from 'vs/workbench/services/quickopen/browser/quickOpenService';
var $ = dom.emmet;
export class ExtensionsStatusbarItem implements statusbar.IStatusbarItem {
private toDispose: lifecycle.IDisposable[];
private severity: Severity;
private domNode: HTMLElement;
private status: { [id: string]: IPluginStatus };
constructor(
@IPluginService private pluginService: IPluginService,
@IMessageService private messageService: IMessageService
@IQuickOpenService private quickOpenService: IQuickOpenService
) {
this.toDispose = [];
this.severity = Severity.Ignore;
this.pluginService.onReady().then(() => {
this.status = this.pluginService.getPluginsStatus();
Object.keys(this.status).forEach(key => {
this.severity = this.status[key].messages.reduce((maxSeverity, message) => Math.max(maxSeverity, message.type), this.severity);
const pluginsStatus = this.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());
});
this.domNode.hidden = this.severity === Severity.Ignore;
});
}
public render(container: HTMLElement): lifecycle.IDisposable {
this.domNode = dom.append(container, $('.extensions-statusbar octicon octicon-package'));
this.domNode.title = nls.localize('extensionsStatus', "Extensions Status"),
this.domNode.hidden = true;
this.domNode.title = nls.localize('extensions', "Extensions"),
this.toDispose.push(dom.addDisposableListener(this.domNode, 'click', () => {
Object.keys(this.status).forEach(key => {
this.status[key].messages.forEach(m => {
if (m.type === this.severity) {
this.messageService.show(m.type, m.message);
}
});
});
this.quickOpenService.show('>extensions: ').done(null, errors.onUnexpectedError);
}));
return {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册