diff --git a/src/vs/workbench/api/electron-browser/mainThreadTreeViews.ts b/src/vs/workbench/api/electron-browser/mainThreadTreeViews.ts index 6c3229615ef..0b909bd4ba7 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTreeViews.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTreeViews.ts @@ -98,13 +98,13 @@ class TreeViewDataProvider implements ITreeViewDataProvider { if (treeItem && treeItem.children) { return TPromise.as(treeItem.children); } - return this._proxy.$getChildren(this.treeViewId, treeItem ? treeItem.handle : void 0) + return TPromise.wrap(this._proxy.$getChildren(this.treeViewId, treeItem ? treeItem.handle : void 0) .then(children => { return this.postGetChildren(children); }, err => { this.notificationService.error(err); return []; - }); + })); } getItemsToRefresh(itemsToRefreshByHandle: { [treeItemHandle: string]: ITreeItem }): ITreeItem[] { diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index c38fd882d4e..8c7eb815e2d 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -206,7 +206,7 @@ export interface MainThreadTextEditorsShape extends IDisposable { export interface MainThreadTreeViewsShape extends IDisposable { $registerTreeViewDataProvider(treeViewId: string): void; - $refresh(treeViewId: string, itemsToRefresh?: { [treeItemHandle: string]: ITreeItem }): TPromise; + $refresh(treeViewId: string, itemsToRefresh?: { [treeItemHandle: string]: ITreeItem }): Thenable; $reveal(treeViewId: string, treeItem: ITreeItem, parentChain: ITreeItem[], options: { select: boolean, focus: boolean }): Thenable; } @@ -667,7 +667,7 @@ export interface ExtHostDocumentsAndEditorsShape { } export interface ExtHostTreeViewsShape { - $getChildren(treeViewId: string, treeItemHandle?: string): TPromise; + $getChildren(treeViewId: string, treeItemHandle?: string): Thenable; $setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void; $setSelection(treeViewId: string, treeItemHandles: string[]): void; $setVisible(treeViewId: string, visible: boolean): void; diff --git a/src/vs/workbench/api/node/extHostTreeViews.ts b/src/vs/workbench/api/node/extHostTreeViews.ts index d39894bb57c..af5b5fd47e2 100644 --- a/src/vs/workbench/api/node/extHostTreeViews.ts +++ b/src/vs/workbench/api/node/extHostTreeViews.ts @@ -14,7 +14,7 @@ import { Disposable } from 'vs/base/common/lifecycle'; import { ExtHostTreeViewsShape, MainThreadTreeViewsShape } from './extHost.protocol'; import { ITreeItem, TreeViewItemHandleArg } from 'vs/workbench/common/views'; import { ExtHostCommands, CommandsConverter } from 'vs/workbench/api/node/extHostCommands'; -import { asWinJsPromise } from 'vs/base/common/async'; +import { asThenable } from 'vs/base/common/async'; import { TreeItemCollapsibleState, ThemeIcon } from 'vs/workbench/api/node/extHostTypes'; import { isUndefinedOrNull } from 'vs/base/common/types'; import { equals } from 'vs/base/common/arrays'; @@ -68,7 +68,7 @@ export class ExtHostTreeViews implements ExtHostTreeViewsShape { }; } - $getChildren(treeViewId: string, treeItemHandle?: string): TPromise { + $getChildren(treeViewId: string, treeItemHandle?: string): Thenable { const treeView = this.treeViews.get(treeViewId); if (!treeView) { return TPromise.wrapError(new Error(localize('treeView.notRegistered', 'No tree view with id \'{0}\' registered.', treeViewId))); @@ -167,7 +167,7 @@ class ExtHostTreeView extends Disposable { } } - getChildren(parentHandle?: TreeItemHandle): TPromise { + getChildren(parentHandle?: TreeItemHandle): Thenable { const parentElement = parentHandle ? this.getExtensionElement(parentHandle) : void 0; if (parentHandle && !parentElement) { console.error(`No tree item with id \'${parentHandle}\' found.`); @@ -222,7 +222,7 @@ class ExtHostTreeView extends Disposable { } } - private resolveUnknownParentChain(element: T): TPromise { + private resolveUnknownParentChain(element: T): Thenable { return this.resolveParent(element) .then((parent) => { if (!parent) { @@ -237,16 +237,16 @@ class ExtHostTreeView extends Disposable { }); } - private resolveParent(element: T): TPromise { + private resolveParent(element: T): Thenable { const node = this.nodes.get(element); if (node) { return TPromise.as(node.parent ? this.elements.get(node.parent.item.handle) : null); } - return asWinJsPromise(() => this.dataProvider.getParent(element)); + return asThenable(() => this.dataProvider.getParent(element)); } - private resolveTreeNode(element: T, parent?: TreeNode): TPromise { - return asWinJsPromise(() => this.dataProvider.getTreeItem(element)) + private resolveTreeNode(element: T, parent?: TreeNode): Thenable { + return asThenable(() => this.dataProvider.getTreeItem(element)) .then(extTreeItem => this.createHandle(element, extTreeItem, parent, true)) .then(handle => this.getChildren(parent ? parent.item.handle : null) .then(() => { @@ -275,21 +275,21 @@ class ExtHostTreeView extends Disposable { return this.roots; } - private fetchChildrenNodes(parentElement?: T): TPromise { + private fetchChildrenNodes(parentElement?: T): Thenable { // clear children cache this.clearChildren(parentElement); const parentNode = parentElement ? this.nodes.get(parentElement) : void 0; - return asWinJsPromise(() => this.dataProvider.getChildren(parentElement)) + return asThenable(() => this.dataProvider.getChildren(parentElement)) .then(elements => TPromise.join( (elements || []) .filter(element => !!element) - .map(element => asWinJsPromise(() => this.dataProvider.getTreeItem(element)) + .map(element => asThenable(() => this.dataProvider.getTreeItem(element)) .then(extTreeItem => extTreeItem ? this.createAndRegisterTreeNode(element, extTreeItem, parentNode) : null)))) .then(nodes => nodes.filter(n => !!n)); } - private refresh(elements: T[]): TPromise { + private refresh(elements: T[]): Thenable { const hasRoot = elements.some(element => !element); if (hasRoot) { this.clearAll(); // clear cache @@ -345,11 +345,11 @@ class ExtHostTreeView extends Disposable { .then(() => Object.keys(itemsToRefresh).length ? this.proxy.$refresh(this.viewId, itemsToRefresh) : null); } - private refreshNode(treeItemHandle: TreeItemHandle): TPromise { + private refreshNode(treeItemHandle: TreeItemHandle): Thenable { const extElement = this.getExtensionElement(treeItemHandle); const existing = this.nodes.get(extElement); this.clearChildren(extElement); // clear children cache - return asWinJsPromise(() => this.dataProvider.getTreeItem(extElement)) + return asThenable(() => this.dataProvider.getTreeItem(extElement)) .then(extTreeItem => { if (extTreeItem) { const newNode = this.createTreeNode(extElement, extTreeItem, existing.parent); @@ -529,4 +529,4 @@ class ExtHostTreeView extends Disposable { dispose() { this.clearAll(); } -} \ No newline at end of file +} diff --git a/src/vs/workbench/test/electron-browser/api/extHostTreeViews.test.ts b/src/vs/workbench/test/electron-browser/api/extHostTreeViews.test.ts index a62fde4bcb8..e4b5a3f176a 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostTreeViews.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostTreeViews.test.ts @@ -538,7 +538,7 @@ suite('ExtHostTreeView', function () { }); }); - function loadCompleteTree(treeId, element?: string): TPromise { + function loadCompleteTree(treeId, element?: string) { return testObject.$getChildren(treeId, element) .then(elements => elements.map(e => loadCompleteTree(treeId, e.handle))) .then(() => null); @@ -637,4 +637,4 @@ suite('ExtHostTreeView', function () { constructor(readonly key: string) { } } -}); \ No newline at end of file +});