Skip to content

Commit 25b0c7e

Browse files
committed
add fit to screen action
1 parent f8139a3 commit 25b0c7e

File tree

9 files changed

+42
-13
lines changed

9 files changed

+42
-13
lines changed

frontend/webEditor/dependencyGraph.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ stateDiagram-v2
2121
2222
commandPalette --> serialize
2323
24+
serialize --> webSocket
25+
26+
commandPalette --> fitToScreen
27+
serialize --> fitToScreen
28+
2429
%% [*] --> commonModule
2530
%% [*] --> labels
2631
%% [*] --> serialize
@@ -32,7 +37,7 @@ stateDiagram-v2
3237
%% [*] --> commandPalette
3338
3439
classDef diLess font-style:italic,stroke:#0fa
35-
class accordionUiExtension,editorTypes,utils diLess
40+
class accordionUiExtension,editorTypes,utils,fitToScreen diLess
3641
```
3742

3843
green packages do not export a module

frontend/webEditor/src/commandPalette/commandPalette.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { CommandPalette, LabeledAction, SModelRootImpl } from "sprotty";
33
import { matchesKeystroke } from "sprotty/lib/utils/keyboard";
44
import "./commandPalette.css";
55
import "sprotty/css/command-palette.css";
6-
import { FolderAction } from "./CommandPaletteProvider";
6+
import { FolderAction } from "./commandPaletteProvider";
77

88
@injectable()
99
export class WebEditorCommandPalette extends CommandPalette {

frontend/webEditor/src/commandPalette/commandPaletteProvider.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { LoadJsonFileAction } from "../serialize/loadJsonFile";
77
import { Action } from "sprotty-protocol";
88
import { LoadDfdAndDdFileAction } from "../serialize/loadDfdAndDdFile";
99
import { LoadPalladioFileAction } from "../serialize/loadPalladioFile";
10+
import { DefaultFitToScreenAction } from "../fitToScreen/action";
1011

1112
/**
1213
* Provides possible actions for the command palette.
@@ -15,7 +16,7 @@ import { LoadPalladioFileAction } from "../serialize/loadPalladioFile";
1516
export class WebEditorCommandPaletteActionProvider implements ICommandPaletteActionProvider {
1617

1718
async getActions(root: Readonly<SModelRootImpl>): Promise<(LabeledAction | FolderAction)[]> {
18-
//const fitToScreenAction = createDefaultFitToScreenAction(root);
19+
const fitToScreenAction = DefaultFitToScreenAction.create(root);
1920
const commitAction = CommitModelAction.create();
2021

2122
return [
@@ -43,7 +44,7 @@ export class WebEditorCommandPaletteActionProvider implements ICommandPaletteAct
4344
),
4445

4546
new LabeledAction("Load default diagram", [LoadDefaultDiagramAction.create(), commitAction], "clear-all"),
46-
//new LabeledAction("Fit to Screen", [fitToScreenAction], "screen-normal"),
47+
new LabeledAction("Fit to Screen", [fitToScreenAction], "screen-normal"),
4748
/*new FolderAction(
4849
"Layout diagram (Method: Lines)",
4950
[
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { SModelRootImpl } from "sprotty";
2+
import { SModelRoot, FitToScreenAction, getBasicType } from "sprotty-protocol";
3+
4+
export const FIT_TO_SCREEN_PADDING = 75;
5+
6+
export namespace DefaultFitToScreenAction {
7+
export function create(root: SModelRootImpl | SModelRoot, animate = true): FitToScreenAction {
8+
const elementIds =
9+
root.children?.filter((child) => getBasicType(child) === "node").map((child) => child.id) ?? [];
10+
11+
return FitToScreenAction.create(elementIds, {
12+
padding: FIT_TO_SCREEN_PADDING,
13+
animate,
14+
});
15+
}
16+
}

frontend/webEditor/src/serialize/loadDefaultDiagram.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import defaultDiagram from './defaultDiagram.json'
33
import { SavedDiagram } from "./SavedDiagram";
44
import { Action } from "sprotty-protocol";
55
import { inject } from "inversify";
6-
import { TYPES, ILogger } from "sprotty";
6+
import { TYPES, ILogger, ActionDispatcher } from "sprotty";
77
import { EditorModeController } from "../editorMode/EditorModeController";
88
import { LabelTypeRegistry } from "../labels/LabelTypeRegistry";
99

@@ -23,8 +23,9 @@ export class LoadDefaultDiagramCommand extends LoadJsonCommand {
2323
@inject(TYPES.ILogger) logger: ILogger,
2424
@inject(LabelTypeRegistry) labelTypeRegistry: LabelTypeRegistry,
2525
@inject(EditorModeController) editorModeController: EditorModeController,
26+
@inject(TYPES.IActionDispatcher) actionDispatcher: ActionDispatcher,
2627
) {
27-
super(logger, labelTypeRegistry, editorModeController);
28+
super(logger, labelTypeRegistry, editorModeController, actionDispatcher);
2829
}
2930

3031
protected async getFile(): Promise<FileData<SavedDiagram> | undefined> {

frontend/webEditor/src/serialize/loadDfdAndDdFile.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { FileData, LoadJsonCommand } from "./loadJson";
33
import { chooseFiles } from "./fileChooser";
44
import { inject } from "inversify";
55
import { DfdWebSocket } from "../webSocket/webSocket";
6-
import { TYPES, ILogger } from "sprotty";
6+
import { TYPES, ILogger, ActionDispatcher } from "sprotty";
77
import { EditorModeController } from "../editorMode/EditorModeController";
88
import { LabelTypeRegistry } from "../labels/LabelTypeRegistry";
99
import { SavedDiagram } from "./SavedDiagram";
@@ -25,8 +25,9 @@ export class LoadDfdAndDdFileCommand extends LoadJsonCommand {
2525
@inject(LabelTypeRegistry) labelTypeRegistry: LabelTypeRegistry,
2626
@inject(EditorModeController) editorModeController: EditorModeController,
2727
@inject(DfdWebSocket) private dfdWebSocket: DfdWebSocket,
28+
@inject(TYPES.IActionDispatcher) actionDispatcher: ActionDispatcher,
2829
) {
29-
super(logger, labelTypeRegistry, editorModeController);
30+
super(logger, labelTypeRegistry, editorModeController, actionDispatcher);
3031
}
3132

3233
protected async getFile(): Promise<FileData<SavedDiagram> | undefined> {

frontend/webEditor/src/serialize/loadJson.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import { Command, CommandExecutionContext, CommandReturn, EMPTY_ROOT, ILogger, SModelRootImpl } from "sprotty";
1+
import { ActionDispatcher, Command, CommandExecutionContext, CommandReturn, EMPTY_ROOT, ILogger, SModelRootImpl } from "sprotty";
22
import { SavedDiagram } from "./SavedDiagram";
33
import { Action, SModelElement, SModelRoot } from "sprotty-protocol";
44
import { LabelTypeRegistry } from "../labels/LabelTypeRegistry";
55
import { EditorModeController } from "../editorMode/EditorModeController";
66
import { Constraint } from "../constraint/Constraint";
77
import { EditorMode } from "../editorMode/EditorMode";
88
import { LabelType } from "../labels/LabelType";
9+
import { DefaultFitToScreenAction } from "../fitToScreen/action";
910

1011
export interface FileData<T> {
1112
fileName: string;
@@ -33,6 +34,7 @@ export abstract class LoadJsonCommand extends Command {
3334
private readonly logger: ILogger,
3435
private readonly labelTypeRegistry: LabelTypeRegistry,
3536
private editorModeController: EditorModeController,
37+
private actionDispatcher: ActionDispatcher
3638
) {
3739
super();
3840
}
@@ -75,6 +77,7 @@ export abstract class LoadJsonCommand extends Command {
7577
// TODO: load constraints
7678

7779
// TODO: post load actions like layout
80+
this.actionDispatcher.dispatch(DefaultFitToScreenAction.create(this.newRoot))
7881

7982
// TODO: load file name
8083
//this.oldFileName = currentFileName;

frontend/webEditor/src/serialize/loadJsonFile.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Action } from "sprotty-protocol";
22
import { FileData, LoadJsonCommand } from "./loadJson";
33
import { chooseFile } from "./fileChooser";
44
import { inject } from "inversify";
5-
import { TYPES, ILogger } from "sprotty";
5+
import { TYPES, ILogger, ActionDispatcher } from "sprotty";
66
import { EditorModeController } from "../editorMode/EditorModeController";
77
import { LabelTypeRegistry } from "../labels/LabelTypeRegistry";
88
import { SavedDiagram } from "./SavedDiagram";
@@ -24,8 +24,9 @@ export class LoadJsonFileCommand extends LoadJsonCommand {
2424
@inject(TYPES.ILogger) logger: ILogger,
2525
@inject(LabelTypeRegistry) labelTypeRegistry: LabelTypeRegistry,
2626
@inject(EditorModeController) editorModeController: EditorModeController,
27+
@inject(TYPES.IActionDispatcher) actionDispatcher: ActionDispatcher,
2728
) {
28-
super(logger, labelTypeRegistry, editorModeController);
29+
super(logger, labelTypeRegistry, editorModeController, actionDispatcher);
2930
}
3031

3132
protected async getFile(): Promise<FileData<SavedDiagram> | undefined> {

frontend/webEditor/src/serialize/loadPalladioFile.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { FileData, LoadJsonCommand } from "./loadJson";
33
import { chooseFiles } from "./fileChooser";
44
import { inject } from "inversify";
55
import { DfdWebSocket } from "../webSocket/webSocket";
6-
import { TYPES, ILogger } from "sprotty";
6+
import { TYPES, ILogger, ActionDispatcher } from "sprotty";
77
import { EditorModeController } from "../editorMode/EditorModeController";
88
import { LabelTypeRegistry } from "../labels/LabelTypeRegistry";
99
import { SavedDiagram } from "./SavedDiagram";
@@ -25,9 +25,10 @@ export class LoadPalladioFileCommand extends LoadJsonCommand {
2525
@inject(TYPES.ILogger) logger: ILogger,
2626
@inject(LabelTypeRegistry) labelTypeRegistry: LabelTypeRegistry,
2727
@inject(EditorModeController) editorModeController: EditorModeController,
28+
@inject(TYPES.IActionDispatcher) actionDispatcher: ActionDispatcher,
2829
@inject(DfdWebSocket) private dfdWebSocket: DfdWebSocket,
2930
) {
30-
super(logger, labelTypeRegistry, editorModeController);
31+
super(logger, labelTypeRegistry, editorModeController, actionDispatcher);
3132
}
3233

3334
protected async getFile(): Promise<FileData<SavedDiagram> | undefined> {

0 commit comments

Comments
 (0)