From b4d74acdd355de3205ab248ba49c4016dfd46f14 Mon Sep 17 00:00:00 2001 From: isidor Date: Wed, 13 Jan 2016 15:32:09 +0100 Subject: [PATCH] panel: CompositeRegistry --- src/vs/workbench/browser/composite.ts | 38 +++++++++++++++++++++++++++ src/vs/workbench/browser/viewlet.ts | 31 +++++----------------- 2 files changed, 44 insertions(+), 25 deletions(-) diff --git a/src/vs/workbench/browser/composite.ts b/src/vs/workbench/browser/composite.ts index 4c29b28aa66..bb2c2014e1c 100644 --- a/src/vs/workbench/browser/composite.ts +++ b/src/vs/workbench/browser/composite.ts @@ -223,3 +223,41 @@ export abstract class CompositeDescriptor extends AsyncDescriptor { this.order = order; } } + +export abstract class CompositeRegistry { + private composits: CompositeDescriptor[]; + + constructor() { + this.composits = []; + } + + protected registerComposite(descriptor: CompositeDescriptor): void { + if (this.compositById(descriptor.id) !== null) { + return; + } + + this.composits.push(descriptor); + } + + protected getComposit(id: string): CompositeDescriptor { + return this.compositById(id); + } + + protected getComposits(): CompositeDescriptor[] { + return this.composits.slice(0); + } + + protected setComposits(compositsToSet: CompositeDescriptor[]): void { + this.composits = compositsToSet; + } + + private compositById(id: string): CompositeDescriptor { + for (let i = 0; i < this.composits.length; i++) { + if (this.composits[i].id === id) { + return this.composits[i]; + } + } + + return null; + } +} \ No newline at end of file diff --git a/src/vs/workbench/browser/viewlet.ts b/src/vs/workbench/browser/viewlet.ts index 046a838fad7..d1ba489fc46 100644 --- a/src/vs/workbench/browser/viewlet.ts +++ b/src/vs/workbench/browser/viewlet.ts @@ -23,7 +23,7 @@ import {CollapsibleView, CollapsibleState, FixedCollapsibleView} from 'vs/base/b import {IViewletService} from 'vs/workbench/services/viewlet/common/viewletService'; import {IWorkbenchEditorService} from 'vs/workbench/services/editor/common/editorService'; import {IViewlet} from 'vs/workbench/common/viewlet'; -import {Composite, CompositeDescriptor} from 'vs/workbench/browser/composite'; +import {Composite, CompositeDescriptor, CompositeRegistry} from 'vs/workbench/browser/composite'; import {IContextMenuService} from 'vs/platform/contextview/browser/contextView'; import {IMessageService} from 'vs/platform/message/common/message'; import {ISelection, Selection, StructuredSelection} from 'vs/platform/selection/common/selection'; @@ -192,42 +192,23 @@ export interface IViewletRegistry { getDefaultViewletId(): string; } -class ViewletRegistry implements IViewletRegistry { - private viewlets: ViewletDescriptor[]; +class ViewletRegistry extends CompositeRegistry implements IViewletRegistry { private defaultViewletId: string; - constructor() { - this.viewlets = []; - } - public registerViewlet(descriptor: ViewletDescriptor): void { - if (this.viewletById(descriptor.id) !== null) { - return; - } - - this.viewlets.push(descriptor); + super.registerComposite(descriptor); } public getViewlet(id: string): ViewletDescriptor { - return this.viewletById(id); + return this.getComposit(id); } public getViewlets(): ViewletDescriptor[] { - return this.viewlets.slice(0); + return this.getComposits(); } public setViewlets(viewletsToSet: ViewletDescriptor[]): void { - this.viewlets = viewletsToSet; - } - - private viewletById(id: string): ViewletDescriptor { - for (let i = 0; i < this.viewlets.length; i++) { - if (this.viewlets[i].id === id) { - return this.viewlets[i]; - } - } - - return null; + this.setComposits(viewletsToSet); } public setDefaultViewletId(id: string): void { -- GitLab