Path: blob/main/src/vs/workbench/browser/parts/dialogs/dialog.ts
13401 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { EventHelper } from '../../../../base/browser/dom.js';6import { StandardKeyboardEvent } from '../../../../base/browser/keyboardEvent.js';7import { IDialogOptions } from '../../../../base/browser/ui/dialog/dialog.js';8import { fromNow } from '../../../../base/common/date.js';9import { localize } from '../../../../nls.js';10import { IHostService } from '../../../services/host/browser/host.js';11import { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';12import { ResultKind } from '../../../../platform/keybinding/common/keybindingResolver.js';13import { ILayoutService } from '../../../../platform/layout/browser/layoutService.js';14import { IProductService } from '../../../../platform/product/common/productService.js';15import { defaultButtonStyles, defaultCheckboxStyles, defaultInputBoxStyles, defaultDialogStyles } from '../../../../platform/theme/browser/defaultStyles.js';1617const defaultDialogAllowableCommands = new Set([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]);2728export function createWorkbenchDialogOptions(options: Partial<IDialogOptions>, keybindingService: IKeybindingService, layoutService: ILayoutService, hostService: IHostService, allowableCommands = defaultDialogAllowableCommands): IDialogOptions {29return {30keyEventProcessor: (event: StandardKeyboardEvent) => {31const resolved = keybindingService.softDispatch(event, layoutService.activeContainer);32if (resolved.kind === ResultKind.KbFound && resolved.commandId) {33if (!allowableCommands.has(resolved.commandId)) {34EventHelper.stop(event, true);35}36}37},38buttonStyles: defaultButtonStyles,39checkboxStyles: defaultCheckboxStyles,40inputBoxStyles: defaultInputBoxStyles,41dialogStyles: defaultDialogStyles,42onVisibilityChange: (window, visible) => hostService.setWindowDimmed(window, visible),43...options44};45}4647export function createBrowserAboutDialogDetails(productService: IProductService): { title: string; details: string; detailsToCopy: string } {48const detailString = (useAgo: boolean): string => {49return localize('aboutDetail',50"Version: {0}\nCommit: {1}\nDate: {2}\nBrowser: {3}",51productService.version || 'Unknown',52productService.commit || 'Unknown',53productService.date ? `${productService.date}${useAgo ? ' (' + fromNow(new Date(productService.date), true) + ')' : ''}` : 'Unknown',54navigator.userAgent55);56};5758const details = detailString(true);59const detailsToCopy = detailString(false);6061return {62title: productService.nameLong,63details: details,64detailsToCopy: detailsToCopy65};66}67686970