Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/dialogs/browser/dialog.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 { EventHelper } from '../../../base/browser/dom.js';
7
import { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';
8
import { IDialogOptions } from '../../../base/browser/ui/dialog/dialog.js';
9
import { fromNow } from '../../../base/common/date.js';
10
import { localize } from '../../../nls.js';
11
import { IKeybindingService } from '../../keybinding/common/keybinding.js';
12
import { ResultKind } from '../../keybinding/common/keybindingResolver.js';
13
import { ILayoutService } from '../../layout/browser/layoutService.js';
14
import { IProductService } from '../../product/common/productService.js';
15
import { defaultButtonStyles, defaultCheckboxStyles, defaultInputBoxStyles, defaultDialogStyles } from '../../theme/browser/defaultStyles.js';
16
17
const defaultDialogAllowableCommands = [
18
'workbench.action.quit',
19
'workbench.action.reloadWindow',
20
'copy',
21
'cut',
22
'editor.action.selectAll',
23
'editor.action.clipboardCopyAction',
24
'editor.action.clipboardCutAction',
25
'editor.action.clipboardPasteAction'
26
];
27
28
export function createWorkbenchDialogOptions(options: Partial<IDialogOptions>, keybindingService: IKeybindingService, layoutService: ILayoutService, allowableCommands = defaultDialogAllowableCommands): IDialogOptions {
29
return {
30
keyEventProcessor: (event: StandardKeyboardEvent) => {
31
const resolved = keybindingService.softDispatch(event, layoutService.activeContainer);
32
if (resolved.kind === ResultKind.KbFound && resolved.commandId) {
33
if (!allowableCommands.includes(resolved.commandId)) {
34
EventHelper.stop(event, true);
35
}
36
}
37
},
38
buttonStyles: defaultButtonStyles,
39
checkboxStyles: defaultCheckboxStyles,
40
inputBoxStyles: defaultInputBoxStyles,
41
dialogStyles: defaultDialogStyles,
42
...options
43
};
44
}
45
46
export function createBrowserAboutDialogDetails(productService: IProductService): { title: string; details: string; detailsToCopy: string } {
47
const detailString = (useAgo: boolean): string => {
48
return localize('aboutDetail',
49
"Version: {0}\nCommit: {1}\nDate: {2}\nBrowser: {3}",
50
productService.version || 'Unknown',
51
productService.commit || 'Unknown',
52
productService.date ? `${productService.date}${useAgo ? ' (' + fromNow(new Date(productService.date), true) + ')' : ''}` : 'Unknown',
53
navigator.userAgent
54
);
55
};
56
57
const details = detailString(true);
58
const detailsToCopy = detailString(false);
59
60
return {
61
title: productService.nameLong,
62
details: details,
63
detailsToCopy: detailsToCopy
64
};
65
}
66
67
68