From 06b82f52cb8f988ea31186bed7fc697f8152ace1 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Wed, 9 Nov 2016 00:08:51 -0800 Subject: [PATCH] Split didExtensionViewletLoad from didViewletToggle --- .../browser/parts/activitybar/activitybarPart.ts | 4 ++++ .../services/viewlet/browser/viewletService.ts | 8 +++++--- .../services/viewlet/common/viewletService.ts | 3 ++- src/vs/workbench/test/browser/services.test.ts | 11 ++++++----- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index 7b8a956624b..0396247c95f 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -52,7 +52,11 @@ export class ActivitybarPart extends Part implements IActivityService { // Deactivate viewlet action on close this.toUnbind.push(this.viewletService.onDidViewletClose(viewlet => this.onCompositeClosed(viewlet))); + // Update viewlet switcher when extension viewlets become ready this.toUnbind.push(this.viewletService.onDidExtensionViewletsLoad(() => this.refreshViewletSwitcher())); + + // Update viewlet switcher on toggling of a viewlet + this.toUnbind.push(this.viewletService.onDidViewletToggle(() => this.refreshViewletSwitcher())); } private onActiveCompositeChanged(composite: IComposite): void { diff --git a/src/vs/workbench/services/viewlet/browser/viewletService.ts b/src/vs/workbench/services/viewlet/browser/viewletService.ts index dfbc940e3ed..33ba3566243 100644 --- a/src/vs/workbench/services/viewlet/browser/viewletService.ts +++ b/src/vs/workbench/services/viewlet/browser/viewletService.ts @@ -24,10 +24,12 @@ export class ViewletService implements IViewletService { private enabledExtViewletIds: string[]; private extViewlets: ViewletDescriptor[]; private _onDidExtensionViewletsLoad = new Emitter(); + private _onDidViewletToggle = new Emitter(); public get onDidViewletOpen(): Event { return this.sidebarPart.onDidViewletOpen; }; public get onDidViewletClose(): Event { return this.sidebarPart.onDidViewletClose; }; public get onDidExtensionViewletsLoad(): Event { return this._onDidExtensionViewletsLoad.event; }; + public get onDidViewletToggle(): Event { return this._onDidViewletToggle.event; }; constructor( sidebarPart: ISidebar, @@ -53,14 +55,14 @@ export class ViewletService implements IViewletService { } }); - this._onDidExtensionViewletsLoad.fire(null); + this._onDidExtensionViewletsLoad.fire(); } public openViewlet(id: string, focus?: boolean): TPromise { return this.sidebarPart.openViewlet(id, focus); } - public toggleViewlet(id: string): TPromise { + public toggleViewlet(id: string): TPromise { const index = this.enabledExtViewletIds.indexOf(id); if (index === -1) { this.enabledExtViewletIds.push(id); @@ -69,7 +71,7 @@ export class ViewletService implements IViewletService { } this.setEnabledExtViewlets(); - this._onDidExtensionViewletsLoad.fire(); + this._onDidViewletToggle.fire(); return TPromise.as(null); } diff --git a/src/vs/workbench/services/viewlet/common/viewletService.ts b/src/vs/workbench/services/viewlet/common/viewletService.ts index 1468d2e38fb..d52b94601dd 100644 --- a/src/vs/workbench/services/viewlet/common/viewletService.ts +++ b/src/vs/workbench/services/viewlet/common/viewletService.ts @@ -18,6 +18,7 @@ export interface IViewletService { onDidViewletOpen: Event; onDidViewletClose: Event; onDidExtensionViewletsLoad: Event; + onDidViewletToggle: Event; /** * Opens a viewlet with the given identifier and pass keyboard focus to it if specified. @@ -27,7 +28,7 @@ export interface IViewletService { /** * Toggles a viewlet with the given identifier. */ - toggleViewlet(id: string): TPromise; + toggleViewlet(id: string): TPromise; /** * Returns the current active viewlet or null if none. diff --git a/src/vs/workbench/test/browser/services.test.ts b/src/vs/workbench/test/browser/services.test.ts index d52e0705abf..bc1da1ce009 100644 --- a/src/vs/workbench/test/browser/services.test.ts +++ b/src/vs/workbench/test/browser/services.test.ts @@ -101,19 +101,20 @@ class TestViewletService implements IViewletService { public _serviceBrand: any; onDidViewletOpenEmitter = new Emitter(); - onDidViewletOpen = this.onDidViewletOpenEmitter.event; - onDidViewletCloseEmitter = new Emitter(); - onDidViewletClose = this.onDidViewletCloseEmitter.event; - onDidExtensionViewletsLoadEmitter = new Emitter(); + onDidViewletToggleEmitter = new Emitter(); + + onDidViewletOpen = this.onDidViewletOpenEmitter.event; + onDidViewletClose = this.onDidViewletCloseEmitter.event; onDidExtensionViewletsLoad = this.onDidExtensionViewletsLoadEmitter.event; + onDidViewletToggle = this.onDidViewletToggleEmitter.event; public openViewlet(id: string, focus?: boolean): TPromise { return TPromise.as(null); } - public toggleViewlet(id: string): TPromise { + public toggleViewlet(id: string): TPromise { return TPromise.as(null); } -- GitLab