Path: blob/main/src/vs/workbench/contrib/comments/browser/commentsAccessibility.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 { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';6import { IInstantiationService, ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';7import { ctxCommentEditorFocused } from './simpleCommentEditor.js';8import { CommentContextKeys } from '../common/commentContextKeys.js';9import * as nls from '../../../../nls.js';10import { AccessibilityVerbositySettingId } from '../../accessibility/browser/accessibilityConfiguration.js';11import { CommentCommandId } from '../common/commentCommandIds.js';12import { ToggleTabFocusModeAction } from '../../../../editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js';13import { IAccessibleViewContentProvider, AccessibleViewProviderId, IAccessibleViewOptions, AccessibleViewType } from '../../../../platform/accessibility/browser/accessibleView.js';14import { IAccessibleViewImplementation } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';15import { Disposable } from '../../../../base/common/lifecycle.js';161718export namespace CommentAccessibilityHelpNLS {19export const intro = nls.localize('intro', "The editor contains commentable range(s). Some useful commands include:");20export 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}>`);21export const commentCommands = nls.localize('commentCommands', "Some useful comment commands include:");22export const escape = nls.localize('escape', "- Dismiss Comment (Escape)");23export const nextRange = nls.localize('next', "- Go to Next Commenting Range{0}.", `<keybinding:${CommentCommandId.NextRange}>`);24export const previousRange = nls.localize('previous', "- Go to Previous Commenting Range{0}.", `<keybinding:${CommentCommandId.PreviousRange}>`);25export const nextCommentThread = nls.localize('nextCommentThreadKb', "- Go to Next Comment Thread{0}.", `<keybinding:${CommentCommandId.NextThread}>`);26export const previousCommentThread = nls.localize('previousCommentThreadKb', "- Go to Previous Comment Thread{0}.", `<keybinding:${CommentCommandId.PreviousThread}>`);27export const nextCommentedRange = nls.localize('nextCommentedRangeKb', "- Go to Next Commented Range{0}.", `<keybinding:${CommentCommandId.NextCommentedRange}>`);28export const previousCommentedRange = nls.localize('previousCommentedRangeKb', "- Go to Previous Commented Range{0}.", `<keybinding:${CommentCommandId.PreviousCommentedRange}>`);29export const addComment = nls.localize('addCommentNoKb', "- Add Comment on Current Selection{0}.", `<keybinding:${CommentCommandId.Add}>`);30export const submitComment = nls.localize('submitComment', "- Submit Comment{0}.", `<keybinding:${CommentCommandId.Submit}>`);31}3233export class CommentsAccessibilityHelpProvider extends Disposable implements IAccessibleViewContentProvider {34id = AccessibleViewProviderId.Comments;35verbositySettingKey: AccessibilityVerbositySettingId = AccessibilityVerbositySettingId.Comments;36options: IAccessibleViewOptions = { type: AccessibleViewType.Help };37private _element: HTMLElement | undefined;38provideContent(): string {39return [CommentAccessibilityHelpNLS.tabFocus, CommentAccessibilityHelpNLS.commentCommands, CommentAccessibilityHelpNLS.escape, CommentAccessibilityHelpNLS.addComment, CommentAccessibilityHelpNLS.submitComment, CommentAccessibilityHelpNLS.nextRange, CommentAccessibilityHelpNLS.previousRange].join('\n');40}41onClose(): void {42this._element?.focus();43}44}4546export class CommentsAccessibilityHelp implements IAccessibleViewImplementation {47readonly priority = 110;48readonly name = 'comments';49readonly type = AccessibleViewType.Help;50readonly when = ContextKeyExpr.or(ctxCommentEditorFocused, CommentContextKeys.commentFocused);51getProvider(accessor: ServicesAccessor) {52return accessor.get(IInstantiationService).createInstance(CommentsAccessibilityHelpProvider);53}54}555657