@eclipse-glsp/client 0.9.0-next.d9bed812 → 0.9.0-next.eb280175
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 +2 -1
- 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 +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/{args.d.ts → argumentable.d.ts} +4 -6
- 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-actions.js.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +5 -5
- 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 +100 -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 +3 -1
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +23 -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 -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.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 +21 -3
- 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 +2 -2
- 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 +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 +18 -2
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.js +44 -86
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
- 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.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 +22 -6
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +225 -291
- 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 +1 -16
- 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 +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-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 +27 -15
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.js +90 -184
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
- package/lib/features/tools/marquee-tool.d.ts +18 -2
- 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.d.ts +1 -1
- package/lib/features/tools/model.d.ts.map +1 -1
- package/lib/features/tools/model.js +6 -24
- package/lib/features/tools/model.js.map +1 -1
- 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 +3 -18
- package/lib/features/tools/view.d.ts.map +1 -1
- package/lib/features/tools/view.js +21 -39
- package/lib/features/tools/view.js.map +1 -1
- 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/features/viewport/di.config.d.ts +16 -1
- package/lib/features/viewport/di.config.d.ts.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 +3 -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 +32 -35
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +33 -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 +9 -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/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/{features/model-source-watcher/model-source-changed-action.d.ts → views/index.d.ts} +8 -10
- package/lib/views/index.d.ts.map +1 -0
- package/lib/views/index.js +34 -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/base/{args.ts → argumentable.ts} +3 -4
- package/src/base/auto-complete/auto-complete-actions.ts +2 -2
- package/src/base/auto-complete/auto-complete-widget.ts +66 -48
- package/src/base/auto-complete/validation-decorator.ts +21 -15
- package/src/base/command-stack.ts +4 -7
- package/src/base/container-modules.ts +112 -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 +23 -21
- package/src/{features/model-source-watcher/model-source-changed-action.ts → base/view/view-registry.ts} +15 -10
- 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 -12
- 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 +16 -13
- package/src/features/tool-feedback/di.config.ts +12 -15
- 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 +12 -12
- 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 -7
- package/src/features/tool-palette/palette-item.ts +5 -7
- package/src/features/tool-palette/tool-palette.ts +118 -110
- 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 +16 -17
- 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-behavior.spec.ts +175 -0
- package/src/features/tools/marquee-behavior.ts +158 -0
- package/src/features/tools/marquee-mouse-tool.ts +67 -118
- package/src/features/tools/marquee-tool.ts +6 -6
- package/src/features/tools/model.ts +1 -2
- package/src/features/tools/node-creation-tool.ts +16 -23
- package/src/features/tools/view.tsx +21 -15
- 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 +4 -4
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +5 -5
- package/src/index.ts +53 -38
- 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 +97 -0
- package/src/views/compartments.tsx +37 -0
- package/src/views/glsp-edge-view.tsx +79 -0
- package/src/views/index.ts +21 -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.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 -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/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 -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/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 -178
- 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
- package/src/utils/array-utils.ts +0 -55
|
@@ -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,18 +13,19 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
16
|
+
/* eslint-disable import/no-deprecated,no-unused-expressions */
|
|
17
|
+
import { Action } from '@eclipse-glsp/protocol';
|
|
18
|
+
import { AssertionError, expect } from 'chai';
|
|
19
|
+
import { Container, injectable } from 'inversify';
|
|
20
|
+
import { defaultModule, SGraphFactory, SModelElementSchema, SModelRoot, TYPES } from 'sprotty';
|
|
21
|
+
import { GLSP_TYPES } from '../../base/types';
|
|
22
|
+
import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
|
|
23
|
+
import { SelectFeedbackAction } from './select-feedback-action';
|
|
24
|
+
import { SelectionListener, SelectionService } from './selection-service';
|
|
24
25
|
|
|
25
26
|
@injectable()
|
|
26
27
|
class MockFeedbackActionDispatcher implements IFeedbackActionDispatcher {
|
|
27
|
-
protected feedbackEmitters: Map<IFeedbackEmitter, Action[]> = new Map;
|
|
28
|
+
protected feedbackEmitters: Map<IFeedbackEmitter, Action[]> = new Map();
|
|
28
29
|
|
|
29
30
|
registerFeedback(feedbackEmitter: IFeedbackEmitter, actions: Action[]): void {
|
|
30
31
|
this.feedbackEmitters.set(feedbackEmitter, actions);
|
|
@@ -42,12 +43,12 @@ class MockFeedbackActionDispatcher implements IFeedbackActionDispatcher {
|
|
|
42
43
|
|
|
43
44
|
getSingleFeedbackAction(): SelectFeedbackAction | undefined {
|
|
44
45
|
const actions = this.getRegisteredFeedback();
|
|
45
|
-
return actions.length === 1 ? actions[0] as SelectFeedbackAction : undefined;
|
|
46
|
+
return actions.length === 1 ? (actions[0] as SelectFeedbackAction) : undefined;
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
|
|
49
50
|
class MockSelectionListener implements SelectionListener {
|
|
50
|
-
private called
|
|
51
|
+
private called = 0;
|
|
51
52
|
private root: SModelRoot;
|
|
52
53
|
private selectedElements: string[] = [];
|
|
53
54
|
|
|
@@ -57,15 +58,15 @@ class MockSelectionListener implements SelectionListener {
|
|
|
57
58
|
this.selectedElements = selectedElements;
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
getRoot() {
|
|
61
|
+
getRoot(): SModelRoot {
|
|
61
62
|
return this.root;
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
getSelectedElements() {
|
|
65
|
+
getSelectedElements(): string[] {
|
|
65
66
|
return this.selectedElements;
|
|
66
67
|
}
|
|
67
68
|
|
|
68
|
-
getCalled() {
|
|
69
|
+
getCalled(): number {
|
|
69
70
|
return this.called;
|
|
70
71
|
}
|
|
71
72
|
}
|
|
@@ -332,12 +333,12 @@ describe('SelectionService', () => {
|
|
|
332
333
|
});
|
|
333
334
|
}
|
|
334
335
|
|
|
335
|
-
function assertSelectionAndFeedback(expectedSelection: string[], expectedDeselection: string[]) {
|
|
336
|
+
function assertSelectionAndFeedback(expectedSelection: string[], expectedDeselection: string[]): void {
|
|
336
337
|
assertSelectionService(expectedSelection);
|
|
337
338
|
assertDispatchedFeedback(expectedSelection, expectedDeselection);
|
|
338
339
|
}
|
|
339
340
|
|
|
340
|
-
function assertSelectionService(expectedSelection: string[]) {
|
|
341
|
+
function assertSelectionService(expectedSelection: string[]): void {
|
|
341
342
|
expect(selectionService.isSingleSelection()).to.equal(expectedSelection.length === 1);
|
|
342
343
|
expect(selectionService.isMultiSelection()).to.equal(expectedSelection.length > 1);
|
|
343
344
|
expect(selectionService.hasSelectedElements()).to.equal(expectedSelection.length > 0);
|
|
@@ -347,7 +348,7 @@ describe('SelectionService', () => {
|
|
|
347
348
|
}
|
|
348
349
|
}
|
|
349
350
|
|
|
350
|
-
function assertDispatchedFeedback(expectedSelection: string[], expectedDeselection: string[]) {
|
|
351
|
+
function assertDispatchedFeedback(expectedSelection: string[], expectedDeselection: string[]): void {
|
|
351
352
|
// a single feedback action reflects aggregated selection/deselection
|
|
352
353
|
const hasFeedback = expectedSelection.length > 0 || expectedDeselection.length > 0;
|
|
353
354
|
if (hasFeedback) {
|
|
@@ -362,7 +363,12 @@ describe('SelectionService', () => {
|
|
|
362
363
|
}
|
|
363
364
|
}
|
|
364
365
|
|
|
365
|
-
function assertListener(
|
|
366
|
+
function assertListener(
|
|
367
|
+
listener: MockSelectionListener,
|
|
368
|
+
expectedRoot: SModelRoot | undefined,
|
|
369
|
+
expectedSelection: string[],
|
|
370
|
+
expectedCalled: number
|
|
371
|
+
): void {
|
|
366
372
|
expect(listener.getRoot()).to.equal(expectedRoot);
|
|
367
373
|
expect(listener.getSelectedElements()).to.have.lengthOf(expectedSelection.length);
|
|
368
374
|
expect(listener.getSelectedElements()).to.have.ordered.members(expectedSelection);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019-
|
|
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,30 +13,26 @@
|
|
|
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, distinctAdd, remove, SelectAction, SelectAllAction } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable, multiInject, optional } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
Command,
|
|
20
20
|
CommandExecutionContext,
|
|
21
21
|
ILogger,
|
|
22
22
|
isSelectable,
|
|
23
23
|
isSelected,
|
|
24
24
|
SChildElement,
|
|
25
|
-
SelectAction,
|
|
26
|
-
SelectAllAction,
|
|
27
25
|
SelectAllCommand as SprottySelectAllCommand,
|
|
28
26
|
SelectCommand as SprottySelectCommand,
|
|
29
27
|
SModelElement,
|
|
30
28
|
SModelRoot,
|
|
31
29
|
SParentElement,
|
|
32
30
|
TYPES
|
|
33
|
-
} from
|
|
34
|
-
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
38
|
-
import { IFeedbackActionDispatcher } from "../tool-feedback/feedback-action-dispatcher";
|
|
39
|
-
import { SelectFeedbackAction } from "./select-feedback-action";
|
|
31
|
+
} from 'sprotty';
|
|
32
|
+
import { SModelRootListener } from '../../base/model/update-model-command';
|
|
33
|
+
import { GLSP_TYPES } from '../../base/types';
|
|
34
|
+
import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
|
|
35
|
+
import { SelectFeedbackAction } from './select-feedback-action';
|
|
40
36
|
|
|
41
37
|
export interface SelectionListener {
|
|
42
38
|
selectionChanged(root: Readonly<SModelRoot>, selectedElements: string[]): void;
|
|
@@ -50,13 +46,13 @@ export class SelectionService implements SModelRootListener {
|
|
|
50
46
|
@inject(GLSP_TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
|
|
51
47
|
@inject(TYPES.ILogger) protected logger: ILogger;
|
|
52
48
|
|
|
53
|
-
constructor(@multiInject(GLSP_TYPES.SelectionListener) @optional() protected selectionListeners: SelectionListener[] = []) {
|
|
49
|
+
constructor(@multiInject(GLSP_TYPES.SelectionListener) @optional() protected selectionListeners: SelectionListener[] = []) {}
|
|
54
50
|
|
|
55
|
-
register(selectionListener: SelectionListener) {
|
|
51
|
+
register(selectionListener: SelectionListener): void {
|
|
56
52
|
distinctAdd(this.selectionListeners, selectionListener);
|
|
57
53
|
}
|
|
58
54
|
|
|
59
|
-
deregister(selectionListener: SelectionListener) {
|
|
55
|
+
deregister(selectionListener: SelectionListener): void {
|
|
60
56
|
remove(this.selectionListeners, selectionListener);
|
|
61
57
|
}
|
|
62
58
|
|
|
@@ -64,7 +60,7 @@ export class SelectionService implements SModelRootListener {
|
|
|
64
60
|
this.updateSelection(root, [], []);
|
|
65
61
|
}
|
|
66
62
|
|
|
67
|
-
updateSelection(root: Readonly<SModelRoot>, select: string[], deselect: string[]) {
|
|
63
|
+
updateSelection(root: Readonly<SModelRoot>, select: string[], deselect: string[]): void {
|
|
68
64
|
if (root === undefined && select.length === 0 && deselect.length === 0) {
|
|
69
65
|
return;
|
|
70
66
|
}
|
|
@@ -99,7 +95,9 @@ export class SelectionService implements SModelRootListener {
|
|
|
99
95
|
}
|
|
100
96
|
|
|
101
97
|
// only send out changes if there actually are changes, i.e., the root or the selected elements changed
|
|
102
|
-
const selectionChanged =
|
|
98
|
+
const selectionChanged =
|
|
99
|
+
prevSelectedElementIDs.size !== this.selectedElementIDs.size ||
|
|
100
|
+
![...prevSelectedElementIDs].every(value => this.selectedElementIDs.has(value));
|
|
103
101
|
if (selectionChanged) {
|
|
104
102
|
// aggregate to feedback action handling all elements as only the last feedback is restored
|
|
105
103
|
this.dispatchFeedback([new SelectFeedbackAction([...this.selectedElementIDs], [...deselectedElementIDs])]);
|
|
@@ -112,11 +110,11 @@ export class SelectionService implements SModelRootListener {
|
|
|
112
110
|
}
|
|
113
111
|
}
|
|
114
112
|
|
|
115
|
-
dispatchFeedback(actions: Action[]) {
|
|
113
|
+
dispatchFeedback(actions: Action[]): void {
|
|
116
114
|
this.feedbackDispatcher.registerFeedback(this, actions);
|
|
117
115
|
}
|
|
118
116
|
|
|
119
|
-
notifyListeners(root: SModelRoot, selectedElementIDs: Set<string>) {
|
|
117
|
+
notifyListeners(root: SModelRoot, selectedElementIDs: Set<string>): void {
|
|
120
118
|
this.selectionListeners.forEach(listener => listener.selectionChanged(root, Array.from(selectedElementIDs)));
|
|
121
119
|
}
|
|
122
120
|
|
|
@@ -149,7 +147,6 @@ export class SelectionService implements SModelRootListener {
|
|
|
149
147
|
}
|
|
150
148
|
}
|
|
151
149
|
|
|
152
|
-
|
|
153
150
|
@injectable()
|
|
154
151
|
export class SelectCommand extends Command {
|
|
155
152
|
static readonly KIND = SprottySelectCommand.KIND;
|
|
@@ -157,7 +154,10 @@ export class SelectCommand extends Command {
|
|
|
157
154
|
protected selected: SModelElement[] = [];
|
|
158
155
|
protected deselected: SModelElement[] = [];
|
|
159
156
|
|
|
160
|
-
constructor(
|
|
157
|
+
constructor(
|
|
158
|
+
@inject(TYPES.Action) public action: SelectAction,
|
|
159
|
+
@inject(GLSP_TYPES.SelectionService) public selectionService: SelectionService
|
|
160
|
+
) {
|
|
161
161
|
super();
|
|
162
162
|
}
|
|
163
163
|
|
|
@@ -198,7 +198,10 @@ export class SelectAllCommand extends Command {
|
|
|
198
198
|
static readonly KIND = SprottySelectAllCommand.KIND;
|
|
199
199
|
protected previousSelection: Map<string, boolean> = new Map<string, boolean>();
|
|
200
200
|
|
|
201
|
-
constructor(
|
|
201
|
+
constructor(
|
|
202
|
+
@inject(TYPES.Action) public action: SelectAllAction,
|
|
203
|
+
@inject(GLSP_TYPES.SelectionService) public selectionService: SelectionService
|
|
204
|
+
) {
|
|
202
205
|
super();
|
|
203
206
|
}
|
|
204
207
|
|
|
@@ -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 {
|
|
17
|
-
import {
|
|
16
|
+
import { Action, Point } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { VNode } from 'snabbdom';
|
|
18
19
|
import {
|
|
19
|
-
Action,
|
|
20
20
|
CommandExecutionContext,
|
|
21
21
|
CommandReturn,
|
|
22
22
|
ElementMove,
|
|
@@ -26,38 +26,35 @@ import {
|
|
|
26
26
|
isViewport,
|
|
27
27
|
MouseListener,
|
|
28
28
|
MoveAction,
|
|
29
|
-
|
|
29
|
+
SChildElement,
|
|
30
30
|
SModelElement,
|
|
31
31
|
SModelRoot,
|
|
32
32
|
TYPES
|
|
33
|
-
} from
|
|
34
|
-
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
38
|
-
import { ChangeBoundsTool } from
|
|
39
|
-
import { FeedbackCommand } from
|
|
33
|
+
} from 'sprotty';
|
|
34
|
+
import { isNotUndefined } from '../../utils/smodel-util';
|
|
35
|
+
import { addResizeHandles, isResizable, removeResizeHandles, SResizeHandle } from '../change-bounds/model';
|
|
36
|
+
import { createMovementRestrictionFeedback, removeMovementRestrictionFeedback } from '../change-bounds/movement-restrictor';
|
|
37
|
+
import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
|
|
38
|
+
import { ChangeBoundsTool } from '../tools/change-bounds-tool';
|
|
39
|
+
import { FeedbackCommand } from './model';
|
|
40
40
|
|
|
41
41
|
export class ShowChangeBoundsToolResizeFeedbackAction implements Action {
|
|
42
|
-
constructor(readonly elementId?: string, public readonly kind: string = ShowChangeBoundsToolResizeFeedbackCommand.KIND) {
|
|
42
|
+
constructor(readonly elementId?: string, public readonly kind: string = ShowChangeBoundsToolResizeFeedbackCommand.KIND) {}
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
export class HideChangeBoundsToolResizeFeedbackAction implements Action {
|
|
46
|
-
constructor(public readonly kind: string = HideChangeBoundsToolResizeFeedbackCommand.KIND) {
|
|
46
|
+
constructor(public readonly kind: string = HideChangeBoundsToolResizeFeedbackCommand.KIND) {}
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
@injectable()
|
|
50
50
|
export class ShowChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
|
|
51
|
-
static readonly KIND =
|
|
51
|
+
static readonly KIND = 'showChangeBoundsToolResizeFeedback';
|
|
52
52
|
|
|
53
53
|
@inject(TYPES.Action) protected action: ShowChangeBoundsToolResizeFeedbackAction;
|
|
54
54
|
|
|
55
55
|
execute(context: CommandExecutionContext): CommandReturn {
|
|
56
56
|
const index = context.root.index;
|
|
57
|
-
index
|
|
58
|
-
.all()
|
|
59
|
-
.filter(isResizable)
|
|
60
|
-
.forEach(removeResizeHandles);
|
|
57
|
+
index.all().filter(isResizable).forEach(removeResizeHandles);
|
|
61
58
|
|
|
62
59
|
if (isNotUndefined(this.action.elementId)) {
|
|
63
60
|
const resizeElement = index.getById(this.action.elementId);
|
|
@@ -71,16 +68,13 @@ export class ShowChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
|
|
|
71
68
|
|
|
72
69
|
@injectable()
|
|
73
70
|
export class HideChangeBoundsToolResizeFeedbackCommand extends FeedbackCommand {
|
|
74
|
-
static readonly KIND =
|
|
71
|
+
static readonly KIND = 'hideChangeBoundsToolResizeFeedback';
|
|
75
72
|
|
|
76
73
|
@inject(TYPES.Action) protected action: HideChangeBoundsToolResizeFeedbackAction;
|
|
77
74
|
|
|
78
75
|
execute(context: CommandExecutionContext): CommandReturn {
|
|
79
76
|
const index = context.root.index;
|
|
80
|
-
index
|
|
81
|
-
.all()
|
|
82
|
-
.filter(isResizable)
|
|
83
|
-
.forEach(removeResizeHandles);
|
|
77
|
+
index.all().filter(isResizable).forEach(removeResizeHandles);
|
|
84
78
|
return context.root;
|
|
85
79
|
}
|
|
86
80
|
}
|
|
@@ -116,22 +110,27 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
116
110
|
|
|
117
111
|
mouseMove(target: SModelElement, event: MouseEvent): Action[] {
|
|
118
112
|
const result: Action[] = [];
|
|
119
|
-
if (event.buttons === 0)
|
|
120
|
-
|
|
113
|
+
if (event.buttons === 0) {
|
|
114
|
+
this.mouseUp(target, event);
|
|
115
|
+
} else if (this.startDragPosition) {
|
|
121
116
|
if (this.elementId2startPos.size === 0) {
|
|
122
117
|
this.collectStartPositions(target.root);
|
|
123
118
|
}
|
|
124
119
|
this.hasDragged = true;
|
|
125
120
|
const moveAction = this.getElementMoves(target, event, false);
|
|
126
|
-
if (moveAction)
|
|
121
|
+
if (moveAction) {
|
|
122
|
+
result.push(moveAction);
|
|
123
|
+
result.push(cursorFeedbackAction(CursorCSS.MOVE));
|
|
124
|
+
}
|
|
127
125
|
}
|
|
128
126
|
return result;
|
|
129
127
|
}
|
|
130
128
|
|
|
131
|
-
protected collectStartPositions(root: SModelRoot) {
|
|
132
|
-
root.index
|
|
133
|
-
|
|
134
|
-
|
|
129
|
+
protected collectStartPositions(root: SModelRoot): void {
|
|
130
|
+
const selectedElements = root.index.all().filter(element => isSelectable(element) && element.selected);
|
|
131
|
+
const elementsSet = new Set(selectedElements);
|
|
132
|
+
selectedElements
|
|
133
|
+
.filter(element => !this.isChildOfSelected(elementsSet, element))
|
|
135
134
|
.forEach(element => {
|
|
136
135
|
if (isMoveable(element)) {
|
|
137
136
|
this.elementId2startPos.set(element.id, element.position);
|
|
@@ -139,8 +138,20 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
139
138
|
});
|
|
140
139
|
}
|
|
141
140
|
|
|
141
|
+
protected isChildOfSelected(selectedElements: Set<SModelElement>, element: SModelElement): boolean {
|
|
142
|
+
while (element instanceof SChildElement) {
|
|
143
|
+
element = element.parent;
|
|
144
|
+
if (selectedElements.has(element)) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
|
|
142
151
|
protected getElementMoves(target: SModelElement, event: MouseEvent, isFinished: boolean): MoveAction | undefined {
|
|
143
|
-
if (!this.startDragPosition)
|
|
152
|
+
if (!this.startDragPosition) {
|
|
153
|
+
return undefined;
|
|
154
|
+
}
|
|
144
155
|
const elementMoves: ElementMove[] = [];
|
|
145
156
|
const viewport = findParentByFeature(target, isViewport);
|
|
146
157
|
const zoom = viewport ? viewport.zoom : 1;
|
|
@@ -173,12 +184,14 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
173
184
|
}
|
|
174
185
|
}
|
|
175
186
|
});
|
|
176
|
-
if (elementMoves.length > 0)
|
|
187
|
+
if (elementMoves.length > 0) {
|
|
177
188
|
return new MoveAction(elementMoves, false, isFinished);
|
|
178
|
-
else
|
|
189
|
+
} else {
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
179
192
|
}
|
|
180
193
|
|
|
181
|
-
protected validateMove(startPostion: Point, toPosition: Point, element: SModelElement, isFinished: boolean) {
|
|
194
|
+
protected validateMove(startPostion: Point, toPosition: Point, element: SModelElement, isFinished: boolean): Point {
|
|
182
195
|
let newPosition = toPosition;
|
|
183
196
|
if (this.tool.movementRestrictor) {
|
|
184
197
|
const valid = this.tool.movementRestrictor.validate(toPosition, element);
|
|
@@ -199,13 +212,17 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
199
212
|
}
|
|
200
213
|
|
|
201
214
|
protected snap(position: Point, element: SModelElement, isSnap: boolean): Point {
|
|
202
|
-
if (isSnap && this.tool.snapper)
|
|
203
|
-
|
|
215
|
+
if (isSnap && this.tool.snapper) {
|
|
216
|
+
return this.tool.snapper.snap(position, element);
|
|
217
|
+
} else {
|
|
218
|
+
return position;
|
|
219
|
+
}
|
|
204
220
|
}
|
|
205
221
|
|
|
206
222
|
mouseEnter(target: SModelElement, event: MouseEvent): Action[] {
|
|
207
|
-
if (target instanceof SModelRoot && event.buttons === 0)
|
|
223
|
+
if (target instanceof SModelRoot && event.buttons === 0 && !this.startDragPosition) {
|
|
208
224
|
this.mouseUp(target, event);
|
|
225
|
+
}
|
|
209
226
|
return [];
|
|
210
227
|
}
|
|
211
228
|
|
|
@@ -219,7 +236,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
219
236
|
if (this.tool.movementRestrictor) {
|
|
220
237
|
this.tool.deregisterFeedback([removeMovementRestrictionFeedback(target, this.tool.movementRestrictor)], this);
|
|
221
238
|
}
|
|
222
|
-
|
|
239
|
+
result.push(cursorFeedbackAction(CursorCSS.DEFAULT));
|
|
223
240
|
}
|
|
224
241
|
this.hasDragged = false;
|
|
225
242
|
this.startDragPosition = undefined;
|
|
@@ -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,10 @@
|
|
|
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, Point } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
|
|
19
|
+
add,
|
|
19
20
|
AnchorComputerRegistry,
|
|
20
21
|
center,
|
|
21
22
|
CommandExecutionContext,
|
|
@@ -36,18 +37,18 @@ import {
|
|
|
36
37
|
SModelRoot,
|
|
37
38
|
SRoutableElement,
|
|
38
39
|
TYPES
|
|
39
|
-
} from
|
|
40
|
-
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
43
|
-
import { FeedbackCommand } from "./model";
|
|
40
|
+
} from 'sprotty';
|
|
41
|
+
import { isRoutable } from '../../utils/smodel-util';
|
|
42
|
+
import { getAbsolutePosition, toAbsoluteBounds, toAbsolutePosition } from '../../utils/viewpoint-util';
|
|
43
|
+
import { FeedbackCommand } from './model';
|
|
44
44
|
|
|
45
45
|
export class DrawFeedbackEdgeAction implements Action {
|
|
46
46
|
constructor(
|
|
47
47
|
public readonly elementTypeId: string,
|
|
48
48
|
public readonly sourceId: string,
|
|
49
49
|
public readonly edgeSchema?: SEdgeSchema,
|
|
50
|
-
public readonly kind: string = DrawFeedbackEdgeCommand.KIND
|
|
50
|
+
public readonly kind: string = DrawFeedbackEdgeCommand.KIND
|
|
51
|
+
) {}
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
@injectable()
|
|
@@ -66,7 +67,7 @@ export class DrawFeedbackEdgeCommand extends FeedbackCommand {
|
|
|
66
67
|
}
|
|
67
68
|
|
|
68
69
|
export class RemoveFeedbackEdgeAction implements Action {
|
|
69
|
-
constructor(public readonly kind: string = RemoveFeedbackEdgeCommand.KIND) {
|
|
70
|
+
constructor(public readonly kind: string = RemoveFeedbackEdgeCommand.KIND) {}
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
@injectable()
|
|
@@ -81,10 +82,12 @@ export class RemoveFeedbackEdgeCommand extends FeedbackCommand {
|
|
|
81
82
|
|
|
82
83
|
export class FeedbackEdgeEnd extends SDanglingAnchor {
|
|
83
84
|
static readonly TYPE = 'feedback-edge-end';
|
|
84
|
-
constructor(
|
|
85
|
+
constructor(
|
|
86
|
+
readonly sourceId: string,
|
|
85
87
|
readonly elementTypeId: string,
|
|
86
88
|
public feedbackEdge: SRoutableElement | undefined = undefined,
|
|
87
|
-
public readonly type: string = FeedbackEdgeEnd.TYPE
|
|
89
|
+
public readonly type: string = FeedbackEdgeEnd.TYPE
|
|
90
|
+
) {
|
|
88
91
|
super();
|
|
89
92
|
}
|
|
90
93
|
}
|
|
@@ -103,12 +106,12 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
|
|
|
103
106
|
|
|
104
107
|
const edge = edgeEnd.feedbackEdge;
|
|
105
108
|
const position = getAbsolutePosition(edgeEnd, event);
|
|
106
|
-
const endAtMousePosition = findChildrenAtPosition(target.root, position)
|
|
107
|
-
|
|
109
|
+
const endAtMousePosition = findChildrenAtPosition(target.root, position).find(
|
|
110
|
+
element => isConnectable(element) && element.canConnect(edge, 'target')
|
|
111
|
+
);
|
|
108
112
|
|
|
109
113
|
if (endAtMousePosition instanceof SConnectableElement && edge.source && isBoundsAware(edge.source)) {
|
|
110
|
-
const
|
|
111
|
-
const anchor = anchorComputer.getAnchor(endAtMousePosition, center(edge.source.bounds));
|
|
114
|
+
const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(edge.source.bounds));
|
|
112
115
|
if (euclideanDistance(anchor, edgeEnd.position) > 1) {
|
|
113
116
|
return [new MoveAction([{ elementId: edgeEnd.id, toPosition: anchor }], false)];
|
|
114
117
|
}
|
|
@@ -118,6 +121,21 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
|
|
|
118
121
|
|
|
119
122
|
return [];
|
|
120
123
|
}
|
|
124
|
+
|
|
125
|
+
protected computeAbsoluteAnchor(element: SConnectableElement, referencePoint: Point, offset?: number): Point {
|
|
126
|
+
const anchorComputer = this.anchorRegistry.get(PolylineEdgeRouter.KIND, element.anchorKind);
|
|
127
|
+
let anchor = anchorComputer.getAnchor(element, referencePoint, offset);
|
|
128
|
+
// The anchor is computed in the local coordinate system of the element.
|
|
129
|
+
// If the element is a nested child element we have to add the absolute position of its parent to the anchor.
|
|
130
|
+
if (element.parent !== element.root) {
|
|
131
|
+
const parent = findParentByFeature(element.parent, isBoundsAware);
|
|
132
|
+
if (parent) {
|
|
133
|
+
const absoluteParentPosition = toAbsoluteBounds(parent);
|
|
134
|
+
anchor = add(absoluteParentPosition, anchor);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return anchor;
|
|
138
|
+
}
|
|
121
139
|
}
|
|
122
140
|
|
|
123
141
|
export function feedbackEdgeId(root: SModelRoot): string {
|
|
@@ -128,12 +146,17 @@ export function feedbackEdgeEndId(root: SModelRoot): string {
|
|
|
128
146
|
return root.id + '_feedback_anchor';
|
|
129
147
|
}
|
|
130
148
|
|
|
131
|
-
export const defaultFeedbackEdgeSchema: SEdgeSchema =
|
|
132
|
-
cssClasses: [
|
|
149
|
+
export const defaultFeedbackEdgeSchema: SEdgeSchema = {
|
|
150
|
+
cssClasses: ['feedback-edge'],
|
|
133
151
|
opacity: 0.3
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
export function drawFeedbackEdge(
|
|
152
|
+
} as SEdgeSchema;
|
|
153
|
+
|
|
154
|
+
export function drawFeedbackEdge(
|
|
155
|
+
context: CommandExecutionContext,
|
|
156
|
+
sourceId: string,
|
|
157
|
+
elementTypeId: string,
|
|
158
|
+
feedbackEdgeSchema: SEdgeSchema
|
|
159
|
+
): void {
|
|
137
160
|
const root = context.root;
|
|
138
161
|
const sourceChild = root.index.getById(sourceId);
|
|
139
162
|
if (!sourceChild) {
|
|
@@ -162,11 +185,13 @@ export function drawFeedbackEdge(context: CommandExecutionContext, sourceId: str
|
|
|
162
185
|
}
|
|
163
186
|
}
|
|
164
187
|
|
|
165
|
-
export function removeFeedbackEdge(root: SModelRoot) {
|
|
188
|
+
export function removeFeedbackEdge(root: SModelRoot): void {
|
|
166
189
|
const feedbackEdge = root.index.getById(feedbackEdgeId(root));
|
|
167
190
|
const feedbackEdgeEnd = root.index.getById(feedbackEdgeEndId(root));
|
|
168
|
-
if (feedbackEdge instanceof SChildElement)
|
|
191
|
+
if (feedbackEdge instanceof SChildElement) {
|
|
169
192
|
root.remove(feedbackEdge);
|
|
170
|
-
|
|
193
|
+
}
|
|
194
|
+
if (feedbackEdgeEnd instanceof SChildElement) {
|
|
171
195
|
root.remove(feedbackEdgeEnd);
|
|
196
|
+
}
|
|
172
197
|
}
|
|
@@ -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,12 +13,11 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import { FeedbackCommand } from "./model";
|
|
16
|
+
import { Action, isStringArray } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { CommandExecutionContext, SModelElement, SModelRoot, TYPES } from 'sprotty';
|
|
19
|
+
import { addCssClasses, removeCssClasses } from '../../utils/smodel-util';
|
|
20
|
+
import { FeedbackCommand } from './model';
|
|
22
21
|
|
|
23
22
|
export class ModifyCSSFeedbackAction implements Action {
|
|
24
23
|
readonly elementIds?: string[];
|
|
@@ -27,7 +26,8 @@ export class ModifyCSSFeedbackAction implements Action {
|
|
|
27
26
|
public readonly input?: string[] | SModelElement[],
|
|
28
27
|
public readonly addClasses?: string[],
|
|
29
28
|
public readonly removeClasses?: string[],
|
|
30
|
-
public kind = ModifyCssFeedbackCommand.KIND
|
|
29
|
+
public kind = ModifyCssFeedbackCommand.KIND
|
|
30
|
+
) {
|
|
31
31
|
if (input) {
|
|
32
32
|
this.elementIds = isStringArray(input) ? input : input.map(element => element.id);
|
|
33
33
|
}
|
|
@@ -68,6 +68,7 @@ function exists(elt?: SModelElement): elt is SModelElement {
|
|
|
68
68
|
return elt !== undefined;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
// eslint-disable-next-line no-shadow
|
|
71
72
|
export enum CursorCSS {
|
|
72
73
|
DEFAULT = 'default-mode',
|
|
73
74
|
OVERLAP_FORBIDDEN = 'overlap-forbidden-mode',
|
|
@@ -76,9 +77,11 @@ export enum CursorCSS {
|
|
|
76
77
|
EDGE_CREATION_TARGET = 'edge-creation-select-target-mode',
|
|
77
78
|
EDGE_RECONNECT = 'edge-reconnect-select-target-mode',
|
|
78
79
|
OPERATION_NOT_ALLOWED = 'edge-modification-not-allowed-mode',
|
|
79
|
-
ELEMENT_DELETION =
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
ELEMENT_DELETION = 'element-deletion-mode',
|
|
81
|
+
RESIZE_NESW = 'resize-nesw-mode',
|
|
82
|
+
RESIZE_NWSE = 'resize-nwse-mode',
|
|
83
|
+
MOVE = 'move-mode',
|
|
84
|
+
MARQUEE = 'marquee-mode'
|
|
82
85
|
}
|
|
83
86
|
|
|
84
87
|
export function cursorFeedbackAction(cursorCss?: CursorCSS): ModifyCSSFeedbackAction {
|
|
@@ -89,10 +92,10 @@ export function cursorFeedbackAction(cursorCss?: CursorCSS): ModifyCSSFeedbackAc
|
|
|
89
92
|
return new ModifyCSSFeedbackAction(undefined, addCss, Object.values(CursorCSS));
|
|
90
93
|
}
|
|
91
94
|
|
|
92
|
-
export function applyCssClasses(element: SModelElement, ...classes: string[]) {
|
|
95
|
+
export function applyCssClasses(element: SModelElement, ...classes: string[]): ModifyCSSFeedbackAction {
|
|
93
96
|
return new ModifyCSSFeedbackAction([element], classes, []);
|
|
94
97
|
}
|
|
95
98
|
|
|
96
|
-
export function deleteCssClasses(element: SModelElement, ...classes: string[]) {
|
|
99
|
+
export function deleteCssClasses(element: SModelElement, ...classes: string[]): ModifyCSSFeedbackAction {
|
|
97
100
|
return new ModifyCSSFeedbackAction([element], [], classes);
|
|
98
101
|
}
|