| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /*---------------------------------------------------------------------------------------------
- * 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 { FindInput } from '../../../base/browser/ui/findinput/findInput.js';
- import { ReplaceInput } from '../../../base/browser/ui/findinput/replaceInput.js';
- import { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';
- import { KeybindingsRegistry } from '../../keybinding/common/keybindingsRegistry.js';
- import { localize } from '../../../nls.js';
- import { DisposableStore, toDisposable } from '../../../base/common/lifecycle.js';
- export const historyNavigationVisible = new RawContextKey('suggestWidgetVisible', false, localize('suggestWidgetVisible', "Whether suggestion are visible"));
- const HistoryNavigationWidgetFocusContext = 'historyNavigationWidgetFocus';
- const HistoryNavigationForwardsEnablementContext = 'historyNavigationForwardsEnabled';
- const HistoryNavigationBackwardsEnablementContext = 'historyNavigationBackwardsEnabled';
- let lastFocusedWidget = undefined;
- const widgets = [];
- export function registerAndCreateHistoryNavigationContext(contextKeyService, widget) {
- if (widgets.includes(widget)) {
- throw new Error('Cannot register the same widget multiple times');
- }
- widgets.push(widget);
- const disposableStore = new DisposableStore();
- const scopedContextKeyService = disposableStore.add(contextKeyService.createScoped(widget.element));
- const historyNavigationWidgetFocus = new RawContextKey(HistoryNavigationWidgetFocusContext, false).bindTo(scopedContextKeyService);
- const historyNavigationForwardsEnablement = new RawContextKey(HistoryNavigationForwardsEnablementContext, true).bindTo(scopedContextKeyService);
- const historyNavigationBackwardsEnablement = new RawContextKey(HistoryNavigationBackwardsEnablementContext, true).bindTo(scopedContextKeyService);
- const onDidFocus = () => {
- historyNavigationWidgetFocus.set(true);
- lastFocusedWidget = widget;
- };
- const onDidBlur = () => {
- historyNavigationWidgetFocus.set(false);
- if (lastFocusedWidget === widget) {
- lastFocusedWidget = undefined;
- }
- };
- // Check for currently being focused
- if (widget.element === document.activeElement) {
- onDidFocus();
- }
- disposableStore.add(widget.onDidFocus(() => onDidFocus()));
- disposableStore.add(widget.onDidBlur(() => onDidBlur()));
- disposableStore.add(toDisposable(() => {
- widgets.splice(widgets.indexOf(widget), 1);
- onDidBlur();
- }));
- return {
- scopedContextKeyService,
- historyNavigationForwardsEnablement,
- historyNavigationBackwardsEnablement,
- dispose() {
- disposableStore.dispose();
- }
- };
- }
- let ContextScopedFindInput = class ContextScopedFindInput extends FindInput {
- constructor(container, contextViewProvider, options, contextKeyService, showFindOptions = false) {
- super(container, contextViewProvider, showFindOptions, options);
- this._register(registerAndCreateHistoryNavigationContext(contextKeyService, this.inputBox));
- }
- };
- ContextScopedFindInput = __decorate([
- __param(3, IContextKeyService)
- ], ContextScopedFindInput);
- export { ContextScopedFindInput };
- let ContextScopedReplaceInput = class ContextScopedReplaceInput extends ReplaceInput {
- constructor(container, contextViewProvider, options, contextKeyService, showReplaceOptions = false) {
- super(container, contextViewProvider, showReplaceOptions, options);
- this._register(registerAndCreateHistoryNavigationContext(contextKeyService, this.inputBox));
- }
- };
- ContextScopedReplaceInput = __decorate([
- __param(3, IContextKeyService)
- ], ContextScopedReplaceInput);
- export { ContextScopedReplaceInput };
- KeybindingsRegistry.registerCommandAndKeybindingRule({
- id: 'history.showPrevious',
- weight: 200 /* KeybindingWeight.WorkbenchContrib */,
- when: ContextKeyExpr.and(ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), ContextKeyExpr.equals(HistoryNavigationBackwardsEnablementContext, true), historyNavigationVisible.isEqualTo(false)),
- primary: 16 /* KeyCode.UpArrow */,
- secondary: [512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */],
- handler: (accessor) => {
- if (lastFocusedWidget) {
- lastFocusedWidget.showPreviousValue();
- }
- }
- });
- KeybindingsRegistry.registerCommandAndKeybindingRule({
- id: 'history.showNext',
- weight: 200 /* KeybindingWeight.WorkbenchContrib */,
- when: ContextKeyExpr.and(ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), ContextKeyExpr.equals(HistoryNavigationForwardsEnablementContext, true), historyNavigationVisible.isEqualTo(false)),
- primary: 18 /* KeyCode.DownArrow */,
- secondary: [512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */],
- handler: (accessor) => {
- if (lastFocusedWidget) {
- lastFocusedWidget.showNextValue();
- }
- }
- });
|