From 16c03c2cce11714120b89321b025c1defb8bc0da Mon Sep 17 00:00:00 2001 From: isidor Date: Fri, 23 Sep 2016 16:05:43 +0200 Subject: [PATCH] activity bar: no need for code reuse between panel and viewlet activity action --- .../parts/activitybar/activitybarPart.ts | 59 +++++++------------ 1 file changed, 21 insertions(+), 38 deletions(-) diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index 470ae13016b..8af41a647d2 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -16,8 +16,8 @@ import {Registry} from 'vs/platform/platform'; import {IComposite} from 'vs/workbench/common/composite'; import {IPanel} from 'vs/workbench/common/panel'; import {ViewletDescriptor, ViewletRegistry, Extensions as ViewletExtensions, Viewlet} from 'vs/workbench/browser/viewlet'; -import {CompositeDescriptor, Composite} from 'vs/workbench/browser/composite'; -import {Panel, PanelRegistry, Extensions as PanelExtensions} from 'vs/workbench/browser/panel'; +import {CompositeDescriptor} from 'vs/workbench/browser/composite'; +import {Panel, PanelRegistry, Extensions as PanelExtensions, PanelDescriptor} from 'vs/workbench/browser/panel'; import {Part} from 'vs/workbench/browser/part'; import {ActivityAction, ActivityActionItem} from 'vs/workbench/browser/parts/activitybar/activityAction'; import {TogglePanelAction} from 'vs/workbench/browser/parts/panel/panelPart'; @@ -208,69 +208,52 @@ export class ActivitybarPart extends Part implements IActivityService { } } -abstract class CompositeActivityAction extends ActivityAction { +class ViewletActivityAction extends ActivityAction { private static preventDoubleClickDelay = 300; private lastRun: number = 0; - protected composite: CompositeDescriptor; - constructor( - id: string, composite: CompositeDescriptor, - @IViewletService protected viewletService: IViewletService, - @IPanelService protected panelService: IPanelService, - @IPartService protected partService: IPartService + id: string, private viewlet: ViewletDescriptor, + @IViewletService private viewletService: IViewletService, + @IPartService private partService: IPartService ) { - super(id, composite.name, composite.cssClass); - - this.composite = composite; + super(id, viewlet.name, viewlet.cssClass); } public run(): TPromise { // prevent accident trigger on a doubleclick (to help nervous people) const now = Date.now(); - if (now - this.lastRun < CompositeActivityAction.preventDoubleClickDelay) { + if (now - this.lastRun < ViewletActivityAction.preventDoubleClickDelay) { return TPromise.as(true); } this.lastRun = now; - this.toggleComposite(); - - return TPromise.as(true); - } - - protected abstract toggleComposite(): void; -} - -class ViewletActivityAction extends CompositeActivityAction { - - protected toggleComposite(): void { const sideBarHidden = this.partService.isSideBarHidden(); const activeViewlet = this.viewletService.getActiveViewlet(); // Hide sidebar if selected viewlet already visible - if (!sideBarHidden && activeViewlet && activeViewlet.getId() === this.composite.id) { + if (!sideBarHidden && activeViewlet && activeViewlet.getId() === this.viewlet.id) { this.partService.setSideBarHidden(true); } else { - this.viewletService.openViewlet(this.composite.id, true).done(null, errors.onUnexpectedError); + this.viewletService.openViewlet(this.viewlet.id, true).done(null, errors.onUnexpectedError); this.activate(); } + + return TPromise.as(true); } } -class PanelActivityAction extends CompositeActivityAction { - - protected toggleComposite(): void { +class PanelActivityAction extends ActivityAction { - const panelHidden = this.partService.isPanelHidden(); - const activePanel = this.panelService.getActivePanel(); + constructor( + id: string, private panel: PanelDescriptor, + @IPanelService private panelService: IPanelService + ) { + super(id, panel.name, panel.cssClass); + } - // Hide panel if selected panel already visible - if (!panelHidden && activePanel && activePanel.getId() === this.composite.id) { - this.partService.setPanelHidden(true); - } else { - this.panelService.openPanel(this.composite.id, true).done(null, errors.onUnexpectedError); - this.activate(); - } + public run(): TPromise { + return this.panelService.openPanel(this.panel.id, true).then(() => this.activate()); } } -- GitLab