Revert "Merge from vscode 81d7885dc2e9dc617e1522697a2966bc4025a45d (#5949)" (#5983)

This reverts commit d15a3fcc98.
This commit is contained in:
Karl Burtram
2019-06-11 12:35:58 -07:00
committed by GitHub
parent 95a50b7892
commit 5a7562a37b
926 changed files with 11394 additions and 19540 deletions

View File

@@ -6,7 +6,7 @@
import 'vs/css!./media/compositepart';
import * as nls from 'vs/nls';
import { defaultGenerator } from 'vs/base/common/idGenerator';
import { IDisposable, dispose, DisposableStore } from 'vs/base/common/lifecycle';
import { IDisposable, dispose, toDisposable } from 'vs/base/common/lifecycle';
import * as strings from 'vs/base/common/strings';
import { Emitter } from 'vs/base/common/event';
import * as errors from 'vs/base/common/errors';
@@ -18,13 +18,13 @@ import { IAction } from 'vs/base/common/actions';
import { Part, IPartOptions } from 'vs/workbench/browser/part';
import { Composite, CompositeRegistry } from 'vs/workbench/browser/composite';
import { IComposite } from 'vs/workbench/common/composite';
import { ScopedProgressService } from 'vs/workbench/services/progress/browser/localProgressService';
import { ScopedProgressService } from 'vs/workbench/services/progress/browser/progressService';
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
import { ILocalProgressService } from 'vs/platform/progress/common/progress';
import { IProgressService } from 'vs/platform/progress/common/progress';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
import { IThemeService } from 'vs/platform/theme/common/themeService';
@@ -50,7 +50,7 @@ export interface ICompositeTitleLabel {
interface CompositeItem {
composite: Composite;
disposable: IDisposable;
localProgressService: ILocalProgressService;
progressService: IProgressService;
}
export abstract class CompositePart<T extends Composite> extends Part {
@@ -60,8 +60,8 @@ export abstract class CompositePart<T extends Composite> extends Part {
protected toolBar: ToolBar;
private mapCompositeToCompositeContainer = new Map<string, HTMLElement>();
private mapActionsBindingToComposite = new Map<string, () => void>();
private mapCompositeToCompositeContainer: { [compositeId: string]: HTMLElement; };
private mapActionsBindingToComposite: { [compositeId: string]: () => void; };
private activeComposite: Composite | null;
private lastActiveCompositeId: string;
private instantiatedCompositeItems: Map<string, CompositeItem>;
@@ -91,6 +91,8 @@ export abstract class CompositePart<T extends Composite> extends Part {
) {
super(id, options, themeService, storageService, layoutService);
this.mapCompositeToCompositeContainer = {};
this.mapActionsBindingToComposite = {};
this.activeComposite = null;
this.instantiatedCompositeItems = new Map<string, CompositeItem>();
this.lastActiveCompositeId = storageService.get(activeCompositeSettingsKey, StorageScope.WORKSPACE, this.defaultCompositeId);
@@ -169,17 +171,17 @@ export abstract class CompositePart<T extends Composite> extends Part {
// Instantiate composite from registry otherwise
const compositeDescriptor = this.registry.getComposite(id);
if (compositeDescriptor) {
const localProgressService = this.instantiationService.createInstance(ScopedProgressService, this.progressBar, compositeDescriptor.id, isActive);
const compositeInstantiationService = this.instantiationService.createChild(new ServiceCollection([ILocalProgressService, localProgressService]));
const progressService = this.instantiationService.createInstance(ScopedProgressService, this.progressBar, compositeDescriptor.id, isActive);
const compositeInstantiationService = this.instantiationService.createChild(new ServiceCollection([IProgressService, progressService]));
const composite = compositeDescriptor.instantiate(compositeInstantiationService);
const disposables = new DisposableStore();
const disposables: IDisposable[] = [];
// Remember as Instantiated
this.instantiatedCompositeItems.set(id, { composite, disposable: disposables, localProgressService });
this.instantiatedCompositeItems.set(id, { composite, disposable: toDisposable(() => dispose(disposables)), progressService });
// Register to title area update events from the composite
disposables.add(composite.onTitleAreaUpdate(() => this.onTitleAreaUpdate(composite.getId()), this));
composite.onTitleAreaUpdate(() => this.onTitleAreaUpdate(composite.getId()), this, disposables);
return composite;
}
@@ -204,7 +206,7 @@ export abstract class CompositePart<T extends Composite> extends Part {
this.lastActiveCompositeId = this.activeComposite.getId();
// Composites created for the first time
let compositeContainer = this.mapCompositeToCompositeContainer.get(composite.getId());
let compositeContainer = this.mapCompositeToCompositeContainer[composite.getId()];
if (!compositeContainer) {
// Build Container off-DOM
@@ -216,7 +218,13 @@ export abstract class CompositePart<T extends Composite> extends Part {
composite.updateStyles();
// Remember composite container
this.mapCompositeToCompositeContainer.set(composite.getId(), compositeContainer);
this.mapCompositeToCompositeContainer[composite.getId()] = compositeContainer;
}
// Report progress for slow loading composites (but only if we did not create the composites before already)
const compositeItem = this.instantiatedCompositeItems.get(composite.getId());
if (compositeItem && !compositeContainer) {
compositeItem.progressService.showWhile(Promise.resolve(), this.layoutService.isRestored() ? 800 : 3200 /* less ugly initial startup */);
}
// Fill Content and Actions
@@ -242,10 +250,10 @@ export abstract class CompositePart<T extends Composite> extends Part {
}
// Handle Composite Actions
let actionsBinding = this.mapActionsBindingToComposite.get(composite.getId());
let actionsBinding = this.mapActionsBindingToComposite[composite.getId()];
if (!actionsBinding) {
actionsBinding = this.collectCompositeActions(composite);
this.mapActionsBindingToComposite.set(composite.getId(), actionsBinding);
this.mapActionsBindingToComposite[composite.getId()] = actionsBinding;
}
actionsBinding();
@@ -298,13 +306,13 @@ export abstract class CompositePart<T extends Composite> extends Part {
// Actions
const actionsBinding = this.collectCompositeActions(this.activeComposite);
this.mapActionsBindingToComposite.set(this.activeComposite.getId(), actionsBinding);
this.mapActionsBindingToComposite[this.activeComposite.getId()] = actionsBinding;
actionsBinding();
}
// Otherwise invalidate actions binding for next time when the composite becomes visible
else {
this.mapActionsBindingToComposite.delete(compositeId);
delete this.mapActionsBindingToComposite[compositeId];
}
}
@@ -358,16 +366,14 @@ export abstract class CompositePart<T extends Composite> extends Part {
const composite = this.activeComposite;
this.activeComposite = null;
const compositeContainer = this.mapCompositeToCompositeContainer.get(composite.getId());
const compositeContainer = this.mapCompositeToCompositeContainer[composite.getId()];
// Indicate to Composite
composite.setVisible(false);
// Take Container Off-DOM and hide
if (compositeContainer) {
compositeContainer.remove();
hide(compositeContainer);
}
compositeContainer.remove();
hide(compositeContainer);
// Clear any running Progress
this.progressBar.stop().hide();
@@ -456,17 +462,17 @@ export abstract class CompositePart<T extends Composite> extends Part {
return contentContainer;
}
getProgressIndicator(id: string): ILocalProgressService | null {
getProgressIndicator(id: string): IProgressService | null {
const compositeItem = this.instantiatedCompositeItems.get(id);
return compositeItem ? compositeItem.localProgressService : null;
return compositeItem ? compositeItem.progressService : null;
}
protected getActions(): ReadonlyArray<IAction> {
protected getActions(): IAction[] {
return [];
}
protected getSecondaryActions(): ReadonlyArray<IAction> {
protected getSecondaryActions(): IAction[] {
return [];
}
@@ -490,8 +496,8 @@ export abstract class CompositePart<T extends Composite> extends Part {
return false; // do not remove active composite
}
this.mapCompositeToCompositeContainer.delete(compositeId);
this.mapActionsBindingToComposite.delete(compositeId);
delete this.mapCompositeToCompositeContainer[compositeId];
delete this.mapActionsBindingToComposite[compositeId];
const compositeItem = this.instantiatedCompositeItems.get(compositeId);
if (compositeItem) {
compositeItem.composite.dispose();
@@ -503,8 +509,8 @@ export abstract class CompositePart<T extends Composite> extends Part {
}
dispose(): void {
this.mapCompositeToCompositeContainer.clear();
this.mapActionsBindingToComposite.clear();
this.mapCompositeToCompositeContainer = null!; // StrictNullOverride: nulling out ok in dispose
this.mapActionsBindingToComposite = null!; // StrictNullOverride: nulling out ok in dispose
this.instantiatedCompositeItems.forEach(compositeItem => {
compositeItem.composite.dispose();