Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/comments/browser/commentsAccessibility.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 { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';
7
import { IInstantiationService, ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';
8
import { ctxCommentEditorFocused } from './simpleCommentEditor.js';
9
import { CommentContextKeys } from '../common/commentContextKeys.js';
10
import * as nls from '../../../../nls.js';
11
import { AccessibilityVerbositySettingId } from '../../accessibility/browser/accessibilityConfiguration.js';
12
import { CommentCommandId } from '../common/commentCommandIds.js';
13
import { ToggleTabFocusModeAction } from '../../../../editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js';
14
import { IAccessibleViewContentProvider, AccessibleViewProviderId, IAccessibleViewOptions, AccessibleViewType } from '../../../../platform/accessibility/browser/accessibleView.js';
15
import { IAccessibleViewImplementation } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';
16
import { Disposable } from '../../../../base/common/lifecycle.js';
17
18
19
export namespace CommentAccessibilityHelpNLS {
20
export const intro = nls.localize('intro', "The editor contains commentable range(s). Some useful commands include:");
21
export const tabFocus = nls.localize('introWidget', "This widget contains a text area, for composition of new comments, and actions, that can be tabbed to once tab moves focus mode has been enabled with the command Toggle Tab Key Moves Focus{0}.", `<keybinding:${ToggleTabFocusModeAction.ID}>`);
22
export const commentCommands = nls.localize('commentCommands', "Some useful comment commands include:");
23
export const escape = nls.localize('escape', "- Dismiss Comment (Escape)");
24
export const nextRange = nls.localize('next', "- Go to Next Commenting Range{0}.", `<keybinding:${CommentCommandId.NextRange}>`);
25
export const previousRange = nls.localize('previous', "- Go to Previous Commenting Range{0}.", `<keybinding:${CommentCommandId.PreviousRange}>`);
26
export const nextCommentThread = nls.localize('nextCommentThreadKb', "- Go to Next Comment Thread{0}.", `<keybinding:${CommentCommandId.NextThread}>`);
27
export const previousCommentThread = nls.localize('previousCommentThreadKb', "- Go to Previous Comment Thread{0}.", `<keybinding:${CommentCommandId.PreviousThread}>`);
28
export const nextCommentedRange = nls.localize('nextCommentedRangeKb', "- Go to Next Commented Range{0}.", `<keybinding:${CommentCommandId.NextCommentedRange}>`);
29
export const previousCommentedRange = nls.localize('previousCommentedRangeKb', "- Go to Previous Commented Range{0}.", `<keybinding:${CommentCommandId.PreviousCommentedRange}>`);
30
export const addComment = nls.localize('addCommentNoKb', "- Add Comment on Current Selection{0}.", `<keybinding:${CommentCommandId.Add}>`);
31
export const submitComment = nls.localize('submitComment', "- Submit Comment{0}.", `<keybinding:${CommentCommandId.Submit}>`);
32
}
33
34
export class CommentsAccessibilityHelpProvider extends Disposable implements IAccessibleViewContentProvider {
35
id = AccessibleViewProviderId.Comments;
36
verbositySettingKey: AccessibilityVerbositySettingId = AccessibilityVerbositySettingId.Comments;
37
options: IAccessibleViewOptions = { type: AccessibleViewType.Help };
38
private _element: HTMLElement | undefined;
39
provideContent(): string {
40
return [CommentAccessibilityHelpNLS.tabFocus, CommentAccessibilityHelpNLS.commentCommands, CommentAccessibilityHelpNLS.escape, CommentAccessibilityHelpNLS.addComment, CommentAccessibilityHelpNLS.submitComment, CommentAccessibilityHelpNLS.nextRange, CommentAccessibilityHelpNLS.previousRange].join('\n');
41
}
42
onClose(): void {
43
this._element?.focus();
44
}
45
}
46
47
export class CommentsAccessibilityHelp implements IAccessibleViewImplementation {
48
readonly priority = 110;
49
readonly name = 'comments';
50
readonly type = AccessibleViewType.Help;
51
readonly when = ContextKeyExpr.or(ctxCommentEditorFocused, CommentContextKeys.commentFocused);
52
getProvider(accessor: ServicesAccessor) {
53
return accessor.get(IInstantiationService).createInstance(CommentsAccessibilityHelpProvider);
54
}
55
}
56
57