TreeDataProvider负责显示TreeView中的节点,在代码中,可以在构造函数中,传入需要显示的数据,比如:
constructor(private temps: any) { }
然后实现getTreeItem,这里只要简单返回就行:
getTreeItem(element: TempNode): vscode.TreeItem {
return element;
}
最主要的是需要实现getChildren,这里有几种情况,首先是没有element传入,这时返回的是根节点集合,然后是有element传入,需要根据返回的节点是否有子节点,决定节点的展开和关闭图标,示例代码如下:
getChildren(element?: TempNode): vscode.ProviderResult<TempNode[]> {
if (element) {
let res=[];
for(var i=0;i<element.children.length;i++){
let temp=element.children[i];
if(temp.isFolder){ //有子节点
res.push(new TempNode(temp.name,temp.temps,vscode.TreeItemCollapsibleState.Collapsed));
}else{ //没有子节点
res.push(new TempNode(temp.name,temp.temps,vscode.TreeItemCollapsibleState.None));
}
}
return Promise.resolve(res);
}else{
//根节点
let res=[];
for(var i=0;i<this.temps.length;i++){
let temp=this.temps[i];
if(temp.isFolder){
res.push(new TempNode(temp.name,temp.temps,vscode.TreeItemCollapsibleState.Collapsed));
}else{
res.push(new TempNode(temp.name,temp.temps,vscode.TreeItemCollapsibleState.None));
}
}
return Promise.resolve(res);
}
}
网友评论