提交 a39eaecd 编写于 作者: J Johannes Rieken

debt - don't have commonjs-dependencies in common layer, #15293

上级 d6b99429
......@@ -6,6 +6,7 @@
import { localize } from 'vs/nls';
import { TreeExplorerNodeProvider } from 'vscode';
import { defaultGenerator } from 'vs/base/common/idGenerator';
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';
......@@ -15,11 +16,26 @@ import { ExtHostCommands } from 'vs/workbench/api/node/extHostCommands';
import { asWinJsPromise } from 'vs/base/common/async';
import * as modes from 'vs/editor/common/modes';
class InternalTreeExplorerNodeImpl implements InternalTreeExplorerNode {
readonly id: string;
label: string;
hasChildren: boolean;
clickCommand: string;
constructor(node: any, provider: TreeExplorerNodeProvider<any>) {
this.id = defaultGenerator.nextId();
this.label = provider.getLabel ? provider.getLabel(node) : node.toString();
this.hasChildren = provider.getHasChildren ? provider.getHasChildren(node) : true;
this.clickCommand = provider.getClickCommand ? provider.getClickCommand(node) : null;
}
}
export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape {
private _proxy: MainThreadTreeExplorersShape;
private _extNodeProviders: { [providerId: string]: TreeExplorerNodeProvider<any> };
private _extNodeMaps: { [providerId: string]: { [id: number]: any } };
private _extNodeMaps: { [providerId: string]: { [id: string]: InternalTreeExplorerNode } };
constructor(
threadService: IThreadService,
......@@ -51,8 +67,8 @@ export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape {
}
return asWinJsPromise(() => provider.provideRootNode()).then(extRootNode => {
const extNodeMap = Object.create(null);
const internalRootNode = new InternalTreeExplorerNode(extRootNode, provider);
const extNodeMap: { [id: string]: InternalTreeExplorerNode } = Object.create(null);
const internalRootNode = new InternalTreeExplorerNodeImpl(extRootNode, provider);
extNodeMap[internalRootNode.id] = extRootNode;
this._extNodeMaps[providerId] = extNodeMap;
......@@ -76,7 +92,7 @@ export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape {
return asWinJsPromise(() => provider.resolveChildren(extNode)).then(children => {
return children.map(extChild => {
const internalChild = new InternalTreeExplorerNode(extChild, provider);
const internalChild = new InternalTreeExplorerNodeImpl(extChild, provider);
extNodeMap[internalChild.id] = extChild;
return internalChild;
});
......
......@@ -5,7 +5,6 @@
'use strict';
import { TPromise } from 'vs/base/common/winjs.base';
import { TreeExplorerNodeProvider } from 'vscode';
export interface InternalTreeExplorerNodeContent {
label: string;
......@@ -13,22 +12,8 @@ export interface InternalTreeExplorerNodeContent {
clickCommand: string;
}
export class InternalTreeExplorerNode implements InternalTreeExplorerNodeContent {
private static idCounter = 1;
id: number;
label: string;
hasChildren: boolean;
clickCommand: string;
constructor(node: any, provider: TreeExplorerNodeProvider<any>) {
this.id = InternalTreeExplorerNode.idCounter++;
this.label = provider.getLabel ? provider.getLabel(node) : node.toString();
this.hasChildren = provider.getHasChildren ? provider.getHasChildren(node) : true;
this.clickCommand = provider.getClickCommand ? provider.getClickCommand(node) : null;
}
export interface InternalTreeExplorerNode extends InternalTreeExplorerNodeContent {
readonly id: string;
}
export interface InternalTreeExplorerNodeProvider {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册