From 88e869a924fa5c46a2201152f63e5cf4d82b5735 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Tue, 18 Oct 2016 14:52:45 -0700 Subject: [PATCH] Refactor activitybar and clean up --- .../browser/explorerExtensionPoint.ts | 5 ++- .../parts/activitybar/activitybarPart.ts | 37 ++++++++++++------- src/vs/workbench/browser/viewlet.ts | 2 +- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/vs/platform/explorers/browser/explorerExtensionPoint.ts b/src/vs/platform/explorers/browser/explorerExtensionPoint.ts index 8d47103d4c4..455607a10ae 100644 --- a/src/vs/platform/explorers/browser/explorerExtensionPoint.ts +++ b/src/vs/platform/explorers/browser/explorerExtensionPoint.ts @@ -43,7 +43,7 @@ namespace schema { } ExtensionsRegistry.registerExtensionPoint('explorer', schema.explorerContribtion).setHandler(extensions => { - let baseOrder = 200; + let baseOrder = 200; // Stock viewlet order goes up to 100 let descriptors = []; for (let extension of extensions) { @@ -69,7 +69,8 @@ ExtensionsRegistry.registerExtensionPoint('explorer', schema.e 'workbench.view.customTreeExplorerViewlet.' + treeExplorerNodeProviderId, treeLabel, treeExplorerNodeProviderId, - baseOrder++ + baseOrder++, + true )); } Registry.as(ViewletExtensions.Viewlets).registerExternalViewlets(descriptors); diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index f9adac7f479..237f987bfa0 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -33,7 +33,7 @@ export class ActivitybarPart extends Part implements IActivityService { private viewletsToggleStatus: { [viewletId: string]: boolean; }; private registeredViewlets: string[]; - private VIEWLETS_TOGGLE_STATUS = "workbench.activityBar.enabledExternalViewlets"; + private VIEWLETS_TOGGLE_STATUS = "workbench.activityBar.viewletsToggleStatus"; constructor( id: string, @@ -103,6 +103,7 @@ export class ActivitybarPart extends Part implements IActivityService { public toggleViewlet(viewletId: string): void { this.viewletsToggleStatus[viewletId] = !this.viewletsToggleStatus[viewletId]; this.setViewletsToggleStatus(); + this.refreshViewletSwitcher(); } private setViewletsToggleStatus(): void { @@ -128,25 +129,40 @@ export class ActivitybarPart extends Part implements IActivityService { const $result = $('.content').appendTo($el); // Top Actionbar with action items for each viewlet action - this.createViewletSwitcher($result.clone()); + this.createViewletSwitcher($result.clone().addClass('position-top')); return $result; } private createViewletSwitcher(div: Builder): void { - - // Composite switcher is on top this.viewletSwitcherBar = new ActionBar(div, { actionItemProvider: (action: Action) => this.activityActionItems[action.id], orientation: ActionsOrientation.VERTICAL, ariaLabel: nls.localize('activityBarAriaLabel', "Active View Switcher") }); - this.viewletSwitcherBar.getContainer().addClass('position-top'); - // Build Viewlet Actions in correct order - const allViewlets = (Registry.as(ViewletExtensions.Viewlets)).getViewlets(); - const viewletActions = allViewlets.sort((v1, v2) => v1.order - v2.order).map(viewlet => this.toAction(viewlet)); + // Load stock viewlets + const allViewlets = (Registry.as(ViewletExtensions.Viewlets)).getViewlets().filter(v => !v.isExternal); + this.fillViewletSwitcher(allViewlets); + } + private refreshViewletSwitcher(): void { + this.viewletSwitcherBar.clear(); + + // Load stock viewlets + enabled external viewlets + const allEnabledViewlets = (Registry.as(ViewletExtensions.Viewlets)).getViewlets().filter(descriptor => { + if (!descriptor.isExternal) { + return true; + } else { + return this.viewletsToggleStatus[descriptor.id]; + } + }); + this.fillViewletSwitcher(allEnabledViewlets); + } + + private fillViewletSwitcher(viewlets: ViewletDescriptor[]) { + // Build Viewlet Actions in correct order + const viewletActions = viewlets.sort((v1, v2) => v1.order - v2.order).map(v => this.toAction(v)); this.viewletSwitcherBar.push(viewletActions, { label: true, icon: true }); } @@ -157,11 +173,6 @@ export class ActivitybarPart extends Part implements IActivityService { this.activityActionItems[action.id] = new ActivityActionItem(action, composite.name, this.getKeybindingLabel(composite.id)); this.compositeIdToActions[composite.id] = action; - // Mark active viewlet as active - if (activeViewlet && activeViewlet.getId() === composite.id) { - action.activate(); - } - return action; }; diff --git a/src/vs/workbench/browser/viewlet.ts b/src/vs/workbench/browser/viewlet.ts index 245bfe8c42d..f4c1c1049d9 100644 --- a/src/vs/workbench/browser/viewlet.ts +++ b/src/vs/workbench/browser/viewlet.ts @@ -154,7 +154,7 @@ export abstract class ViewerViewlet extends Viewlet { */ export class ViewletDescriptor extends CompositeDescriptor { - constructor(moduleId: string, ctorName: string, id: string, name: string, cssClass?: string, order?: number) { + constructor(moduleId: string, ctorName: string, id: string, name: string, cssClass?: string, order?: number, public isExternal: boolean = false) { super(moduleId, ctorName, id, name, cssClass, order); } } -- GitLab