提交 6f4de8b5 编写于 作者: P Pine Wu

Remove isChildrenResolved from ITreeNode

上级 10af4d75
......@@ -1357,7 +1357,6 @@ declare module 'vscode' {
label: string;
isExpanded: boolean;
children: ITreeNode[];
isChildrenResolved: boolean;
}
/**
......
......@@ -25,7 +25,7 @@ export class ExtHostExplorers extends ExtHostExplorersShape {
this._treeContentProviders = Object.create(null);
}
public registerTreeContentProvider(providerId: string, provider: vscode.TreeContentProvider): vscode.Disposable {
registerTreeContentProvider(providerId: string, provider: vscode.TreeContentProvider): vscode.Disposable {
this._proxy.$registerTreeContentProvider(providerId);
this._treeContentProviders[providerId] = provider;
......
......@@ -4,11 +4,12 @@
*--------------------------------------------------------------------------------------------*/
'use strict';
import { ITreeNode } from 'vscode';
import {ITreeNode} 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';
export class MainThreadExplorers extends MainThreadExplorersShape {
private _proxy: ExtHostExplorersShape;
......
......@@ -68,9 +68,7 @@ export class TreeView extends CollapsibleViewletView {
DOM.addClass(this.treeContainer, 'tree-explorer-viewlet-tree-view');
this.tree = this.createViewer($(this.treeContainer));
this.treeExplorerViewletService.provideTreeContent('pineTree').then(tree => {
this.tree.setInput(tree);
});
this.updateInput();
}
getActions(): IAction[] {
......@@ -109,7 +107,7 @@ export class TreeView extends CollapsibleViewletView {
private updateInput(): TPromise<void> {
return this.treeExplorerViewletService.provideTreeContent('pineTree').then(tree => {
this.tree.setInput(tree);
this.tree.setInput(TreeViewNode.create(tree));
})
}
......
......@@ -26,25 +26,21 @@ export class TreeDataSource implements IDataSource {
}
public getId(tree: ITree, node: vscode.ITreeNode): string {
return node.label;
getId(tree: ITree, node: TreeViewNode): string {
return node.id.toString();
}
public hasChildren(tree: ITree, node: vscode.ITreeNode): boolean {
if (node.isChildrenResolved) {
return node.children && node.children.length > 0;
} else {
return true;
}
hasChildren(tree: ITree, node: TreeViewNode): boolean {
return node.hasChildren;
}
public getChildren(tree: ITree, node: vscode.ITreeNode): TPromise<vscode.ITreeNode[]> {
getChildren(tree: ITree, node: TreeViewNode): TPromise<TreeViewNode[]> {
if (node.isChildrenResolved) {
return TPromise.as(node.children);
} else {
return this.treeExplorerViewletService.resolveChildren(providerId, node).then(children => {
children.forEach(child => {
node.children.push(child);
node.children.push(TreeViewNode.create(child));
});
node.isChildrenResolved = true;
return node.children;
......@@ -52,7 +48,7 @@ export class TreeDataSource implements IDataSource {
}
}
public getParent(tree: ITree, node: TreeViewNode): TPromise<TreeViewNode> {
getParent(tree: ITree, node: TreeViewNode): TPromise<TreeViewNode> {
return TPromise.as(null);
}
}
......@@ -73,11 +69,11 @@ export class TreeRenderer extends ActionsRenderer implements IRenderer {
});
}
public getContentHeight(tree: ITree, element: any): number {
getContentHeight(tree: ITree, element: any): number {
return 22;
}
public renderContents(tree: ITree, node: TreeViewNode, domElement: HTMLElement, previousCleanupFn: IElementCallback): IElementCallback {
renderContents(tree: ITree, node: TreeViewNode, domElement: HTMLElement, previousCleanupFn: IElementCallback): IElementCallback {
const el = $(domElement).clearChildren();
const item = $('.custom-viewlet-tree-node-item');
item.appendTo(el);
......@@ -100,7 +96,7 @@ export class TreeController extends DefaultController {
// super({ clickBehavior: ClickBehavior.ON_MOUSE_UP /* do not change to not break DND */ });
}
public onLeftClick(tree: ITree, node: TreeViewNode, event: IMouseEvent, origin: string = 'mouse'): boolean {
onLeftClick(tree: ITree, node: TreeViewNode, event: IMouseEvent, origin: string = 'mouse'): boolean {
super.onLeftClick(tree, node, event, origin);
return true;
......
export class TreeViewNode implements vscode.ITreeNode {
import { ITreeNode } from 'vscode';
export class TreeViewNode implements ITreeNode {
static idCounter = 1;
id: number;
hasChildren: boolean = true;
isChildrenResolved: boolean = false;
constructor(
public id: number,
public label: string,
public isExpanded: boolean = true,
public parent: TreeViewNode = null,
public children: TreeViewNode[] = [],
public isChildrenResolved: boolean = true) {
public children: TreeViewNode[] = []
) {
this.id = TreeViewNode.idCounter++;
}
addChild(child: TreeViewNode) {
this.children.push(child);
child.parent = this;
public static create(node: ITreeNode): TreeViewNode {
const children = node.children.map(TreeViewNode.create);
return new TreeViewNode(node.label, node.isExpanded, children)
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册