This commit is contained in:
meganrogge 2023-07-11 08:48:33 -07:00
parent dd2273a094
commit 343270e7bb
No known key found for this signature in database
GPG key ID: AA74638D4878183D
6 changed files with 9 additions and 35 deletions

View file

@ -109,8 +109,7 @@ class EditorAccessibilityHelpContribution extends Disposable {
await commandService.executeCommand(NEW_UNTITLED_FILE_COMMAND_ID);
codeEditor = codeEditorService.getActiveCodeEditor()!;
}
accessibleViewService.registerProvider(instantiationService.createInstance(AccessibilityHelpProvider, codeEditor));
accessibleViewService.show('editor');
accessibleViewService.show(instantiationService.createInstance(AccessibilityHelpProvider, codeEditor));
}));
}
}
@ -136,18 +135,16 @@ class HoverAccessibleViewContribution extends Disposable {
if (!controller || !content) {
return false;
}
const provider = accessibleViewService.registerProvider({
accessibleViewService.show({
id: 'hover',
provideContent() { return content; },
onClose() {
provider.dispose();
controller.focus();
},
options: {
ariaLabel: localize('hoverAccessibleView', "Hover Accessible View"), language: 'typescript', type: AccessibleViewType.View
}
});
accessibleViewService.show('hover');
return true;
}));
}

View file

@ -5,7 +5,7 @@
import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { KeyCode } from 'vs/base/common/keyCodes';
import { Disposable, DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle';
import { Disposable, DisposableStore, IDisposable } from 'vs/base/common/lifecycle';
import { URI } from 'vs/base/common/uri';
import { IEditorConstructionOptions } from 'vs/editor/browser/config/editorConfiguration';
import { EditorExtensionsRegistry } from 'vs/editor/browser/editorExtensions';
@ -39,8 +39,7 @@ export const IAccessibleViewService = createDecorator<IAccessibleViewService>('a
export interface IAccessibleViewService {
readonly _serviceBrand: undefined;
show(providerId: string): AccessibleView;
registerProvider(provider: IAccessibleContentProvider): IDisposable;
show(provider: IAccessibleContentProvider): void;
}
export const enum AccessibleViewType {
@ -175,9 +174,6 @@ class AccessibleView extends Disposable {
export class AccessibleViewService extends Disposable implements IAccessibleViewService {
declare readonly _serviceBrand: undefined;
private _providers: Map<string, IAccessibleContentProvider> = new Map();
private _accessibleView: AccessibleView | undefined;
constructor(
@ -186,22 +182,10 @@ export class AccessibleViewService extends Disposable implements IAccessibleView
super();
}
registerProvider(provider: IAccessibleContentProvider): IDisposable {
this._providers.set(provider.id, provider);
return toDisposable(() => {
this._providers.delete(provider.id);
});
}
show(providerId: string): AccessibleView {
show(provider: IAccessibleContentProvider): void {
if (!this._accessibleView) {
this._accessibleView = this._register(this._instantiationService.createInstance(AccessibleView));
}
const provider = this._providers.get(providerId);
if (!provider) {
throw new Error(`No accessible view provider with id: ${providerId}`);
}
this._accessibleView.show(provider);
return this._accessibleView;
}
}

View file

@ -71,7 +71,7 @@ export async function runAccessibilityHelpAction(accessor: ServicesAccessor, edi
const cachedPosition = inputEditor.getPosition();
inputEditor.getSupportedActions();
const helpText = getAccessibilityHelpText(accessor, type);
const provider = accessibleViewService.registerProvider({
accessibleViewService.show({
id: type,
provideContent: () => helpText,
onClose: () => {
@ -81,9 +81,7 @@ export async function runAccessibilityHelpAction(accessor: ServicesAccessor, edi
} else if (type === 'inlineChat') {
InlineChatController.get(editor)?.focus();
}
provider.dispose();
},
options: { type: AccessibleViewType.HelpMenu, ariaLabel: type === 'panelChat' ? localize('chat-help-label', "Chat accessibility help") : localize('inline-chat-label', "Inline chat accessibility help") }
});
accessibleViewService.show(type);
}

View file

@ -135,16 +135,14 @@ class ChatAccessibleViewContribution extends Disposable {
if (!responseContent) {
return false;
}
const provider = accessibleViewService.registerProvider({
accessibleViewService.show({
id: 'panelChat',
provideContent(): string { return responseContent; },
onClose() {
widget.focus(focusedItem);
provider.dispose();
},
options: { ariaLabel: nls.localize('chatAccessibleView', "Chat Accessible View"), language: 'typescript', type: AccessibleViewType.View }
});
accessibleViewService.show('panelChat');
return true;
}, CONTEXT_IN_CHAT_SESSION));
}

View file

@ -45,14 +45,12 @@ function descriptionForCommand(commandId: string, msg: string, noKbMsg: string,
export async function runAccessibilityHelpAction(accessor: ServicesAccessor, editor: ICodeEditor): Promise<void> {
const accessibleViewService = accessor.get(IAccessibleViewService);
const helpText = getAccessibilityHelpText(accessor);
const provider = accessibleViewService.registerProvider({
accessibleViewService.show({
id: 'notebook',
provideContent: () => helpText,
onClose: () => {
editor.focus();
provider.dispose();
},
options: { type: AccessibleViewType.HelpMenu, ariaLabel: 'Notebook accessibility help' }
});
accessibleViewService.show('notebook');
}

View file

@ -73,8 +73,7 @@ export class TerminalAccessibilityHelpContribution extends Disposable {
if (!terminal) {
return;
}
accessibleViewService.registerProvider(instantiationService.createInstance(TerminalAccessibleContentProvider, instance, terminal));
accessibleViewService.show('terminal');
accessibleViewService.show(instantiationService.createInstance(TerminalAccessibleContentProvider, instance, terminal));
}, TerminalContextKeys.focus));
}
}