From 54ad623f8ba5ee36a2decbe06186fb8331a18cbd Mon Sep 17 00:00:00 2001 From: isidor Date: Thu, 6 Jun 2019 10:55:15 +0200 Subject: [PATCH] compositePart use Map #74948 --- .../workbench/browser/parts/compositePart.ts | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/vs/workbench/browser/parts/compositePart.ts b/src/vs/workbench/browser/parts/compositePart.ts index 2eb400bef46..5e550a4deb9 100644 --- a/src/vs/workbench/browser/parts/compositePart.ts +++ b/src/vs/workbench/browser/parts/compositePart.ts @@ -60,8 +60,8 @@ export abstract class CompositePart extends Part { protected toolBar: ToolBar; - private mapCompositeToCompositeContainer: { [compositeId: string]: HTMLElement; }; - private mapActionsBindingToComposite: { [compositeId: string]: () => void; }; + private mapCompositeToCompositeContainer = new Map(); + private mapActionsBindingToComposite = new Map void>(); private activeComposite: Composite | null; private lastActiveCompositeId: string; private instantiatedCompositeItems: Map; @@ -91,8 +91,6 @@ export abstract class CompositePart extends Part { ) { super(id, options, themeService, storageService, layoutService); - this.mapCompositeToCompositeContainer = {}; - this.mapActionsBindingToComposite = {}; this.activeComposite = null; this.instantiatedCompositeItems = new Map(); this.lastActiveCompositeId = storageService.get(activeCompositeSettingsKey, StorageScope.WORKSPACE, this.defaultCompositeId); @@ -206,7 +204,7 @@ export abstract class CompositePart extends Part { this.lastActiveCompositeId = this.activeComposite.getId(); // Composites created for the first time - let compositeContainer = this.mapCompositeToCompositeContainer[composite.getId()]; + let compositeContainer = this.mapCompositeToCompositeContainer.get(composite.getId()); if (!compositeContainer) { // Build Container off-DOM @@ -218,7 +216,7 @@ export abstract class CompositePart extends Part { composite.updateStyles(); // Remember composite container - this.mapCompositeToCompositeContainer[composite.getId()] = compositeContainer; + this.mapCompositeToCompositeContainer.set(composite.getId(), compositeContainer); } // Fill Content and Actions @@ -244,10 +242,10 @@ export abstract class CompositePart extends Part { } // Handle Composite Actions - let actionsBinding = this.mapActionsBindingToComposite[composite.getId()]; + let actionsBinding = this.mapActionsBindingToComposite.get(composite.getId()); if (!actionsBinding) { actionsBinding = this.collectCompositeActions(composite); - this.mapActionsBindingToComposite[composite.getId()] = actionsBinding; + this.mapActionsBindingToComposite.set(composite.getId(), actionsBinding); } actionsBinding(); @@ -300,13 +298,13 @@ export abstract class CompositePart extends Part { // Actions const actionsBinding = this.collectCompositeActions(this.activeComposite); - this.mapActionsBindingToComposite[this.activeComposite.getId()] = actionsBinding; + this.mapActionsBindingToComposite.set(this.activeComposite.getId(), actionsBinding); actionsBinding(); } // Otherwise invalidate actions binding for next time when the composite becomes visible else { - delete this.mapActionsBindingToComposite[compositeId]; + this.mapActionsBindingToComposite.delete(compositeId); } } @@ -360,14 +358,16 @@ export abstract class CompositePart extends Part { const composite = this.activeComposite; this.activeComposite = null; - const compositeContainer = this.mapCompositeToCompositeContainer[composite.getId()]; + const compositeContainer = this.mapCompositeToCompositeContainer.get(composite.getId()); // Indicate to Composite composite.setVisible(false); // Take Container Off-DOM and hide - compositeContainer.remove(); - hide(compositeContainer); + if (compositeContainer) { + compositeContainer.remove(); + hide(compositeContainer); + } // Clear any running Progress this.progressBar.stop().hide(); @@ -490,8 +490,8 @@ export abstract class CompositePart extends Part { return false; // do not remove active composite } - delete this.mapCompositeToCompositeContainer[compositeId]; - delete this.mapActionsBindingToComposite[compositeId]; + this.mapCompositeToCompositeContainer.delete(compositeId); + this.mapActionsBindingToComposite.delete(compositeId); const compositeItem = this.instantiatedCompositeItems.get(compositeId); if (compositeItem) { compositeItem.composite.dispose(); @@ -503,8 +503,8 @@ export abstract class CompositePart extends Part { } dispose(): void { - this.mapCompositeToCompositeContainer = null!; // StrictNullOverride: nulling out ok in dispose - this.mapActionsBindingToComposite = null!; // StrictNullOverride: nulling out ok in dispose + this.mapCompositeToCompositeContainer.clear(); + this.mapActionsBindingToComposite.clear(); this.instantiatedCompositeItems.forEach(compositeItem => { compositeItem.composite.dispose();