Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/accessibilitySignals/browser/openDiffEditorAnnouncement.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 { Disposable, IDisposable } from '../../../../base/common/lifecycle.js';
7
import { isDiffEditor } from '../../../../editor/browser/editorBrowser.js';
8
import { localize } from '../../../../nls.js';
9
import { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';
10
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
11
import { IWorkbenchContribution } from '../../../common/contributions.js';
12
import { IEditorService } from '../../../services/editor/common/editorService.js';
13
import { Event } from '../../../../base/common/event.js';
14
import { AccessibilityVerbositySettingId } from '../../accessibility/browser/accessibilityConfiguration.js';
15
16
export class DiffEditorActiveAnnouncementContribution extends Disposable implements IWorkbenchContribution {
17
18
static readonly ID = 'workbench.contrib.diffEditorActiveAnnouncement';
19
20
private _onDidActiveEditorChangeListener?: IDisposable;
21
22
constructor(
23
@IEditorService private readonly _editorService: IEditorService,
24
@IAccessibilityService private readonly _accessibilityService: IAccessibilityService,
25
@IConfigurationService private readonly _configurationService: IConfigurationService
26
) {
27
super();
28
this._register(Event.runAndSubscribe(_accessibilityService.onDidChangeScreenReaderOptimized, () => this._updateListener()));
29
this._register(_configurationService.onDidChangeConfiguration(e => {
30
if (e.affectsConfiguration(AccessibilityVerbositySettingId.DiffEditorActive)) {
31
this._updateListener();
32
}
33
}));
34
}
35
36
private _updateListener(): void {
37
const announcementEnabled = this._configurationService.getValue(AccessibilityVerbositySettingId.DiffEditorActive);
38
const screenReaderOptimized = this._accessibilityService.isScreenReaderOptimized();
39
40
if (!announcementEnabled || !screenReaderOptimized) {
41
this._onDidActiveEditorChangeListener?.dispose();
42
this._onDidActiveEditorChangeListener = undefined;
43
return;
44
}
45
46
if (this._onDidActiveEditorChangeListener) {
47
return;
48
}
49
50
this._onDidActiveEditorChangeListener = this._register(this._editorService.onDidActiveEditorChange(() => {
51
if (isDiffEditor(this._editorService.activeTextEditorControl)) {
52
this._accessibilityService.alert(localize('openDiffEditorAnnouncement', "Diff editor"));
53
}
54
}));
55
}
56
}
57
58