diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index e4d9a3bc3f7..930889dba15 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -143,7 +143,6 @@ export abstract class MainThreadEditorsShape { export abstract class MainThreadTreeExplorersShape { $registerTreeExplorerNodeProvider(providerId: string): void { throw ni(); } - $showMessage(severity: Severity, message: string): void { throw ni(); } } export abstract class MainThreadErrorsShape { diff --git a/src/vs/workbench/api/node/extHostTreeExplorers.ts b/src/vs/workbench/api/node/extHostTreeExplorers.ts index 2ea83e62426..4659b8f7acf 100644 --- a/src/vs/workbench/api/node/extHostTreeExplorers.ts +++ b/src/vs/workbench/api/node/extHostTreeExplorers.ts @@ -12,7 +12,6 @@ import { MainContext, ExtHostTreeExplorersShape, MainThreadTreeExplorersShape } import { InternalTreeExplorerNode } from 'vs/workbench/parts/explorers/common/treeExplorerViewModel'; import { ExtHostCommands } from 'vs/workbench/api/node/extHostCommands'; import { asWinJsPromise } from 'vs/base/common/async'; -import { Severity } from 'vs/platform/message/common/message'; export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape { private _proxy: MainThreadTreeExplorersShape; @@ -43,7 +42,10 @@ export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape { } $provideRootNode(providerId: string): TPromise { - const provider = this.getProvider(providerId); + const provider = this._treeExplorerNodeProviders[providerId]; + if (!provider) { + return TPromise.wrapError(`No TreeExplorerNodeProvider with id '${providerId}' registered.`); + } return asWinJsPromise(() => provider.provideRootNode()).then(externalRootNode => { const treeNodeMap = Object.create(null); @@ -53,12 +55,15 @@ export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape { this._externalNodeMaps[providerId][internalRootNode.id] = externalRootNode; return internalRootNode; }, err => { - this.showErrorMessage(`TreeExplorerNodeProvider '${providerId}' failed to provide root node.`); + return TPromise.wrapError(`TreeExplorerNodeProvider '${providerId}' failed to provide root node.`); }); } $resolveChildren(providerId: string, mainThreadNode: InternalTreeExplorerNode): TPromise { - const provider = this.getProvider(providerId); + const provider = this._treeExplorerNodeProviders[providerId]; + if (!provider) { + return TPromise.wrapError(`No TreeExplorerNodeProvider with id '${providerId}' registered.`); + } const externalNodeMap = this._externalNodeMaps[providerId]; const externalNode = externalNodeMap[mainThreadNode.id]; @@ -70,7 +75,7 @@ export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape { return internalChild; }); }, err => { - this.showErrorMessage(`TreeExplorerNodeProvider '${providerId}' failed to resolve children.`); + return TPromise.wrapError(`TreeExplorerNodeProvider '${providerId}' failed to resolve children.`); }); } @@ -80,23 +85,10 @@ export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape { return asWinJsPromise(() => this.commands.executeCommand(mainThreadNode.clickCommand, externalNode)).then(() => { return null; }, err => { - this.showErrorMessage(`Failed to execute command '${mainThreadNode.clickCommand}' provided by TreeExplorerNodeProvider '${providerId}'.`); + return TPromise.wrapError(`Failed to execute command '${mainThreadNode.clickCommand}' provided by TreeExplorerNodeProvider '${providerId}'.`); }); } return TPromise.as(null); } - - getProvider(providerId: string): TreeExplorerNodeProvider { - const provider = this._treeExplorerNodeProviders[providerId]; - if (!provider) { - this.showErrorMessage(`No TreeExplorerNodeProvider with id '${providerId}' registered.`); - } - - return provider; - } - - private showErrorMessage(message: string): void { - this._proxy.$showMessage(Severity.Error, message); - } } diff --git a/src/vs/workbench/api/node/mainThreadTreeExplorers.ts b/src/vs/workbench/api/node/mainThreadTreeExplorers.ts index 463051e0053..54ac3c368c2 100644 --- a/src/vs/workbench/api/node/mainThreadTreeExplorers.ts +++ b/src/vs/workbench/api/node/mainThreadTreeExplorers.ts @@ -15,7 +15,7 @@ export class MainThreadTreeExplorers extends MainThreadTreeExplorersShape { private _proxy: ExtHostTreeExplorersShape; constructor( - @IThreadService threadService: IThreadService, + @IThreadService private threadService: IThreadService, @ITreeExplorerViewletService private treeExplorerService: ITreeExplorerViewletService, @IMessageService private messageService: IMessageService ) { @@ -25,20 +25,18 @@ export class MainThreadTreeExplorers extends MainThreadTreeExplorersShape { } $registerTreeExplorerNodeProvider(providerId: string): void { + const onError = err => { this.messageService.show(Severity.Error, err); }; + this.treeExplorerService.registerTreeExplorerNodeProvider(providerId, { provideRootNode: (): TPromise => { - return this._proxy.$provideRootNode(providerId); + return this._proxy.$provideRootNode(providerId).then(rootNode => rootNode, onError); }, resolveChildren: (node: InternalTreeExplorerNode): TPromise => { - return this._proxy.$resolveChildren(providerId, node); + return this._proxy.$resolveChildren(providerId, node).then(children => children, onError); }, executeCommand: (node: InternalTreeExplorerNode): TPromise => { return this._proxy.$executeCommand(providerId, node); } }); } - - $showMessage(severity: Severity, message: string): void { - this.messageService.show(severity, message); - } }