提交 13641598 编写于 作者: P Pine Wu

Retrieve list of registered viewletes to populate toggle custom explorer command

上级 2e0f8d0d
......@@ -31,8 +31,9 @@ export class ActivitybarPart extends Part implements IActivityService {
private compositeIdToActions: { [compositeId: string]: ActivityAction; };
private viewletsToggleStatus: { [viewletId: string]: boolean; };
private registeredViewlets: string[];
private ENABLED_VIEWLETS_KEY = "workbench.activityBar.enabledExternalViewlets";
private VIEWLETS_TOGGLE_STATUS = "workbench.activityBar.enabledExternalViewlets";
constructor(
id: string,
......@@ -47,7 +48,10 @@ export class ActivitybarPart extends Part implements IActivityService {
this.activityActionItems = {};
this.compositeIdToActions = {};
this.viewletsToggleStatus = {};
const viewletsToggleStatusJson = this.storageService.get(this.VIEWLETS_TOGGLE_STATUS);
this.viewletsToggleStatus = viewletsToggleStatusJson ? JSON.parse(viewletsToggleStatusJson) : {};
this.registeredViewlets = [];
this.registerListeners();
}
......@@ -68,14 +72,10 @@ export class ActivitybarPart extends Part implements IActivityService {
}
private onDidRegisterExternalViewlets(descriptors: ViewletDescriptor[]) {
const enabledViewletsJson = this.storageService.get(this.ENABLED_VIEWLETS_KEY);
const enabledViewlets: string[] = enabledViewletsJson ? JSON.parse(enabledViewletsJson) : [];
descriptors.forEach(descriptor => {
if (enabledViewlets.indexOf(descriptor.id) !== -1) {
this.viewletsToggleStatus[descriptor.id] = true;
this.registeredViewlets.push(descriptor.id);
if (this.viewletsToggleStatus[descriptor.id]) {
this.viewletSwitcherBar.push(this.toAction(descriptor), { label: true, icon: true });
} else {
this.viewletsToggleStatus[descriptor.id] = false;
}
});
}
......@@ -92,8 +92,21 @@ export class ActivitybarPart extends Part implements IActivityService {
}
}
public getViewletsToggleStatus(): { [viewletId: string]: boolean } {
return this.viewletsToggleStatus;
public getRegisteredViewletsToggleStatus(): { [viewletId: string]: boolean } {
const result = {};
this.registeredViewlets.forEach(viewletId => {
result[viewletId] = this.viewletsToggleStatus[viewletId];
});
return result;
}
public toggleViewlet(viewletId: string): void {
this.viewletsToggleStatus[viewletId] = !this.viewletsToggleStatus[viewletId];
this.setViewletsToggleStatus();
}
private setViewletsToggleStatus(): void {
this.storageService.store(this.VIEWLETS_TOGGLE_STATUS, JSON.stringify(this.viewletsToggleStatus));
}
public showActivity(compositeId: string, badge: IBadge, clazz?: string): void {
......
......@@ -11,7 +11,7 @@ import { ViewletRegistry, Extensions as ViewletExtensions, ViewletDescriptor, To
import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actionRegistry';
import { SyncActionDescriptor } from 'vs/platform/actions/common/actions';
import { IAction, IActionRunner, Action } from 'vs/base/common/actions';
import { IQuickOpenService } from 'vs/workbench/services/quickopen/common/quickOpenService';
import { IQuickOpenService, IPickOpenEntry } from 'vs/workbench/services/quickopen/common/quickOpenService';
import { IActivityService } from 'vs/workbench/services/activity/common/activityService';
const registry = Registry.as<IWorkbenchActionRegistry>(ActionExtensions.WorkbenchActions);
......@@ -32,9 +32,9 @@ export class ToggleExternalViewletAction extends Action {
}
run(): TPromise<any> {
const viewletsToggleStataus = this.activityService.getViewletsToggleStatus();
const viewletsToggleStataus = this.activityService.getRegisteredViewletsToggleStatus();
const picks = [];
const picks: IPickOpenEntry[] = [];
for (let viewletId in viewletsToggleStataus) {
picks.push({
id: viewletId,
......@@ -46,7 +46,7 @@ export class ToggleExternalViewletAction extends Action {
return TPromise.timeout(50).then(() => {
this.quickOpenService.pick(picks, { placeHolder: 'select viewlet to enable', autoFocus: 2 }).then(pick => {
if (pick) {
this.activityService.toggleViewlet(pick.id);
}
});
});
......
......@@ -74,5 +74,10 @@ export interface IActivityService {
/**
* Get all registered viewlets and whether they are enabled/disabled
*/
getViewletsToggleStatus(): { [viewletId: string]: boolean };
getRegisteredViewletsToggleStatus(): { [viewletId: string]: boolean };
/**
* Enable/disable viewlet
*/
toggleViewlet(viewletId: string): void;
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册