mirror of
https://github.com/Microsoft/vscode
synced 2024-08-27 21:09:43 +00:00
Cleanup some inline chat debt (#209009)
* - make inline chat tab-able (fixes https://github.com/microsoft/vscode/issues/208569) - fix aria label * - move report issue into widget toolbar - some todo-cleanup * remove unused menuid
This commit is contained in:
parent
4b90a20d3a
commit
1d1c28eed1
|
@ -11,7 +11,7 @@ import { EmbeddedDiffEditorWidget } from 'vs/editor/browser/widget/diffEditor/em
|
|||
import { EmbeddedCodeEditorWidget } from 'vs/editor/browser/widget/codeEditor/embeddedCodeEditorWidget';
|
||||
import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
|
||||
import { InlineChatController, InlineChatRunOptions } from 'vs/workbench/contrib/inlineChat/browser/inlineChatController';
|
||||
import { CTX_INLINE_CHAT_FOCUSED, CTX_INLINE_CHAT_HAS_PROVIDER, CTX_INLINE_CHAT_INNER_CURSOR_FIRST, CTX_INLINE_CHAT_INNER_CURSOR_LAST, CTX_INLINE_CHAT_EMPTY, CTX_INLINE_CHAT_OUTER_CURSOR_POSITION, CTX_INLINE_CHAT_VISIBLE, MENU_INLINE_CHAT_WIDGET_DISCARD, MENU_INLINE_CHAT_WIDGET_STATUS, CTX_INLINE_CHAT_EDIT_MODE, EditMode, CTX_INLINE_CHAT_DOCUMENT_CHANGED, CTX_INLINE_CHAT_DID_EDIT, CTX_INLINE_CHAT_HAS_STASHED_SESSION, MENU_INLINE_CHAT_WIDGET_FEEDBACK, ACTION_ACCEPT_CHANGES, ACTION_REGENERATE_RESPONSE, CTX_INLINE_CHAT_RESPONSE_TYPES, InlineChatResponseTypes, ACTION_VIEW_IN_CHAT, CTX_INLINE_CHAT_USER_DID_EDIT, CTX_INLINE_CHAT_RESPONSE_FOCUSED, CTX_INLINE_CHAT_SUPPORT_ISSUE_REPORTING, InlineChatResponseFeedbackKind, CTX_INLINE_CHAT_CHANGE_SHOWS_DIFF, CTX_INLINE_CHAT_CHANGE_HAS_DIFF, MENU_INLINE_CHAT_WIDGET, ACTION_TOGGLE_DIFF } from 'vs/workbench/contrib/inlineChat/common/inlineChat';
|
||||
import { CTX_INLINE_CHAT_FOCUSED, CTX_INLINE_CHAT_HAS_PROVIDER, CTX_INLINE_CHAT_INNER_CURSOR_FIRST, CTX_INLINE_CHAT_INNER_CURSOR_LAST, CTX_INLINE_CHAT_EMPTY, CTX_INLINE_CHAT_OUTER_CURSOR_POSITION, CTX_INLINE_CHAT_VISIBLE, MENU_INLINE_CHAT_WIDGET_DISCARD, MENU_INLINE_CHAT_WIDGET_STATUS, CTX_INLINE_CHAT_EDIT_MODE, EditMode, CTX_INLINE_CHAT_DOCUMENT_CHANGED, CTX_INLINE_CHAT_DID_EDIT, CTX_INLINE_CHAT_HAS_STASHED_SESSION, ACTION_ACCEPT_CHANGES, ACTION_REGENERATE_RESPONSE, CTX_INLINE_CHAT_RESPONSE_TYPES, InlineChatResponseTypes, ACTION_VIEW_IN_CHAT, CTX_INLINE_CHAT_USER_DID_EDIT, CTX_INLINE_CHAT_RESPONSE_FOCUSED, CTX_INLINE_CHAT_SUPPORT_ISSUE_REPORTING, InlineChatResponseFeedbackKind, CTX_INLINE_CHAT_CHANGE_SHOWS_DIFF, CTX_INLINE_CHAT_CHANGE_HAS_DIFF, MENU_INLINE_CHAT_WIDGET, ACTION_TOGGLE_DIFF } from 'vs/workbench/contrib/inlineChat/common/inlineChat';
|
||||
import { localize, localize2 } from 'vs/nls';
|
||||
import { Action2, IAction2Options, MenuId, MenuRegistry } from 'vs/platform/actions/common/actions';
|
||||
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
|
||||
|
@ -430,8 +430,6 @@ export class ToggleDiffForChange extends AbstractInlineChatAction {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
export class ReportIssueForBugCommand extends AbstractInlineChatAction {
|
||||
constructor() {
|
||||
super({
|
||||
|
@ -440,10 +438,10 @@ export class ReportIssueForBugCommand extends AbstractInlineChatAction {
|
|||
icon: Codicon.report,
|
||||
precondition: ContextKeyExpr.and(CTX_INLINE_CHAT_VISIBLE, CTX_INLINE_CHAT_RESPONSE_TYPES.notEqualsTo(InlineChatResponseTypes.Empty)),
|
||||
menu: [{
|
||||
id: MENU_INLINE_CHAT_WIDGET_FEEDBACK,
|
||||
id: MENU_INLINE_CHAT_WIDGET,
|
||||
when: ContextKeyExpr.and(CTX_INLINE_CHAT_SUPPORT_ISSUE_REPORTING, CTX_INLINE_CHAT_RESPONSE_TYPES.notEqualsTo(InlineChatResponseTypes.Empty)),
|
||||
group: '2_feedback',
|
||||
order: 3
|
||||
group: 'navigation',
|
||||
order: 2
|
||||
}]
|
||||
});
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ export interface IInlineChatWidgetConstructionOptions {
|
|||
/**
|
||||
* The men that rendered in the lower right corner, use for feedback
|
||||
*/
|
||||
feedbackMenuId: MenuId;
|
||||
feedbackMenuId?: MenuId;
|
||||
|
||||
/**
|
||||
* @deprecated
|
||||
|
@ -157,19 +157,6 @@ export class InlineChatWidget {
|
|||
@ITextModelService protected readonly _textModelResolverService: ITextModelService,
|
||||
@IChatService private readonly _chatService: IChatService,
|
||||
) {
|
||||
// Share hover delegates between toolbars to support instant hover between both
|
||||
// TODO@jrieken move into chat widget
|
||||
// const hoverDelegate = this._store.add(createInstantHoverDelegate());
|
||||
|
||||
this._store.add(this._configurationService.onDidChangeConfiguration(e => {
|
||||
if (e.affectsConfiguration(AccessibilityVerbositySettingId.InlineChat)) {
|
||||
this._updateAriaLabel();
|
||||
// TODO@jrieken FIX THIS
|
||||
// this._chatWidget.ariaLabel = this._accessibleViewService.getOpenAriaHint(AccessibilityVerbositySettingId.InlineChat);
|
||||
this._elements.followUps.ariaLabel = this._accessibleViewService.getOpenAriaHint(AccessibilityVerbositySettingId.InlineChat);
|
||||
}
|
||||
}));
|
||||
|
||||
// toolbars
|
||||
this._progressBar = new ProgressBar(this._elements.progress);
|
||||
this._store.add(this._progressBar);
|
||||
|
@ -290,14 +277,22 @@ export class InlineChatWidget {
|
|||
}
|
||||
};
|
||||
|
||||
const feedbackToolbar = this._instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.feedbackToolbar, options.feedbackMenuId, { ...workbenchToolbarOptions, hiddenItemStrategy: HiddenItemStrategy.Ignore });
|
||||
this._store.add(feedbackToolbar.onDidChangeMenuItems(() => this._onDidChangeHeight.fire()));
|
||||
this._store.add(feedbackToolbar);
|
||||
if (options.feedbackMenuId) {
|
||||
const feedbackToolbar = this._instantiationService.createInstance(MenuWorkbenchToolBar, this._elements.feedbackToolbar, options.feedbackMenuId, { ...workbenchToolbarOptions, hiddenItemStrategy: HiddenItemStrategy.Ignore });
|
||||
this._store.add(feedbackToolbar.onDidChangeMenuItems(() => this._onDidChangeHeight.fire()));
|
||||
this._store.add(feedbackToolbar);
|
||||
}
|
||||
|
||||
this._store.add(this._configurationService.onDidChangeConfiguration(e => {
|
||||
if (e.affectsConfiguration(AccessibilityVerbositySettingId.InlineChat)) {
|
||||
this._updateAriaLabel();
|
||||
}
|
||||
}));
|
||||
|
||||
this._elements.root.tabIndex = 0;
|
||||
this._elements.followUps.tabIndex = 0;
|
||||
this._elements.followUps.ariaLabel = this._accessibleViewService.getOpenAriaHint(AccessibilityVerbositySettingId.InlineChat);
|
||||
this._elements.statusLabel.tabIndex = 0;
|
||||
this._updateAriaLabel();
|
||||
|
||||
// this._elements.status
|
||||
this._store.add(setupCustomHover(getDefaultHoverDelegate('element'), this._elements.statusLabel, () => {
|
||||
|
@ -319,15 +314,19 @@ export class InlineChatWidget {
|
|||
}
|
||||
|
||||
private _updateAriaLabel(): void {
|
||||
if (!this._accessibilityService.isScreenReaderOptimized()) {
|
||||
return;
|
||||
|
||||
this._elements.root.ariaLabel = this._accessibleViewService.getOpenAriaHint(AccessibilityVerbositySettingId.InlineChat);
|
||||
|
||||
if (this._accessibilityService.isScreenReaderOptimized()) {
|
||||
let label = defaultAriaLabel;
|
||||
if (this._configurationService.getValue<boolean>(AccessibilityVerbositySettingId.InlineChat)) {
|
||||
const kbLabel = this._keybindingService.lookupKeybinding(AccessibilityCommandId.OpenAccessibilityHelp)?.getLabel();
|
||||
label = kbLabel
|
||||
? localize('inlineChat.accessibilityHelp', "Inline Chat Input, Use {0} for Inline Chat Accessibility Help.", kbLabel)
|
||||
: localize('inlineChat.accessibilityHelpNoKb', "Inline Chat Input, Run the Inline Chat Accessibility Help command for more information.");
|
||||
}
|
||||
this._chatWidget.inputEditor.updateOptions({ ariaLabel: label });
|
||||
}
|
||||
let label = defaultAriaLabel;
|
||||
if (this._configurationService.getValue<boolean>(AccessibilityVerbositySettingId.InlineChat)) {
|
||||
const kbLabel = this._keybindingService.lookupKeybinding(AccessibilityCommandId.OpenAccessibilityHelp)?.getLabel();
|
||||
label = kbLabel ? localize('inlineChat.accessibilityHelp', "Inline Chat Input, Use {0} for Inline Chat Accessibility Help.", kbLabel) : localize('inlineChat.accessibilityHelpNoKb', "Inline Chat Input, Run the Inline Chat Accessibility Help command for more information.");
|
||||
}
|
||||
this._chatWidget.inputEditor.updateOptions({ ariaLabel: label });
|
||||
}
|
||||
|
||||
dispose(): void {
|
||||
|
@ -526,7 +525,9 @@ export class InlineChatWidget {
|
|||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use `setChatModel` instead
|
||||
*/
|
||||
updateFollowUps(items: IInlineChatFollowup[], onFollowup: (followup: IInlineChatFollowup) => void): void;
|
||||
updateFollowUps(items: undefined): void;
|
||||
updateFollowUps(items: IInlineChatFollowup[] | undefined, onFollowup?: ((followup: IInlineChatFollowup) => void)) {
|
||||
|
@ -540,10 +541,11 @@ export class InlineChatWidget {
|
|||
this._onDidChangeHeight.fire();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated use `setChatModel` instead
|
||||
*/
|
||||
updateSlashCommands(commands: IInlineChatSlashCommand[]) {
|
||||
// this._inputWidget.updateSlashCommands(commands);
|
||||
// TODO@jrieken
|
||||
|
||||
}
|
||||
|
||||
updateInfo(message: string): void {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import { Dimension, addDisposableListener } from 'vs/base/browser/dom';
|
||||
import { Dimension } from 'vs/base/browser/dom';
|
||||
import * as aria from 'vs/base/browser/ui/aria/aria';
|
||||
import { toDisposable } from 'vs/base/common/lifecycle';
|
||||
import { assertType } from 'vs/base/common/types';
|
||||
|
@ -14,7 +14,7 @@ import { ZoneWidget } from 'vs/editor/contrib/zoneWidget/browser/zoneWidget';
|
|||
import { localize } from 'vs/nls';
|
||||
import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
|
||||
import { ACTION_ACCEPT_CHANGES, ACTION_REGENERATE_RESPONSE, ACTION_TOGGLE_DIFF, ACTION_VIEW_IN_CHAT, CTX_INLINE_CHAT_OUTER_CURSOR_POSITION, MENU_INLINE_CHAT_WIDGET, MENU_INLINE_CHAT_WIDGET_FEEDBACK, MENU_INLINE_CHAT_WIDGET_STATUS } from 'vs/workbench/contrib/inlineChat/common/inlineChat';
|
||||
import { ACTION_ACCEPT_CHANGES, ACTION_REGENERATE_RESPONSE, ACTION_TOGGLE_DIFF, ACTION_VIEW_IN_CHAT, CTX_INLINE_CHAT_OUTER_CURSOR_POSITION, MENU_INLINE_CHAT_WIDGET, MENU_INLINE_CHAT_WIDGET_STATUS } from 'vs/workbench/contrib/inlineChat/common/inlineChat';
|
||||
import { EditorBasedInlineChatWidget } from './inlineChatWidget';
|
||||
import { MenuId } from 'vs/platform/actions/common/actions';
|
||||
|
||||
|
@ -44,7 +44,6 @@ export class InlineChatZoneWidget extends ZoneWidget {
|
|||
telemetrySource: 'interactiveEditorWidget-toolbar',
|
||||
inputMenuId: MenuId.ChatExecute,
|
||||
widgetMenuId: MENU_INLINE_CHAT_WIDGET,
|
||||
feedbackMenuId: MENU_INLINE_CHAT_WIDGET_FEEDBACK,
|
||||
statusMenuId: {
|
||||
menu: MENU_INLINE_CHAT_WIDGET_STATUS,
|
||||
options: {
|
||||
|
@ -69,13 +68,6 @@ export class InlineChatZoneWidget extends ZoneWidget {
|
|||
this._disposables.add(this.widget);
|
||||
this.create();
|
||||
|
||||
|
||||
this._disposables.add(addDisposableListener(this.domNode, 'click', e => {
|
||||
if (!this.widget.hasFocus()) {
|
||||
this.widget.focus();
|
||||
}
|
||||
}, true));
|
||||
|
||||
// todo@jrieken listen ONLY when showing
|
||||
const updateCursorIsAboveContextKey = () => {
|
||||
if (!this.position || !this.editor.hasModel()) {
|
||||
|
|
|
@ -182,7 +182,6 @@ export const ACTION_TOGGLE_DIFF = 'inlineChat.toggleDiff';
|
|||
|
||||
export const MENU_INLINE_CHAT_WIDGET = MenuId.for('inlineChatWidget');
|
||||
export const MENU_INLINE_CHAT_WIDGET_STATUS = MenuId.for('inlineChatWidget.status');
|
||||
export const MENU_INLINE_CHAT_WIDGET_FEEDBACK = MenuId.for('inlineChatWidget.feedback');
|
||||
export const MENU_INLINE_CHAT_WIDGET_DISCARD = MenuId.for('inlineChatWidget.undo');
|
||||
|
||||
// --- colors
|
||||
|
|
Loading…
Reference in a new issue