@eclipse-glsp/client 0.9.0-rc-01 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +642 -277
- package/README.md +4 -2
- package/css/command-palette.css +9 -5
- package/css/decoration.css +3 -2
- package/css/glsp-sprotty.css +16 -7
- package/css/tool-palette.css +44 -27
- package/lib/base/action-dispatcher.d.ts +17 -1
- package/lib/base/action-dispatcher.d.ts.map +1 -1
- package/lib/base/action-dispatcher.js +41 -61
- package/lib/base/action-dispatcher.js.map +1 -1
- package/lib/base/actions/focus-change-action.d.ts +1 -1
- package/lib/base/actions/focus-change-action.d.ts.map +1 -1
- package/lib/base/actions/focus-change-action.js +4 -5
- package/lib/base/actions/focus-change-action.js.map +1 -1
- package/lib/base/{args.d.ts → argumentable.d.ts} +3 -5
- package/lib/base/argumentable.d.ts.map +1 -0
- package/lib/base/{args.js → argumentable.js} +1 -1
- package/lib/base/argumentable.js.map +1 -0
- package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
- package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +3 -3
- package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.js +119 -153
- package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
- package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
- package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
- package/lib/base/auto-complete/validation-decorator.js +44 -65
- package/lib/base/auto-complete/validation-decorator.js.map +1 -1
- package/lib/base/command-stack.d.ts.map +1 -1
- package/lib/base/command-stack.js +19 -37
- package/lib/base/command-stack.js.map +1 -1
- package/lib/base/container-modules.d.ts +40 -0
- package/lib/base/container-modules.d.ts.map +1 -0
- package/lib/base/container-modules.js +100 -0
- package/lib/base/container-modules.js.map +1 -0
- package/lib/base/di.config.d.ts +12 -2
- package/lib/base/di.config.d.ts.map +1 -1
- package/lib/base/di.config.js +43 -27
- package/lib/base/di.config.js.map +1 -1
- package/lib/base/drag-aware-mouse-listener.d.ts +3 -2
- package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
- package/lib/base/drag-aware-mouse-listener.js +23 -62
- package/lib/base/drag-aware-mouse-listener.js.map +1 -1
- package/lib/base/{editor-context.d.ts → editor-context-service.d.ts} +18 -22
- package/lib/base/editor-context-service.d.ts.map +1 -0
- package/lib/base/editor-context-service.js +109 -0
- package/lib/base/editor-context-service.js.map +1 -0
- package/lib/base/focus-tracker.d.ts +17 -1
- package/lib/base/focus-tracker.d.ts.map +1 -1
- package/lib/base/focus-tracker.js +19 -39
- package/lib/base/focus-tracker.js.map +1 -1
- package/lib/base/model/model-registry.js +10 -28
- package/lib/base/model/model-registry.js.map +1 -1
- package/lib/base/model/update-model-command.d.ts +19 -5
- package/lib/base/model/update-model-command.d.ts.map +1 -1
- package/lib/base/model/update-model-command.js +69 -94
- package/lib/base/model/update-model-command.js.map +1 -1
- package/lib/base/model-initialization-constraint.d.ts +16 -1
- package/lib/base/model-initialization-constraint.d.ts.map +1 -1
- package/lib/base/model-initialization-constraint.js +34 -54
- package/lib/base/model-initialization-constraint.js.map +1 -1
- package/lib/base/selection-clearing-mouse-listener.js +10 -28
- package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
- package/lib/base/source-uri-aware.js +2 -5
- package/lib/base/source-uri-aware.js.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.d.ts +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.js +58 -140
- package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
- package/lib/base/types.d.ts +3 -1
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +4 -2
- package/lib/base/types.js.map +1 -1
- package/lib/base/view/view-registry.js +10 -28
- package/lib/base/view/view-registry.js.map +1 -1
- package/lib/features/change-bounds/model.d.ts +3 -1
- package/lib/features/change-bounds/model.d.ts.map +1 -1
- package/lib/features/change-bounds/model.js +20 -31
- package/lib/features/change-bounds/model.js.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts +17 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.js +28 -42
- package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
- package/lib/features/change-bounds/snap.d.ts +17 -1
- package/lib/features/change-bounds/snap.d.ts.map +1 -1
- package/lib/features/change-bounds/snap.js +13 -39
- package/lib/features/change-bounds/snap.js.map +1 -1
- package/lib/features/command-palette/command-palette-tool.js +30 -38
- package/lib/features/command-palette/command-palette-tool.js.map +1 -1
- package/lib/features/command-palette/di.config.js +6 -6
- package/lib/features/command-palette/di.config.js.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.d.ts +18 -2
- package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.js +28 -33
- package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.js +20 -68
- package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
- package/lib/features/context-menu/di.config.d.ts +1 -1
- package/lib/features/context-menu/di.config.d.ts.map +1 -1
- package/lib/features/context-menu/di.config.js +8 -8
- package/lib/features/context-menu/di.config.js.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +29 -67
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.d.ts +18 -2
- package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.js +30 -31
- package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts +22 -2
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
- package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.d.ts +19 -2
- package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.js +70 -70
- package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
- package/lib/features/copy-paste/di.config.d.ts +1 -1
- package/lib/features/copy-paste/di.config.d.ts.map +1 -1
- package/lib/features/copy-paste/di.config.js +11 -11
- package/lib/features/copy-paste/di.config.js.map +1 -1
- package/lib/features/decoration/decoration-placer.d.ts +17 -1
- package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
- package/lib/features/decoration/decoration-placer.js +12 -46
- package/lib/features/decoration/decoration-placer.js.map +1 -1
- package/lib/features/decoration/di.config.js +4 -4
- package/lib/features/decoration/di.config.js.map +1 -1
- package/lib/features/edit-label/di.config.js +7 -7
- package/lib/features/edit-label/di.config.js.map +1 -1
- package/lib/features/edit-label/edit-label-tool.js +20 -43
- package/lib/features/edit-label/edit-label-tool.js.map +1 -1
- package/lib/features/edit-label/edit-label-validator.d.ts +16 -1
- package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
- package/lib/features/edit-label/edit-label-validator.js +40 -62
- package/lib/features/edit-label/edit-label-validator.js.map +1 -1
- package/lib/features/hints/di.config.d.ts +0 -15
- package/lib/features/hints/di.config.d.ts.map +1 -1
- package/lib/features/hints/di.config.js +9 -9
- package/lib/features/hints/di.config.js.map +1 -1
- package/lib/features/hints/model.d.ts +3 -2
- package/lib/features/hints/model.d.ts.map +1 -1
- package/lib/features/hints/model.js.map +1 -1
- package/lib/features/hints/type-hints.d.ts +17 -45
- package/lib/features/hints/type-hints.d.ts.map +1 -1
- package/lib/features/hints/type-hints.js +81 -140
- package/lib/features/hints/type-hints.js.map +1 -1
- package/lib/features/hover/di.config.d.ts +1 -1
- package/lib/features/hover/di.config.d.ts.map +1 -1
- package/lib/features/hover/di.config.js +8 -8
- package/lib/features/hover/di.config.js.map +1 -1
- package/lib/features/hover/hover.d.ts +17 -1
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +37 -77
- package/lib/features/hover/hover.js.map +1 -1
- package/lib/features/layout/di.config.d.ts +1 -1
- package/lib/features/layout/di.config.d.ts.map +1 -1
- package/lib/features/layout/di.config.js +11 -7
- package/lib/features/layout/di.config.js.map +1 -1
- package/lib/features/layout/freeform-layout.d.ts +16 -0
- package/lib/features/layout/freeform-layout.d.ts.map +1 -0
- package/lib/features/layout/freeform-layout.js +107 -0
- package/lib/features/layout/freeform-layout.js.map +1 -0
- package/lib/features/layout/layout-commands.d.ts +19 -3
- package/lib/features/layout/layout-commands.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.js +189 -265
- package/lib/features/layout/layout-commands.js.map +1 -1
- package/lib/features/layout/layout-commands.spec.d.ts +0 -15
- package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.spec.js +95 -89
- package/lib/features/layout/layout-commands.spec.js.map +1 -1
- package/lib/features/layout/vbox-layout.d.ts +25 -0
- package/lib/features/layout/vbox-layout.d.ts.map +1 -0
- package/lib/features/layout/vbox-layout.js +188 -0
- package/lib/features/layout/vbox-layout.js.map +1 -0
- package/lib/features/model-source-watcher/di.config.d.ts +0 -15
- package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
- package/lib/features/model-source-watcher/di.config.js +7 -7
- package/lib/features/model-source-watcher/di.config.js.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -46
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
- package/lib/features/mouse-tool/di.config.js +5 -5
- package/lib/features/mouse-tool/di.config.js.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts +2 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.js +70 -215
- package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
- package/lib/features/navigation/di.config.d.ts +0 -15
- package/lib/features/navigation/di.config.d.ts.map +1 -1
- package/lib/features/navigation/di.config.js +11 -10
- package/lib/features/navigation/di.config.js.map +1 -1
- package/lib/features/navigation/navigation-action-handler.d.ts +19 -38
- package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
- package/lib/features/navigation/navigation-action-handler.js +118 -254
- package/lib/features/navigation/navigation-action-handler.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
- package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.js +46 -188
- package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts +0 -15
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.js +26 -26
- package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
- package/lib/features/rank/model.d.ts +1 -1
- package/lib/features/rank/model.js +2 -2
- package/lib/features/rank/model.js.map +1 -1
- package/lib/features/reconnect/model.d.ts +1 -1
- package/lib/features/reconnect/model.d.ts.map +1 -1
- package/lib/features/reconnect/model.js +9 -27
- package/lib/features/reconnect/model.js.map +1 -1
- package/lib/features/save/di.config.d.ts +1 -1
- package/lib/features/save/di.config.d.ts.map +1 -1
- package/lib/features/save/di.config.js +6 -6
- package/lib/features/save/di.config.js.map +1 -1
- package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -10
- package/lib/features/save/save-keylistener.d.ts.map +1 -0
- package/lib/features/{undo-redo/model.d.ts → save/save-keylistener.js} +16 -12
- package/lib/features/save/save-keylistener.js.map +1 -0
- package/lib/features/select/di.config.js +11 -11
- package/lib/features/select/di.config.js.map +1 -1
- package/lib/features/select/select-feedback-action.d.ts.map +1 -1
- package/lib/features/select/select-feedback-action.js +45 -71
- package/lib/features/select/select-feedback-action.js.map +1 -1
- package/lib/features/select/select-mouse-listener.js +7 -23
- package/lib/features/select/select-mouse-listener.js.map +1 -1
- package/lib/features/select/selection-service.d.ts +17 -1
- package/lib/features/select/selection-service.d.ts.map +1 -1
- package/lib/features/select/selection-service.js +134 -236
- package/lib/features/select/selection-service.js.map +1 -1
- package/lib/features/select/selection-service.spec.js +96 -139
- package/lib/features/select/selection-service.spec.js.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +19 -2
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js +102 -142
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts +17 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +69 -118
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/css-feedback.d.ts +20 -2
- package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/css-feedback.js +37 -81
- package/lib/features/tool-feedback/css-feedback.js.map +1 -1
- package/lib/features/tool-feedback/di.config.d.ts +1 -1
- package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
- package/lib/features/tool-feedback/di.config.js +27 -27
- package/lib/features/tool-feedback/di.config.js.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +18 -2
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js +147 -208
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +19 -3
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.js +35 -72
- package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +17 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -84
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/model.d.ts +1 -1
- package/lib/features/tool-feedback/model.js +11 -27
- package/lib/features/tool-feedback/model.js.map +1 -1
- package/lib/features/tool-feedback/view.d.ts +21 -5
- package/lib/features/tool-feedback/view.d.ts.map +1 -1
- package/lib/features/tool-feedback/view.js +29 -51
- package/lib/features/tool-feedback/view.js.map +1 -1
- package/lib/features/tool-palette/di.config.d.ts +1 -1
- package/lib/features/tool-palette/di.config.d.ts.map +1 -1
- package/lib/features/tool-palette/di.config.js +6 -6
- package/lib/features/tool-palette/di.config.js.map +1 -1
- package/lib/features/tool-palette/palette-item.d.ts +2 -3
- package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
- package/lib/features/tool-palette/palette-item.js +6 -6
- package/lib/features/tool-palette/palette-item.js.map +1 -1
- package/lib/features/tool-palette/tool-palette.d.ts +19 -3
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +199 -269
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/tools/base-glsp-tool.d.ts +18 -2
- package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
- package/lib/features/tools/base-glsp-tool.js +37 -59
- package/lib/features/tools/base-glsp-tool.js.map +1 -1
- package/lib/features/tools/change-bounds-tool.d.ts +20 -3
- package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
- package/lib/features/tools/change-bounds-tool.js +192 -241
- package/lib/features/tools/change-bounds-tool.js.map +1 -1
- package/lib/features/tools/delete-tool.d.ts +17 -1
- package/lib/features/tools/delete-tool.d.ts.map +1 -1
- package/lib/features/tools/delete-tool.js +71 -104
- package/lib/features/tools/delete-tool.js.map +1 -1
- package/lib/features/tools/di.config.d.ts +0 -15
- package/lib/features/tools/di.config.d.ts.map +1 -1
- package/lib/features/tools/di.config.js +19 -19
- package/lib/features/tools/di.config.js.map +1 -1
- package/lib/features/tools/edge-creation-tool.d.ts +17 -2
- package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-creation-tool.js +62 -87
- package/lib/features/tools/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/edge-edit-tool.d.ts +17 -1
- package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-edit-tool.js +112 -183
- package/lib/features/tools/edge-edit-tool.js.map +1 -1
- package/lib/features/tools/marquee-behavior.d.ts +42 -0
- package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
- package/lib/features/tools/marquee-behavior.js +128 -0
- package/lib/features/tools/marquee-behavior.js.map +1 -0
- package/{src/features/undo-redo/model.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -12
- package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
- package/lib/features/tools/marquee-behavior.spec.js +165 -0
- package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
- package/lib/features/tools/marquee-mouse-tool.d.ts +24 -13
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.js +86 -195
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
- package/lib/features/tools/marquee-tool.d.ts +17 -1
- package/lib/features/tools/marquee-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-tool.js +32 -73
- package/lib/features/tools/marquee-tool.js.map +1 -1
- package/lib/features/tools/model.js +4 -22
- package/lib/features/tools/model.js.map +1 -1
- package/lib/features/tools/node-creation-tool.d.ts +17 -2
- package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/node-creation-tool.js +60 -90
- package/lib/features/tools/node-creation-tool.js.map +1 -1
- package/lib/features/tools/view.d.ts +1 -1
- package/lib/features/tools/view.d.ts.map +1 -1
- package/lib/features/tools/view.js +12 -31
- package/lib/features/tools/view.js.map +1 -1
- package/lib/features/validation/di.config.js +12 -12
- package/lib/features/validation/di.config.js.map +1 -1
- package/lib/features/validation/issue-marker.d.ts +2 -2
- package/lib/features/validation/issue-marker.d.ts.map +1 -1
- package/lib/features/validation/issue-marker.js +17 -55
- package/lib/features/validation/issue-marker.js.map +1 -1
- package/lib/features/validation/marker-navigator.d.ts +17 -1
- package/lib/features/validation/marker-navigator.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.js +131 -164
- package/lib/features/validation/marker-navigator.js.map +1 -1
- package/lib/features/validation/marker-navigator.spec.d.ts +0 -15
- package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.spec.js +83 -77
- package/lib/features/validation/marker-navigator.spec.js.map +1 -1
- package/lib/features/validation/validate.d.ts +18 -29
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +147 -300
- package/lib/features/validation/validate.js.map +1 -1
- package/lib/features/viewport/di.config.js +10 -10
- package/lib/features/viewport/di.config.js.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +18 -2
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -47
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
- package/lib/index.d.ts +9 -15
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +29 -34
- package/lib/index.js.map +1 -1
- package/lib/lib/model.js +11 -27
- package/lib/lib/model.js.map +1 -1
- package/lib/model-source/glsp-diagram-server.d.ts +3 -5
- package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
- package/lib/model-source/glsp-diagram-server.js +60 -121
- package/lib/model-source/glsp-diagram-server.js.map +1 -1
- package/lib/protocol-reexport.d.ts +45 -0
- package/lib/protocol-reexport.d.ts.map +1 -0
- package/lib/protocol-reexport.js +75 -0
- package/lib/protocol-reexport.js.map +1 -0
- package/lib/utils/argument-utils.d.ts +3 -3
- package/lib/utils/argument-utils.d.ts.map +1 -1
- package/lib/utils/argument-utils.js +32 -97
- package/lib/utils/argument-utils.js.map +1 -1
- package/lib/utils/html-utils.js +2 -2
- package/lib/utils/html-utils.js.map +1 -1
- package/lib/utils/layout-utils.d.ts +3 -2
- package/lib/utils/layout-utils.d.ts.map +1 -1
- package/lib/utils/layout-utils.js +5 -5
- package/lib/utils/layout-utils.js.map +1 -1
- package/lib/utils/marker.d.ts +0 -38
- package/lib/utils/marker.d.ts.map +1 -1
- package/lib/utils/marker.js +14 -61
- package/lib/utils/marker.js.map +1 -1
- package/lib/utils/smodel-util.d.ts +4 -4
- package/lib/utils/smodel-util.d.ts.map +1 -1
- package/lib/utils/smodel-util.js +16 -65
- package/lib/utils/smodel-util.js.map +1 -1
- package/lib/utils/viewpoint-util.d.ts +3 -2
- package/lib/utils/viewpoint-util.d.ts.map +1 -1
- package/lib/utils/viewpoint-util.js +15 -30
- package/lib/utils/viewpoint-util.js.map +1 -1
- package/lib/views/base-view-module.d.ts +0 -15
- package/lib/views/base-view-module.d.ts.map +1 -1
- package/lib/views/base-view-module.js +28 -28
- package/lib/views/base-view-module.js.map +1 -1
- package/lib/views/compartments.d.ts +6 -0
- package/lib/views/compartments.d.ts.map +1 -0
- package/lib/views/compartments.js +43 -0
- package/lib/views/compartments.js.map +1 -0
- package/lib/views/glsp-edge-view.d.ts +18 -3
- package/lib/views/glsp-edge-view.d.ts.map +1 -1
- package/lib/views/glsp-edge-view.js +32 -77
- package/lib/views/glsp-edge-view.js.map +1 -1
- package/lib/views/index.d.ts +1 -1
- package/lib/views/index.d.ts.map +1 -1
- package/lib/views/index.js +1 -1
- package/lib/views/index.js.map +1 -1
- package/lib/views/issue-marker-view.d.ts +2 -1
- package/lib/views/issue-marker-view.d.ts.map +1 -1
- package/lib/views/issue-marker-view.js +36 -50
- package/lib/views/issue-marker-view.js.map +1 -1
- package/lib/views/rounded-corner-view.d.ts +2 -3
- package/lib/views/rounded-corner-view.d.ts.map +1 -1
- package/lib/views/rounded-corner-view.js +40 -70
- package/lib/views/rounded-corner-view.js.map +1 -1
- package/lib/views/rounded-corner.d.ts +2 -1
- package/lib/views/rounded-corner.d.ts.map +1 -1
- package/lib/views/rounded-corner.js +44 -65
- package/lib/views/rounded-corner.js.map +1 -1
- package/package.json +12 -19
- package/src/base/action-dispatcher.ts +3 -4
- package/src/base/actions/focus-change-action.ts +2 -2
- package/src/base/{args.ts → argumentable.ts} +2 -3
- package/src/base/auto-complete/auto-complete-actions.ts +1 -1
- package/src/base/auto-complete/auto-complete-widget.ts +37 -25
- package/src/base/auto-complete/validation-decorator.ts +12 -11
- package/src/base/command-stack.ts +2 -5
- package/src/base/container-modules.ts +112 -0
- package/src/base/di.config.ts +33 -18
- package/src/base/drag-aware-mouse-listener.ts +3 -4
- package/src/base/{editor-context.ts → editor-context-service.ts} +4 -31
- package/src/base/focus-tracker.ts +2 -4
- package/src/base/model/update-model-command.ts +8 -16
- package/src/base/model-initialization-constraint.ts +3 -2
- package/src/base/tool-manager/glsp-tool-manager.ts +3 -5
- package/src/base/types.ts +4 -2
- package/src/features/change-bounds/model.ts +15 -5
- package/src/features/change-bounds/movement-restrictor.ts +17 -9
- package/src/features/change-bounds/snap.ts +3 -2
- package/src/features/command-palette/server-command-palette-provider.ts +11 -9
- package/src/features/context-menu/delete-element-context-menu.ts +3 -4
- package/src/features/context-menu/di.config.ts +11 -9
- package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +4 -3
- package/src/features/context-menu/server-context-menu-provider.ts +10 -7
- package/src/features/copy-paste/copy-paste-context-menu.ts +59 -30
- package/src/features/copy-paste/copy-paste-handler.ts +18 -10
- package/src/features/copy-paste/di.config.ts +2 -3
- package/src/features/decoration/decoration-placer.ts +3 -13
- package/src/features/edit-label/edit-label-validator.ts +11 -12
- package/src/features/hints/di.config.ts +2 -3
- package/src/features/hints/model.ts +4 -3
- package/src/features/hints/type-hints.ts +23 -90
- package/src/features/hover/di.config.ts +1 -2
- package/src/features/hover/hover.ts +2 -7
- package/src/features/layout/di.config.ts +8 -4
- package/src/features/layout/freeform-layout.ts +133 -0
- package/src/features/layout/layout-commands.spec.ts +82 -64
- package/src/features/layout/layout-commands.ts +43 -34
- package/src/features/layout/vbox-layout.ts +256 -0
- package/src/features/model-source-watcher/di.config.ts +3 -4
- package/src/features/model-source-watcher/model-source-changed-action-handler.ts +11 -7
- package/src/features/mouse-tool/mouse-tool.ts +33 -23
- package/src/features/navigation/di.config.ts +4 -10
- package/src/features/navigation/navigation-action-handler.ts +33 -69
- package/src/features/navigation/navigation-target-resolver.spec.ts +3 -7
- package/src/features/navigation/navigation-target-resolver.ts +13 -91
- package/src/features/rank/model.ts +2 -2
- package/src/features/reconnect/model.ts +2 -3
- package/src/features/save/di.config.ts +2 -3
- package/src/features/save/{save.ts → save-keylistener.ts} +3 -11
- package/src/features/select/select-feedback-action.ts +4 -6
- package/src/features/select/selection-service.spec.ts +11 -6
- package/src/features/select/selection-service.ts +14 -10
- package/src/features/tool-feedback/change-bounds-tool-feedback.ts +26 -20
- package/src/features/tool-feedback/creation-tool-feedback.ts +17 -10
- package/src/features/tool-feedback/css-feedback.ts +9 -6
- package/src/features/tool-feedback/di.config.ts +2 -5
- package/src/features/tool-feedback/edge-edit-tool-feedback.ts +19 -18
- package/src/features/tool-feedback/feedback-action-dispatcher.ts +8 -9
- package/src/features/tool-feedback/marquee-tool-feedback.ts +4 -5
- package/src/features/tool-feedback/model.ts +1 -2
- package/src/features/tool-feedback/view.tsx +17 -11
- package/src/features/tool-palette/di.config.ts +2 -4
- package/src/features/tool-palette/palette-item.ts +4 -6
- package/src/features/tool-palette/tool-palette.ts +44 -40
- package/src/features/tools/base-glsp-tool.ts +4 -4
- package/src/features/tools/change-bounds-tool.ts +64 -34
- package/src/features/tools/delete-tool.ts +9 -6
- package/src/features/tools/di.config.ts +2 -3
- package/src/features/tools/edge-creation-tool.ts +5 -10
- package/src/features/tools/edge-edit-tool.ts +10 -20
- package/src/features/tools/marquee-behavior.spec.ts +175 -0
- package/src/features/tools/marquee-behavior.ts +158 -0
- package/src/features/tools/marquee-mouse-tool.ts +43 -134
- package/src/features/tools/marquee-tool.ts +2 -3
- package/src/features/tools/node-creation-tool.ts +4 -11
- package/src/features/tools/view.tsx +17 -12
- package/src/features/validation/issue-marker.ts +2 -3
- package/src/features/validation/marker-navigator.spec.ts +18 -14
- package/src/features/validation/marker-navigator.ts +24 -12
- package/src/features/validation/validate.ts +7 -40
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +3 -12
- package/src/index.ts +30 -19
- package/src/model-source/glsp-diagram-server.ts +12 -28
- package/src/protocol-reexport.ts +64 -0
- package/src/utils/argument-utils.ts +14 -11
- package/src/utils/layout-utils.ts +13 -7
- package/src/utils/marker.ts +2 -26
- package/src/utils/smodel-util.ts +15 -11
- package/src/utils/viewpoint-util.ts +4 -4
- package/src/views/base-view-module.ts +1 -2
- package/src/{base/actions/edit-mode-action.ts → views/compartments.tsx} +18 -14
- package/src/views/glsp-edge-view.tsx +21 -14
- package/src/views/index.ts +1 -1
- package/src/views/issue-marker-view.tsx +28 -19
- package/src/views/rounded-corner-view.tsx +38 -25
- package/src/views/rounded-corner.ts +5 -6
- package/lib/base/actions/context-actions.d.ts +0 -36
- package/lib/base/actions/context-actions.d.ts.map +0 -1
- package/lib/base/actions/context-actions.js +0 -51
- package/lib/base/actions/context-actions.js.map +0 -1
- package/lib/base/actions/edit-mode-action.d.ts +0 -13
- package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
- package/lib/base/actions/edit-mode-action.js +0 -56
- package/lib/base/actions/edit-mode-action.js.map +0 -1
- package/lib/base/actions/edit-validation-actions.d.ts +0 -78
- package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
- package/lib/base/actions/edit-validation-actions.js +0 -83
- package/lib/base/actions/edit-validation-actions.js.map +0 -1
- package/lib/base/actions/protocol-actions.d.ts +0 -41
- package/lib/base/actions/protocol-actions.d.ts.map +0 -1
- package/lib/base/actions/protocol-actions.js +0 -151
- package/lib/base/actions/protocol-actions.js.map +0 -1
- package/lib/base/args.d.ts.map +0 -1
- package/lib/base/args.js.map +0 -1
- package/lib/base/editor-context.d.ts.map +0 -1
- package/lib/base/editor-context.js +0 -174
- package/lib/base/editor-context.js.map +0 -1
- package/lib/base/operations/operation.d.ts +0 -135
- package/lib/base/operations/operation.d.ts.map +0 -1
- package/lib/base/operations/operation.js +0 -231
- package/lib/base/operations/operation.js.map +0 -1
- package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
- package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
- package/lib/features/copy-paste/copy-paste-actions.js +0 -68
- package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
- package/lib/features/hints/request-type-hints-action.d.ts +0 -32
- package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
- package/lib/features/hints/request-type-hints-action.js +0 -30
- package/lib/features/hints/request-type-hints-action.js.map +0 -1
- package/lib/features/model-source-watcher/model-source-changed-action.d.ts +0 -24
- package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
- package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
- package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
- package/lib/features/save/save.d.ts.map +0 -1
- package/lib/features/save/save.js +0 -62
- package/lib/features/save/save.js.map +0 -1
- package/lib/features/undo-redo/model.d.ts.map +0 -1
- package/lib/features/undo-redo/model.js +0 -22
- package/lib/features/undo-redo/model.js.map +0 -1
- package/lib/model-source/glsp-server-status.d.ts +0 -30
- package/lib/model-source/glsp-server-status.d.ts.map +0 -1
- package/lib/model-source/glsp-server-status.js +0 -61
- package/lib/model-source/glsp-server-status.js.map +0 -1
- package/lib/utils/array-utils.d.ts +0 -28
- package/lib/utils/array-utils.d.ts.map +0 -1
- package/lib/utils/array-utils.js +0 -61
- package/lib/utils/array-utils.js.map +0 -1
- package/lib/views/default-types.d.ts +0 -37
- package/lib/views/default-types.d.ts.map +0 -1
- package/lib/views/default-types.js +0 -47
- package/lib/views/default-types.js.map +0 -1
- package/src/base/actions/context-actions.ts +0 -43
- package/src/base/actions/edit-validation-actions.ts +0 -103
- package/src/base/actions/protocol-actions.ts +0 -82
- package/src/base/operations/operation.ts +0 -178
- package/src/features/copy-paste/copy-paste-actions.ts +0 -60
- package/src/features/hints/request-type-hints-action.ts +0 -36
- package/src/features/model-source-watcher/model-source-changed-action.ts +0 -26
- package/src/model-source/glsp-server-status.ts +0 -38
- package/src/utils/array-utils.ts +0 -55
- package/src/views/default-types.ts +0 -48
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2019-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,13 +13,12 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Action, ChangeBoundsOperation, ElementAndBounds } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable, optional } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
Command,
|
|
20
20
|
CommandExecutionContext,
|
|
21
21
|
CommandReturn,
|
|
22
|
-
ElementAndBounds,
|
|
23
22
|
ElementMove,
|
|
24
23
|
IActionDispatcher,
|
|
25
24
|
MoveAction,
|
|
@@ -27,24 +26,17 @@ import {
|
|
|
27
26
|
SModelElement,
|
|
28
27
|
TYPES
|
|
29
28
|
} from 'sprotty';
|
|
30
|
-
|
|
31
|
-
import { ChangeBoundsOperation } from '../../base/operations/operation';
|
|
32
29
|
import { GLSP_TYPES } from '../../base/types';
|
|
33
|
-
import {
|
|
34
|
-
toValidElementAndBounds,
|
|
35
|
-
toValidElementMove,
|
|
36
|
-
WriteableElementAndBounds,
|
|
37
|
-
WriteableElementMove
|
|
38
|
-
} from '../../utils/layout-utils';
|
|
30
|
+
import { toValidElementAndBounds, toValidElementMove, WriteableElementAndBounds, WriteableElementMove } from '../../utils/layout-utils';
|
|
39
31
|
import { BoundsAwareModelElement } from '../../utils/smodel-util';
|
|
40
32
|
import { isBoundsAwareMoveable, isResizable } from '../change-bounds/model';
|
|
41
33
|
import { IMovementRestrictor } from '../change-bounds/movement-restrictor';
|
|
42
34
|
import { SelectionService } from '../select/selection-service';
|
|
43
35
|
|
|
36
|
+
// eslint-disable-next-line no-shadow
|
|
44
37
|
export enum ResizeDimension {
|
|
45
38
|
Width,
|
|
46
39
|
Height,
|
|
47
|
-
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
48
40
|
Width_And_Height
|
|
49
41
|
}
|
|
50
42
|
|
|
@@ -84,10 +76,11 @@ export class ResizeElementsAction implements Action {
|
|
|
84
76
|
* Function to reduce the dimension to a target dimension value, see Reduce.* for potential functions.
|
|
85
77
|
*/
|
|
86
78
|
public readonly reductionFunction: (...values: number[]) => number,
|
|
87
|
-
public readonly kind: string = ResizeElementsCommand.KIND
|
|
88
|
-
}
|
|
79
|
+
public readonly kind: string = ResizeElementsCommand.KIND
|
|
80
|
+
) {}
|
|
89
81
|
}
|
|
90
82
|
|
|
83
|
+
// eslint-disable-next-line no-shadow
|
|
91
84
|
export enum Alignment {
|
|
92
85
|
Left,
|
|
93
86
|
Center,
|
|
@@ -125,16 +118,18 @@ export class AlignElementsAction implements Action {
|
|
|
125
118
|
* Function to selected elements that are considered during alignment calculation, see Select.* for potential functions.
|
|
126
119
|
*/
|
|
127
120
|
public readonly selectionFunction: (elements: BoundsAwareModelElement[]) => BoundsAwareModelElement[] = Select.all,
|
|
128
|
-
public readonly kind = AlignElementsCommand.KIND
|
|
129
|
-
}
|
|
121
|
+
public readonly kind = AlignElementsCommand.KIND
|
|
122
|
+
) {}
|
|
130
123
|
}
|
|
131
124
|
|
|
132
125
|
@injectable()
|
|
133
126
|
abstract class LayoutElementsCommand extends Command {
|
|
134
|
-
constructor(
|
|
127
|
+
constructor(
|
|
128
|
+
@inject(TYPES.Action) protected action: ResizeElementsAction | AlignElementsAction,
|
|
135
129
|
@inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher,
|
|
136
130
|
@inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService,
|
|
137
|
-
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
131
|
+
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
132
|
+
) {
|
|
138
133
|
super();
|
|
139
134
|
}
|
|
140
135
|
|
|
@@ -170,10 +165,12 @@ abstract class LayoutElementsCommand extends Command {
|
|
|
170
165
|
export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
171
166
|
static readonly KIND = 'layout:resize';
|
|
172
167
|
|
|
173
|
-
constructor(
|
|
168
|
+
constructor(
|
|
169
|
+
@inject(TYPES.Action) protected action: ResizeElementsAction,
|
|
174
170
|
@inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher,
|
|
175
171
|
@inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService,
|
|
176
|
-
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
172
|
+
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
173
|
+
) {
|
|
177
174
|
super(action, actionDispatcher, selectionService, movementRestrictor);
|
|
178
175
|
}
|
|
179
176
|
|
|
@@ -233,7 +230,10 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
|
233
230
|
});
|
|
234
231
|
}
|
|
235
232
|
|
|
236
|
-
dispatchResizeActions(
|
|
233
|
+
dispatchResizeActions(
|
|
234
|
+
elements: BoundsAwareModelElement[],
|
|
235
|
+
change: (element: BoundsAwareModelElement, bounds: WriteableElementAndBounds) => void
|
|
236
|
+
): void {
|
|
237
237
|
const elementAndBounds: ElementAndBounds[] = []; // client- and server-side resize
|
|
238
238
|
elements.forEach(element => {
|
|
239
239
|
const elementChange = this.createElementAndBounds(element, change);
|
|
@@ -245,9 +245,10 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
|
245
245
|
this.dispatchActions([new SetBoundsAction(elementAndBounds), new ChangeBoundsOperation(elementAndBounds)]);
|
|
246
246
|
}
|
|
247
247
|
|
|
248
|
-
createElementAndBounds(
|
|
249
|
-
|
|
250
|
-
|
|
248
|
+
createElementAndBounds(
|
|
249
|
+
element: BoundsAwareModelElement,
|
|
250
|
+
change: (_element: BoundsAwareModelElement, _bounds: WriteableElementAndBounds) => void
|
|
251
|
+
): WriteableElementAndBounds | undefined {
|
|
251
252
|
const bounds: WriteableElementAndBounds = {
|
|
252
253
|
elementId: element.id,
|
|
253
254
|
newPosition: {
|
|
@@ -278,10 +279,12 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
|
278
279
|
export class AlignElementsCommand extends LayoutElementsCommand {
|
|
279
280
|
static readonly KIND = 'layout:align';
|
|
280
281
|
|
|
281
|
-
constructor(
|
|
282
|
+
constructor(
|
|
283
|
+
@inject(TYPES.Action) protected action: AlignElementsAction,
|
|
282
284
|
@inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher,
|
|
283
285
|
@inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService,
|
|
284
|
-
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
286
|
+
@inject(GLSP_TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
287
|
+
) {
|
|
285
288
|
super(action, actionDispatcher, selectionService, movementRestrictor);
|
|
286
289
|
}
|
|
287
290
|
|
|
@@ -319,7 +322,7 @@ export class AlignElementsCommand extends LayoutElementsCommand {
|
|
|
319
322
|
alignLeft(elements: BoundsAwareModelElement[]): void {
|
|
320
323
|
const calculationElements = this.action.selectionFunction(elements);
|
|
321
324
|
const minX = calculationElements.map(element => element.bounds.x).reduce((a, b) => Math.min(a, b));
|
|
322
|
-
this.dispatchAlignActions(elements, (_, move) => move.toPosition.x = minX);
|
|
325
|
+
this.dispatchAlignActions(elements, (_, move) => (move.toPosition.x = minX));
|
|
323
326
|
}
|
|
324
327
|
|
|
325
328
|
alignCenter(elements: BoundsAwareModelElement[]): void {
|
|
@@ -328,19 +331,19 @@ export class AlignElementsCommand extends LayoutElementsCommand {
|
|
|
328
331
|
const maxX = calculationElements.map(element => element.bounds.x + element.bounds.width).reduce((a, b) => Math.max(a, b));
|
|
329
332
|
const diffX = maxX - minX;
|
|
330
333
|
const centerX = minX + 0.5 * diffX;
|
|
331
|
-
this.dispatchAlignActions(elements, (element, move) => move.toPosition.x = centerX - 0.5 * element.bounds.width);
|
|
334
|
+
this.dispatchAlignActions(elements, (element, move) => (move.toPosition.x = centerX - 0.5 * element.bounds.width));
|
|
332
335
|
}
|
|
333
336
|
|
|
334
337
|
alignRight(elements: BoundsAwareModelElement[]): void {
|
|
335
338
|
const calculationElements = this.action.selectionFunction(elements);
|
|
336
339
|
const maxX = calculationElements.map(element => element.bounds.x + element.bounds.width).reduce((a, b) => Math.max(a, b));
|
|
337
|
-
this.dispatchAlignActions(elements, (element, move) => move.toPosition.x = maxX - element.bounds.width);
|
|
340
|
+
this.dispatchAlignActions(elements, (element, move) => (move.toPosition.x = maxX - element.bounds.width));
|
|
338
341
|
}
|
|
339
342
|
|
|
340
343
|
alignTop(elements: BoundsAwareModelElement[]): void {
|
|
341
344
|
const calculationElements = this.action.selectionFunction(elements);
|
|
342
345
|
const minY = calculationElements.map(element => element.bounds.y).reduce((a, b) => Math.min(a, b));
|
|
343
|
-
this.dispatchAlignActions(elements, (_, move) => move.toPosition.y = minY);
|
|
346
|
+
this.dispatchAlignActions(elements, (_, move) => (move.toPosition.y = minY));
|
|
344
347
|
}
|
|
345
348
|
|
|
346
349
|
alignMiddle(elements: BoundsAwareModelElement[]): void {
|
|
@@ -349,16 +352,19 @@ export class AlignElementsCommand extends LayoutElementsCommand {
|
|
|
349
352
|
const maxY = calculationElements.map(element => element.bounds.y + element.bounds.height).reduce((a, b) => Math.max(a, b));
|
|
350
353
|
const diffY = maxY - minY;
|
|
351
354
|
const middleY = minY + 0.5 * diffY;
|
|
352
|
-
this.dispatchAlignActions(elements, (element, move) => move.toPosition.y = middleY - 0.5 * element.bounds.height);
|
|
355
|
+
this.dispatchAlignActions(elements, (element, move) => (move.toPosition.y = middleY - 0.5 * element.bounds.height));
|
|
353
356
|
}
|
|
354
357
|
|
|
355
358
|
alignBottom(elements: BoundsAwareModelElement[]): void {
|
|
356
359
|
const calculationElements = this.action.selectionFunction(elements);
|
|
357
360
|
const maxY = calculationElements.map(element => element.bounds.y + element.bounds.height).reduce((a, b) => Math.max(a, b));
|
|
358
|
-
this.dispatchAlignActions(elements, (element, move) => move.toPosition.y = maxY - element.bounds.height);
|
|
361
|
+
this.dispatchAlignActions(elements, (element, move) => (move.toPosition.y = maxY - element.bounds.height));
|
|
359
362
|
}
|
|
360
363
|
|
|
361
|
-
dispatchAlignActions(
|
|
364
|
+
dispatchAlignActions(
|
|
365
|
+
elements: BoundsAwareModelElement[],
|
|
366
|
+
change: (element: BoundsAwareModelElement, move: WriteableElementMove) => void
|
|
367
|
+
): void {
|
|
362
368
|
const moves: ElementMove[] = []; // client-side move
|
|
363
369
|
const elementAndBounds: ElementAndBounds[] = []; // server-side move
|
|
364
370
|
elements.forEach(element => {
|
|
@@ -373,7 +379,10 @@ export class AlignElementsCommand extends LayoutElementsCommand {
|
|
|
373
379
|
this.dispatchActions([new MoveAction(moves), new ChangeBoundsOperation(elementAndBounds)]);
|
|
374
380
|
}
|
|
375
381
|
|
|
376
|
-
createElementMove(
|
|
382
|
+
createElementMove(
|
|
383
|
+
element: BoundsAwareModelElement,
|
|
384
|
+
change: (_element: BoundsAwareModelElement, _move: WriteableElementMove) => void
|
|
385
|
+
): WriteableElementMove | undefined {
|
|
377
386
|
const move: WriteableElementMove = {
|
|
378
387
|
elementId: element.id,
|
|
379
388
|
fromPosition: {
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2021 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { injectable } from 'inversify';
|
|
17
|
+
import {
|
|
18
|
+
Bounds,
|
|
19
|
+
BoundsData,
|
|
20
|
+
Dimension,
|
|
21
|
+
EMPTY_BOUNDS,
|
|
22
|
+
isBoundsAware,
|
|
23
|
+
isLayoutableChild,
|
|
24
|
+
isValidDimension,
|
|
25
|
+
LayoutContainer,
|
|
26
|
+
Point,
|
|
27
|
+
SChildElement,
|
|
28
|
+
SModelElement,
|
|
29
|
+
SParentElement,
|
|
30
|
+
StatefulLayouter,
|
|
31
|
+
VBoxLayouter,
|
|
32
|
+
VBoxLayoutOptions
|
|
33
|
+
} from 'sprotty';
|
|
34
|
+
|
|
35
|
+
export interface VBoxLayoutOptionsExt extends VBoxLayoutOptions {
|
|
36
|
+
hGrab: boolean;
|
|
37
|
+
vGrab: boolean;
|
|
38
|
+
prefWidth: number | null;
|
|
39
|
+
prefHeight: number | null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Extends VBoxLayouter to support additional layout options
|
|
44
|
+
*/
|
|
45
|
+
@injectable()
|
|
46
|
+
export class VBoxLayouterExt extends VBoxLayouter {
|
|
47
|
+
static KIND = VBoxLayouter.KIND;
|
|
48
|
+
|
|
49
|
+
layout(container: SParentElement & LayoutContainer, layouter: StatefulLayouter): void {
|
|
50
|
+
const boundsData = layouter.getBoundsData(container);
|
|
51
|
+
const options = this.getLayoutOptions(container);
|
|
52
|
+
const childrenSize = this.getChildrenSize(container, options, layouter);
|
|
53
|
+
|
|
54
|
+
const fixedSize = this.getFixedContainerBounds(container, options, layouter);
|
|
55
|
+
|
|
56
|
+
const maxWidth =
|
|
57
|
+
options.paddingFactor *
|
|
58
|
+
(options.resizeContainer
|
|
59
|
+
? Math.max(fixedSize.width - options.paddingLeft - options.paddingRight, childrenSize.width)
|
|
60
|
+
: Math.max(0, fixedSize.width - options.paddingLeft - options.paddingRight));
|
|
61
|
+
const maxHeight =
|
|
62
|
+
options.paddingFactor *
|
|
63
|
+
(options.resizeContainer
|
|
64
|
+
? Math.max(fixedSize.height - options.paddingTop - options.paddingBottom, childrenSize.height)
|
|
65
|
+
: Math.max(0, fixedSize.height - options.paddingTop - options.paddingBottom));
|
|
66
|
+
|
|
67
|
+
// Remaining size that can be grabbed by children with the vGrab option
|
|
68
|
+
const grabHeight: number = maxHeight - childrenSize.height;
|
|
69
|
+
// Number of children that request vGrab
|
|
70
|
+
// FIXME: This approach works fine when only 1 child uses VGrab, but may cause rounding issues
|
|
71
|
+
// when the grabHeight can't be equally shared by all children.
|
|
72
|
+
const grabbingChildren = container.children
|
|
73
|
+
.map(child => this.getChildLayoutOptions(child, options))
|
|
74
|
+
.filter(opt => opt.vGrab).length;
|
|
75
|
+
|
|
76
|
+
if (maxWidth > 0 && maxHeight > 0) {
|
|
77
|
+
const offset = this.layoutChildren(container, layouter, options, maxWidth, maxHeight, grabHeight, grabbingChildren);
|
|
78
|
+
boundsData.bounds = this.getFinalContainerBounds(container, offset, options, childrenSize.width, childrenSize.height);
|
|
79
|
+
boundsData.boundsChanged = true;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
protected getChildrenSize(
|
|
84
|
+
container: SParentElement & LayoutContainer,
|
|
85
|
+
containerOptions: VBoxLayoutOptionsExt,
|
|
86
|
+
layouter: StatefulLayouter
|
|
87
|
+
): Dimension {
|
|
88
|
+
let maxWidth = -1;
|
|
89
|
+
let maxHeight = 0;
|
|
90
|
+
let isFirst = true;
|
|
91
|
+
container.children.forEach(child => {
|
|
92
|
+
if (isLayoutableChild(child)) {
|
|
93
|
+
const bounds = layouter.getBoundsData(child).bounds;
|
|
94
|
+
if (bounds !== undefined && isValidDimension(bounds)) {
|
|
95
|
+
maxHeight += bounds.height;
|
|
96
|
+
if (isFirst) {
|
|
97
|
+
isFirst = false;
|
|
98
|
+
} else {
|
|
99
|
+
maxHeight += containerOptions.vGap;
|
|
100
|
+
}
|
|
101
|
+
maxWidth = Math.max(maxWidth, bounds.width);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
const result = {
|
|
106
|
+
width: maxWidth,
|
|
107
|
+
height: maxHeight
|
|
108
|
+
};
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
protected layoutChildren(
|
|
113
|
+
container: SParentElement & LayoutContainer,
|
|
114
|
+
layouter: StatefulLayouter,
|
|
115
|
+
containerOptions: VBoxLayoutOptionsExt,
|
|
116
|
+
maxWidth: number,
|
|
117
|
+
maxHeight: number,
|
|
118
|
+
grabHeight?: number,
|
|
119
|
+
grabbingChildren?: number
|
|
120
|
+
): Point {
|
|
121
|
+
let currentOffset: Point = {
|
|
122
|
+
x: containerOptions.paddingLeft + 0.5 * (maxWidth - maxWidth / containerOptions.paddingFactor),
|
|
123
|
+
y: containerOptions.paddingTop + 0.5 * (maxHeight - maxHeight / containerOptions.paddingFactor)
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
container.children.forEach(child => {
|
|
127
|
+
if (isLayoutableChild(child)) {
|
|
128
|
+
const boundsData = layouter.getBoundsData(child);
|
|
129
|
+
const bounds = boundsData.bounds;
|
|
130
|
+
const childOptions = this.getChildLayoutOptions(child, containerOptions);
|
|
131
|
+
if (bounds !== undefined && isValidDimension(bounds)) {
|
|
132
|
+
currentOffset = this.layoutChild(
|
|
133
|
+
child,
|
|
134
|
+
boundsData,
|
|
135
|
+
bounds,
|
|
136
|
+
childOptions,
|
|
137
|
+
containerOptions,
|
|
138
|
+
currentOffset,
|
|
139
|
+
maxWidth,
|
|
140
|
+
maxHeight,
|
|
141
|
+
grabHeight,
|
|
142
|
+
grabbingChildren
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
return currentOffset;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
protected layoutChild(
|
|
151
|
+
child: SChildElement,
|
|
152
|
+
boundsData: BoundsData,
|
|
153
|
+
bounds: Bounds,
|
|
154
|
+
childOptions: VBoxLayoutOptionsExt,
|
|
155
|
+
containerOptions: VBoxLayoutOptionsExt,
|
|
156
|
+
currentOffset: Point,
|
|
157
|
+
maxWidth: number,
|
|
158
|
+
maxHeight: number,
|
|
159
|
+
grabHeight?: number,
|
|
160
|
+
grabbingChildren?: number
|
|
161
|
+
): Point {
|
|
162
|
+
let offset = super.layoutChild(child, boundsData, bounds, childOptions, containerOptions, currentOffset, maxWidth, maxHeight);
|
|
163
|
+
if (childOptions.hGrab) {
|
|
164
|
+
boundsData.bounds = {
|
|
165
|
+
x: boundsData.bounds!.x,
|
|
166
|
+
y: boundsData.bounds!.y,
|
|
167
|
+
width: maxWidth,
|
|
168
|
+
height: boundsData.bounds!.height
|
|
169
|
+
};
|
|
170
|
+
boundsData.boundsChanged = true;
|
|
171
|
+
}
|
|
172
|
+
if (childOptions.vGrab && grabHeight && grabbingChildren) {
|
|
173
|
+
const height = boundsData.bounds!.height + grabHeight / grabbingChildren;
|
|
174
|
+
boundsData.bounds = {
|
|
175
|
+
x: boundsData.bounds!.x,
|
|
176
|
+
y: boundsData.bounds!.y,
|
|
177
|
+
width: boundsData.bounds!.width,
|
|
178
|
+
height: height
|
|
179
|
+
};
|
|
180
|
+
boundsData.boundsChanged = true;
|
|
181
|
+
offset = { x: currentOffset.x, y: currentOffset.y + height };
|
|
182
|
+
}
|
|
183
|
+
return offset;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
protected getFixedContainerBounds(container: SModelElement, layoutOptions: VBoxLayoutOptionsExt, layouter: StatefulLayouter): Bounds {
|
|
187
|
+
const currentContainer = container;
|
|
188
|
+
// eslint-disable-next-line no-constant-condition
|
|
189
|
+
if (isBoundsAware(currentContainer)) {
|
|
190
|
+
const bounds = currentContainer.bounds;
|
|
191
|
+
const elementOptions = this.getElementLayoutOptions(currentContainer);
|
|
192
|
+
const width = elementOptions?.prefWidth ?? 0;
|
|
193
|
+
const height = elementOptions?.prefHeight ?? 0;
|
|
194
|
+
return { ...bounds, width, height };
|
|
195
|
+
}
|
|
196
|
+
return EMPTY_BOUNDS;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
protected getChildLayoutOptions(child: SChildElement, containerOptions: VBoxLayoutOptionsExt): VBoxLayoutOptionsExt {
|
|
200
|
+
return super.getChildLayoutOptions(child, containerOptions) as VBoxLayoutOptionsExt;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
protected getLayoutOptions(element: SModelElement): VBoxLayoutOptionsExt {
|
|
204
|
+
return super.getLayoutOptions(element) as VBoxLayoutOptionsExt;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
protected getElementLayoutOptions(element: SModelElement): VBoxLayoutOptionsExt | undefined {
|
|
208
|
+
return (element as any).layoutOptions;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
protected getFinalContainerBounds(
|
|
212
|
+
container: SParentElement & LayoutContainer,
|
|
213
|
+
lastOffset: Point,
|
|
214
|
+
options: VBoxLayoutOptionsExt,
|
|
215
|
+
maxWidth: number,
|
|
216
|
+
maxHeight: number
|
|
217
|
+
): Bounds {
|
|
218
|
+
const elementOptions = this.getElementLayoutOptions(container);
|
|
219
|
+
const width = elementOptions?.prefWidth ?? options.minWidth;
|
|
220
|
+
const height = elementOptions?.prefHeight ?? options.minHeight;
|
|
221
|
+
|
|
222
|
+
const result = {
|
|
223
|
+
x: container.bounds.x,
|
|
224
|
+
y: container.bounds.y,
|
|
225
|
+
width: Math.max(width, maxWidth + options.paddingLeft + options.paddingRight),
|
|
226
|
+
height: Math.max(height, maxHeight + options.paddingTop + options.paddingBottom)
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
return result;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
protected getDefaultLayoutOptions(): VBoxLayoutOptionsExt {
|
|
233
|
+
return {
|
|
234
|
+
resizeContainer: true,
|
|
235
|
+
paddingTop: 5,
|
|
236
|
+
paddingBottom: 5,
|
|
237
|
+
paddingLeft: 5,
|
|
238
|
+
paddingRight: 5,
|
|
239
|
+
paddingFactor: 1,
|
|
240
|
+
vGap: 1,
|
|
241
|
+
hAlign: 'center',
|
|
242
|
+
minWidth: 0,
|
|
243
|
+
minHeight: 0,
|
|
244
|
+
hGrab: false,
|
|
245
|
+
vGrab: false,
|
|
246
|
+
// eslint-disable-next-line no-null/no-null
|
|
247
|
+
prefHeight: null,
|
|
248
|
+
// eslint-disable-next-line no-null/no-null
|
|
249
|
+
prefWidth: null
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
protected spread(a: VBoxLayoutOptionsExt, b: VBoxLayoutOptionsExt): VBoxLayoutOptionsExt {
|
|
254
|
+
return { ...a, ...b };
|
|
255
|
+
}
|
|
256
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2020-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,10 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { ModelSourceChangedAction } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { ContainerModule } from 'inversify';
|
|
17
|
-
import { configureActionHandler } from 'sprotty
|
|
18
|
-
|
|
19
|
-
import { ModelSourceChangedAction } from './model-source-changed-action';
|
|
18
|
+
import { configureActionHandler } from 'sprotty';
|
|
20
19
|
import { ModelSourceChangedActionHandler } from './model-source-changed-action-handler';
|
|
21
20
|
|
|
22
21
|
const modelSourceWatcherModule = new ContainerModule((bind, _unbind, isBound) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2020-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,11 +13,15 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import {
|
|
17
|
+
Action,
|
|
18
|
+
GLSPServerStatusAction,
|
|
19
|
+
isModelSourceChangedAction,
|
|
20
|
+
ModelSourceChangedAction,
|
|
21
|
+
ServerMessageAction
|
|
22
|
+
} from '@eclipse-glsp/protocol';
|
|
16
23
|
import { inject, injectable, optional } from 'inversify';
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
import { GLSPServerStatusAction, ServerMessageAction } from '../../model-source/glsp-server-status';
|
|
20
|
-
import { isModelSourceChangedAction, ModelSourceChangedAction } from './model-source-changed-action';
|
|
24
|
+
import { IActionDispatcher, IActionHandler, TYPES, ViewerOptions } from 'sprotty';
|
|
21
25
|
|
|
22
26
|
/**
|
|
23
27
|
* An external handler of the model source change event.
|
|
@@ -36,14 +40,14 @@ export abstract class ExternalModelSourceChangedHandler {
|
|
|
36
40
|
|
|
37
41
|
@injectable()
|
|
38
42
|
export class ModelSourceChangedActionHandler implements IActionHandler {
|
|
39
|
-
|
|
40
43
|
@inject(TYPES.IActionDispatcher)
|
|
41
44
|
protected dispatcher: IActionDispatcher;
|
|
42
45
|
|
|
43
46
|
@inject(TYPES.ViewerOptions)
|
|
44
47
|
protected options: ViewerOptions;
|
|
45
48
|
|
|
46
|
-
@inject(ExternalModelSourceChangedHandler)
|
|
49
|
+
@inject(ExternalModelSourceChangedHandler)
|
|
50
|
+
@optional()
|
|
47
51
|
protected externalModelSourceChangedHandler?: ExternalModelSourceChangedHandler;
|
|
48
52
|
|
|
49
53
|
handle(action: Action): void {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2019-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Action, isAction } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { injectable, multiInject, optional } from 'inversify';
|
|
17
|
-
import { VNode, VNodeData } from 'snabbdom
|
|
18
|
-
import {
|
|
19
|
-
|
|
18
|
+
import { On, VNode, VNodeData } from 'snabbdom';
|
|
19
|
+
import { MouseListener, MouseTool, SModelElement, SModelRoot, TYPES } from 'sprotty';
|
|
20
20
|
import { getRank } from '../rank/model';
|
|
21
21
|
|
|
22
22
|
export interface IMouseTool {
|
|
@@ -46,25 +46,25 @@ export class RankingMouseTool extends MouseTool implements IMouseTool {
|
|
|
46
46
|
decorate(vnode: VNode, element: SModelElement): VNode {
|
|
47
47
|
// we need to overwrite the existing event handlers registered by the original mouse tool
|
|
48
48
|
if (element instanceof SModelRoot) {
|
|
49
|
-
overwriteOn(vnode, 'mouseover', this.mouseOver.bind(this), element);
|
|
50
|
-
overwriteOn(vnode, 'mouseout', this.mouseOut.bind(this), element);
|
|
51
|
-
overwriteOn(vnode, 'mouseenter', this.mouseEnter.bind(this), element);
|
|
52
|
-
overwriteOn(vnode, 'mouseleave', this.mouseLeave.bind(this), element);
|
|
53
|
-
overwriteOn(vnode, 'mousedown', this.mouseDown.bind(this), element);
|
|
54
|
-
overwriteOn(vnode, 'mouseup', this.mouseUp.bind(this), element);
|
|
55
|
-
overwriteOn(vnode, 'mousemove', this.mouseMove.bind(this), element);
|
|
56
|
-
overwriteOn(vnode, 'wheel', this.wheel.bind(this), element);
|
|
57
|
-
overwriteOn(vnode, 'contextmenu', (
|
|
58
|
-
|
|
59
|
-
}, element);
|
|
60
|
-
overwriteOn(vnode, 'dblclick', this.doubleClick.bind(this), element);
|
|
49
|
+
overwriteOn(vnode, 'mouseover', this.mouseOver.bind(this, element), element);
|
|
50
|
+
overwriteOn(vnode, 'mouseout', this.mouseOut.bind(this, element), element);
|
|
51
|
+
overwriteOn(vnode, 'mouseenter', this.mouseEnter.bind(this, element), element);
|
|
52
|
+
overwriteOn(vnode, 'mouseleave', this.mouseLeave.bind(this, element), element);
|
|
53
|
+
overwriteOn(vnode, 'mousedown', this.mouseDown.bind(this, element), element);
|
|
54
|
+
overwriteOn(vnode, 'mouseup', this.mouseUp.bind(this, element), element);
|
|
55
|
+
overwriteOn(vnode, 'mousemove', this.mouseMove.bind(this, element), element);
|
|
56
|
+
overwriteOn(vnode, 'wheel', this.wheel.bind(this, element), element);
|
|
57
|
+
overwriteOn(vnode, 'contextmenu', this.contextMenu.bind(this, element), element);
|
|
58
|
+
overwriteOn(vnode, 'dblclick', this.doubleClick.bind(this, element), element);
|
|
61
59
|
}
|
|
62
|
-
vnode = this.mouseListeners.reduce(
|
|
63
|
-
(n: VNode, listener: MouseListener) => listener.decorate(n, element),
|
|
64
|
-
vnode);
|
|
60
|
+
vnode = this.mouseListeners.reduce((n: VNode, listener: MouseListener) => listener.decorate(n, element), vnode);
|
|
65
61
|
return vnode;
|
|
66
62
|
}
|
|
67
63
|
|
|
64
|
+
contextMenu(model: SModelRoot, event: MouseEvent): void {
|
|
65
|
+
event.preventDefault();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
68
|
protected handleEvent<K extends keyof MouseListener>(methodName: K, model: SModelRoot, event: MouseEvent): void {
|
|
69
69
|
this.focusOnMouseEvent(methodName, model);
|
|
70
70
|
const element = this.getTargetElement(model, event);
|
|
@@ -74,13 +74,23 @@ export class RankingMouseTool extends MouseTool implements IMouseTool {
|
|
|
74
74
|
this.notifyListenersByRank(element, methodName, model, event);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
async notifyListenersByRank<K extends keyof MouseListener>(
|
|
77
|
+
async notifyListenersByRank<K extends keyof MouseListener>(
|
|
78
|
+
element: SModelElement,
|
|
79
|
+
methodName: K,
|
|
80
|
+
model: SModelRoot,
|
|
81
|
+
event: MouseEvent
|
|
82
|
+
): Promise<void> {
|
|
78
83
|
for (const rank of this.rankedMouseListeners) {
|
|
79
84
|
await this.dispatchActions(rank[1], methodName, element, event);
|
|
80
85
|
}
|
|
81
86
|
}
|
|
82
87
|
|
|
83
|
-
async dispatchActions<K extends keyof MouseListener>(
|
|
88
|
+
async dispatchActions<K extends keyof MouseListener>(
|
|
89
|
+
mouseListeners: MouseListener[],
|
|
90
|
+
methodName: K,
|
|
91
|
+
element: SModelElement,
|
|
92
|
+
event: MouseEvent
|
|
93
|
+
): Promise<void> {
|
|
84
94
|
const actions = mouseListeners
|
|
85
95
|
.map(listener => listener[methodName].apply(listener, [element, event]))
|
|
86
96
|
.reduce((a, b) => a.concat(b));
|
|
@@ -115,13 +125,13 @@ function groupBy<K, T>(array: Array<T>, keyFunction: (x: T) => K): Map<K, T[]> {
|
|
|
115
125
|
return new Map<K, T[]>([...unsortedMap.entries()].sort());
|
|
116
126
|
}
|
|
117
127
|
|
|
118
|
-
function overwriteOn(vnode: VNode, event: string, listener: (model: SModelElement,
|
|
128
|
+
function overwriteOn(vnode: VNode, event: string, listener: (model: SModelElement, _event: Event) => void, element: SModelElement): void {
|
|
119
129
|
const val = getOn(vnode);
|
|
120
130
|
// ignore any previous val[event] registrations
|
|
121
131
|
(val as any)[event] = [listener, element];
|
|
122
132
|
}
|
|
123
133
|
|
|
124
|
-
function getOn(vnode: VNode):
|
|
134
|
+
function getOn(vnode: VNode): On {
|
|
125
135
|
const data = getData(vnode);
|
|
126
136
|
if (!data.on) {
|
|
127
137
|
data.on = {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2020-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,16 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { NavigateToExternalTargetAction, NavigateToTargetAction } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { ContainerModule } from 'inversify';
|
|
17
|
-
import { configureActionHandler } from 'sprotty
|
|
18
|
-
|
|
19
|
-
import {
|
|
20
|
-
NavigateAction,
|
|
21
|
-
NavigateToExternalTargetAction,
|
|
22
|
-
NavigateToTargetAction,
|
|
23
|
-
NavigationActionHandler,
|
|
24
|
-
ProcessNavigationArgumentsAction
|
|
25
|
-
} from './navigation-action-handler';
|
|
18
|
+
import { configureActionHandler } from 'sprotty';
|
|
19
|
+
import { NavigateAction, NavigationActionHandler, ProcessNavigationArgumentsAction } from './navigation-action-handler';
|
|
26
20
|
import { NavigationTargetResolver } from './navigation-target-resolver';
|
|
27
21
|
|
|
28
22
|
export const navigationModule = new ContainerModule((bind, _unbind, isBound) => {
|