@eclipse-glsp/theia-integration
Version:
Glue code to integrate GLSP clients into Eclipse Theia
498 lines (471 loc) • 23.5 kB
text/typescript
/********************************************************************************
* Copyright (c) 2019-2023 EclipseSource and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the Eclipse
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
* with the GNU Classpath Exception which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/
import {
AlignElementsAction,
Alignment,
bindAsService,
ReduceFunctionType,
ResizeDimension,
ResizeElementsAction,
SelectFunctionType
} from '@eclipse-glsp/client';
import { CommandContribution, CommandRegistry, MenuContribution, MenuModelRegistry, MenuPath } from '@theia/core';
import { ApplicationShell, KeybindingContribution, KeybindingRegistry } from '@theia/core/lib/browser';
import { inject, injectable } from '@theia/core/shared/inversify';
import { ContainerContext } from '../glsp-theia-container-module';
import { GLSPCommandHandler } from './glsp-command-handler';
import { GLSPDiagramMenus } from './glsp-diagram-commands';
import { GLSPDiagramKeybindingContext } from './glsp-diagram-keybinding';
export function registerDiagramLayoutCommands(context: Omit<ContainerContext, 'unbind' | 'rebind'>): void {
if (!context.isBound(GLSPLayoutCommandContribution)) {
bindAsService(context, CommandContribution, GLSPLayoutCommandContribution);
}
if (!context.isBound(GLSPLayoutMenuContribution)) {
bindAsService(context, MenuContribution, GLSPLayoutMenuContribution);
}
if (!context.isBound(GLSPLayoutKeybindingContribution)) {
bindAsService(context, KeybindingContribution, GLSPLayoutKeybindingContribution);
}
}
export namespace GLSPLayoutCommands {
export const RESIZE_WIDTH_MIN = 'glsp:' + ResizeElementsAction.KIND + ':width:min';
export const RESIZE_WIDTH_MIN_LABEL = 'Minimal Width';
export const RESIZE_WIDTH_MAX = 'glsp:' + ResizeElementsAction.KIND + ':width:max';
export const RESIZE_WIDTH_MAX_LABEL = 'Maximal Width';
export const RESIZE_WIDTH_AVG = 'glsp:' + ResizeElementsAction.KIND + ':width:avg';
export const RESIZE_WIDTH_AVG_LABEL = 'Average Width';
export const RESIZE_WIDTH_FIRST = 'glsp:' + ResizeElementsAction.KIND + ':width:first';
export const RESIZE_WIDTH_FIRST_LABEL = 'Width of First Selected Element';
export const RESIZE_WIDTH_LAST = 'glsp:' + ResizeElementsAction.KIND + ':width:last';
export const RESIZE_WIDTH_LAST_LABEL = 'Width of Last Selected Element';
export const RESIZE_HEIGHT_MIN = 'glsp:' + ResizeElementsAction.KIND + ':height:min';
export const RESIZE_HEIGHT_MIN_LABEL = 'Minimal Height';
export const RESIZE_HEIGHT_MAX = 'glsp:' + ResizeElementsAction.KIND + ':height:max';
export const RESIZE_HEIGHT_MAX_LABEL = 'Maximal Height';
export const RESIZE_HEIGHT_AVG = 'glsp:' + ResizeElementsAction.KIND + ':height:avg';
export const RESIZE_HEIGHT_AVG_LABEL = 'Average Height';
export const RESIZE_HEIGHT_FIRST = 'glsp:' + ResizeElementsAction.KIND + ':height:first';
export const RESIZE_HEIGHT_FIRST_LABEL = 'Height of First Selected Element';
export const RESIZE_HEIGHT_LAST = 'glsp:' + ResizeElementsAction.KIND + ':height:last';
export const RESIZE_HEIGHT_LAST_LABEL = 'Height of Last Selected Element';
export const RESIZE_WIDTH_AND_HEIGHT_MIN = 'glsp:' + ResizeElementsAction.KIND + ':width_and_height:min';
export const RESIZE_WIDTH_AND_HEIGHT_MIN_LBL = 'Minimal Width and Height';
export const RESIZE_WIDTH_AND_HEIGHT_MAX = 'glsp:' + ResizeElementsAction.KIND + ':width_and_height:max';
export const RESIZE_WIDTH_AND_HEIGHT_MAX_LBL = 'Maximal Width and Height';
export const RESIZE_WIDTH_AND_HEIGHT_AVG = 'glsp:' + ResizeElementsAction.KIND + ':width_and_height:avg';
export const RESIZE_WIDTH_AND_HEIGHT_AVG_LBL = 'Average Width and Height';
export const RESIZE_WIDTH_AND_HEIGHT_FIRST = 'glsp:' + ResizeElementsAction.KIND + ':width_and_height:first';
export const RESIZE_WIDTH_AND_HEIGHT_FIRST_LBL = 'Width and Height of First Selected Element';
export const RESIZE_WIDTH_AND_HEIGHT_LAST = 'glsp:' + ResizeElementsAction.KIND + ':width_and_height:last';
export const RESIZE_WIDTH_AND_HEIGHT_LAST_LBL = 'Width and Height of Last Selected Element';
export const ALIGN_LEFT = 'glsp:' + AlignElementsAction.KIND + ':left';
export const ALIGN_LEFT_LABEL = 'Left';
export const ALIGN_CENTER = 'glsp:' + AlignElementsAction.KIND + ':center';
export const ALIGN_CENTER_LABEL = 'Center';
export const ALIGN_RIGHT = 'glsp:' + AlignElementsAction.KIND + ':right';
export const ALIGN_RIGHT_LABEL = 'Right';
export const ALIGN_TOP = 'glsp:' + AlignElementsAction.KIND + ':top';
export const ALIGN_TOP_LABEL = 'Top';
export const ALIGN_MIDDLE = 'glsp:' + AlignElementsAction.KIND + ':middle';
export const ALIGN_MIDDLE_LABEL = 'Middle';
export const ALIGN_BOTTOM = 'glsp:' + AlignElementsAction.KIND + ':bottom';
export const ALIGN_BOTTOM_LABEL = 'Bottom';
export const ALIGN_LEFT_FIRST = 'glsp:' + AlignElementsAction.KIND + ':left:first';
export const ALIGN_LEFT_FIRST_LABEL = 'Left of First Selected Element';
export const ALIGN_CENTER_FIRST = 'glsp:' + AlignElementsAction.KIND + ':center:first';
export const ALIGN_CENTER_FIRST_LABEL = 'Center of First Selected Element';
export const ALIGN_RIGHT_FIRST = 'glsp:' + AlignElementsAction.KIND + ':right:first';
export const ALIGN_RIGHT_FIRST_LABEL = 'Right of First Selected Element';
export const ALIGN_TOP_FIRST = 'glsp:' + AlignElementsAction.KIND + ':top:first';
export const ALIGN_TOP_FIRST_LABEL = 'Top of First Selected Element';
export const ALIGN_MIDDLE_FIRST = 'glsp:' + AlignElementsAction.KIND + ':middle:first';
export const ALIGN_MIDDLE_FIRST_LABEL = 'Middle of First Selected Element';
export const ALIGN_BOTTOM_FIRST = 'glsp:' + AlignElementsAction.KIND + ':bottom:first';
export const ALIGN_BOTTOM_FIRST_LABEL = 'Bottom of First Selected Element';
export const ALIGN_LEFT_LAST = 'glsp:' + AlignElementsAction.KIND + ':left:last';
export const ALIGN_LEFT_LAST_LABEL = 'Left of Last Selected Element';
export const ALIGN_CENTER_LAST = 'glsp:' + AlignElementsAction.KIND + ':center:last';
export const ALIGN_CENTER_LAST_LABEL = 'Center of Last Selected Element';
export const ALIGN_RIGHT_LAST = 'glsp:' + AlignElementsAction.KIND + ':right:last';
export const ALIGN_RIGHT_LAST_LABEL = 'Right of Last Selected Element';
export const ALIGN_TOP_LAST = 'glsp:' + AlignElementsAction.KIND + ':top:last';
export const ALIGN_TOP_LAST_LABEL = 'Top of Last Selected Element';
export const ALIGN_MIDDLE_LAST = 'glsp:' + AlignElementsAction.KIND + ':middle:last';
export const ALIGN_MIDDLE_LAST_LABEL = 'Middle of Last Selected Element';
export const ALIGN_BOTTOM_LAST = 'glsp:' + AlignElementsAction.KIND + ':bottom:last';
export const ALIGN_BOTTOM_LAST_LABEL = 'Bottom of Last Selected Element';
}
export namespace GLSPLayoutMenus {
export const ALIGN_MENU: MenuPath = GLSPDiagramMenus.DIAGRAM.concat('align');
export const ALIGN_HORIZONTAL_GROUP: MenuPath = ALIGN_MENU.concat('1_horizontal');
export const ALIGN_VERTICAL_GROUP: MenuPath = ALIGN_MENU.concat('2_vertical');
export const ALIGN_HORIZONTAL_FIRST_GROUP: MenuPath = ALIGN_MENU.concat('3_horizontal_first');
export const ALIGN_VERTICAL_FIRST_GROUP: MenuPath = ALIGN_MENU.concat('4_vertical_first');
export const ALIGN_HORIZONTAL_LAST_GROUP: MenuPath = ALIGN_MENU.concat('5_horizontal_last');
export const ALIGN_VERTICAL_LAST_GROUP: MenuPath = ALIGN_MENU.concat('6_vertical_last');
export const RESIZE_MENU: MenuPath = GLSPDiagramMenus.DIAGRAM.concat('resize');
export const RESIZE_WIDTH_GROUP: MenuPath = RESIZE_MENU.concat('1_width');
export const RESIZE_HEIGHT_GROUP: MenuPath = RESIZE_MENU.concat('2_height');
export const RESIZE_WIDTH_AND_HEIGHT_GROUP: MenuPath = RESIZE_MENU.concat('3_width_and_height');
}
export class GLSPLayoutMenuContribution implements MenuContribution {
registerMenus(registry: MenuModelRegistry): void {
registry.registerSubmenu(GLSPLayoutMenus.RESIZE_MENU, 'Resize');
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_WIDTH_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_WIDTH_MIN,
order: '1'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_WIDTH_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_WIDTH_MAX,
order: '2'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_WIDTH_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_WIDTH_AVG,
order: '3'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_WIDTH_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_WIDTH_FIRST,
order: '4'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_WIDTH_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_WIDTH_LAST,
order: '5'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_HEIGHT_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_HEIGHT_MIN,
order: '1'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_HEIGHT_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_HEIGHT_MAX,
order: '2'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_HEIGHT_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_HEIGHT_AVG,
order: '3'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_HEIGHT_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_HEIGHT_FIRST,
order: '5'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_HEIGHT_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_HEIGHT_LAST,
order: '4'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_WIDTH_AND_HEIGHT_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_MIN,
order: '1'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_WIDTH_AND_HEIGHT_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_MAX,
order: '2'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_WIDTH_AND_HEIGHT_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_AVG,
order: '3'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_WIDTH_AND_HEIGHT_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_FIRST,
order: '4'
});
registry.registerMenuAction(GLSPLayoutMenus.RESIZE_WIDTH_AND_HEIGHT_GROUP, {
commandId: GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_LAST,
order: '5'
});
registry.registerSubmenu(GLSPLayoutMenus.ALIGN_MENU, 'Align');
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_HORIZONTAL_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_LEFT,
order: '1'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_HORIZONTAL_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_CENTER,
order: '2'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_HORIZONTAL_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_RIGHT,
order: '3'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_VERTICAL_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_TOP,
order: '4'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_VERTICAL_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_MIDDLE,
order: '5'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_VERTICAL_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_BOTTOM,
order: '6'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_HORIZONTAL_FIRST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_LEFT_FIRST,
order: '1'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_HORIZONTAL_FIRST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_CENTER_FIRST,
order: '2'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_HORIZONTAL_FIRST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_RIGHT_FIRST,
order: '3'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_VERTICAL_FIRST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_TOP_FIRST,
order: '4'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_VERTICAL_FIRST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_MIDDLE_FIRST,
order: '5'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_VERTICAL_FIRST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_BOTTOM_FIRST,
order: '6'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_HORIZONTAL_LAST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_LEFT_LAST,
order: '1'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_HORIZONTAL_LAST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_CENTER_LAST,
order: '2'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_HORIZONTAL_LAST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_RIGHT_LAST,
order: '3'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_VERTICAL_LAST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_TOP_LAST,
order: '4'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_VERTICAL_LAST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_MIDDLE_LAST,
order: '5'
});
registry.registerMenuAction(GLSPLayoutMenus.ALIGN_VERTICAL_LAST_GROUP, {
commandId: GLSPLayoutCommands.ALIGN_BOTTOM_LAST,
order: '6'
});
}
}
export class GLSPLayoutCommandContribution implements CommandContribution {
constructor( protected readonly shell: ApplicationShell) {}
registerResize(
registry: CommandRegistry,
id: string,
label: string,
dimension: ResizeDimension,
reduceFunction: ReduceFunctionType
): void {
registry.registerCommand(
{
id: id,
category: 'Diagram',
label: 'Resize to ' + label
},
new GLSPCommandHandler(this.shell, {
actions: () => [ResizeElementsAction.create({ dimension, reduceFunction })],
isEnabled: context => !context.isReadonly && context.get().selectedElementIds.length > 1
})
);
}
registerAlign(registry: CommandRegistry, id: string, label: string, alignment: Alignment, selectionFunction: SelectFunctionType): void {
registry.registerCommand(
{
id: id,
category: 'Diagram',
label: 'Align ' + label
},
new GLSPCommandHandler(this.shell, {
actions: () => [AlignElementsAction.create({ alignment, selectionFunction })],
isEnabled: context => !context.isReadonly && context.get().selectedElementIds.length > 1
})
);
}
registerCommands(reg: CommandRegistry): void {
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_WIDTH_MIN,
GLSPLayoutCommands.RESIZE_WIDTH_MIN_LABEL,
ResizeDimension.Width,
'min'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_WIDTH_MAX,
GLSPLayoutCommands.RESIZE_WIDTH_MAX_LABEL,
ResizeDimension.Width,
'max'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_WIDTH_AVG,
GLSPLayoutCommands.RESIZE_WIDTH_AVG_LABEL,
ResizeDimension.Width,
'avg'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_WIDTH_FIRST,
GLSPLayoutCommands.RESIZE_WIDTH_FIRST_LABEL,
ResizeDimension.Width,
'first'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_WIDTH_LAST,
GLSPLayoutCommands.RESIZE_WIDTH_LAST_LABEL,
ResizeDimension.Width,
'last'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_HEIGHT_MIN,
GLSPLayoutCommands.RESIZE_HEIGHT_MIN_LABEL,
ResizeDimension.Height,
'min'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_HEIGHT_MAX,
GLSPLayoutCommands.RESIZE_HEIGHT_MAX_LABEL,
ResizeDimension.Height,
'max'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_HEIGHT_AVG,
GLSPLayoutCommands.RESIZE_HEIGHT_AVG_LABEL,
ResizeDimension.Height,
'avg'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_HEIGHT_FIRST,
GLSPLayoutCommands.RESIZE_HEIGHT_FIRST_LABEL,
ResizeDimension.Height,
'first'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_HEIGHT_LAST,
GLSPLayoutCommands.RESIZE_HEIGHT_LAST_LABEL,
ResizeDimension.Height,
'last'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_MIN,
GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_MIN_LBL,
ResizeDimension.Width_And_Height,
'min'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_MAX,
GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_MAX_LBL,
ResizeDimension.Width_And_Height,
'max'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_AVG,
GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_AVG_LBL,
ResizeDimension.Width_And_Height,
'avg'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_FIRST,
GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_FIRST_LBL,
ResizeDimension.Width_And_Height,
'first'
);
this.registerResize(
reg,
GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_LAST,
GLSPLayoutCommands.RESIZE_WIDTH_AND_HEIGHT_LAST_LBL,
ResizeDimension.Width_And_Height,
'last'
);
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_LEFT, GLSPLayoutCommands.ALIGN_LEFT_LABEL, Alignment.Left, 'all');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_CENTER, GLSPLayoutCommands.ALIGN_CENTER_LABEL, Alignment.Center, 'all');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_RIGHT, GLSPLayoutCommands.ALIGN_RIGHT_LABEL, Alignment.Right, 'all');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_TOP, GLSPLayoutCommands.ALIGN_TOP_LABEL, Alignment.Top, 'all');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_MIDDLE, GLSPLayoutCommands.ALIGN_MIDDLE_LABEL, Alignment.Middle, 'all');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_BOTTOM, GLSPLayoutCommands.ALIGN_BOTTOM_LABEL, Alignment.Bottom, 'all');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_LEFT_FIRST, GLSPLayoutCommands.ALIGN_LEFT_FIRST_LABEL, Alignment.Left, 'first');
this.registerAlign(
reg,
GLSPLayoutCommands.ALIGN_CENTER_FIRST,
GLSPLayoutCommands.ALIGN_CENTER_FIRST_LABEL,
Alignment.Center,
'first'
);
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_RIGHT_FIRST, GLSPLayoutCommands.ALIGN_RIGHT_FIRST_LABEL, Alignment.Right, 'first');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_TOP_FIRST, GLSPLayoutCommands.ALIGN_TOP_FIRST_LABEL, Alignment.Top, 'first');
this.registerAlign(
reg,
GLSPLayoutCommands.ALIGN_MIDDLE_FIRST,
GLSPLayoutCommands.ALIGN_MIDDLE_FIRST_LABEL,
Alignment.Middle,
'first'
);
this.registerAlign(
reg,
GLSPLayoutCommands.ALIGN_BOTTOM_FIRST,
GLSPLayoutCommands.ALIGN_BOTTOM_FIRST_LABEL,
Alignment.Bottom,
'first'
);
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_LEFT_LAST, GLSPLayoutCommands.ALIGN_LEFT_LAST_LABEL, Alignment.Left, 'last');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_CENTER_LAST, GLSPLayoutCommands.ALIGN_CENTER_LAST_LABEL, Alignment.Center, 'last');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_RIGHT_LAST, GLSPLayoutCommands.ALIGN_RIGHT_LAST_LABEL, Alignment.Right, 'last');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_TOP_LAST, GLSPLayoutCommands.ALIGN_TOP_LAST_LABEL, Alignment.Top, 'last');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_MIDDLE_LAST, GLSPLayoutCommands.ALIGN_MIDDLE_LAST_LABEL, Alignment.Middle, 'last');
this.registerAlign(reg, GLSPLayoutCommands.ALIGN_BOTTOM_LAST, GLSPLayoutCommands.ALIGN_BOTTOM_LAST_LABEL, Alignment.Bottom, 'last');
}
}
export class GLSPLayoutKeybindingContribution implements KeybindingContribution {
constructor( protected readonly diagramKeybindingContext: GLSPDiagramKeybindingContext) {}
registerKeybindings(registry: KeybindingRegistry): void {
registry.registerKeybinding({
command: GLSPLayoutCommands.ALIGN_LEFT,
context: this.diagramKeybindingContext.id,
keybinding: 'alt+shift+left',
when: '!glspEditorIsReadonly && glspEditorHasMultipleSelection'
});
registry.registerKeybinding({
command: GLSPLayoutCommands.ALIGN_RIGHT,
context: this.diagramKeybindingContext.id,
keybinding: 'alt+shift+right',
when: '!glspEditorIsReadonly && glspEditorHasMultipleSelection'
});
registry.registerKeybinding({
command: GLSPLayoutCommands.ALIGN_TOP,
context: this.diagramKeybindingContext.id,
keybinding: 'alt+shift+up',
when: '!glspEditorIsReadonly && glspEditorHasMultipleSelection'
});
registry.registerKeybinding({
command: GLSPLayoutCommands.ALIGN_BOTTOM,
context: this.diagramKeybindingContext.id,
keybinding: 'alt+shift+down',
when: '!glspEditorIsReadonly && glspEditorHasMultipleSelection'
});
}
}