From 29c03eaa5852efe85778273f25a31602394c1fe4 Mon Sep 17 00:00:00 2001 From: Pine Wu Date: Tue, 11 Oct 2016 07:48:34 -0700 Subject: [PATCH] Remove children on ExtHost side and refactor --- src/vs/vscode.d.ts | 35 +------ src/vs/workbench/api/node/extHost.api.impl.ts | 6 +- .../api/node/extHost.contribution.ts | 4 +- src/vs/workbench/api/node/extHost.protocol.ts | 14 +-- src/vs/workbench/api/node/extHostExplorers.ts | 95 ------------------- .../api/node/extHostTreeExplorers.ts | 79 +++++++++++++++ ...xplorers.ts => mainThreadTreeExplorers.ts} | 26 +++-- .../browser/treeExplorerViewletService.ts | 18 ++-- .../browser/views/treeExplorerView.ts | 5 +- .../browser/views/treeExplorerViewer.ts | 2 +- .../explorers/common/treeExplorerViewModel.ts | 39 ++++++++ .../parts/explorers/common/treeViewModel.ts | 22 ----- 12 files changed, 159 insertions(+), 186 deletions(-) delete mode 100644 src/vs/workbench/api/node/extHostExplorers.ts create mode 100644 src/vs/workbench/api/node/extHostTreeExplorers.ts rename src/vs/workbench/api/node/{mainThreadExplorers.ts => mainThreadTreeExplorers.ts} (52%) create mode 100644 src/vs/workbench/parts/explorers/common/treeExplorerViewModel.ts delete mode 100644 src/vs/workbench/parts/explorers/common/treeViewModel.ts diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 5610598bc8a..b6d90e0f35c 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -1348,39 +1348,14 @@ declare module 'vscode' { provideTextDocumentContent(uri: Uri, token: CancellationToken): string | Thenable; } - /** - * A tree content provider allows extension to contribute a custom tree-like - * explorer as a Viewlet. - * - * Tree content providers are registered through [workspace.registerTreeContentProvider](#workspace.registerTreeContentProvider). - */ - export interface TreeContentProvider { - provideTreeContent(): Thenable; - resolveChildren(node: TreeContentNode): Thenable; + export interface TreeExplorerNodeProvider { + provideRootNode(): Thenable; + resolveChildren(node: TreeExplorerNode): Thenable; } - /** - * Represents a tree node on the tree explorer. - */ - export interface TreeContentNode { - - /** - * A human readable string used to render the tree node. - */ + export interface TreeExplorerNode { label: string; - - /** - * Wheather the tree node should be initially be expanded. - * If set to true, [TreeContentProvider.resolveChildren](#TreeContentProvider.resolveChildren) will - * be called on the node after rendering. - */ shouldInitiallyExpand: boolean; - - /** - * Children of the current node. Can be empty initially and later - * resolved through [TreeContentProvider.resolveChildren](#TreeContentProvider.resolveChildren) - */ - children: TreeContentNode[]; } /** @@ -3846,7 +3821,7 @@ declare module 'vscode' { * @param provider A [TreeContentProvider](#TreeContentProvider) * @return A [disposable](#Disposable) that unregisters this provider when being disposed. */ - export function registerTreeContentProvider(providerId: string, provider: TreeContentProvider): Disposable; + export function registerTreeExplorerNodeProvider(providerId: string, provider: TreeExplorerNodeProvider): Disposable; /** * An event that is emitted when a [text document](#TextDocument) is opened. diff --git a/src/vs/workbench/api/node/extHost.api.impl.ts b/src/vs/workbench/api/node/extHost.api.impl.ts index e04975b4841..e51010b1de3 100644 --- a/src/vs/workbench/api/node/extHost.api.impl.ts +++ b/src/vs/workbench/api/node/extHost.api.impl.ts @@ -18,7 +18,7 @@ import { ExtHostDocuments } from 'vs/workbench/api/node/extHostDocuments'; import { ExtHostDocumentSaveParticipant } from 'vs/workbench/api/node/extHostDocumentSaveParticipant'; import { ExtHostConfiguration } from 'vs/workbench/api/node/extHostConfiguration'; import { ExtHostDiagnostics } from 'vs/workbench/api/node/extHostDiagnostics'; -import { ExtHostExplorers } from 'vs/workbench/api/node/extHostExplorers'; +import { ExtHostTreeExplorers } from 'vs/workbench/api/node/extHostTreeExplorers'; import { ExtHostWorkspace } from 'vs/workbench/api/node/extHostWorkspace'; import { ExtHostQuickOpen } from 'vs/workbench/api/node/extHostQuickOpen'; import { ExtHostHeapService } from 'vs/workbench/api/node/extHostHeapService'; @@ -66,7 +66,7 @@ export function createApiFactory(threadService: IThreadService, extensionService const extHostDocuments = col.define(ExtHostContext.ExtHostDocuments).set(new ExtHostDocuments(threadService)); const extHostDocumentSaveParticipant = col.define(ExtHostContext.ExtHostDocumentSaveParticipant).set(new ExtHostDocumentSaveParticipant(extHostDocuments, threadService.get(MainContext.MainThreadWorkspace))); const extHostEditors = col.define(ExtHostContext.ExtHostEditors).set(new ExtHostEditors(threadService, extHostDocuments)); - const extHostExplorers = col.define(ExtHostContext.ExtHostExplorers).set(new ExtHostExplorers(threadService)); + const extHostExplorers = col.define(ExtHostContext.ExtHostExplorers).set(new ExtHostTreeExplorers(threadService)); const extHostCommands = col.define(ExtHostContext.ExtHostCommands).set(new ExtHostCommands(threadService, extHostEditors, extHostHeapService)); const extHostConfiguration = col.define(ExtHostContext.ExtHostConfiguration).set(new ExtHostConfiguration(threadService.get(MainContext.MainThreadConfiguration))); const extHostDiagnostics = col.define(ExtHostContext.ExtHostDiagnostics).set(new ExtHostDiagnostics(threadService)); @@ -335,7 +335,7 @@ export function createApiFactory(threadService: IThreadService, extensionService onWillSaveTextDocument: (listener, thisArgs?, disposables?) => { return extHostDocumentSaveParticipant.onWillSaveTextDocumentEvent(listener, thisArgs, disposables); }, - registerTreeContentProvider(providerId: string, provider: vscode.TreeContentProvider) { + registerTreeExplorerNodeProvider(providerId: string, provider: vscode.TreeExplorerNodeProvider) { return extHostExplorers.registerTreeContentProvider(providerId, provider); }, onDidChangeConfiguration: (listener: () => any, thisArgs?: any, disposables?: extHostTypes.Disposable[]) => { diff --git a/src/vs/workbench/api/node/extHost.contribution.ts b/src/vs/workbench/api/node/extHost.contribution.ts index 040b1453475..8c92f83ba0f 100644 --- a/src/vs/workbench/api/node/extHost.contribution.ts +++ b/src/vs/workbench/api/node/extHost.contribution.ts @@ -20,7 +20,7 @@ import { MainThreadDiagnostics } from './mainThreadDiagnostics'; import { MainThreadDocuments } from './mainThreadDocuments'; import { MainThreadEditors } from './mainThreadEditors'; import { MainThreadErrors } from './mainThreadErrors'; -import { MainThreadExplorers } from './mainThreadExplorers'; +import { MainThreadTreeExplorers } from './mainThreadTreeExplorers'; import { MainThreadLanguageFeatures } from './mainThreadLanguageFeatures'; import { MainThreadLanguages } from './mainThreadLanguages'; import { MainThreadMessageService } from './mainThreadMessageService'; @@ -71,7 +71,7 @@ export class ExtHostContribution implements IWorkbenchContribution { col.define(MainContext.MainThreadDocuments).set(create(MainThreadDocuments)); col.define(MainContext.MainThreadEditors).set(create(MainThreadEditors)); col.define(MainContext.MainThreadErrors).set(create(MainThreadErrors)); - col.define(MainContext.MainThreadExplorers).set(create(MainThreadExplorers)); + col.define(MainContext.MainThreadExplorers).set(create(MainThreadTreeExplorers)); col.define(MainContext.MainThreadLanguageFeatures).set(create(MainThreadLanguageFeatures)); col.define(MainContext.MainThreadLanguages).set(create(MainThreadLanguages)); col.define(MainContext.MainThreadMessageService).set(create(MainThreadMessageService)); diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index a94a24cb8a3..702ea0a5378 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -34,7 +34,7 @@ import { SaveReason } from 'vs/workbench/services/textfile/common/textfiles'; import { IWorkspaceSymbol } from 'vs/workbench/parts/search/common/search'; import { IApplyEditsOptions, TextEditorRevealType, ITextEditorConfigurationUpdate, IResolvedTextEditorConfiguration, ISelectionChangeEvent } from './mainThreadEditorsTracker'; -import { ExtHostTreeNode } from 'vs/workbench/api/node/extHostExplorers'; +import { InternalTreeExplorerNode } from 'vs/workbench/parts/explorers/common/treeExplorerViewModel'; export interface InstanceSetter { set(instance: T): R; @@ -117,7 +117,7 @@ export abstract class MainThreadEditorsShape { $tryApplyEdits(id: string, modelVersionId: number, edits: editorCommon.ISingleEditOperation[], opts: IApplyEditsOptions): TPromise { throw ni(); } } -export abstract class MainThreadExplorersShape { +export abstract class MainThreadTreeExplorersShape { $registerTreeContentProvider(treeContentProviderId: string): void { throw ni(); } $unregisterTreeContentProvider(treeContentProviderId: string): void { throw ni(); } } @@ -264,9 +264,9 @@ export abstract class ExtHostEditorsShape { $acceptTextEditorRemove(id: string): void { throw ni(); } } -export abstract class ExtHostExplorersShape { - $provideTreeContent(treeContentProviderId: string): TPromise { throw ni(); }; - $resolveChildren(treeContentProviderId: string, node: ExtHostTreeNode): TPromise { throw ni(); } +export abstract class ExtHostTreeExplorersShape { + $provideRootNode(providerId: string): TPromise { throw ni(); }; + $resolveChildren(providerId: string, node: InternalTreeExplorerNode): TPromise { throw ni(); } } export abstract class ExtHostExtensionServiceShape { @@ -343,7 +343,7 @@ export const MainContext = { MainThreadDocuments: createMainId('MainThreadDocuments', MainThreadDocumentsShape), MainThreadEditors: createMainId('MainThreadEditors', MainThreadEditorsShape), MainThreadErrors: createMainId('MainThreadErrors', MainThreadErrorsShape), - MainThreadExplorers: createMainId('MainThreadExplorers', MainThreadExplorersShape), + MainThreadExplorers: createMainId('MainThreadExplorers', MainThreadTreeExplorersShape), MainThreadLanguageFeatures: createMainId('MainThreadLanguageFeatures', MainThreadLanguageFeaturesShape), MainThreadLanguages: createMainId('MainThreadLanguages', MainThreadLanguagesShape), MainThreadMessageService: createMainId('MainThreadMessageService', MainThreadMessageServiceShape), @@ -364,7 +364,7 @@ export const ExtHostContext = { ExtHostDocuments: createExtId('ExtHostDocuments', ExtHostDocumentsShape), ExtHostDocumentSaveParticipant: createExtId('ExtHostDocumentSaveParticipant', ExtHostDocumentSaveParticipantShape), ExtHostEditors: createExtId('ExtHostEditors', ExtHostEditorsShape), - ExtHostExplorers: createExtId('ExtHostExplorers',ExtHostExplorersShape), + ExtHostExplorers: createExtId('ExtHostExplorers',ExtHostTreeExplorersShape), ExtHostFileSystemEventService: createExtId('ExtHostFileSystemEventService', ExtHostFileSystemEventServiceShape), ExtHostHeapService: createExtId('ExtHostHeapMonitor', ExtHostHeapServiceShape), ExtHostLanguageFeatures: createExtId('ExtHostLanguageFeatures', ExtHostLanguageFeaturesShape), diff --git a/src/vs/workbench/api/node/extHostExplorers.ts b/src/vs/workbench/api/node/extHostExplorers.ts deleted file mode 100644 index 2d6c7f0dcc4..00000000000 --- a/src/vs/workbench/api/node/extHostExplorers.ts +++ /dev/null @@ -1,95 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -'use strict'; - -import { TreeContentNode, TreeContentProvider } from 'vscode'; -import {TPromise} from 'vs/base/common/winjs.base'; -import {Disposable} from 'vs/workbench/api/node/extHostTypes'; -import {IThreadService} from 'vs/workbench/services/thread/common/threadService'; -import {MainContext, ExtHostExplorersShape, MainThreadExplorersShape} from './extHost.protocol'; - -export class ExtHostExplorers extends ExtHostExplorersShape { - private _proxy: MainThreadExplorersShape; - - private _treeContentProviders: { [treeContentProviderId: string]: TreeContentProvider }; - private _treeContents: { [treeContentProviderId: string]: ExtHostTreeNode }; - private _treeNodeMaps: { [treeContentProviderId: string]: { [id: number]: ExtHostTreeNode }}; - - constructor( - threadService: IThreadService - ) { - super(); - - this._proxy = threadService.get(MainContext.MainThreadExplorers); - - this._treeContentProviders = Object.create(null); - this._treeContents = Object.create(null); - this._treeNodeMaps = Object.create(null); - } - - registerTreeContentProvider(providerId: string, provider: TreeContentProvider): Disposable { - this._proxy.$registerTreeContentProvider(providerId); - this._treeContentProviders[providerId] = provider; - - return new Disposable(() => { - if (delete this._treeContentProviders[providerId]) { - this._proxy.$unregisterTreeContentProvider(providerId); - } - }); - } - - $provideTreeContent(treeContentProviderId: string): TPromise { - const provider = this._treeContentProviders[treeContentProviderId]; - if (!provider) { - throw new Error(`no TreeContentProvider registered with id '${treeContentProviderId}'`); - } - - return TPromise.wrap(provider.provideTreeContent().then(treeContent => { - const treeNodeMap = Object.create(null); - this._treeNodeMaps[treeContentProviderId] = treeNodeMap; - this._treeContents[treeContentProviderId] = new ExtHostTreeNode(treeContent, null, treeNodeMap); - return this._treeContents[treeContentProviderId]; - })); - } - - $resolveChildren(treeContentProviderId: string, mainThreadNode: ExtHostTreeNode): TPromise { - const provider = this._treeContentProviders[treeContentProviderId]; - if (!provider) { - throw new Error(`no TreeContentProvider registered with id '${treeContentProviderId}'`); - } - - const treeNodeMap = this._treeNodeMaps[treeContentProviderId]; - const extHostNode = treeNodeMap[mainThreadNode.id]; - - return TPromise.wrap(provider.resolveChildren(extHostNode).then(children => { - extHostNode.children = children.map(child => { - return new ExtHostTreeNode(child, extHostNode, treeNodeMap); - }); - return extHostNode.children; - })); - } -} - -export class ExtHostTreeNode implements TreeContentNode { - static idCounter = 1; - - id: number; - - label: string; - shouldInitiallyExpand: boolean; - children: ExtHostTreeNode[]; - - constructor(node: TreeContentNode, parent: ExtHostTreeNode, treeNodeMap: { [id: number]: ExtHostTreeNode}) { - this.id = ExtHostTreeNode.idCounter++; - - this.label = node.label; - this.shouldInitiallyExpand = node.shouldInitiallyExpand; - this.children = node.children.map(child => { - return new ExtHostTreeNode(child, this, treeNodeMap); - }) - - treeNodeMap[this.id] = this; - } -} \ No newline at end of file diff --git a/src/vs/workbench/api/node/extHostTreeExplorers.ts b/src/vs/workbench/api/node/extHostTreeExplorers.ts new file mode 100644 index 00000000000..88600fda806 --- /dev/null +++ b/src/vs/workbench/api/node/extHostTreeExplorers.ts @@ -0,0 +1,79 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +'use strict'; + +import { TreeExplorerNode, TreeExplorerNodeProvider } from 'vscode'; +import { TPromise } from 'vs/base/common/winjs.base'; +import { Disposable } from 'vs/workbench/api/node/extHostTypes'; +import { IThreadService } from 'vs/workbench/services/thread/common/threadService'; +import { MainContext, ExtHostTreeExplorersShape, MainThreadTreeExplorersShape } from './extHost.protocol'; +import { InternalTreeExplorerNode } from 'vs/workbench/parts/explorers/common/treeExplorerViewModel'; + +export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape { + private _proxy: MainThreadTreeExplorersShape; + + private _treeExplorerNodeProviders: { [providerId: string]: TreeExplorerNodeProvider }; + + private _trees: { [providerId: string]: InternalTreeExplorerNode }; + private _treeNodeMaps: { [providerId: string]: { [id: number]: InternalTreeExplorerNode }}; + + constructor( + threadService: IThreadService + ) { + super(); + + this._proxy = threadService.get(MainContext.MainThreadExplorers); + + this._treeExplorerNodeProviders = Object.create(null); + this._trees = Object.create(null); + this._treeNodeMaps = Object.create(null); + } + + registerTreeContentProvider(providerId: string, provider: TreeExplorerNodeProvider): Disposable { + this._proxy.$registerTreeContentProvider(providerId); + this._treeExplorerNodeProviders[providerId] = provider; + + return new Disposable(() => { + if (delete this._treeExplorerNodeProviders[providerId]) { + this._proxy.$unregisterTreeContentProvider(providerId); + } + }); + } + + $provideRootNode(providerId: string): TPromise { + const provider = this._treeExplorerNodeProviders[providerId]; + if (!provider) { + throw new Error(`no TreeContentProvider registered with id '${providerId}'`); + } + + return TPromise.wrap(provider.provideRootNode().then(rootNode => { + const treeNodeMap = Object.create(null); + this._treeNodeMaps[providerId] = treeNodeMap; + + const internalRootNode = new InternalTreeExplorerNode(rootNode); + this._trees[providerId] = internalRootNode; + this._treeNodeMaps[providerId][internalRootNode.id] = internalRootNode; + return this._trees[providerId]; + })); + } + + $resolveChildren(providerId: string, mainThreadNode: InternalTreeExplorerNode): TPromise { + const provider = this._treeExplorerNodeProviders[providerId]; + if (!provider) { + throw new Error(`no TreeContentProvider registered with id '${providerId}'`); + } + + const treeNodeMap = this._treeNodeMaps[providerId]; + const extHostTreeContentNode = treeNodeMap[mainThreadNode.id]; + + return TPromise.wrap(provider.resolveChildren(extHostTreeContentNode).then(children => { + return children.map(child => { + const internalChild = new InternalTreeExplorerNode(child); + treeNodeMap[internalChild.id] = internalChild; + return internalChild; + }); + })); + } +} \ No newline at end of file diff --git a/src/vs/workbench/api/node/mainThreadExplorers.ts b/src/vs/workbench/api/node/mainThreadTreeExplorers.ts similarity index 52% rename from src/vs/workbench/api/node/mainThreadExplorers.ts rename to src/vs/workbench/api/node/mainThreadTreeExplorers.ts index c014a864424..0b6d9dae494 100644 --- a/src/vs/workbench/api/node/mainThreadExplorers.ts +++ b/src/vs/workbench/api/node/mainThreadTreeExplorers.ts @@ -4,19 +4,17 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import {TreeContentNode} from 'vscode'; -import {TPromise} from 'vs/base/common/winjs.base'; -import {IThreadService} from 'vs/workbench/services/thread/common/threadService'; -import {ExtHostContext, MainThreadExplorersShape, ExtHostExplorersShape} from './extHost.protocol'; -import {ITreeExplorerViewletService} from 'vs/workbench/parts/explorers/browser/treeExplorerViewletService'; -import {TreeViewNode} from 'vs/workbench/parts/explorers/common/treeViewModel'; +import { TreeExplorerNode } from 'vscode'; +import { TPromise } from 'vs/base/common/winjs.base'; +import { IThreadService } from 'vs/workbench/services/thread/common/threadService'; +import { ExtHostContext, MainThreadTreeExplorersShape, ExtHostTreeExplorersShape } from './extHost.protocol'; +import { ITreeExplorerViewletService } from 'vs/workbench/parts/explorers/browser/treeExplorerViewletService'; +import { InternalTreeExplorerNode } from 'vs/workbench/parts/explorers/common/treeExplorerViewModel'; -import { ExtHostTreeNode } from 'vs/workbench/api/node/extHostExplorers'; +export class MainThreadTreeExplorers extends MainThreadTreeExplorersShape { + private _proxy: ExtHostTreeExplorersShape; -export class MainThreadExplorers extends MainThreadExplorersShape { - private _proxy: ExtHostExplorersShape; - - private _treeContents: { [treeContentProviderId: string]: ExtHostTreeNode }; + private _treeContents: { [treeContentProviderId: string]: InternalTreeExplorerNode }; constructor( @IThreadService threadService: IThreadService, @@ -30,13 +28,13 @@ export class MainThreadExplorers extends MainThreadExplorersShape { $registerTreeContentProvider(providerId: string): void { this.treeExplorerViewletService.registerTreeContentProvider(providerId, { - provideTreeContent: (): TPromise => { - return this._proxy.$provideTreeContent(providerId).then(treeContent => { + provideRootNode: (): TPromise => { + return this._proxy.$provideRootNode(providerId).then(treeContent => { this._treeContents[providerId] = treeContent; return treeContent; }) }, - resolveChildren: (node: ExtHostTreeNode): TPromise => { + resolveChildren: (node: InternalTreeExplorerNode): TPromise => { return this._proxy.$resolveChildren(providerId, node); } }); diff --git a/src/vs/workbench/parts/explorers/browser/treeExplorerViewletService.ts b/src/vs/workbench/parts/explorers/browser/treeExplorerViewletService.ts index 15d8f5fdd7d..bba11ff12c1 100644 --- a/src/vs/workbench/parts/explorers/browser/treeExplorerViewletService.ts +++ b/src/vs/workbench/parts/explorers/browser/treeExplorerViewletService.ts @@ -1,6 +1,6 @@ 'use strict'; -import { TreeContentNode, TreeContentProvider } from 'vscode'; +import { TreeExplorerNode, TreeExplorerNodeProvider } from 'vscode'; import { TPromise } from 'vs/base/common/winjs.base'; import Event, {Emitter} from 'vs/base/common/event'; import { IInstantiationService, createDecorator } from 'vs/platform/instantiation/common/instantiation'; @@ -10,15 +10,15 @@ export const ITreeExplorerViewletService = createDecorator; - resolveChildren(providerId: string, node: TreeContentNode): TPromise; + registerTreeContentProvider(providerId: string, provider: TreeExplorerNodeProvider): void; + provideTreeContent(providerId: string): TPromise; + resolveChildren(providerId: string, node: TreeExplorerNode): TPromise; } export class TreeExplorerViewletService implements ITreeExplorerViewletService { public _serviceBrand: any; - private _treeContentProviders: { [providerId: string]: TreeContentProvider; }; + private _treeContentProviders: { [providerId: string]: TreeExplorerNodeProvider; }; constructor( @IInstantiationService private _instantiationService: IInstantiationService @@ -26,15 +26,15 @@ export class TreeExplorerViewletService implements ITreeExplorerViewletService { this._treeContentProviders = Object.create(null); } - registerTreeContentProvider(providerId: string, provider: TreeContentProvider): void { + registerTreeContentProvider(providerId: string, provider: TreeExplorerNodeProvider): void { this._treeContentProviders[providerId] = provider; } - provideTreeContent(providerId: string): TPromise { - return TPromise.wrap(this._treeContentProviders[providerId].provideTreeContent()); + provideTreeContent(providerId: string): TPromise { + return TPromise.wrap(this._treeContentProviders[providerId].provideRootNode()); } - resolveChildren(providerId: string, node: TreeContentNode): TPromise { + resolveChildren(providerId: string, node: TreeExplorerNode): TPromise { return TPromise.wrap(this._treeContentProviders[providerId].resolveChildren(node)); } } diff --git a/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.ts b/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.ts index f396ef0299a..a6a3f5f0432 100644 --- a/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.ts +++ b/src/vs/workbench/parts/explorers/browser/views/treeExplorerView.ts @@ -22,10 +22,9 @@ import { ITree, IDataSource, IRenderer } from 'vs/base/parts/tree/browser/tree'; import { Tree } from 'vs/base/parts/tree/browser/treeImpl'; import { DefaultController } from 'vs/base/parts/tree/browser/treeDefaults'; import { TreeExplorerViewletState, TreeDataSource, TreeRenderer, TreeController } from 'vs/workbench/parts/explorers/browser/views/treeExplorerViewer'; - import { FileEditorInput } from 'vs/workbench/parts/files/common/editors/fileEditorInput'; -import { TreeViewNode } from 'vs/workbench/parts/explorers/common/treeViewModel'; +import { TreeViewNode } from 'vs/workbench/parts/explorers/common/treeExplorerViewModel'; export class TreeExplorerView extends CollapsibleViewletView { private workspace: IWorkspace; @@ -51,7 +50,7 @@ export class TreeExplorerView extends CollapsibleViewletView { @IEditorGroupService private editorGroupService: IEditorGroupService, @ITreeExplorerViewletService private treeExplorerViewletService: ITreeExplorerViewletService ) { - super(actionRunner, false, nls.localize('treeExplorerViewletTree', "Tree Explorer Tree Section"), messageService, keybindingService, contextMenuService, headerSize); + super(actionRunner, false, nls.localize('treeExplorerViewletTree', "Tree Explorer Section"), messageService, keybindingService, contextMenuService, headerSize); this.viewletState = viewletState; this._treeName = treeName; diff --git a/src/vs/workbench/parts/explorers/browser/views/treeExplorerViewer.ts b/src/vs/workbench/parts/explorers/browser/views/treeExplorerViewer.ts index ad8292db207..639c6007a9d 100644 --- a/src/vs/workbench/parts/explorers/browser/views/treeExplorerViewer.ts +++ b/src/vs/workbench/parts/explorers/browser/views/treeExplorerViewer.ts @@ -3,7 +3,7 @@ import { $, Builder } from 'vs/base/browser/builder'; import { ITree, IDataSource, IRenderer, IElementCallback } from 'vs/base/parts/tree/browser/tree'; import { Tree } from 'vs/base/parts/tree/browser/treeImpl'; -import { TreeViewNode } from 'vs/workbench/parts/explorers/common/treeViewModel'; +import { TreeViewNode } from 'vs/workbench/parts/explorers/common/treeExplorerViewModel'; import { ClickBehavior, DefaultController } from 'vs/base/parts/tree/browser/treeDefaults'; import { IMouseEvent } from 'vs/base/browser/mouseEvent'; diff --git a/src/vs/workbench/parts/explorers/common/treeExplorerViewModel.ts b/src/vs/workbench/parts/explorers/common/treeExplorerViewModel.ts new file mode 100644 index 00000000000..0aea2077a7e --- /dev/null +++ b/src/vs/workbench/parts/explorers/common/treeExplorerViewModel.ts @@ -0,0 +1,39 @@ +import { TreeExplorerNode } from 'vscode'; + +export class TreeViewNode implements TreeExplorerNode { + static idCounter = 1; + + id: number; + hasChildren: boolean = true; + isChildrenResolved: boolean = false; + + constructor( + public label: string, + public shouldInitiallyExpand: boolean = true, + public children: TreeViewNode[] = [] + ) { + this.id = TreeViewNode.idCounter++; + } + + public static create(node: TreeExplorerNode): TreeViewNode { + const children = node.children.map(TreeViewNode.create); + return new TreeViewNode(node.label, node.shouldInitiallyExpand, children) + } +} + +export class InternalTreeExplorerNode implements TreeExplorerNode { + static idCounter = 1; + + id: number; + + // Property on TreeContentNode + label: string; + shouldInitiallyExpand: boolean; + + constructor(node: TreeExplorerNode) { + this.id = InternalTreeExplorerNode.idCounter++; + + this.label = node.label; + this.shouldInitiallyExpand = node.shouldInitiallyExpand; + } +} diff --git a/src/vs/workbench/parts/explorers/common/treeViewModel.ts b/src/vs/workbench/parts/explorers/common/treeViewModel.ts deleted file mode 100644 index 1c4b17c4c7d..00000000000 --- a/src/vs/workbench/parts/explorers/common/treeViewModel.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { TreeContentNode } from 'vscode'; - -export class TreeViewNode implements TreeContentNode { - static idCounter = 1; - - id: number; - hasChildren: boolean = true; - isChildrenResolved: boolean = false; - - constructor( - public label: string, - public shouldInitiallyExpand: boolean = true, - public children: TreeViewNode[] = [] - ) { - this.id = TreeViewNode.idCounter++; - } - - public static create(node: TreeContentNode): TreeViewNode { - const children = node.children.map(TreeViewNode.create); - return new TreeViewNode(node.label, node.shouldInitiallyExpand, children) - } -} -- GitLab