@eclipse-glsp/client 0.9.0-next.4fc0d719 → 0.9.0-next.75608185
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/README.md +2 -1
- package/css/command-palette.css +9 -5
- package/css/decoration.css +3 -2
- package/css/glsp-sprotty.css +20 -7
- package/css/tool-palette.css +44 -27
- package/lib/base/action-dispatcher.d.ts +18 -2
- 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/argumentable.d.ts +22 -0
- package/lib/base/argumentable.d.ts.map +1 -0
- package/lib/base/argumentable.js +8 -0
- 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-actions.js.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +12 -12
- package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.js +121 -152
- 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 +49 -65
- package/lib/base/auto-complete/validation-decorator.js.map +1 -1
- package/lib/base/command-stack.d.ts +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 +84 -0
- package/lib/base/container-modules.js.map +1 -0
- package/lib/base/di.config.d.ts +13 -3
- package/lib/base/di.config.d.ts.map +1 -1
- package/lib/base/di.config.js +50 -33
- 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-service.d.ts +42 -0
- 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.d.ts +5 -0
- package/lib/base/model/model-registry.d.ts.map +1 -0
- package/lib/base/model/model-registry.js +43 -0
- package/lib/base/model/model-registry.js.map +1 -0
- package/lib/base/model/update-model-command.d.ts +20 -6
- 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 +17 -2
- 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.d.ts +1 -1
- package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
- package/lib/base/selection-clearing-mouse-listener.js +11 -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 +2 -2
- package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.js +59 -141
- package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
- package/lib/base/types.d.ts +2 -1
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +22 -21
- package/lib/base/types.js.map +1 -1
- package/lib/base/view/view-registry.d.ts +5 -0
- package/lib/base/view/view-registry.d.ts.map +1 -0
- package/lib/base/view/view-registry.js +43 -0
- package/lib/base/view/view-registry.js.map +1 -0
- package/lib/features/change-bounds/model.d.ts +4 -2
- package/lib/features/change-bounds/model.d.ts.map +1 -1
- package/lib/features/change-bounds/model.js +21 -32
- package/lib/features/change-bounds/model.js.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts +18 -2
- package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.js +34 -46
- 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.d.ts +1 -1
- package/lib/features/command-palette/command-palette-tool.d.ts.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.d.ts +2 -2
- 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 +19 -3
- package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.js +31 -36
- package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts +2 -2
- package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.js +24 -72
- package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
- package/lib/features/context-menu/di.config.d.ts +2 -2
- package/lib/features/context-menu/di.config.d.ts.map +1 -1
- package/lib/features/context-menu/di.config.js +14 -18
- 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 +2 -2
- 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 +19 -3
- package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.js +31 -32
- 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 +21 -4
- 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 +2 -2
- 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 +14 -47
- package/lib/features/decoration/decoration-placer.js.map +1 -1
- package/lib/features/decoration/di.config.d.ts +2 -2
- package/lib/features/decoration/di.config.d.ts.map +1 -1
- package/lib/features/decoration/di.config.js +4 -6
- package/lib/features/decoration/di.config.js.map +1 -1
- package/lib/features/edit-label/di.config.d.ts +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.d.ts +2 -2
- 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 +18 -3
- 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 +1 -16
- 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 +2 -2
- package/lib/features/hints/model.js.map +1 -1
- package/lib/features/hints/type-hints.d.ts +21 -49
- package/lib/features/hints/type-hints.d.ts.map +1 -1
- package/lib/features/hints/type-hints.js +83 -142
- package/lib/features/hints/type-hints.js.map +1 -1
- package/lib/features/hover/di.config.d.ts +2 -2
- 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 +18 -2
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +37 -75
- package/lib/features/hover/hover.js.map +1 -1
- package/lib/features/layout/di.config.d.ts +6 -2
- package/lib/features/layout/di.config.d.ts.map +1 -1
- package/lib/features/layout/di.config.js +47 -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 +26 -10
- package/lib/features/layout/layout-commands.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.js +189 -264
- package/lib/features/layout/layout-commands.js.map +1 -1
- package/lib/features/layout/layout-commands.spec.d.ts +2 -17
- package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.spec.js +124 -117
- 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 +1 -16
- 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.d.ts +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 +3 -2
- package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.js +74 -217
- package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
- package/lib/features/navigation/di.config.d.ts +1 -16
- 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 -39
- package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
- package/lib/features/navigation/navigation-action-handler.js +118 -255
- 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 +2 -17
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.js +27 -26
- package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
- package/lib/features/rank/model.d.ts +2 -2
- package/lib/features/rank/model.d.ts.map +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 +2 -2
- package/lib/features/reconnect/model.d.ts.map +1 -1
- package/lib/features/reconnect/model.js +10 -28
- package/lib/features/reconnect/model.js.map +1 -1
- package/lib/features/save/di.config.d.ts +2 -2
- 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/model.d.ts +1 -1
- package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -8
- package/lib/features/save/save-keylistener.d.ts.map +1 -0
- package/lib/{utils/array-utils.js → features/save/save-keylistener.js} +14 -19
- package/lib/features/save/save-keylistener.js.map +1 -0
- package/lib/features/select/di.config.d.ts +1 -1
- 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 +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.d.ts +2 -2
- 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 +19 -3
- 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 -138
- package/lib/features/select/selection-service.spec.js.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +21 -4
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js +117 -149
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts +19 -2
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +81 -115
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/css-feedback.d.ts +24 -5
- package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/css-feedback.js +40 -82
- package/lib/features/tool-feedback/css-feedback.js.map +1 -1
- package/lib/features/tool-feedback/di.config.d.ts +2 -2
- package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
- package/lib/features/tool-feedback/di.config.js +27 -24
- package/lib/features/tool-feedback/di.config.js.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +21 -4
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js +160 -204
- 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 +48 -0
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -0
- package/lib/features/tool-feedback/marquee-tool-feedback.js +96 -0
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -0
- package/lib/features/tool-feedback/model.d.ts +2 -2
- 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 +22 -6
- package/lib/features/tool-feedback/view.d.ts.map +1 -1
- package/lib/features/tool-feedback/view.js +30 -51
- package/lib/features/tool-feedback/view.js.map +1 -1
- package/lib/features/tool-palette/di.config.d.ts +2 -2
- 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 +23 -6
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +229 -286
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/tools/base-glsp-tool.d.ts +21 -5
- 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 +26 -9
- 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 +20 -4
- 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 +5 -16
- package/lib/features/tools/di.config.d.ts.map +1 -1
- package/lib/features/tools/di.config.js +26 -13
- package/lib/features/tools/di.config.js.map +1 -1
- package/lib/features/tools/edge-creation-tool.d.ts +20 -5
- package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-creation-tool.js +64 -89
- package/lib/features/tools/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/edge-edit-tool.d.ts +22 -6
- package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-edit-tool.js +125 -189
- package/lib/features/tools/edge-edit-tool.js.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.d.ts +53 -0
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -0
- package/lib/features/tools/marquee-mouse-tool.js +237 -0
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -0
- package/{src/features/model-source-watcher/model-source-changed-action.ts → lib/features/tools/marquee-tool.d.ts} +14 -10
- package/lib/features/tools/marquee-tool.d.ts.map +1 -0
- package/lib/features/tools/marquee-tool.js +54 -0
- package/lib/features/tools/marquee-tool.js.map +1 -0
- package/lib/{utils/array-utils.d.ts → features/tools/model.d.ts} +8 -4
- package/lib/features/tools/model.d.ts.map +1 -0
- package/lib/features/tools/model.js +24 -0
- package/lib/features/tools/model.js.map +1 -0
- package/lib/features/tools/node-creation-tool.d.ts +20 -5
- 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 +7 -0
- package/lib/features/tools/view.d.ts.map +1 -0
- package/lib/features/tools/view.js +40 -0
- package/lib/features/tools/view.js.map +1 -0
- package/lib/features/validation/di.config.d.ts +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 +3 -3
- package/lib/features/validation/issue-marker.d.ts.map +1 -1
- package/lib/features/validation/issue-marker.js +18 -56
- package/lib/features/validation/issue-marker.js.map +1 -1
- package/lib/features/validation/marker-navigator.d.ts +19 -3
- 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 +2 -17
- package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.spec.js +84 -77
- package/lib/features/validation/marker-navigator.spec.js.map +1 -1
- package/lib/features/validation/validate.d.ts +20 -31
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +148 -299
- package/lib/features/validation/validate.js.map +1 -1
- package/lib/{base/args.d.ts → features/viewport/di.config.d.ts} +5 -5
- package/lib/features/viewport/di.config.d.ts.map +1 -0
- package/lib/features/viewport/di.config.js +34 -0
- package/lib/features/viewport/di.config.js.map +1 -0
- package/lib/features/{model-source-watcher/model-source-changed-action.d.ts → viewport/glsp-scroll-mouse-listener.d.ts} +8 -9
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -0
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +39 -0
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -0
- package/lib/index.d.ts +34 -35
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +36 -35
- package/lib/index.js.map +1 -1
- package/lib/lib/model.d.ts +3 -3
- package/lib/lib/model.d.ts.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 +4 -6
- package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
- package/lib/model-source/glsp-diagram-server.js +63 -122
- 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 +50 -0
- package/lib/utils/argument-utils.d.ts.map +1 -0
- package/lib/utils/argument-utils.js +110 -0
- package/lib/utils/argument-utils.js.map +1 -0
- package/lib/utils/html-utils.js +2 -2
- package/lib/utils/html-utils.js.map +1 -1
- package/lib/utils/layout-utils.d.ts +4 -3
- 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 +1 -39
- 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 +7 -17
- package/lib/utils/smodel-util.d.ts.map +1 -1
- package/lib/utils/smodel-util.js +18 -67
- 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 +24 -0
- package/lib/views/base-view-module.d.ts.map +1 -0
- package/lib/views/base-view-module.js +59 -0
- package/lib/views/base-view-module.js.map +1 -0
- 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/default-types.d.ts +37 -0
- package/lib/views/default-types.d.ts.map +1 -0
- package/lib/views/default-types.js +47 -0
- package/lib/views/default-types.js.map +1 -0
- package/lib/views/glsp-edge-view.d.ts +27 -0
- package/lib/views/glsp-edge-view.d.ts.map +1 -0
- package/lib/views/glsp-edge-view.js +55 -0
- package/lib/views/glsp-edge-view.js.map +1 -0
- package/lib/views/index.d.ts +23 -0
- package/lib/views/index.d.ts.map +1 -0
- package/lib/views/index.js +35 -0
- package/lib/views/index.js.map +1 -0
- package/lib/views/issue-marker-view.d.ts +9 -0
- package/lib/views/issue-marker-view.d.ts.map +1 -0
- package/lib/views/issue-marker-view.js +68 -0
- package/lib/views/issue-marker-view.js.map +1 -0
- package/lib/views/rounded-corner-view.d.ts +13 -0
- package/lib/views/rounded-corner-view.d.ts.map +1 -0
- package/lib/views/rounded-corner-view.js +82 -0
- package/lib/views/rounded-corner-view.js.map +1 -0
- package/lib/views/rounded-corner.d.ts +38 -0
- package/lib/views/rounded-corner.d.ts.map +1 -0
- package/lib/views/rounded-corner.js +62 -0
- package/lib/views/rounded-corner.js.map +1 -0
- package/package.json +24 -32
- package/src/base/action-dispatcher.ts +7 -8
- package/src/base/actions/focus-change-action.ts +2 -2
- package/src/{features/undo-redo/model.ts → base/argumentable.ts} +7 -8
- package/src/base/auto-complete/auto-complete-actions.ts +2 -2
- package/src/base/auto-complete/auto-complete-widget.ts +73 -57
- package/src/base/auto-complete/validation-decorator.ts +21 -15
- package/src/base/command-stack.ts +4 -7
- package/src/base/container-modules.ts +113 -0
- package/src/base/di.config.ts +44 -27
- package/src/base/drag-aware-mouse-listener.ts +7 -8
- package/src/base/{editor-context.ts → editor-context-service.ts} +13 -40
- package/src/base/focus-tracker.ts +4 -6
- package/src/base/model/model-registry.ts +31 -0
- package/src/base/model/update-model-command.ts +14 -22
- package/src/base/model-initialization-constraint.ts +16 -11
- package/src/base/selection-clearing-mouse-listener.ts +4 -3
- package/src/base/tool-manager/glsp-tool-manager.ts +12 -14
- package/src/base/types.ts +22 -21
- package/src/{utils/array-utils.ts → base/view/view-registry.ts} +14 -17
- package/src/features/change-bounds/model.ts +23 -13
- package/src/features/change-bounds/movement-restrictor.ts +28 -18
- package/src/features/change-bounds/snap.ts +6 -5
- package/src/features/command-palette/command-palette-tool.ts +4 -4
- package/src/features/command-palette/di.config.ts +7 -7
- package/src/features/command-palette/server-command-palette-provider.ts +16 -14
- package/src/features/context-menu/delete-element-context-menu.ts +10 -11
- package/src/features/context-menu/di.config.ts +10 -12
- package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +8 -7
- package/src/features/context-menu/server-context-menu-provider.ts +13 -10
- package/src/features/copy-paste/copy-paste-context-menu.ts +66 -37
- package/src/features/copy-paste/copy-paste-handler.ts +30 -20
- package/src/features/copy-paste/di.config.ts +6 -7
- package/src/features/decoration/decoration-placer.ts +6 -15
- package/src/features/decoration/di.config.ts +4 -6
- package/src/features/edit-label/di.config.ts +5 -5
- package/src/features/edit-label/edit-label-tool.ts +4 -4
- package/src/features/edit-label/edit-label-validator.ts +18 -19
- package/src/features/hints/di.config.ts +6 -7
- package/src/features/hints/model.ts +7 -6
- package/src/features/hints/type-hints.ts +46 -113
- package/src/features/hover/di.config.ts +6 -7
- package/src/features/hover/hover.ts +11 -14
- package/src/features/layout/di.config.ts +32 -6
- package/src/features/layout/freeform-layout.ts +133 -0
- package/src/features/layout/layout-commands.spec.ts +104 -85
- package/src/features/layout/layout-commands.ts +65 -54
- package/src/features/layout/vbox-layout.ts +256 -0
- package/src/features/model-source-watcher/di.config.ts +5 -6
- package/src/features/model-source-watcher/model-source-changed-action-handler.ts +16 -12
- package/src/features/mouse-tool/di.config.ts +4 -4
- package/src/features/mouse-tool/mouse-tool.ts +44 -32
- package/src/features/navigation/di.config.ts +6 -12
- package/src/features/navigation/navigation-action-handler.ts +46 -78
- package/src/features/navigation/navigation-target-resolver.spec.ts +6 -9
- package/src/features/navigation/navigation-target-resolver.ts +16 -94
- package/src/features/rank/model.ts +3 -3
- package/src/features/reconnect/model.ts +9 -11
- package/src/features/save/di.config.ts +4 -5
- package/src/features/save/model.ts +1 -1
- package/src/features/save/{save.ts → save-keylistener.ts} +4 -8
- package/src/features/select/di.config.ts +6 -6
- package/src/features/select/select-feedback-action.ts +6 -8
- package/src/features/select/select-mouse-listener.ts +2 -2
- package/src/features/select/selection-service.spec.ts +25 -19
- package/src/features/select/selection-service.ts +25 -22
- package/src/features/tool-feedback/change-bounds-tool-feedback.ts +56 -39
- package/src/features/tool-feedback/creation-tool-feedback.ts +49 -24
- package/src/features/tool-feedback/css-feedback.ts +19 -14
- package/src/features/tool-feedback/di.config.ts +15 -14
- package/src/features/tool-feedback/edge-edit-tool-feedback.ts +56 -35
- package/src/features/tool-feedback/feedback-action-dispatcher.ts +13 -14
- package/src/features/tool-feedback/marquee-tool-feedback.ts +103 -0
- package/src/features/tool-feedback/model.ts +2 -3
- package/src/features/tool-feedback/view.tsx +20 -13
- package/src/features/tool-palette/di.config.ts +5 -5
- package/src/features/tool-palette/palette-item.ts +5 -7
- package/src/features/tool-palette/tool-palette.ts +126 -107
- package/src/features/tools/base-glsp-tool.ts +12 -12
- package/src/features/tools/change-bounds-tool.ts +83 -53
- package/src/features/tools/delete-tool.ts +23 -20
- package/src/features/tools/di.config.ts +22 -11
- package/src/features/tools/edge-creation-tool.ts +20 -25
- package/src/features/tools/edge-edit-tool.ts +43 -46
- package/src/features/tools/marquee-mouse-tool.ts +251 -0
- package/src/features/tools/marquee-tool.ts +51 -0
- package/src/{base/args.ts → features/tools/model.ts} +8 -2
- package/src/features/tools/node-creation-tool.ts +18 -22
- package/src/features/tools/view.tsx +44 -0
- package/src/features/validation/di.config.ts +5 -5
- package/src/features/validation/issue-marker.ts +4 -5
- package/src/features/validation/marker-navigator.spec.ts +38 -33
- package/src/features/validation/marker-navigator.ts +39 -26
- package/src/features/validation/validate.ts +25 -59
- package/src/features/viewport/di.config.ts +47 -0
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +41 -0
- package/src/index.ts +54 -37
- package/src/lib/model.ts +4 -4
- package/src/model-source/glsp-diagram-server.ts +19 -33
- package/src/protocol-reexport.ts +64 -0
- package/src/utils/argument-utils.ts +130 -0
- package/src/utils/layout-utils.ts +19 -11
- package/src/utils/marker.ts +8 -32
- package/src/utils/smodel-util.ts +28 -22
- package/src/utils/viewpoint-util.ts +5 -6
- package/src/views/base-view-module.ts +98 -0
- package/src/views/compartments.tsx +37 -0
- package/src/views/default-types.ts +48 -0
- package/src/views/glsp-edge-view.tsx +79 -0
- package/src/views/index.ts +22 -0
- package/src/views/issue-marker-view.tsx +65 -0
- package/src/views/rounded-corner-view.tsx +103 -0
- package/src/views/rounded-corner.ts +87 -0
- 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 -82
- 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 +0 -3
- package/lib/base/args.js.map +0 -1
- package/lib/base/editor-context.d.ts +0 -46
- 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 -129
- package/lib/base/operations/operation.d.ts.map +0 -1
- package/lib/base/operations/operation.js +0 -201
- 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/decoration/view.d.ts +0 -8
- package/lib/features/decoration/view.d.ts.map +0 -1
- package/lib/features/decoration/view.js +0 -80
- package/lib/features/decoration/view.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.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 -57
- package/lib/features/save/save.js.map +0 -1
- package/lib/features/undo-redo/model.d.ts +0 -27
- 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.map +0 -1
- package/lib/utils/array-utils.js.map +0 -1
- package/src/base/actions/context-actions.ts +0 -43
- package/src/base/actions/edit-mode-action.ts +0 -33
- package/src/base/actions/edit-validation-actions.ts +0 -102
- package/src/base/actions/protocol-actions.ts +0 -82
- package/src/base/operations/operation.ts +0 -148
- package/src/features/copy-paste/copy-paste-actions.ts +0 -60
- package/src/features/decoration/view.tsx +0 -54
- package/src/features/hints/request-type-hints-action.ts +0 -36
- package/src/model-source/glsp-server-status.ts +0 -38
|
@@ -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,9 +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 {
|
|
16
|
+
import { Action, ChangeRoutingPointsOperation, ReconnectEdgeOperation } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable, optional } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
AnchorComputerRegistry,
|
|
20
20
|
canEditRouting,
|
|
21
21
|
Connectable,
|
|
@@ -27,22 +27,14 @@ import {
|
|
|
27
27
|
SModelRoot,
|
|
28
28
|
SRoutableElement,
|
|
29
29
|
SRoutingHandle
|
|
30
|
-
} from
|
|
31
|
-
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
|
|
38
|
-
isReconnectHandle,
|
|
39
|
-
isSourceRoutingHandle,
|
|
40
|
-
isTargetRoutingHandle,
|
|
41
|
-
SReconnectHandle
|
|
42
|
-
} from "../reconnect/model";
|
|
43
|
-
import { SelectionListener, SelectionService } from "../select/selection-service";
|
|
44
|
-
import { DrawFeedbackEdgeAction, feedbackEdgeId, RemoveFeedbackEdgeAction } from "../tool-feedback/creation-tool-feedback";
|
|
45
|
-
import { CursorCSS, cursorFeedbackAction } from "../tool-feedback/css-feedback";
|
|
30
|
+
} from 'sprotty';
|
|
31
|
+
import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
|
|
32
|
+
import { GLSP_TYPES } from '../../base/types';
|
|
33
|
+
import { isRoutable, isRoutingHandle } from '../../utils/smodel-util';
|
|
34
|
+
import { isReconnectable, isReconnectHandle, isSourceRoutingHandle, isTargetRoutingHandle, SReconnectHandle } from '../reconnect/model';
|
|
35
|
+
import { SelectionListener, SelectionService } from '../select/selection-service';
|
|
36
|
+
import { DrawFeedbackEdgeAction, feedbackEdgeId, RemoveFeedbackEdgeAction } from '../tool-feedback/creation-tool-feedback';
|
|
37
|
+
import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
|
|
46
38
|
import {
|
|
47
39
|
DrawFeedbackEdgeSourceAction,
|
|
48
40
|
FeedbackEdgeRouteMovingMouseListener,
|
|
@@ -51,12 +43,12 @@ import {
|
|
|
51
43
|
HideEdgeReconnectHandlesFeedbackAction,
|
|
52
44
|
ShowEdgeReconnectHandlesFeedbackAction,
|
|
53
45
|
SwitchRoutingModeAction
|
|
54
|
-
} from
|
|
55
|
-
import { BaseGLSPTool } from
|
|
46
|
+
} from '../tool-feedback/edge-edit-tool-feedback';
|
|
47
|
+
import { BaseGLSPTool } from './base-glsp-tool';
|
|
56
48
|
|
|
57
49
|
@injectable()
|
|
58
50
|
export class EdgeEditTool extends BaseGLSPTool {
|
|
59
|
-
static ID =
|
|
51
|
+
static ID = 'glsp.edge-edit-tool';
|
|
60
52
|
|
|
61
53
|
@inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService;
|
|
62
54
|
@inject(AnchorComputerRegistry) protected anchorRegistry: AnchorComputerRegistry;
|
|
@@ -121,7 +113,7 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
121
113
|
return edge !== undefined && edge.id !== feedbackEdgeId(edge.root) && isSelected(edge);
|
|
122
114
|
}
|
|
123
115
|
|
|
124
|
-
protected setEdgeSelected(edge: SRoutableElement) {
|
|
116
|
+
protected setEdgeSelected(edge: SRoutableElement): void {
|
|
125
117
|
if (this.edge && this.edge.id !== edge.id) {
|
|
126
118
|
// reset from a previously selected edge
|
|
127
119
|
this.reset();
|
|
@@ -143,18 +135,22 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
143
135
|
return this.edge !== undefined && isSelected(this.edge);
|
|
144
136
|
}
|
|
145
137
|
|
|
146
|
-
protected setReconnectHandleSelected(edge: SRoutableElement, reconnectHandle: SReconnectHandle) {
|
|
138
|
+
protected setReconnectHandleSelected(edge: SRoutableElement, reconnectHandle: SReconnectHandle): void {
|
|
147
139
|
if (this.edge && this.edge.target && this.edge.source) {
|
|
148
140
|
if (isSourceRoutingHandle(edge, reconnectHandle)) {
|
|
149
|
-
this.tool.dispatchFeedback([
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
141
|
+
this.tool.dispatchFeedback([
|
|
142
|
+
new HideEdgeReconnectHandlesFeedbackAction(),
|
|
143
|
+
cursorFeedbackAction(CursorCSS.EDGE_RECONNECT),
|
|
144
|
+
new DrawFeedbackEdgeSourceAction(this.edge.type, this.edge.targetId)
|
|
145
|
+
]);
|
|
146
|
+
this.reconnectMode = 'NEW_SOURCE';
|
|
153
147
|
} else if (isTargetRoutingHandle(edge, reconnectHandle)) {
|
|
154
|
-
this.tool.dispatchFeedback([
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
148
|
+
this.tool.dispatchFeedback([
|
|
149
|
+
new HideEdgeReconnectHandlesFeedbackAction(),
|
|
150
|
+
cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET),
|
|
151
|
+
new DrawFeedbackEdgeAction(this.edge.type, this.edge.sourceId)
|
|
152
|
+
]);
|
|
153
|
+
this.reconnectMode = 'NEW_TARGET';
|
|
158
154
|
}
|
|
159
155
|
}
|
|
160
156
|
}
|
|
@@ -164,10 +160,10 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
164
160
|
}
|
|
165
161
|
|
|
166
162
|
protected isReconnectingNewSource(): boolean {
|
|
167
|
-
return this.reconnectMode ===
|
|
163
|
+
return this.reconnectMode === 'NEW_SOURCE';
|
|
168
164
|
}
|
|
169
165
|
|
|
170
|
-
protected setRoutingHandleSelected(edge: SRoutableElement, routingHandle: SRoutingHandle) {
|
|
166
|
+
protected setRoutingHandleSelected(edge: SRoutableElement, routingHandle: SRoutingHandle): void {
|
|
171
167
|
if (this.edge && this.edge.target && this.edge.source) {
|
|
172
168
|
this.routingHandle = routingHandle;
|
|
173
169
|
}
|
|
@@ -177,15 +173,15 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
177
173
|
return this.edge !== undefined && (this.edge.sourceId !== sourceId || this.edge.targetId !== targetId);
|
|
178
174
|
}
|
|
179
175
|
|
|
180
|
-
protected setNewConnectable(connectable?: SModelElement & Connectable) {
|
|
176
|
+
protected setNewConnectable(connectable?: SModelElement & Connectable): void {
|
|
181
177
|
this.newConnectable = connectable;
|
|
182
178
|
}
|
|
183
179
|
|
|
184
|
-
protected isReadyToReconnect() {
|
|
180
|
+
protected isReadyToReconnect(): boolean | undefined {
|
|
185
181
|
return this.edge && this.isReconnecting() && this.newConnectable !== undefined;
|
|
186
182
|
}
|
|
187
183
|
|
|
188
|
-
protected isReadyToReroute() {
|
|
184
|
+
protected isReadyToReroute(): boolean {
|
|
189
185
|
return this.routingHandle !== undefined;
|
|
190
186
|
}
|
|
191
187
|
|
|
@@ -235,7 +231,8 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
235
231
|
}
|
|
236
232
|
this.reset();
|
|
237
233
|
} else if (this.edge && this.routingHandle) {
|
|
238
|
-
// we need to re-retrieve the edge as it might have changed due to a server
|
|
234
|
+
// we need to re-retrieve the edge as it might have changed due to a server update since we do not reset the state between
|
|
235
|
+
// reroute actions
|
|
239
236
|
const latestEdge = target.index.getById(this.edge.id);
|
|
240
237
|
if (latestEdge && isRoutable(latestEdge)) {
|
|
241
238
|
result.push(new ChangeRoutingPointsOperation([{ elementId: latestEdge.id, newRoutingPoints: latestEdge.routingPoints }]));
|
|
@@ -251,9 +248,10 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
251
248
|
if (!this.newConnectable || currentTarget !== this.newConnectable) {
|
|
252
249
|
this.setNewConnectable(currentTarget);
|
|
253
250
|
if (currentTarget) {
|
|
254
|
-
if (
|
|
255
|
-
(this.reconnectMode === '
|
|
256
|
-
|
|
251
|
+
if (
|
|
252
|
+
(this.reconnectMode === 'NEW_SOURCE' && currentTarget.canConnect(this.edge, 'source')) ||
|
|
253
|
+
(this.reconnectMode === 'NEW_TARGET' && currentTarget.canConnect(this.edge, 'target'))
|
|
254
|
+
) {
|
|
257
255
|
this.tool.dispatchFeedback([cursorFeedbackAction(CursorCSS.EDGE_RECONNECT)]);
|
|
258
256
|
return [];
|
|
259
257
|
}
|
|
@@ -293,25 +291,24 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
293
291
|
}
|
|
294
292
|
}
|
|
295
293
|
|
|
296
|
-
public reset() {
|
|
294
|
+
public reset(): void {
|
|
297
295
|
this.resetFeedback();
|
|
298
296
|
this.resetData();
|
|
299
297
|
}
|
|
300
298
|
|
|
301
|
-
protected resetData() {
|
|
299
|
+
protected resetData(): void {
|
|
302
300
|
this.edge = undefined;
|
|
303
301
|
this.reconnectMode = undefined;
|
|
304
302
|
this.newConnectable = undefined;
|
|
305
303
|
this.routingHandle = undefined;
|
|
306
304
|
}
|
|
307
305
|
|
|
308
|
-
protected resetFeedback() {
|
|
306
|
+
protected resetFeedback(): void {
|
|
309
307
|
const result: Action[] = [];
|
|
310
308
|
if (this.edge) {
|
|
311
309
|
result.push(new SwitchRoutingModeAction([], [this.edge.id]));
|
|
312
310
|
}
|
|
313
|
-
result.push(...[new HideEdgeReconnectHandlesFeedbackAction(),
|
|
314
|
-
cursorFeedbackAction(), new RemoveFeedbackEdgeAction()]);
|
|
311
|
+
result.push(...[new HideEdgeReconnectHandlesFeedbackAction(), cursorFeedbackAction(), new RemoveFeedbackEdgeAction()]);
|
|
315
312
|
this.tool.deregisterFeedback(result);
|
|
316
313
|
this.tool.deregisterFeedbackListeners();
|
|
317
314
|
}
|
|
@@ -0,0 +1,251 @@
|
|
|
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 { Action, Point, SelectAction } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { BoundsAware, EnableDefaultToolsAction, isSelectable, isSelected, KeyListener, SEdge, SModelElement, SNode, TYPES } from 'sprotty';
|
|
19
|
+
import { DOMHelper } from 'sprotty/lib/base/views/dom-helper';
|
|
20
|
+
import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
|
|
21
|
+
import { getAbsolutePosition, toAbsoluteBounds } from '../../utils/viewpoint-util';
|
|
22
|
+
import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
|
|
23
|
+
import { DrawMarqueeAction, RemoveMarqueeAction } from '../tool-feedback/marquee-tool-feedback';
|
|
24
|
+
import { BaseGLSPTool } from '../tools/base-glsp-tool';
|
|
25
|
+
|
|
26
|
+
@injectable()
|
|
27
|
+
export class MarqueeMouseTool extends BaseGLSPTool {
|
|
28
|
+
static ID = 'glsp.marquee-mouse-tool';
|
|
29
|
+
|
|
30
|
+
@inject(TYPES.DOMHelper) protected domHelper: DOMHelper;
|
|
31
|
+
|
|
32
|
+
protected marqueeMouseListener: MarqueeMouseListener;
|
|
33
|
+
protected shiftKeyListener: ShiftKeyListener = new ShiftKeyListener();
|
|
34
|
+
|
|
35
|
+
get id(): string {
|
|
36
|
+
return MarqueeMouseTool.ID;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
enable(): void {
|
|
40
|
+
this.marqueeMouseListener = new MarqueeMouseListener(this.domHelper);
|
|
41
|
+
this.mouseTool.register(this.marqueeMouseListener);
|
|
42
|
+
this.keyTool.register(this.shiftKeyListener);
|
|
43
|
+
this.dispatchFeedback([cursorFeedbackAction(CursorCSS.MARQUEE)]);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
disable(): void {
|
|
47
|
+
this.mouseTool.deregister(this.marqueeMouseListener);
|
|
48
|
+
this.keyTool.deregister(this.shiftKeyListener);
|
|
49
|
+
this.deregisterFeedback([cursorFeedbackAction()]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@injectable()
|
|
54
|
+
export class MarqueeMouseListener extends DragAwareMouseListener {
|
|
55
|
+
protected startPoint: Point;
|
|
56
|
+
|
|
57
|
+
protected currentPoint: Point;
|
|
58
|
+
|
|
59
|
+
protected domHelper: DOMHelper;
|
|
60
|
+
|
|
61
|
+
protected previouslySelected: string[];
|
|
62
|
+
|
|
63
|
+
protected isActive = false;
|
|
64
|
+
|
|
65
|
+
constructor(domHelper: DOMHelper) {
|
|
66
|
+
super();
|
|
67
|
+
this.domHelper = domHelper;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
mouseDown(target: SModelElement, event: MouseEvent): Action[] {
|
|
71
|
+
this.isActive = true;
|
|
72
|
+
this.startPoint = { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y };
|
|
73
|
+
if (event.ctrlKey) {
|
|
74
|
+
this.previouslySelected = Array.from(
|
|
75
|
+
target.root.index
|
|
76
|
+
.all()
|
|
77
|
+
.map(e => e as SModelElement & BoundsAware)
|
|
78
|
+
.filter(e => isSelected(e))
|
|
79
|
+
.map(e => e.id)
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
mouseMove(target: SModelElement, event: MouseEvent): Action[] {
|
|
86
|
+
this.currentPoint = { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y };
|
|
87
|
+
if (this.isActive) {
|
|
88
|
+
const nodeIdsSelected = Array.from(
|
|
89
|
+
target.root.index
|
|
90
|
+
.all()
|
|
91
|
+
.map(e => e as SModelElement & BoundsAware)
|
|
92
|
+
.filter(e => isSelectable(e))
|
|
93
|
+
.filter(e => e instanceof SNode)
|
|
94
|
+
.filter(e => this.isNodeMarked(e))
|
|
95
|
+
.map(e => e.id)
|
|
96
|
+
);
|
|
97
|
+
const edgeIdsSelected = this.getMarkedEdges(target.root);
|
|
98
|
+
const selected = nodeIdsSelected.concat(edgeIdsSelected);
|
|
99
|
+
return [
|
|
100
|
+
new SelectAction([], Array.from(target.root.index.all().map(e => e.id))),
|
|
101
|
+
new SelectAction(selected.concat(this.previouslySelected), []),
|
|
102
|
+
new DrawMarqueeAction(this.startPoint, { x: getAbsolutePosition(target, event).x, y: getAbsolutePosition(target, event).y })
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
mouseUp(target: SModelElement, event: MouseEvent): Action[] {
|
|
109
|
+
this.isActive = false;
|
|
110
|
+
if (event.shiftKey) {
|
|
111
|
+
return [new RemoveMarqueeAction()];
|
|
112
|
+
}
|
|
113
|
+
return [new RemoveMarqueeAction(), new EnableDefaultToolsAction()];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
getMarkedEdges(root: SModelElement): string[] {
|
|
117
|
+
const elements = Array.from(document.querySelectorAll('g'));
|
|
118
|
+
const edges = Array.from(
|
|
119
|
+
root.index
|
|
120
|
+
.all()
|
|
121
|
+
.filter(e => e instanceof SEdge)
|
|
122
|
+
.filter(e => isSelectable(e))
|
|
123
|
+
.map(e => e.id)
|
|
124
|
+
);
|
|
125
|
+
return elements
|
|
126
|
+
.filter(e => edges.includes(this.domHelper.findSModelIdByDOMElement(e)))
|
|
127
|
+
.filter(e => this.isEdgeMarked(e))
|
|
128
|
+
.map(e => this.domHelper.findSModelIdByDOMElement(e));
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
isEdgeMarked(element: SVGElement): boolean {
|
|
132
|
+
if (!element.getAttribute('transform')) {
|
|
133
|
+
if (element.children[0]) {
|
|
134
|
+
const path = element.children[0].getAttribute('d');
|
|
135
|
+
if (path) {
|
|
136
|
+
const points = path.split(/M|L/);
|
|
137
|
+
for (let i = 0; i < points.length - 1; i++) {
|
|
138
|
+
const coord1 = points[i].split(',');
|
|
139
|
+
const coord2 = points[i + 1].split(',');
|
|
140
|
+
const point1 = { x: parseInt(coord1[0], 10), y: parseInt(coord1[1], 10) };
|
|
141
|
+
const point2 = { x: parseInt(coord2[0], 10), y: parseInt(coord2[1], 10) };
|
|
142
|
+
if (this.isLineMarked(point1, point2)) {
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
isLineMarked(point1: Point, point2: Point): boolean {
|
|
153
|
+
if (this.pointInRect(point1) || this.pointInRect(point2)) {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
if (this.linesIntersect(point1, point2, this.startPoint, { x: this.startPoint.x, y: this.currentPoint.y })) {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
if (this.linesIntersect(point1, point2, this.startPoint, { x: this.currentPoint.x, y: this.startPoint.y })) {
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
if (this.linesIntersect(point1, point2, { x: this.currentPoint.x, y: this.startPoint.y }, this.currentPoint)) {
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
if (this.linesIntersect(point1, point2, { x: this.startPoint.x, y: this.currentPoint.y }, this.currentPoint)) {
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
linesIntersect(p1: Point, p2: Point, p3: Point, p4: Point): boolean {
|
|
172
|
+
const tCount = (p1.x - p3.x) * (p3.y - p4.y) - (p1.y - p3.y) * (p3.x - p4.x);
|
|
173
|
+
const tDenom = (p1.x - p2.x) * (p3.y - p4.y) - (p1.y - p2.y) * (p3.x - p4.x);
|
|
174
|
+
const t = tCount / tDenom;
|
|
175
|
+
const uCount = (p2.x - p1.x) * (p1.y - p3.y) - (p2.y - p1.y) * (p1.x - p3.x);
|
|
176
|
+
const uDenom = (p1.x - p2.x) * (p3.y - p4.y) - (p1.y - p2.y) * (p3.x - p4.x);
|
|
177
|
+
const u = uCount / uDenom;
|
|
178
|
+
if (t >= 0.0 && t <= 1.0 && u >= 0.0 && u <= 1.0) {
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
pointInRect(point: Point): boolean {
|
|
185
|
+
const boolX =
|
|
186
|
+
this.startPoint.x <= this.currentPoint.x
|
|
187
|
+
? this.isBetween(point.x, this.startPoint.x, this.currentPoint.x)
|
|
188
|
+
: this.isBetween(point.x, this.currentPoint.x, this.startPoint.x);
|
|
189
|
+
const boolY =
|
|
190
|
+
this.startPoint.y <= this.currentPoint.y
|
|
191
|
+
? this.isBetween(point.y, this.startPoint.y, this.currentPoint.y)
|
|
192
|
+
: this.isBetween(point.y, this.currentPoint.y, this.startPoint.y);
|
|
193
|
+
return boolX && boolY;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
isNodeMarked(element: SModelElement & BoundsAware): boolean {
|
|
197
|
+
const horizontallyIn =
|
|
198
|
+
this.startPoint.x < this.currentPoint.x
|
|
199
|
+
? this.isElementBetweenXAxis(element, this.startPoint.x, this.currentPoint.x)
|
|
200
|
+
: this.isElementBetweenXAxis(element, this.currentPoint.x, this.startPoint.x);
|
|
201
|
+
const verticallyIn =
|
|
202
|
+
this.startPoint.y < this.currentPoint.y
|
|
203
|
+
? this.isElementBetweenYAxis(element, this.startPoint.y, this.currentPoint.y)
|
|
204
|
+
: this.isElementBetweenYAxis(element, this.currentPoint.y, this.startPoint.y);
|
|
205
|
+
if (horizontallyIn && verticallyIn) {
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
isElementBetweenXAxis(element: SModelElement & BoundsAware, marqueeLeft: number, marqueeRight: number): boolean {
|
|
212
|
+
if (
|
|
213
|
+
this.isBetween(marqueeLeft, toAbsoluteBounds(element).x, toAbsoluteBounds(element).x + toAbsoluteBounds(element).width) ||
|
|
214
|
+
this.isBetween(marqueeRight, toAbsoluteBounds(element).x, toAbsoluteBounds(element).x + toAbsoluteBounds(element).width)
|
|
215
|
+
) {
|
|
216
|
+
return true;
|
|
217
|
+
}
|
|
218
|
+
const leftEdge = this.isBetween(toAbsoluteBounds(element).x, marqueeLeft, marqueeRight);
|
|
219
|
+
const rightEdge = this.isBetween(toAbsoluteBounds(element).x + toAbsoluteBounds(element).width, marqueeLeft, marqueeRight);
|
|
220
|
+
return leftEdge || rightEdge;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
isElementBetweenYAxis(element: SModelElement & BoundsAware, marqueeTop: number, marqueeBottom: number): boolean {
|
|
224
|
+
if (
|
|
225
|
+
this.isBetween(marqueeTop, toAbsoluteBounds(element).y, toAbsoluteBounds(element).y + toAbsoluteBounds(element).height) ||
|
|
226
|
+
this.isBetween(marqueeBottom, toAbsoluteBounds(element).y, toAbsoluteBounds(element).y + toAbsoluteBounds(element).height)
|
|
227
|
+
) {
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
const topEdge = this.isBetween(toAbsoluteBounds(element).y, marqueeTop, marqueeBottom);
|
|
231
|
+
const bottomEdge = this.isBetween(toAbsoluteBounds(element).y + toAbsoluteBounds(element).height, marqueeTop, marqueeBottom);
|
|
232
|
+
return topEdge || bottomEdge;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
isBetween(x: number, lower: number, upper: number): boolean {
|
|
236
|
+
if (lower <= x && x <= upper) {
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
@injectable()
|
|
244
|
+
export class ShiftKeyListener extends KeyListener {
|
|
245
|
+
keyUp(element: SModelElement, event: KeyboardEvent): Action[] {
|
|
246
|
+
if (event.shiftKey) {
|
|
247
|
+
return [];
|
|
248
|
+
}
|
|
249
|
+
return [new RemoveMarqueeAction(), new EnableDefaultToolsAction()];
|
|
250
|
+
}
|
|
251
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
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 { Action } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { EnableToolsAction, KeyListener, KeyTool, SModelElement } from 'sprotty';
|
|
19
|
+
import { BaseGLSPTool } from '../tools/base-glsp-tool';
|
|
20
|
+
import { MarqueeMouseTool } from './marquee-mouse-tool';
|
|
21
|
+
|
|
22
|
+
@injectable()
|
|
23
|
+
export class MarqueeTool extends BaseGLSPTool {
|
|
24
|
+
static ID = 'glsp.marquee-tool';
|
|
25
|
+
|
|
26
|
+
protected marqueeKeyListener: MarqueeKeyListener = new MarqueeKeyListener();
|
|
27
|
+
|
|
28
|
+
@inject(KeyTool) protected readonly keytool: KeyTool;
|
|
29
|
+
|
|
30
|
+
get id(): string {
|
|
31
|
+
return MarqueeTool.ID;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
enable(): void {
|
|
35
|
+
this.keyTool.register(this.marqueeKeyListener);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
disable(): void {
|
|
39
|
+
this.keyTool.deregister(this.marqueeKeyListener);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@injectable()
|
|
44
|
+
export class MarqueeKeyListener extends KeyListener {
|
|
45
|
+
keyDown(element: SModelElement, event: KeyboardEvent): Action[] {
|
|
46
|
+
if (event.shiftKey) {
|
|
47
|
+
return [new EnableToolsAction([MarqueeMouseTool.ID])];
|
|
48
|
+
}
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) 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,4 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
|
|
16
|
+
import { boundsFeature, Point, RectangularNode } from 'sprotty';
|
|
17
|
+
|
|
18
|
+
export class MarqueeNode extends RectangularNode {
|
|
19
|
+
static readonly DEFAULT_FEATURES = [boundsFeature];
|
|
20
|
+
startPoint: Point;
|
|
21
|
+
endPoint: Point;
|
|
22
|
+
}
|
|
@@ -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,9 +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 {
|
|
16
|
+
import { Action, CreateNodeOperation, isTriggerNodeCreationAction, TriggerNodeCreationAction } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable, optional } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
EnableDefaultToolsAction,
|
|
20
20
|
EnableToolsAction,
|
|
21
21
|
findParentByFeature,
|
|
@@ -25,22 +25,16 @@ import {
|
|
|
25
25
|
SModelElement,
|
|
26
26
|
SNode,
|
|
27
27
|
TYPES
|
|
28
|
-
} from
|
|
29
|
-
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
TriggerNodeCreationAction
|
|
35
|
-
} from "../../base/operations/operation";
|
|
36
|
-
import { getAbsolutePosition } from "../../utils/viewpoint-util";
|
|
37
|
-
import { Containable, isContainable } from "../hints/model";
|
|
38
|
-
import { CursorCSS, cursorFeedbackAction } from "../tool-feedback/css-feedback";
|
|
39
|
-
import { BaseGLSPTool } from "./base-glsp-tool";
|
|
28
|
+
} from 'sprotty';
|
|
29
|
+
import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
|
|
30
|
+
import { getAbsolutePosition } from '../../utils/viewpoint-util';
|
|
31
|
+
import { Containable, isContainable } from '../hints/model';
|
|
32
|
+
import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
|
|
33
|
+
import { BaseGLSPTool } from './base-glsp-tool';
|
|
40
34
|
|
|
41
35
|
@injectable()
|
|
42
36
|
export class NodeCreationTool extends BaseGLSPTool implements IActionHandler {
|
|
43
|
-
static ID =
|
|
37
|
+
static ID = 'tool_create_node';
|
|
44
38
|
|
|
45
39
|
@inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
|
|
46
40
|
|
|
@@ -51,7 +45,7 @@ export class NodeCreationTool extends BaseGLSPTool implements IActionHandler {
|
|
|
51
45
|
return NodeCreationTool.ID;
|
|
52
46
|
}
|
|
53
47
|
|
|
54
|
-
enable() {
|
|
48
|
+
enable(): void {
|
|
55
49
|
if (this.triggerAction === undefined) {
|
|
56
50
|
throw new TypeError(`Could not enable tool ${this.id}.The triggerAction cannot be undefined.`);
|
|
57
51
|
}
|
|
@@ -60,7 +54,7 @@ export class NodeCreationTool extends BaseGLSPTool implements IActionHandler {
|
|
|
60
54
|
this.dispatchFeedback([cursorFeedbackAction(CursorCSS.NODE_CREATION)]);
|
|
61
55
|
}
|
|
62
56
|
|
|
63
|
-
disable() {
|
|
57
|
+
disable(): void {
|
|
64
58
|
this.mouseTool.deregister(this.creationToolMouseListener);
|
|
65
59
|
this.deregisterFeedback([cursorFeedbackAction()]);
|
|
66
60
|
}
|
|
@@ -76,17 +70,19 @@ export class NodeCreationTool extends BaseGLSPTool implements IActionHandler {
|
|
|
76
70
|
@injectable()
|
|
77
71
|
export class NodeCreationToolMouseListener extends DragAwareMouseListener {
|
|
78
72
|
protected container?: SModelElement & Containable;
|
|
73
|
+
|
|
79
74
|
constructor(protected triggerAction: TriggerNodeCreationAction, protected tool: NodeCreationTool) {
|
|
80
75
|
super();
|
|
81
76
|
}
|
|
82
77
|
|
|
83
|
-
protected creationAllowed(elementTypeId: string) {
|
|
78
|
+
protected creationAllowed(elementTypeId: string): boolean | undefined {
|
|
84
79
|
return this.container && this.container.isContainableElement(elementTypeId);
|
|
85
80
|
}
|
|
86
81
|
|
|
87
|
-
get elementTypeId() {
|
|
82
|
+
get elementTypeId(): string {
|
|
88
83
|
return this.triggerAction.elementTypeId;
|
|
89
84
|
}
|
|
85
|
+
|
|
90
86
|
nonDraggingMouseUp(target: SModelElement, event: MouseEvent): Action[] {
|
|
91
87
|
const result: Action[] = [];
|
|
92
88
|
if (this.creationAllowed(this.elementTypeId)) {
|
|
@@ -111,8 +107,8 @@ export class NodeCreationToolMouseListener extends DragAwareMouseListener {
|
|
|
111
107
|
if (!this.container || currentContainer !== this.container) {
|
|
112
108
|
this.container = currentContainer;
|
|
113
109
|
const feedback = this.creationAllowed(this.elementTypeId)
|
|
114
|
-
? cursorFeedbackAction(CursorCSS.NODE_CREATION)
|
|
115
|
-
cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED);
|
|
110
|
+
? cursorFeedbackAction(CursorCSS.NODE_CREATION)
|
|
111
|
+
: cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED);
|
|
116
112
|
this.tool.dispatchFeedback([feedback]);
|
|
117
113
|
}
|
|
118
114
|
return [];
|
|
@@ -0,0 +1,44 @@
|
|
|
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 { VNode } from 'snabbdom';
|
|
18
|
+
import { RectangularNodeView, RenderingContext, svg } from 'sprotty';
|
|
19
|
+
|
|
20
|
+
import { MarqueeNode } from './model';
|
|
21
|
+
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
23
|
+
const JSX = { createElement: svg };
|
|
24
|
+
|
|
25
|
+
@injectable()
|
|
26
|
+
export class MarqueeView extends RectangularNodeView {
|
|
27
|
+
render(node: MarqueeNode, context: RenderingContext): VNode {
|
|
28
|
+
const graph = (
|
|
29
|
+
<g>
|
|
30
|
+
<rect
|
|
31
|
+
class-sprotty-node={true}
|
|
32
|
+
class-marquee={true}
|
|
33
|
+
x={node.startPoint.x - node.endPoint.x <= 0 ? node.startPoint.x : node.endPoint.x}
|
|
34
|
+
y={node.startPoint.y - node.endPoint.y <= 0 ? node.startPoint.y : node.endPoint.y}
|
|
35
|
+
rx={0}
|
|
36
|
+
ry={0}
|
|
37
|
+
width={Math.abs(node.startPoint.x - node.endPoint.x)}
|
|
38
|
+
height={Math.abs(node.startPoint.y - node.endPoint.y)}
|
|
39
|
+
></rect>
|
|
40
|
+
</g>
|
|
41
|
+
);
|
|
42
|
+
return graph;
|
|
43
|
+
}
|
|
44
|
+
}
|