toggle focus between query and results (#13928)

* toggle focus between query and results

* focus on tab

* comments
This commit is contained in:
Alan Ren
2021-01-07 18:39:31 -08:00
committed by GitHub
parent 81a1b1a55a
commit 6c2e713a92
6 changed files with 55 additions and 2 deletions

View File

@@ -306,6 +306,32 @@ export class ToggleQueryResultsKeyboardAction extends Action {
}
}
/**
* Toggle the focus between query editor and results pane
*/
export class ToggleFocusBetweenQueryEditorAndResultsAction extends Action {
public static ID = 'ToggleFocusBetweenQueryEditorAndResultsAction';
public static LABEL = nls.localize('ToggleFocusBetweenQueryEditorAndResultsAction', "Toggle Focus Between Query And Results");
constructor(
id: string,
label: string,
@IEditorService private _editorService: IEditorService
) {
super(id, label);
this.enabled = true;
}
public async run(): Promise<void> {
const editor = this._editorService.activeEditorPane;
if (editor instanceof QueryEditor) {
editor.toggleFocusBetweenQueryEditorAndResults();
}
}
}
/**
* Action class that runs a query in the active SQL text document.
*/

View File

@@ -19,7 +19,7 @@ import { QueryResultsInput } from 'sql/workbench/common/editor/query/queryResult
import * as queryContext from 'sql/workbench/contrib/query/common/queryContext';
import {
RunQueryKeyboardAction, RunCurrentQueryKeyboardAction, CancelQueryKeyboardAction, RefreshIntellisenseKeyboardAction, ToggleQueryResultsKeyboardAction,
RunQueryShortcutAction, RunCurrentQueryWithActualPlanKeyboardAction, CopyQueryWithResultsKeyboardAction, FocusOnCurrentQueryKeyboardAction, ParseSyntaxAction
RunQueryShortcutAction, RunCurrentQueryWithActualPlanKeyboardAction, CopyQueryWithResultsKeyboardAction, FocusOnCurrentQueryKeyboardAction, ParseSyntaxAction, ToggleFocusBetweenQueryEditorAndResultsAction
} from 'sql/workbench/contrib/query/browser/keyboardQueryActions';
import * as gridActions from 'sql/workbench/contrib/editData/browser/gridActions';
import * as gridCommands from 'sql/workbench/contrib/editData/browser/gridCommands';
@@ -200,6 +200,17 @@ actionRegistry.registerWorkbenchAction(
ToggleQueryResultsKeyboardAction.LABEL
);
actionRegistry.registerWorkbenchAction(
SyncActionDescriptor.create(
ToggleFocusBetweenQueryEditorAndResultsAction,
ToggleFocusBetweenQueryEditorAndResultsAction.ID,
ToggleFocusBetweenQueryEditorAndResultsAction.LABEL,
{ primary: KeyMod.WinCtrl | KeyMod.Shift | KeyCode.KEY_F },
QueryEditorVisibleCondition
),
ToggleFocusBetweenQueryEditorAndResultsAction.LABEL
);
// Register Flavor Action
actionRegistry.registerWorkbenchAction(
SyncActionDescriptor.create(

View File

@@ -470,6 +470,14 @@ export class QueryEditor extends EditorPane {
this.currentTextEditor.focus();
}
public toggleFocusBetweenQueryEditorAndResults(): void {
if (!this.resultsVisible || this.resultsEditorContainer.contains(document.activeElement)) {
this.focus();
} else {
this.resultsEditor.focus();
}
}
/**
* Updates the internal variable keeping track of the editor's size, and re-calculates the sash position.
* To be called when the container of this editor changes size.

View File

@@ -153,4 +153,8 @@ export class QueryResultsEditor extends EditorPane {
public registerQueryModelViewTab(title: string, componentId: string): void {
this.resultsView.registerQueryModelViewTab(title, componentId);
}
public focus(): void {
this.resultsView.focus();
}
}

View File

@@ -430,4 +430,8 @@ export class QueryResultsView extends Disposable {
tab.putState(this.input.state.dynamicModelViewTabsState);
}
}
public focus(): void {
this._panelView.focusCurrentTab();
}
}