Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/accessibility/browser/accessibleViewContributions.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 } from '../../../../base/common/lifecycle.js';
7
import { accessibleViewIsShown } from './accessibilityConfiguration.js';
8
import { AccessibilityHelpAction, AccessibleViewAction } from './accessibleViewActions.js';
9
import { AccessibleViewType, AccessibleContentProvider, ExtensionContentProvider, IAccessibleViewService } from '../../../../platform/accessibility/browser/accessibleView.js';
10
import { AccessibleViewRegistry } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';
11
import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';
12
13
export class AccesibleViewHelpContribution extends Disposable {
14
static ID: 'accesibleViewHelpContribution';
15
constructor() {
16
super();
17
this._register(AccessibilityHelpAction.addImplementation(115, 'accessible-view-help', accessor => {
18
accessor.get(IAccessibleViewService).showAccessibleViewHelp();
19
return true;
20
}, accessibleViewIsShown));
21
}
22
}
23
24
export class AccesibleViewContributions extends Disposable {
25
static ID: 'accesibleViewContributions';
26
constructor() {
27
super();
28
AccessibleViewRegistry.getImplementations().forEach(impl => {
29
const implementation = (accessor: ServicesAccessor) => {
30
const provider: AccessibleContentProvider | ExtensionContentProvider | undefined = impl.getProvider(accessor);
31
if (!provider) {
32
return false;
33
}
34
try {
35
accessor.get(IAccessibleViewService).show(provider);
36
return true;
37
} catch {
38
provider.dispose();
39
return false;
40
}
41
};
42
if (impl.type === AccessibleViewType.View) {
43
this._register(AccessibleViewAction.addImplementation(impl.priority, impl.name, implementation, impl.when));
44
} else {
45
this._register(AccessibilityHelpAction.addImplementation(impl.priority, impl.name, implementation, impl.when));
46
}
47
});
48
}
49
}
50
51