mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-24 18:49:00 +01:00
Handle all error by showing message
This commit is contained in:
@@ -119,6 +119,7 @@ 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 {
|
||||
|
||||
@@ -12,6 +12,7 @@ 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;
|
||||
@@ -41,10 +42,7 @@ export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape {
|
||||
}
|
||||
|
||||
$provideRootNode(providerId: string): TPromise<InternalTreeExplorerNode> {
|
||||
const provider = this._treeExplorerNodeProviders[providerId];
|
||||
if (!provider) {
|
||||
throw new Error(`no TreeExplorerNodeProvider registered with id '${providerId}'`);
|
||||
}
|
||||
const provider = this.getProvider(providerId);
|
||||
|
||||
return asWinJsPromise(() => provider.provideRootNode()).then(externalRootNode => {
|
||||
const treeNodeMap = Object.create(null);
|
||||
@@ -54,15 +52,12 @@ export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape {
|
||||
this._externalNodeMaps[providerId][internalRootNode.id] = externalRootNode;
|
||||
return internalRootNode;
|
||||
}, err => {
|
||||
throw new Error(`TreeExplorerNodeProvider '${providerId}' failed to provide root node`);
|
||||
this.showErrorMessage(`TreeExplorerNodeProvider '${providerId}' failed to provide root node.`);
|
||||
});
|
||||
}
|
||||
|
||||
$resolveChildren(providerId: string, mainThreadNode: InternalTreeExplorerNode): TPromise<InternalTreeExplorerNode[]> {
|
||||
const provider = this._treeExplorerNodeProviders[providerId];
|
||||
if (!provider) {
|
||||
throw new Error(`no TreeExplorerNodeProvider registered with id '${providerId}'`);
|
||||
}
|
||||
const provider = this.getProvider(providerId);
|
||||
|
||||
const externalNodeMap = this._externalNodeMaps[providerId];
|
||||
const externalNode = externalNodeMap[mainThreadNode.id];
|
||||
@@ -74,25 +69,33 @@ export class ExtHostTreeExplorers extends ExtHostTreeExplorersShape {
|
||||
return internalChild;
|
||||
});
|
||||
}, err => {
|
||||
throw new Error(`TreeExplorerNodeProvider '${providerId}' failed to resolveChildren`);
|
||||
this.showErrorMessage(`TreeExplorerNodeProvider '${providerId}' failed to resolve children.`);
|
||||
});
|
||||
}
|
||||
|
||||
$executeCommand(providerId: string, mainThreadNode: InternalTreeExplorerNode): TPromise<void> {
|
||||
const provider = this._treeExplorerNodeProviders[providerId];
|
||||
if (!provider) {
|
||||
throw new Error(`no TreeExplorerNodeProvider registered with id '${providerId}'`);
|
||||
}
|
||||
|
||||
if (mainThreadNode.clickCommand) {
|
||||
const externalNode = this._externalNodeMaps[providerId][mainThreadNode.id];
|
||||
return asWinJsPromise(() => this.commands.executeCommand(mainThreadNode.clickCommand, externalNode)).then(() => {
|
||||
return null;
|
||||
}, err => {
|
||||
throw new Error(`Failed to execute command '${mainThreadNode.clickCommand}' provided by TreeExplorerNodeProvider '${providerId}'`);
|
||||
this.showErrorMessage(`Failed to execute command '${mainThreadNode.clickCommand}' provided by TreeExplorerNodeProvider '${providerId}'.`);
|
||||
});
|
||||
}
|
||||
|
||||
return TPromise.as(null);
|
||||
}
|
||||
|
||||
getProvider(providerId: string): TreeExplorerNodeProvider<any> {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,13 +9,15 @@ import { IThreadService } from 'vs/workbench/services/thread/common/threadServic
|
||||
import { ExtHostContext, MainThreadTreeExplorersShape, ExtHostTreeExplorersShape } from './extHost.protocol';
|
||||
import { ITreeExplorerViewletService } from 'vs/workbench/parts/explorers/browser/treeExplorerViewletService';
|
||||
import { InternalTreeExplorerNode } from 'vs/workbench/parts/explorers/common/treeExplorerViewModel';
|
||||
import { IMessageService, Severity } from 'vs/platform/message/common/message';
|
||||
|
||||
export class MainThreadTreeExplorers extends MainThreadTreeExplorersShape {
|
||||
private _proxy: ExtHostTreeExplorersShape;
|
||||
|
||||
constructor(
|
||||
@IThreadService threadService: IThreadService,
|
||||
@ITreeExplorerViewletService private treeExplorerService: ITreeExplorerViewletService
|
||||
@ITreeExplorerViewletService private treeExplorerService: ITreeExplorerViewletService,
|
||||
@IMessageService private messageService: IMessageService
|
||||
) {
|
||||
super();
|
||||
|
||||
@@ -35,4 +37,8 @@ export class MainThreadTreeExplorers extends MainThreadTreeExplorersShape {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$showMessage(severity: Severity, message: string): void {
|
||||
this.messageService.show(severity, message);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user