Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/dialogs/test/common/testDialogService.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { Event } from '../../../../base/common/event.js';
7
import Severity from '../../../../base/common/severity.js';
8
import { IConfirmation, IConfirmationResult, IDialogService, IInputResult, IPrompt, IPromptBaseButton, IPromptResult, IPromptResultWithCancel, IPromptWithCustomCancel, IPromptWithDefaultCancel } from '../../common/dialogs.js';
9
10
export class TestDialogService implements IDialogService {
11
12
declare readonly _serviceBrand: undefined;
13
14
readonly onWillShowDialog = Event.None;
15
readonly onDidShowDialog = Event.None;
16
17
constructor(
18
private defaultConfirmResult: IConfirmationResult | undefined = undefined,
19
private defaultPromptResult: IPromptResult<any> | undefined = undefined
20
) { }
21
22
private confirmResult: IConfirmationResult | undefined = undefined;
23
setConfirmResult(result: IConfirmationResult) {
24
this.confirmResult = result;
25
}
26
27
async confirm(confirmation: IConfirmation): Promise<IConfirmationResult> {
28
if (this.confirmResult) {
29
const confirmResult = this.confirmResult;
30
this.confirmResult = undefined;
31
32
return confirmResult;
33
}
34
35
return this.defaultConfirmResult ?? { confirmed: false };
36
}
37
38
prompt<T>(prompt: IPromptWithCustomCancel<T>): Promise<IPromptResultWithCancel<T>>;
39
prompt<T>(prompt: IPromptWithDefaultCancel<T>): Promise<IPromptResult<T>>;
40
prompt<T>(prompt: IPrompt<T>): Promise<IPromptResult<T>>;
41
async prompt<T>(prompt: IPrompt<T> | IPromptWithCustomCancel<T>): Promise<IPromptResult<T> | IPromptResultWithCancel<T>> {
42
if (this.defaultPromptResult) {
43
return this.defaultPromptResult;
44
}
45
const promptButtons: IPromptBaseButton<T>[] = [...(prompt.buttons ?? [])];
46
if (prompt.cancelButton && typeof prompt.cancelButton !== 'string' && typeof prompt.cancelButton !== 'boolean') {
47
promptButtons.push(prompt.cancelButton);
48
}
49
50
return { result: await promptButtons[0]?.run({ checkboxChecked: false }) };
51
}
52
async info(message: string, detail?: string): Promise<void> {
53
await this.prompt({ type: Severity.Info, message, detail });
54
}
55
56
async warn(message: string, detail?: string): Promise<void> {
57
await this.prompt({ type: Severity.Warning, message, detail });
58
}
59
60
async error(message: string, detail?: string): Promise<void> {
61
await this.prompt({ type: Severity.Error, message, detail });
62
}
63
async input(): Promise<IInputResult> { { return { confirmed: true, values: [] }; } }
64
async about(): Promise<void> { }
65
}
66
67