Path: blob/main/src/vs/workbench/contrib/accessibilitySignals/browser/openDiffEditorAnnouncement.ts
3296 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 { Disposable, IDisposable } from '../../../../base/common/lifecycle.js';6import { isDiffEditor } from '../../../../editor/browser/editorBrowser.js';7import { localize } from '../../../../nls.js';8import { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';9import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';10import { IWorkbenchContribution } from '../../../common/contributions.js';11import { IEditorService } from '../../../services/editor/common/editorService.js';12import { Event } from '../../../../base/common/event.js';13import { AccessibilityVerbositySettingId } from '../../accessibility/browser/accessibilityConfiguration.js';1415export class DiffEditorActiveAnnouncementContribution extends Disposable implements IWorkbenchContribution {1617static readonly ID = 'workbench.contrib.diffEditorActiveAnnouncement';1819private _onDidActiveEditorChangeListener?: IDisposable;2021constructor(22@IEditorService private readonly _editorService: IEditorService,23@IAccessibilityService private readonly _accessibilityService: IAccessibilityService,24@IConfigurationService private readonly _configurationService: IConfigurationService25) {26super();27this._register(Event.runAndSubscribe(_accessibilityService.onDidChangeScreenReaderOptimized, () => this._updateListener()));28this._register(_configurationService.onDidChangeConfiguration(e => {29if (e.affectsConfiguration(AccessibilityVerbositySettingId.DiffEditorActive)) {30this._updateListener();31}32}));33}3435private _updateListener(): void {36const announcementEnabled = this._configurationService.getValue(AccessibilityVerbositySettingId.DiffEditorActive);37const screenReaderOptimized = this._accessibilityService.isScreenReaderOptimized();3839if (!announcementEnabled || !screenReaderOptimized) {40this._onDidActiveEditorChangeListener?.dispose();41this._onDidActiveEditorChangeListener = undefined;42return;43}4445if (this._onDidActiveEditorChangeListener) {46return;47}4849this._onDidActiveEditorChangeListener = this._register(this._editorService.onDidActiveEditorChange(() => {50if (isDiffEditor(this._editorService.activeTextEditorControl)) {51this._accessibilityService.alert(localize('openDiffEditorAnnouncement', "Diff editor"));52}53}));54}55}565758