From 2a5f0ffc4b65ed0e339b6a23d427c951e11620c9 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Tue, 12 Jun 2018 13:02:29 +0200 Subject: [PATCH] grid - add action to split orthogonal --- .../parts/editor/editor.contribution.ts | 3 +- .../browser/parts/editor/editorActions.ts | 52 ++++++++++++++++--- 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts index 0b5028b3afa..c42be090a0d 100644 --- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts +++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts @@ -38,7 +38,7 @@ import { SplitEditorUpAction, SplitEditorDownAction, MoveEditorToLeftGroupAction, MoveEditorToRightGroupAction, MoveEditorToAboveGroupAction, MoveEditorToBelowGroupAction, CloseAllEditorGroupsAction, JoinAllGroupsAction, FocusLeftGroup, FocusAboveGroup, FocusRightGroup, FocusBelowGroup, EditorLayoutSingleAction, EditorLayoutTwoColumnsAction, EditorLayoutThreeColumnsAction, EditorLayoutTwoByTwoGridAction, EditorLayoutTwoRowsAction, EditorLayoutThreeRowsAction, EditorLayoutTwoColumnsBottomAction, EditorLayoutTwoColumnsRightAction, EditorLayoutCenteredAction, NewEditorGroupLeftAction, NewEditorGroupRightAction, - NewEditorGroupAboveAction, NewEditorGroupBelowAction + NewEditorGroupAboveAction, NewEditorGroupBelowAction, SplitEditorOrthogonalAction } from 'vs/workbench/browser/parts/editor/editorActions'; import * as editorCommands from 'vs/workbench/browser/parts/editor/editorCommands'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; @@ -319,6 +319,7 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(CloseAllEditorGroupsAc registry.registerWorkbenchAction(new SyncActionDescriptor(CloseLeftEditorsInGroupAction, CloseLeftEditorsInGroupAction.ID, CloseLeftEditorsInGroupAction.LABEL), 'View: Close Editors in Group to the Left', category); registry.registerWorkbenchAction(new SyncActionDescriptor(CloseEditorsInOtherGroupsAction, CloseEditorsInOtherGroupsAction.ID, CloseEditorsInOtherGroupsAction.LABEL), 'View: Close Editors in Other Groups', category); registry.registerWorkbenchAction(new SyncActionDescriptor(SplitEditorAction, SplitEditorAction.ID, SplitEditorAction.LABEL, { primary: KeyMod.CtrlCmd | KeyCode.US_BACKSLASH }), 'View: Split Editor', category); +registry.registerWorkbenchAction(new SyncActionDescriptor(SplitEditorOrthogonalAction, SplitEditorOrthogonalAction.ID, SplitEditorOrthogonalAction.LABEL, { primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.US_BACKSLASH }), 'View: Split Editor Orthogonal', category); registry.registerWorkbenchAction(new SyncActionDescriptor(SplitEditorLeftAction, SplitEditorLeftAction.ID, SplitEditorLeftAction.LABEL), 'View: Split Editor Left', category); registry.registerWorkbenchAction(new SyncActionDescriptor(SplitEditorRightAction, SplitEditorRightAction.ID, SplitEditorRightAction.LABEL), 'View: Split Editor Right', category); registry.registerWorkbenchAction(new SyncActionDescriptor(SplitEditorUpAction, SplitEditorUpAction.ID, SplitEditorUpAction.LABEL), 'Split Editor Up', category); diff --git a/src/vs/workbench/browser/parts/editor/editorActions.ts b/src/vs/workbench/browser/parts/editor/editorActions.ts index 672727ffc41..37e225011f0 100644 --- a/src/vs/workbench/browser/parts/editor/editorActions.ts +++ b/src/vs/workbench/browser/parts/editor/editorActions.ts @@ -42,27 +42,27 @@ export class ExecuteCommandAction extends Action { } } -export class SplitEditorAction extends Action { - - public static readonly ID = 'workbench.action.splitEditor'; - public static readonly LABEL = nls.localize('splitEditor', "Split Editor"); - +export class BaseSplitEditorAction extends Action { private toDispose: IDisposable[] = []; private direction: GroupDirection; constructor( id: string, label: string, - @IEditorGroupsService private editorGroupService: IEditorGroupsService, - @IConfigurationService private configurationService: IConfigurationService + protected editorGroupService: IEditorGroupsService, + protected configurationService: IConfigurationService ) { super(id, label); - this.direction = preferredSideBySideGroupDirection(configurationService); + this.direction = this.getDirection(); this.registerListeners(); } + protected getDirection(): GroupDirection { + return preferredSideBySideGroupDirection(this.configurationService); + } + private registerListeners(): void { this.toDispose.push(this.configurationService.onDidChangeConfiguration(e => { if (e.affectsConfiguration('workbench.editor.openSideBySideDirection')) { @@ -84,6 +84,42 @@ export class SplitEditorAction extends Action { } } +export class SplitEditorAction extends BaseSplitEditorAction { + + public static readonly ID = 'workbench.action.splitEditor'; + public static readonly LABEL = nls.localize('splitEditor', "Split Editor"); + + constructor( + id: string, + label: string, + @IEditorGroupsService editorGroupService: IEditorGroupsService, + @IConfigurationService configurationService: IConfigurationService + ) { + super(id, label, editorGroupService, configurationService); + } +} + +export class SplitEditorOrthogonalAction extends BaseSplitEditorAction { + + public static readonly ID = 'workbench.action.splitEditorOrthogonal'; + public static readonly LABEL = nls.localize('splitEditorOrthogonal', "Split Editor Orthogonal"); + + constructor( + id: string, + label: string, + @IEditorGroupsService editorGroupService: IEditorGroupsService, + @IConfigurationService configurationService: IConfigurationService + ) { + super(id, label, editorGroupService, configurationService); + } + + protected getDirection(): GroupDirection { + const direction = preferredSideBySideGroupDirection(this.configurationService); + + return direction === GroupDirection.RIGHT ? GroupDirection.DOWN : GroupDirection.RIGHT; + } +} + export class SplitEditorLeftAction extends ExecuteCommandAction { public static readonly ID = SPLIT_EDITOR_LEFT; -- GitLab