123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
- return c > 3 && r && Object.defineProperty(target, key, r), r;
- };
- var __param = (this && this.__param) || function (paramIndex, decorator) {
- return function (target, key) { decorator(target, key, paramIndex); }
- };
- import { CancellationToken } from '../../../base/common/cancellation.js';
- import { QuickInputController } from '../../../base/parts/quickinput/browser/quickInput.js';
- import { IAccessibilityService } from '../../accessibility/common/accessibility.js';
- import { IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';
- import { IInstantiationService } from '../../instantiation/common/instantiation.js';
- import { ILayoutService } from '../../layout/browser/layoutService.js';
- import { WorkbenchList } from '../../list/browser/listService.js';
- import { QuickAccessController } from './quickAccess.js';
- import { activeContrastBorder, badgeBackground, badgeForeground, buttonBackground, buttonForeground, buttonHoverBackground, contrastBorder, inputBackground, inputBorder, inputForeground, inputValidationErrorBackground, inputValidationErrorBorder, inputValidationErrorForeground, inputValidationInfoBackground, inputValidationInfoBorder, inputValidationInfoForeground, inputValidationWarningBackground, inputValidationWarningBorder, inputValidationWarningForeground, keybindingLabelBackground, keybindingLabelBorder, keybindingLabelBottomBorder, keybindingLabelForeground, pickerGroupBorder, pickerGroupForeground, progressBarBackground, quickInputBackground, quickInputForeground, quickInputListFocusBackground, quickInputListFocusForeground, quickInputListFocusIconForeground, quickInputTitleBackground, widgetShadow } from '../../theme/common/colorRegistry.js';
- import { computeStyles } from '../../theme/common/styler.js';
- import { IThemeService, Themable } from '../../theme/common/themeService.js';
- let QuickInputService = class QuickInputService extends Themable {
- constructor(instantiationService, contextKeyService, themeService, accessibilityService, layoutService) {
- super(themeService);
- this.instantiationService = instantiationService;
- this.contextKeyService = contextKeyService;
- this.accessibilityService = accessibilityService;
- this.layoutService = layoutService;
- this.contexts = new Map();
- }
- get controller() {
- if (!this._controller) {
- this._controller = this._register(this.createController());
- }
- return this._controller;
- }
- get quickAccess() {
- if (!this._quickAccess) {
- this._quickAccess = this._register(this.instantiationService.createInstance(QuickAccessController));
- }
- return this._quickAccess;
- }
- createController(host = this.layoutService, options) {
- var _a, _b;
- const defaultOptions = {
- idPrefix: 'quickInput_',
- container: host.container,
- ignoreFocusOut: () => false,
- isScreenReaderOptimized: () => this.accessibilityService.isScreenReaderOptimized(),
- backKeybindingLabel: () => undefined,
- setContextKey: (id) => this.setContextKey(id),
- returnFocus: () => host.focus(),
- createList: (user, container, delegate, renderers, options) => this.instantiationService.createInstance(WorkbenchList, user, container, delegate, renderers, options),
- styles: this.computeStyles()
- };
- const controller = this._register(new QuickInputController(Object.assign(Object.assign({}, defaultOptions), options)));
- controller.layout(host.dimension, (_b = (_a = host.offset) === null || _a === void 0 ? void 0 : _a.top) !== null && _b !== void 0 ? _b : 0);
- // Layout changes
- this._register(host.onDidLayout(dimension => { var _a, _b; return controller.layout(dimension, (_b = (_a = host.offset) === null || _a === void 0 ? void 0 : _a.top) !== null && _b !== void 0 ? _b : 0); }));
- // Context keys
- this._register(controller.onShow(() => this.resetContextKeys()));
- this._register(controller.onHide(() => this.resetContextKeys()));
- return controller;
- }
- setContextKey(id) {
- let key;
- if (id) {
- key = this.contexts.get(id);
- if (!key) {
- key = new RawContextKey(id, false)
- .bindTo(this.contextKeyService);
- this.contexts.set(id, key);
- }
- }
- if (key && key.get()) {
- return; // already active context
- }
- this.resetContextKeys();
- if (key) {
- key.set(true);
- }
- }
- resetContextKeys() {
- this.contexts.forEach(context => {
- if (context.get()) {
- context.reset();
- }
- });
- }
- pick(picks, options = {}, token = CancellationToken.None) {
- return this.controller.pick(picks, options, token);
- }
- createQuickPick() {
- return this.controller.createQuickPick();
- }
- updateStyles() {
- this.controller.applyStyles(this.computeStyles());
- }
- computeStyles() {
- return {
- widget: Object.assign({}, computeStyles(this.theme, {
- quickInputBackground,
- quickInputForeground,
- quickInputTitleBackground,
- contrastBorder,
- widgetShadow
- })),
- inputBox: computeStyles(this.theme, {
- inputForeground,
- inputBackground,
- inputBorder,
- inputValidationInfoBackground,
- inputValidationInfoForeground,
- inputValidationInfoBorder,
- inputValidationWarningBackground,
- inputValidationWarningForeground,
- inputValidationWarningBorder,
- inputValidationErrorBackground,
- inputValidationErrorForeground,
- inputValidationErrorBorder
- }),
- countBadge: computeStyles(this.theme, {
- badgeBackground,
- badgeForeground,
- badgeBorder: contrastBorder
- }),
- button: computeStyles(this.theme, {
- buttonForeground,
- buttonBackground,
- buttonHoverBackground,
- buttonBorder: contrastBorder
- }),
- progressBar: computeStyles(this.theme, {
- progressBarBackground
- }),
- keybindingLabel: computeStyles(this.theme, {
- keybindingLabelBackground,
- keybindingLabelForeground,
- keybindingLabelBorder,
- keybindingLabelBottomBorder,
- keybindingLabelShadow: widgetShadow
- }),
- list: computeStyles(this.theme, {
- listBackground: quickInputBackground,
- // Look like focused when inactive.
- listInactiveFocusForeground: quickInputListFocusForeground,
- listInactiveSelectionIconForeground: quickInputListFocusIconForeground,
- listInactiveFocusBackground: quickInputListFocusBackground,
- listFocusOutline: activeContrastBorder,
- listInactiveFocusOutline: activeContrastBorder,
- pickerGroupBorder,
- pickerGroupForeground
- })
- };
- }
- };
- QuickInputService = __decorate([
- __param(0, IInstantiationService),
- __param(1, IContextKeyService),
- __param(2, IThemeService),
- __param(3, IAccessibilityService),
- __param(4, ILayoutService)
- ], QuickInputService);
- export { QuickInputService };
|