Refresh only top level elements

This commit is contained in:
Sandeep Somavarapu
2017-12-01 17:12:19 +01:00
parent a903c11790
commit 59b091af5b
4 changed files with 149 additions and 78 deletions

View File

@@ -12,6 +12,7 @@ import { IMessageService, Severity } from 'vs/platform/message/common/message';
import { ViewsRegistry } from 'vs/workbench/browser/parts/views/viewsRegistry';
import { ITreeViewDataProvider, ITreeItem } from 'vs/workbench/common/views';
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
import { assign } from 'vs/base/common/objects';
@extHostNamedCustomer(MainContext.MainThreadTreeViews)
export class MainThreadTreeViews extends Disposable implements MainThreadTreeViewsShape {
@@ -94,6 +95,13 @@ class TreeViewDataProvider implements ITreeViewDataProvider {
if (treeItems.length) {
this._onDidChange.fire(treeItems);
}
/*this._proxy.$resolveHandles(this.treeViewId, treeItemHandles)
.then(treeItems => {
treeItems = coalesce(treeItems.map(treeItem => this.updateTreeItem(treeItem)));
if (treeItems.length) {
this._onDidChange.fire(treeItems);
}
}); */
} else {
this._onDidChange.fire();
}
@@ -110,7 +118,9 @@ class TreeViewDataProvider implements ITreeViewDataProvider {
private setElements(parent: TreeItemHandle, children: ITreeItem[]) {
if (children && children.length) {
for (const child of children) {
this.itemsMap.set(child.handle, child);
if (!this.updateTreeItem(child)) {
this.itemsMap.set(child.handle, child);
}
if (child.children && child.children.length) {
this.setElements(child.handle, child.children);
}
@@ -120,4 +130,14 @@ class TreeViewDataProvider implements ITreeViewDataProvider {
}
}
}
private updateTreeItem(treeItem: ITreeItem): ITreeItem {
const current = this.itemsMap.get(treeItem.handle);
treeItem.children = treeItem.children ? treeItem.children : null;
if (current) {
assign(current, treeItem);
return current;
}
return null;
}
}