@eclipse-glsp/client 0.10.0-next.6bee8eb.163 → 0.10.0-next.88e4725.166
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/lib/base/action-dispatcher.d.ts +1 -0
- package/lib/base/action-dispatcher.d.ts.map +1 -1
- package/lib/base/action-dispatcher.js +11 -3
- package/lib/base/action-dispatcher.js.map +1 -1
- package/lib/base/actions/focus-change-action.d.ts +16 -7
- package/lib/base/actions/focus-change-action.d.ts.map +1 -1
- package/lib/base/actions/focus-change-action.js +31 -12
- package/lib/base/actions/focus-change-action.js.map +1 -1
- package/lib/base/actions/sprotty-actions.d.ts +7 -0
- package/lib/base/actions/sprotty-actions.d.ts.map +1 -0
- package/lib/{features/tool-palette/palette-item.js → base/actions/sprotty-actions.js} +4 -20
- package/lib/base/actions/sprotty-actions.js.map +1 -0
- package/lib/base/auto-complete/auto-complete-actions.d.ts +5 -3
- package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-actions.js +24 -5
- package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +2 -2
- package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.js +4 -4
- package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
- package/lib/base/command-stack.d.ts.map +1 -1
- package/lib/base/command-stack.js +4 -3
- package/lib/base/command-stack.js.map +1 -1
- package/lib/base/di.config.d.ts +1 -1
- package/lib/base/di.config.d.ts.map +1 -1
- package/lib/base/di.config.js +9 -10
- package/lib/base/di.config.js.map +1 -1
- package/lib/base/editor-context-service.d.ts +1 -1
- package/lib/base/editor-context-service.d.ts.map +1 -1
- package/lib/base/editor-context-service.js +5 -5
- package/lib/base/editor-context-service.js.map +1 -1
- package/lib/base/focus-tracker.d.ts +1 -1
- package/lib/base/focus-tracker.d.ts.map +1 -1
- package/lib/base/focus-tracker.js +3 -3
- package/lib/base/focus-tracker.js.map +1 -1
- package/lib/base/model/update-model-command.d.ts.map +1 -1
- package/lib/base/model/update-model-command.js +9 -9
- package/lib/base/model/update-model-command.js.map +1 -1
- package/lib/base/model-initialization-constraint.d.ts +2 -3
- package/lib/base/model-initialization-constraint.d.ts.map +1 -1
- package/lib/base/model-initialization-constraint.js +3 -4
- package/lib/base/model-initialization-constraint.js.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.js +3 -3
- package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
- package/lib/base/tool-manager/tool-actions.d.ts +14 -0
- package/lib/base/tool-manager/tool-actions.d.ts.map +1 -0
- package/lib/base/tool-manager/tool-actions.js +25 -0
- package/lib/base/tool-manager/tool-actions.js.map +1 -0
- package/lib/base/types.d.ts +144 -20
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +14 -26
- package/lib/base/types.js.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts +1 -1
- package/lib/features/change-bounds/movement-restrictor.js +2 -2
- package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
- package/lib/features/change-bounds/snap.d.ts +42 -1
- package/lib/features/change-bounds/snap.d.ts.map +1 -1
- package/lib/features/change-bounds/snap.js +77 -1
- package/lib/features/change-bounds/snap.js.map +1 -1
- package/lib/features/change-bounds/snap.spec.d.ts +17 -0
- package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
- package/lib/features/change-bounds/snap.spec.js +82 -0
- package/lib/features/change-bounds/snap.spec.js.map +1 -0
- package/lib/features/command-palette/di.config.d.ts +2 -2
- package/lib/features/command-palette/di.config.d.ts.map +1 -1
- package/lib/features/command-palette/di.config.js +6 -6
- package/lib/features/command-palette/di.config.js.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.d.ts +1 -1
- package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.js +11 -8
- package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts +17 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.js +3 -3
- package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
- package/lib/features/context-menu/di.config.d.ts +1 -1
- package/lib/features/context-menu/di.config.d.ts.map +1 -1
- package/lib/features/context-menu/di.config.js +8 -7
- 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 +17 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +4 -19
- 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 +1 -1
- package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.js +6 -5
- package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts +12 -15
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.js +24 -31
- package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.d.ts +1 -1
- package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.js +6 -7
- package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
- package/lib/features/copy-paste/di.config.d.ts +1 -1
- package/lib/features/copy-paste/di.config.d.ts.map +1 -1
- package/lib/features/copy-paste/di.config.js +5 -7
- package/lib/features/copy-paste/di.config.js.map +1 -1
- package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
- package/lib/features/decoration/decoration-placer.js +17 -1
- 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 -4
- 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.d.ts.map +1 -1
- package/lib/features/edit-label/di.config.js +4 -4
- package/lib/features/edit-label/di.config.js.map +1 -1
- package/lib/features/edit-label/edit-label-tool.d.ts.map +1 -1
- package/lib/features/edit-label/edit-label-tool.js +1 -1
- package/lib/features/edit-label/edit-label-tool.js.map +1 -1
- package/lib/features/edit-label/edit-label-validator.d.ts +4 -6
- package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
- package/lib/features/edit-label/edit-label-validator.js +8 -10
- package/lib/features/edit-label/edit-label-validator.js.map +1 -1
- package/lib/features/hints/di.config.js +2 -2
- package/lib/features/hints/di.config.js.map +1 -1
- package/lib/features/hints/type-hints.d.ts +14 -4
- package/lib/features/hints/type-hints.d.ts.map +1 -1
- package/lib/features/hints/type-hints.js +21 -18
- package/lib/features/hints/type-hints.js.map +1 -1
- package/lib/features/hover/di.config.d.ts.map +1 -1
- package/lib/features/hover/di.config.js +2 -0
- package/lib/features/hover/di.config.js.map +1 -1
- package/lib/features/hover/hover.d.ts +4 -2
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +22 -4
- package/lib/features/hover/hover.js.map +1 -1
- package/lib/features/layout/di.config.d.ts +1 -1
- package/lib/features/layout/di.config.js +1 -1
- package/lib/features/layout/freeform-layout.d.ts +17 -1
- package/lib/features/layout/freeform-layout.d.ts.map +1 -1
- package/lib/features/layout/freeform-layout.js +2 -2
- package/lib/features/layout/freeform-layout.js.map +1 -1
- package/lib/features/layout/layout-commands.d.ts +64 -37
- package/lib/features/layout/layout-commands.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.js +79 -59
- package/lib/features/layout/layout-commands.js.map +1 -1
- package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.spec.js +29 -17
- package/lib/features/layout/layout-commands.spec.js.map +1 -1
- package/lib/features/layout/vbox-layout.d.ts +17 -1
- package/lib/features/layout/vbox-layout.d.ts.map +1 -1
- package/lib/features/layout/vbox-layout.js +4 -3
- package/lib/features/layout/vbox-layout.js.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +1 -1
- 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 +7 -7
- 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.d.ts.map +1 -1
- package/lib/features/mouse-tool/di.config.js +2 -2
- package/lib/features/mouse-tool/di.config.js.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.js +4 -10
- package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
- package/lib/features/navigation/navigation-action-handler.d.ts +31 -16
- package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
- package/lib/features/navigation/navigation-action-handler.js +50 -66
- package/lib/features/navigation/navigation-action-handler.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.d.ts +3 -3
- package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.js +7 -8
- package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.js +3 -3
- package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
- package/lib/features/save/di.config.d.ts +1 -1
- package/lib/features/save/di.config.d.ts.map +1 -1
- package/lib/features/save/di.config.js +3 -3
- package/lib/features/save/di.config.js.map +1 -1
- package/lib/features/save/save-keylistener.js +1 -1
- package/lib/features/save/save-keylistener.js.map +1 -1
- package/lib/features/select/di.config.d.ts +1 -1
- package/lib/features/select/di.config.d.ts.map +1 -1
- package/lib/features/select/di.config.js +4 -5
- package/lib/features/select/di.config.js.map +1 -1
- package/lib/features/select/select-feedback-action.d.ts +26 -22
- package/lib/features/select/select-feedback-action.d.ts.map +1 -1
- package/lib/features/select/select-feedback-action.js +18 -45
- package/lib/features/select/select-feedback-action.js.map +1 -1
- package/lib/features/select/select-mouse-listener.d.ts +1 -1
- package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
- package/lib/features/select/select-mouse-listener.js +1 -1
- package/lib/features/select/select-mouse-listener.js.map +1 -1
- package/lib/features/select/selection-service.d.ts.map +1 -1
- package/lib/features/select/selection-service.js +16 -13
- package/lib/features/select/selection-service.js.map +1 -1
- package/lib/features/select/selection-service.spec.js +9 -6
- package/lib/features/select/selection-service.spec.js.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +16 -8
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js +50 -20
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts +22 -10
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +46 -21
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/css-feedback.d.ts +17 -10
- package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/css-feedback.js +41 -37
- package/lib/features/tool-feedback/css-feedback.js.map +1 -1
- package/lib/features/tool-feedback/di.config.d.ts +1 -1
- package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
- package/lib/features/tool-feedback/di.config.js +4 -4
- package/lib/features/tool-feedback/di.config.js.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +43 -21
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js +117 -91
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.js +3 -3
- package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +20 -9
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -15
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/view.d.ts +1 -1
- package/lib/features/tool-feedback/view.d.ts.map +1 -1
- package/lib/features/tool-feedback/view.js +18 -1
- package/lib/features/tool-feedback/view.js.map +1 -1
- package/lib/features/tool-palette/di.config.d.ts +1 -1
- package/lib/features/tool-palette/di.config.d.ts.map +1 -1
- package/lib/features/tool-palette/di.config.js +3 -2
- package/lib/features/tool-palette/di.config.js.map +1 -1
- package/lib/features/tool-palette/tool-palette.d.ts +9 -6
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +25 -20
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
- package/lib/features/tools/base-glsp-tool.js +3 -3
- package/lib/features/tools/base-glsp-tool.js.map +1 -1
- package/lib/features/tools/change-bounds-tool.d.ts +6 -8
- package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
- package/lib/features/tools/change-bounds-tool.js +22 -45
- package/lib/features/tools/change-bounds-tool.js.map +1 -1
- package/lib/features/tools/delete-tool.d.ts.map +1 -1
- package/lib/features/tools/delete-tool.js +5 -5
- package/lib/features/tools/delete-tool.js.map +1 -1
- package/lib/features/tools/di.config.js +9 -9
- package/lib/features/tools/di.config.js.map +1 -1
- package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-creation-tool.js +16 -9
- package/lib/features/tools/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/edge-edit-tool.d.ts +2 -1
- package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-edit-tool.js +20 -15
- package/lib/features/tools/edge-edit-tool.js.map +1 -1
- package/lib/features/tools/marquee-behavior.d.ts +1 -1
- package/lib/features/tools/marquee-behavior.js +2 -2
- package/lib/features/tools/marquee-behavior.js.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.js +7 -7
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
- package/lib/features/tools/marquee-tool.js +1 -1
- package/lib/features/tools/marquee-tool.js.map +1 -1
- package/lib/features/tools/model.d.ts +2 -1
- package/lib/features/tools/model.d.ts.map +1 -1
- package/lib/features/tools/model.js +0 -15
- package/lib/features/tools/model.js.map +1 -1
- package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/node-creation-tool.js +5 -5
- package/lib/features/tools/node-creation-tool.js.map +1 -1
- package/lib/features/validation/di.config.d.ts +1 -1
- package/lib/features/validation/di.config.d.ts.map +1 -1
- package/lib/features/validation/di.config.js +3 -3
- package/lib/features/validation/di.config.js.map +1 -1
- package/lib/features/validation/marker-navigator.d.ts +15 -7
- package/lib/features/validation/marker-navigator.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.js +21 -19
- package/lib/features/validation/marker-navigator.js.map +1 -1
- package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.spec.js +2 -16
- package/lib/features/validation/marker-navigator.spec.js.map +1 -1
- package/lib/features/validation/validate.d.ts +9 -11
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +27 -26
- package/lib/features/validation/validate.js.map +1 -1
- package/lib/features/viewport/di.config.d.ts +1 -1
- package/lib/features/viewport/di.config.d.ts.map +1 -1
- package/lib/features/viewport/di.config.js +1 -1
- package/lib/features/viewport/di.config.js.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +2 -2
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
- package/lib/index.d.ts +4 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -5
- package/lib/index.js.map +1 -1
- package/lib/lib/model.d.ts +2 -1
- package/lib/lib/model.d.ts.map +1 -1
- package/lib/lib/model.js +0 -15
- package/lib/lib/model.js.map +1 -1
- package/lib/model-source/glsp-diagram-server.d.ts +4 -4
- package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
- package/lib/model-source/glsp-diagram-server.js +5 -5
- package/lib/model-source/glsp-diagram-server.js.map +1 -1
- package/lib/sprotty-reexport.d.ts +174 -0
- package/lib/sprotty-reexport.d.ts.map +1 -0
- package/lib/sprotty-reexport.js +299 -0
- package/lib/sprotty-reexport.js.map +1 -0
- package/lib/utils/layout-utils.d.ts +3 -3
- package/lib/utils/layout-utils.d.ts.map +1 -1
- package/lib/utils/smodel-util.d.ts +27 -18
- package/lib/utils/smodel-util.d.ts.map +1 -1
- package/lib/utils/smodel-util.js +30 -11
- package/lib/utils/smodel-util.js.map +1 -1
- package/lib/utils/viewpoint-util.d.ts +3 -3
- package/lib/utils/viewpoint-util.d.ts.map +1 -1
- package/lib/utils/viewpoint-util.js +17 -1
- package/lib/utils/viewpoint-util.js.map +1 -1
- package/package.json +5 -4
- package/src/base/action-dispatcher.ts +13 -4
- package/src/base/actions/focus-change-action.ts +25 -8
- package/{lib/features/tool-palette/palette-item.d.ts → src/base/actions/sprotty-actions.ts} +11 -11
- package/src/base/auto-complete/auto-complete-actions.ts +7 -5
- package/src/base/auto-complete/auto-complete-widget.ts +8 -13
- package/src/base/command-stack.ts +4 -3
- package/src/base/di.config.ts +4 -5
- package/src/base/editor-context-service.ts +7 -7
- package/src/base/focus-tracker.ts +5 -4
- package/src/base/model/update-model-command.ts +7 -8
- package/src/base/model-initialization-constraint.ts +3 -4
- package/src/base/tool-manager/glsp-tool-manager.ts +4 -4
- package/src/base/tool-manager/tool-actions.ts +37 -0
- package/src/base/types.ts +31 -24
- package/src/features/change-bounds/movement-restrictor.ts +3 -3
- package/src/features/change-bounds/snap.spec.ts +89 -0
- package/src/features/change-bounds/snap.ts +86 -2
- package/src/features/command-palette/di.config.ts +5 -7
- package/src/features/command-palette/server-command-palette-provider.ts +9 -8
- package/src/features/context-menu/delete-element-context-menu.ts +6 -6
- package/src/features/context-menu/di.config.ts +3 -2
- package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +5 -6
- package/src/features/context-menu/server-context-menu-provider.ts +7 -6
- package/src/features/copy-paste/copy-paste-context-menu.ts +30 -23
- package/src/features/copy-paste/copy-paste-handler.ts +6 -6
- package/src/features/copy-paste/di.config.ts +7 -15
- package/src/features/decoration/decoration-placer.ts +2 -2
- package/src/features/decoration/di.config.ts +3 -5
- package/src/features/edit-label/di.config.ts +4 -5
- package/src/features/edit-label/edit-label-tool.ts +1 -2
- package/src/features/edit-label/edit-label-validator.ts +6 -10
- package/src/features/hints/di.config.ts +3 -3
- package/src/features/hints/type-hints.ts +31 -16
- package/src/features/hover/di.config.ts +4 -0
- package/src/features/hover/hover.ts +29 -11
- package/src/features/layout/di.config.ts +1 -1
- package/src/features/layout/freeform-layout.ts +3 -12
- package/src/features/layout/layout-commands.spec.ts +38 -22
- package/src/features/layout/layout-commands.ts +129 -55
- package/src/features/layout/vbox-layout.ts +4 -8
- package/src/features/model-source-watcher/model-source-changed-action-handler.ts +7 -12
- package/src/features/mouse-tool/di.config.ts +3 -4
- package/src/features/mouse-tool/mouse-tool.ts +4 -9
- package/src/features/navigation/navigation-action-handler.ts +76 -42
- package/src/features/navigation/navigation-target-resolver.spec.ts +3 -3
- package/src/features/navigation/navigation-target-resolver.ts +8 -13
- package/src/features/save/di.config.ts +2 -3
- package/src/features/save/save-keylistener.ts +1 -1
- package/src/features/select/di.config.ts +6 -8
- package/src/features/select/select-feedback-action.ts +18 -46
- package/src/features/select/select-mouse-listener.ts +1 -2
- package/src/features/select/selection-service.spec.ts +11 -8
- package/src/features/select/selection-service.ts +14 -10
- package/src/features/tool-feedback/change-bounds-tool-feedback.ts +42 -13
- package/src/features/tool-feedback/creation-tool-feedback.ts +42 -21
- package/src/features/tool-feedback/css-feedback.ts +40 -37
- package/src/features/tool-feedback/di.config.ts +4 -5
- package/src/features/tool-feedback/edge-edit-tool-feedback.ts +122 -78
- package/src/features/tool-feedback/feedback-action-dispatcher.ts +2 -1
- package/src/features/tool-feedback/marquee-tool-feedback.ts +36 -11
- package/src/features/tool-feedback/view.tsx +3 -3
- package/src/features/tool-palette/di.config.ts +3 -2
- package/src/features/tool-palette/tool-palette.ts +30 -16
- package/src/features/tools/base-glsp-tool.ts +4 -4
- package/src/features/tools/change-bounds-tool.ts +31 -61
- package/src/features/tools/delete-tool.ts +6 -6
- package/src/features/tools/di.config.ts +10 -10
- package/src/features/tools/edge-creation-tool.ts +18 -9
- package/src/features/tools/edge-edit-tool.ts +20 -16
- package/src/features/tools/marquee-behavior.ts +2 -2
- package/src/features/tools/marquee-mouse-tool.ts +8 -9
- package/src/features/tools/marquee-tool.ts +1 -1
- package/src/features/tools/model.ts +2 -1
- package/src/features/tools/node-creation-tool.ts +5 -5
- package/src/features/validation/di.config.ts +4 -5
- package/src/features/validation/marker-navigator.spec.ts +4 -2
- package/src/features/validation/marker-navigator.ts +41 -21
- package/src/features/validation/validate.ts +27 -20
- package/src/features/viewport/di.config.ts +1 -2
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +3 -3
- package/src/index.ts +4 -5
- package/src/lib/model.ts +2 -1
- package/src/model-source/glsp-diagram-server.ts +8 -10
- package/src/sprotty-reexport.ts +283 -0
- package/src/utils/layout-utils.ts +3 -3
- package/src/utils/smodel-util.ts +36 -20
- package/src/utils/viewpoint-util.ts +5 -14
- package/lib/features/tool-palette/palette-item.d.ts.map +0 -1
- package/lib/features/tool-palette/palette-item.js.map +0 -1
- package/lib/protocol-reexport.d.ts +0 -45
- package/lib/protocol-reexport.d.ts.map +0 -1
- package/lib/protocol-reexport.js +0 -80
- package/lib/protocol-reexport.js.map +0 -1
- package/src/features/tool-palette/palette-item.ts +0 -38
- package/src/protocol-reexport.ts +0 -64
|
@@ -13,11 +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, PaletteItem, RequestContextActions, RequestMarkersAction, SetContextActions } from '@eclipse-glsp/protocol';
|
|
17
17
|
import { inject, injectable, postConstruct } from 'inversify';
|
|
18
18
|
import {
|
|
19
19
|
AbstractUIExtension,
|
|
20
|
-
Action,
|
|
21
20
|
EnableDefaultToolsAction,
|
|
22
21
|
EnableToolsAction,
|
|
23
22
|
IActionHandler,
|
|
@@ -33,7 +32,6 @@ import { GLSPActionDispatcher } from '../../base/action-dispatcher';
|
|
|
33
32
|
import { EditModeListener, EditorContextService } from '../../base/editor-context-service';
|
|
34
33
|
import { MouseDeleteTool } from '../tools/delete-tool';
|
|
35
34
|
import { MarqueeMouseTool } from '../tools/marquee-mouse-tool';
|
|
36
|
-
import { PaletteItem } from './palette-item';
|
|
37
35
|
|
|
38
36
|
const CLICKED_CSS_CLASS = 'clicked';
|
|
39
37
|
const SEARCH_ICON_ID = 'search';
|
|
@@ -41,12 +39,21 @@ const PALETTE_ICON_ID = 'symbol-color';
|
|
|
41
39
|
const CHEVRON_DOWN_ICON_ID = 'chevron-right';
|
|
42
40
|
const PALETTE_HEIGHT = '500px';
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
static readonly KIND = 'enableToolPalette';
|
|
47
|
-
readonly kind = EnableToolPaletteAction.KIND;
|
|
42
|
+
export interface EnableToolPaletteAction extends Action {
|
|
43
|
+
kind: typeof EnableToolPaletteAction.KIND;
|
|
48
44
|
}
|
|
49
45
|
|
|
46
|
+
export namespace EnableToolPaletteAction {
|
|
47
|
+
export const KIND = 'enableToolPalette';
|
|
48
|
+
|
|
49
|
+
export function is(object: any): object is EnableToolPaletteAction {
|
|
50
|
+
return Action.hasKind(object, KIND);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function create(): EnableToolPaletteAction {
|
|
54
|
+
return { kind: KIND };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
50
57
|
@injectable()
|
|
51
58
|
export class ToolPalette extends AbstractUIExtension implements IActionHandler, EditModeListener {
|
|
52
59
|
static readonly ID = 'tool-palette';
|
|
@@ -215,7 +222,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
|
|
|
215
222
|
validateActionButton.title = 'Validate model';
|
|
216
223
|
validateActionButton.onclick = _event => {
|
|
217
224
|
const modelIds: string[] = [this.modelRootId];
|
|
218
|
-
this.actionDispatcher.dispatch(
|
|
225
|
+
this.actionDispatcher.dispatch(RequestMarkersAction.create(modelIds));
|
|
219
226
|
};
|
|
220
227
|
return validateActionButton;
|
|
221
228
|
}
|
|
@@ -284,7 +291,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
|
|
|
284
291
|
protected onClickStaticToolButton(button: HTMLElement, toolId?: string) {
|
|
285
292
|
return (_ev: MouseEvent) => {
|
|
286
293
|
if (!this.editorContext.isReadonly) {
|
|
287
|
-
const action = toolId ?
|
|
294
|
+
const action = toolId ? EnableToolsAction.create([toolId]) : EnableDefaultToolsAction.create();
|
|
288
295
|
this.actionDispatcher.dispatch(action);
|
|
289
296
|
this.changeActiveButton(button);
|
|
290
297
|
button.focus();
|
|
@@ -307,23 +314,30 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
|
|
|
307
314
|
|
|
308
315
|
handle(action: Action): ICommand | Action | void {
|
|
309
316
|
if (action.kind === EnableToolPaletteAction.KIND) {
|
|
310
|
-
const requestAction =
|
|
311
|
-
|
|
317
|
+
const requestAction = RequestContextActions.create({
|
|
318
|
+
contextId: ToolPalette.ID,
|
|
319
|
+
editorContext: {
|
|
320
|
+
selectedElementIds: []
|
|
321
|
+
}
|
|
312
322
|
});
|
|
313
323
|
this.actionDispatcher.requestUntil(requestAction).then(response => {
|
|
314
|
-
if (
|
|
324
|
+
if (SetContextActions.is(response)) {
|
|
315
325
|
this.paletteItems = response.actions.map(e => e as PaletteItem);
|
|
316
|
-
this.actionDispatcher.dispatch(
|
|
326
|
+
this.actionDispatcher.dispatch(
|
|
327
|
+
SetUIExtensionVisibilityAction.create({ extensionId: ToolPalette.ID, visible: !this.editorContext.isReadonly })
|
|
328
|
+
);
|
|
317
329
|
}
|
|
318
330
|
});
|
|
319
|
-
} else if (action
|
|
331
|
+
} else if (action.kind === EnableDefaultToolsAction.KIND) {
|
|
320
332
|
this.changeActiveButton();
|
|
321
333
|
this.restoreFocus();
|
|
322
334
|
}
|
|
323
335
|
}
|
|
324
336
|
|
|
325
337
|
editModeChanged(_oldValue: string, _newValue: string): void {
|
|
326
|
-
this.actionDispatcher.dispatch(
|
|
338
|
+
this.actionDispatcher.dispatch(
|
|
339
|
+
SetUIExtensionVisibilityAction.create({ extensionId: ToolPalette.ID, visible: !this.editorContext.isReadonly })
|
|
340
|
+
);
|
|
327
341
|
}
|
|
328
342
|
|
|
329
343
|
protected clearOnEscape(event: KeyboardEvent): void {
|
|
@@ -335,7 +349,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
|
|
|
335
349
|
|
|
336
350
|
protected clearToolOnEscape(event: KeyboardEvent): void {
|
|
337
351
|
if (matchesKeystroke(event, 'Escape')) {
|
|
338
|
-
this.actionDispatcher.dispatch(
|
|
352
|
+
this.actionDispatcher.dispatch(EnableDefaultToolsAction.create());
|
|
339
353
|
}
|
|
340
354
|
}
|
|
341
355
|
|
|
@@ -15,18 +15,18 @@
|
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { Action } from '@eclipse-glsp/protocol';
|
|
17
17
|
import { inject, injectable } from 'inversify';
|
|
18
|
-
import { IActionDispatcher, KeyTool
|
|
18
|
+
import { IActionDispatcher, KeyTool } from 'sprotty';
|
|
19
19
|
import { EditorContextService } from '../../base/editor-context-service';
|
|
20
20
|
import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
|
|
21
|
-
import {
|
|
21
|
+
import { TYPES } from '../../base/types';
|
|
22
22
|
import { IMouseTool } from '../mouse-tool/mouse-tool';
|
|
23
23
|
import { IFeedbackActionDispatcher, IFeedbackEmitter } from '../tool-feedback/feedback-action-dispatcher';
|
|
24
24
|
|
|
25
25
|
@injectable()
|
|
26
26
|
export abstract class BaseGLSPTool implements GLSPTool {
|
|
27
|
-
@inject(
|
|
27
|
+
@inject(TYPES.IFeedbackActionDispatcher) protected feedbackDispatcher: IFeedbackActionDispatcher;
|
|
28
28
|
@inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher;
|
|
29
|
-
@inject(
|
|
29
|
+
@inject(TYPES.MouseTool) protected mouseTool: IMouseTool;
|
|
30
30
|
@inject(KeyTool) protected keyTool: KeyTool;
|
|
31
31
|
@inject(EditorContextService) protected readonly editorContext: EditorContextService;
|
|
32
32
|
|
|
@@ -19,32 +19,30 @@ import {
|
|
|
19
19
|
ChangeBoundsOperation,
|
|
20
20
|
ChangeRoutingPointsOperation,
|
|
21
21
|
CompoundOperation,
|
|
22
|
+
Dimension,
|
|
23
|
+
ElementAndBounds,
|
|
22
24
|
ElementAndRoutingPoints,
|
|
23
25
|
Operation,
|
|
24
|
-
Point
|
|
26
|
+
Point,
|
|
27
|
+
SetBoundsAction
|
|
25
28
|
} from '@eclipse-glsp/protocol';
|
|
26
29
|
import { inject, injectable, optional } from 'inversify';
|
|
27
30
|
import {
|
|
28
31
|
BoundsAware,
|
|
29
|
-
Dimension,
|
|
30
32
|
EdgeRouterRegistry,
|
|
31
|
-
ElementAndBounds,
|
|
32
33
|
findParentByFeature,
|
|
33
34
|
ISnapper,
|
|
34
35
|
isSelected,
|
|
35
|
-
isViewport,
|
|
36
36
|
MouseListener,
|
|
37
37
|
SChildElement,
|
|
38
38
|
SConnectableElement,
|
|
39
|
-
SetBoundsAction,
|
|
40
39
|
SModelElement,
|
|
41
40
|
SModelRoot,
|
|
42
|
-
SParentElement
|
|
43
|
-
TYPES
|
|
41
|
+
SParentElement
|
|
44
42
|
} from 'sprotty';
|
|
45
43
|
import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
|
|
46
|
-
import {
|
|
47
|
-
import { isValidMove, isValidSize
|
|
44
|
+
import { TYPES } from '../../base/types';
|
|
45
|
+
import { isValidMove, isValidSize } from '../../utils/layout-utils';
|
|
48
46
|
import {
|
|
49
47
|
forEachElement,
|
|
50
48
|
isNonRoutableSelectedMovableBoundsAware,
|
|
@@ -57,6 +55,7 @@ import {
|
|
|
57
55
|
IMovementRestrictor,
|
|
58
56
|
removeMovementRestrictionFeedback
|
|
59
57
|
} from '../change-bounds/movement-restrictor';
|
|
58
|
+
import { PointPositionUpdater } from '../change-bounds/snap';
|
|
60
59
|
import { SelectionListener, SelectionService } from '../select/selection-service';
|
|
61
60
|
import {
|
|
62
61
|
FeedbackMoveMouseListener,
|
|
@@ -83,10 +82,10 @@ import { BaseGLSPTool } from './base-glsp-tool';
|
|
|
83
82
|
export class ChangeBoundsTool extends BaseGLSPTool {
|
|
84
83
|
static ID = 'glsp.change-bounds-tool';
|
|
85
84
|
|
|
86
|
-
@inject(
|
|
85
|
+
@inject(TYPES.SelectionService) protected selectionService: SelectionService;
|
|
87
86
|
@inject(EdgeRouterRegistry) @optional() readonly edgeRouterRegistry?: EdgeRouterRegistry;
|
|
88
87
|
@inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
|
|
89
|
-
@inject(
|
|
88
|
+
@inject(TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor;
|
|
90
89
|
protected feedbackMoveMouseListener: MouseListener;
|
|
91
90
|
protected changeBoundsListener: MouseListener & SelectionListener;
|
|
92
91
|
|
|
@@ -118,7 +117,7 @@ export class ChangeBoundsTool extends BaseGLSPTool {
|
|
|
118
117
|
this.selectionService.deregister(this.changeBoundsListener);
|
|
119
118
|
this.mouseTool.deregister(this.feedbackMoveMouseListener);
|
|
120
119
|
this.deregisterFeedback([], this.feedbackMoveMouseListener);
|
|
121
|
-
this.deregisterFeedback([
|
|
120
|
+
this.deregisterFeedback([HideChangeBoundsToolResizeFeedbackAction.create()], this.changeBoundsListener);
|
|
122
121
|
}
|
|
123
122
|
}
|
|
124
123
|
|
|
@@ -127,8 +126,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
127
126
|
|
|
128
127
|
// members for calculating the correct position change
|
|
129
128
|
protected initialBounds: Bounds | undefined;
|
|
130
|
-
protected
|
|
131
|
-
protected positionDelta: WriteablePoint = { x: 0, y: 0 };
|
|
129
|
+
protected pointPositionUpdater: PointPositionUpdater;
|
|
132
130
|
|
|
133
131
|
// members for resize mode
|
|
134
132
|
protected activeResizeElement?: SModelElement;
|
|
@@ -136,11 +134,14 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
136
134
|
|
|
137
135
|
constructor(protected tool: ChangeBoundsTool) {
|
|
138
136
|
super();
|
|
137
|
+
this.pointPositionUpdater = new PointPositionUpdater(tool.snapper);
|
|
139
138
|
}
|
|
140
139
|
|
|
141
140
|
override mouseDown(target: SModelElement, event: MouseEvent): Action[] {
|
|
142
141
|
super.mouseDown(target, event);
|
|
143
|
-
|
|
142
|
+
// If another button than the left mouse button was clicked or we are
|
|
143
|
+
// still on the root element we don't need to execute the tool behavior
|
|
144
|
+
if (event.button !== 0 || target instanceof SModelRoot) {
|
|
144
145
|
return [];
|
|
145
146
|
}
|
|
146
147
|
// check if we have a resize handle (only single-selection)
|
|
@@ -166,7 +167,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
166
167
|
cursorFeedbackAction(this.activeResizeHandle.isNwSeResize() ? CursorCSS.RESIZE_NWSE : CursorCSS.RESIZE_NESW),
|
|
167
168
|
applyCssClasses(this.activeResizeHandle, ChangeBoundsListener.CSS_CLASS_ACTIVE)
|
|
168
169
|
];
|
|
169
|
-
const positionUpdate = this.updatePosition(target, event);
|
|
170
|
+
const positionUpdate = this.pointPositionUpdater.updatePosition(target, { x: event.pageX, y: event.pageY }, !event.altKey);
|
|
170
171
|
if (positionUpdate) {
|
|
171
172
|
const resizeActions = this.handleResizeOnClient(positionUpdate);
|
|
172
173
|
actions.push(...resizeActions);
|
|
@@ -177,7 +178,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
177
178
|
}
|
|
178
179
|
|
|
179
180
|
override draggingMouseUp(target: SModelElement, event: MouseEvent): Action[] {
|
|
180
|
-
if (this.
|
|
181
|
+
if (this.pointPositionUpdater.isLastDragPositionUndefined()) {
|
|
181
182
|
this.resetPosition();
|
|
182
183
|
return [];
|
|
183
184
|
}
|
|
@@ -200,12 +201,12 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
200
201
|
operations.push(...this.handleMoveElementsOnServer(target));
|
|
201
202
|
operations.push(...this.handleMoveRoutingPointsOnServer(target));
|
|
202
203
|
if (operations.length > 0) {
|
|
203
|
-
return [
|
|
204
|
+
return [CompoundOperation.create(operations)];
|
|
204
205
|
}
|
|
205
206
|
return operations;
|
|
206
207
|
}
|
|
207
208
|
|
|
208
|
-
protected handleMoveElementsOnServer(target: SModelElement):
|
|
209
|
+
protected handleMoveElementsOnServer(target: SModelElement): Operation[] {
|
|
209
210
|
const result: Operation[] = [];
|
|
210
211
|
const newBounds: ElementAndBounds[] = [];
|
|
211
212
|
const selectedElements: (SModelElement & BoundsAware)[] = [];
|
|
@@ -220,7 +221,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
220
221
|
.forEach(bounds => newBounds.push(...bounds));
|
|
221
222
|
|
|
222
223
|
if (newBounds.length > 0) {
|
|
223
|
-
result.push(
|
|
224
|
+
result.push(ChangeBoundsOperation.create(newBounds));
|
|
224
225
|
}
|
|
225
226
|
return result;
|
|
226
227
|
}
|
|
@@ -235,7 +236,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
235
236
|
return false;
|
|
236
237
|
}
|
|
237
238
|
|
|
238
|
-
protected handleMoveRoutingPointsOnServer(target: SModelElement):
|
|
239
|
+
protected handleMoveRoutingPointsOnServer(target: SModelElement): Operation[] {
|
|
239
240
|
const result: Operation[] = [];
|
|
240
241
|
const newRoutingPoints: ElementAndRoutingPoints[] = [];
|
|
241
242
|
forEachElement(target.index, isNonRoutableSelectedMovableBoundsAware, element => {
|
|
@@ -246,7 +247,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
246
247
|
}
|
|
247
248
|
});
|
|
248
249
|
if (newRoutingPoints.length > 0) {
|
|
249
|
-
result.push(
|
|
250
|
+
result.push(ChangeRoutingPointsOperation.create(newRoutingPoints));
|
|
250
251
|
}
|
|
251
252
|
return result;
|
|
252
253
|
}
|
|
@@ -287,7 +288,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
287
288
|
// only allow one element to have the element resize handles
|
|
288
289
|
this.activeResizeElement = moveableElement;
|
|
289
290
|
if (isResizable(this.activeResizeElement)) {
|
|
290
|
-
this.tool.dispatchFeedback([
|
|
291
|
+
this.tool.dispatchFeedback([ShowChangeBoundsToolResizeFeedbackAction.create(this.activeResizeElement.id)], this);
|
|
291
292
|
}
|
|
292
293
|
return true;
|
|
293
294
|
}
|
|
@@ -299,7 +300,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
299
300
|
}
|
|
300
301
|
|
|
301
302
|
protected initPosition(event: MouseEvent): void {
|
|
302
|
-
this.
|
|
303
|
+
this.pointPositionUpdater.updateLastDragPosition({ x: event.pageX, y: event.pageY });
|
|
303
304
|
if (this.activeResizeHandle) {
|
|
304
305
|
const resizeElement = findParentByFeature(this.activeResizeHandle, isResizable);
|
|
305
306
|
this.initialBounds = {
|
|
@@ -311,39 +312,9 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
311
312
|
}
|
|
312
313
|
}
|
|
313
314
|
|
|
314
|
-
protected updatePosition(target: SModelElement, event: MouseEvent): Point | undefined {
|
|
315
|
-
if (this.lastDragPosition) {
|
|
316
|
-
const newDragPosition = { x: event.pageX, y: event.pageY };
|
|
317
|
-
|
|
318
|
-
const viewport = findParentByFeature(target, isViewport);
|
|
319
|
-
const zoom = viewport ? viewport.zoom : 1;
|
|
320
|
-
const dx = (event.pageX - this.lastDragPosition.x) / zoom;
|
|
321
|
-
const dy = (event.pageY - this.lastDragPosition.y) / zoom;
|
|
322
|
-
const deltaToLastPosition = { x: dx, y: dy };
|
|
323
|
-
this.lastDragPosition = newDragPosition;
|
|
324
|
-
|
|
325
|
-
// update position delta with latest delta
|
|
326
|
-
this.positionDelta.x += deltaToLastPosition.x;
|
|
327
|
-
this.positionDelta.y += deltaToLastPosition.y;
|
|
328
|
-
|
|
329
|
-
// snap our delta and only send update if the position actually changes
|
|
330
|
-
// otherwise accumulate delta until we do snap to an update
|
|
331
|
-
const positionUpdate = this.snap(this.positionDelta, target, !event.altKey);
|
|
332
|
-
if (positionUpdate.x === 0 && positionUpdate.y === 0) {
|
|
333
|
-
return undefined;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
// we update our position so we update our delta by the snapped position
|
|
337
|
-
this.positionDelta.x -= positionUpdate.x;
|
|
338
|
-
this.positionDelta.y -= positionUpdate.y;
|
|
339
|
-
return positionUpdate;
|
|
340
|
-
}
|
|
341
|
-
return undefined;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
315
|
protected reset(): void {
|
|
345
316
|
if (this.activeResizeElement && isResizable(this.activeResizeElement)) {
|
|
346
|
-
this.tool.dispatchFeedback([
|
|
317
|
+
this.tool.dispatchFeedback([HideChangeBoundsToolResizeFeedbackAction.create()], this);
|
|
347
318
|
}
|
|
348
319
|
this.tool.dispatchActions([cursorFeedbackAction(CursorCSS.DEFAULT)]);
|
|
349
320
|
this.resetPosition();
|
|
@@ -351,8 +322,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
351
322
|
|
|
352
323
|
protected resetPosition(): void {
|
|
353
324
|
this.activeResizeHandle = undefined;
|
|
354
|
-
this.
|
|
355
|
-
this.positionDelta = { x: 0, y: 0 };
|
|
325
|
+
this.pointPositionUpdater.resetPosition();
|
|
356
326
|
}
|
|
357
327
|
|
|
358
328
|
protected handleResizeOnClient(positionUpdate: Point): Action[] {
|
|
@@ -418,13 +388,13 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
418
388
|
|
|
419
389
|
protected createChangeBoundsAction(element: SModelElement & BoundsAware): Action[] {
|
|
420
390
|
if (this.isValidBoundChange(element, element.bounds, element.bounds)) {
|
|
421
|
-
return [
|
|
391
|
+
return [ChangeBoundsOperation.create([toElementAndBounds(element)])];
|
|
422
392
|
} else if (this.initialBounds) {
|
|
423
393
|
const actions: Action[] = [];
|
|
424
394
|
if (this.tool.movementRestrictor) {
|
|
425
395
|
actions.push(removeMovementRestrictionFeedback(element, this.tool.movementRestrictor));
|
|
426
396
|
}
|
|
427
|
-
actions.push(
|
|
397
|
+
actions.push(SetBoundsAction.create([{ elementId: element.id, newPosition: this.initialBounds, newSize: this.initialBounds }]));
|
|
428
398
|
return actions;
|
|
429
399
|
}
|
|
430
400
|
return [];
|
|
@@ -446,12 +416,12 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
446
416
|
if (this.tool.movementRestrictor) {
|
|
447
417
|
result.push(removeMovementRestrictionFeedback(element, this.tool.movementRestrictor));
|
|
448
418
|
}
|
|
449
|
-
result.push(
|
|
419
|
+
result.push(SetBoundsAction.create([{ elementId: element.id, newPosition, newSize }]));
|
|
450
420
|
} else if (this.isValidSize(element, newSize)) {
|
|
451
421
|
if (this.tool.movementRestrictor) {
|
|
452
422
|
result.push(createMovementRestrictionFeedback(element, this.tool.movementRestrictor));
|
|
453
423
|
}
|
|
454
|
-
result.push(
|
|
424
|
+
result.push(SetBoundsAction.create([{ elementId: element.id, newPosition, newSize }]));
|
|
455
425
|
}
|
|
456
426
|
|
|
457
427
|
return result;
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
} from 'sprotty';
|
|
29
29
|
import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
|
|
30
30
|
import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
|
|
31
|
-
import {
|
|
31
|
+
import { TYPES } from '../../base/types';
|
|
32
32
|
import { IMouseTool } from '../mouse-tool/mouse-tool';
|
|
33
33
|
import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
|
|
34
34
|
import { IFeedbackActionDispatcher } from '../tool-feedback/feedback-action-dispatcher';
|
|
@@ -70,7 +70,7 @@ export class DeleteKeyListener extends KeyListener {
|
|
|
70
70
|
.map(e => e.id)
|
|
71
71
|
);
|
|
72
72
|
if (deleteElementIds.length > 0) {
|
|
73
|
-
return [
|
|
73
|
+
return [DeleteElementOperation.create(deleteElementIds)];
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
return [];
|
|
@@ -88,8 +88,8 @@ export class MouseDeleteTool implements GLSPTool {
|
|
|
88
88
|
|
|
89
89
|
protected deleteToolMouseListener: DeleteToolMouseListener = new DeleteToolMouseListener();
|
|
90
90
|
|
|
91
|
-
@inject(
|
|
92
|
-
@inject(
|
|
91
|
+
@inject(TYPES.MouseTool) protected mouseTool: IMouseTool;
|
|
92
|
+
@inject(TYPES.IFeedbackActionDispatcher) protected readonly feedbackDispatcher: IFeedbackActionDispatcher;
|
|
93
93
|
|
|
94
94
|
get id(): string {
|
|
95
95
|
return MouseDeleteTool.ID;
|
|
@@ -114,9 +114,9 @@ export class DeleteToolMouseListener extends MouseListener {
|
|
|
114
114
|
return [];
|
|
115
115
|
}
|
|
116
116
|
const result: Action[] = [];
|
|
117
|
-
result.push(
|
|
117
|
+
result.push(DeleteElementOperation.create([deletableParent.id]));
|
|
118
118
|
if (!isCtrlOrCmd(event)) {
|
|
119
|
-
result.push(
|
|
119
|
+
result.push(EnableDefaultToolsAction.create());
|
|
120
120
|
}
|
|
121
121
|
return result;
|
|
122
122
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019-
|
|
2
|
+
* Copyright (c) 2019-2022 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
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import { TriggerEdgeCreationAction, TriggerNodeCreationAction } from '@eclipse-glsp/protocol';
|
|
17
17
|
import { ContainerModule, interfaces } from 'inversify';
|
|
18
18
|
import { configureActionHandler, configureModelElement } from 'sprotty';
|
|
19
|
-
import {
|
|
19
|
+
import { TYPES } from '../../base/types';
|
|
20
20
|
import { MARQUEE } from '../tool-feedback/marquee-tool-feedback';
|
|
21
21
|
import { ChangeBoundsTool } from './change-bounds-tool';
|
|
22
22
|
import { DelKeyDeleteTool, MouseDeleteTool } from './delete-tool';
|
|
@@ -30,16 +30,16 @@ import { MarqueeView } from './view';
|
|
|
30
30
|
|
|
31
31
|
const toolsModule = new ContainerModule((bind, _unbind, isBound) => {
|
|
32
32
|
// Register default tools
|
|
33
|
-
bind(
|
|
34
|
-
bind(
|
|
35
|
-
bind(
|
|
33
|
+
bind(TYPES.IDefaultTool).to(ChangeBoundsTool);
|
|
34
|
+
bind(TYPES.IDefaultTool).to(EdgeEditTool);
|
|
35
|
+
bind(TYPES.IDefaultTool).to(DelKeyDeleteTool);
|
|
36
36
|
|
|
37
37
|
// Register tools
|
|
38
|
-
bind(
|
|
38
|
+
bind(TYPES.ITool).to(MouseDeleteTool);
|
|
39
39
|
bind(NodeCreationTool).toSelf().inSingletonScope();
|
|
40
40
|
bind(EdgeCreationTool).toSelf().inSingletonScope();
|
|
41
|
-
bind(
|
|
42
|
-
bind(
|
|
41
|
+
bind(TYPES.ITool).toService(EdgeCreationTool);
|
|
42
|
+
bind(TYPES.ITool).toService(NodeCreationTool);
|
|
43
43
|
|
|
44
44
|
configureMarqueeTool({ bind, isBound });
|
|
45
45
|
configureActionHandler({ bind, isBound }, TriggerNodeCreationAction.KIND, NodeCreationTool);
|
|
@@ -48,8 +48,8 @@ const toolsModule = new ContainerModule((bind, _unbind, isBound) => {
|
|
|
48
48
|
|
|
49
49
|
export function configureMarqueeTool(context: { bind: interfaces.Bind; isBound: interfaces.IsBound }): void {
|
|
50
50
|
configureModelElement(context, MARQUEE, MarqueeNode, MarqueeView);
|
|
51
|
-
context.bind(
|
|
52
|
-
context.bind(
|
|
51
|
+
context.bind(TYPES.IDefaultTool).to(MarqueeTool);
|
|
52
|
+
context.bind(TYPES.ITool).to(MarqueeMouseTool);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
export default toolsModule;
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { Action, CreateEdgeOperation,
|
|
16
|
+
import { Action, CreateEdgeOperation, TriggerEdgeCreationAction } from '@eclipse-glsp/protocol';
|
|
17
17
|
import { inject, injectable } from 'inversify';
|
|
18
18
|
import {
|
|
19
19
|
AnchorComputerRegistry,
|
|
@@ -66,13 +66,13 @@ export class EdgeCreationTool extends BaseGLSPTool implements IActionHandler {
|
|
|
66
66
|
disable(): void {
|
|
67
67
|
this.mouseTool.deregister(this.creationToolMouseListener);
|
|
68
68
|
this.mouseTool.deregister(this.feedbackEndMovingMouseListener);
|
|
69
|
-
this.deregisterFeedback([
|
|
69
|
+
this.deregisterFeedback([RemoveFeedbackEdgeAction.create(), cursorFeedbackAction()]);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
handle(action: Action): Action | void {
|
|
73
|
-
if (
|
|
73
|
+
if (TriggerEdgeCreationAction.is(action)) {
|
|
74
74
|
this.triggerAction = action;
|
|
75
|
-
return
|
|
75
|
+
return EnableToolsAction.create([this.id]);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -96,7 +96,7 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
|
|
|
96
96
|
this.target = undefined;
|
|
97
97
|
this.currentTarget = undefined;
|
|
98
98
|
this.allowedTarget = false;
|
|
99
|
-
this.tool.dispatchFeedback([
|
|
99
|
+
this.tool.dispatchFeedback([RemoveFeedbackEdgeAction.create()]);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
override nonDraggingMouseUp(_element: SModelElement, event: MouseEvent): Action[] {
|
|
@@ -105,7 +105,9 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
|
|
|
105
105
|
if (!this.isSourceSelected()) {
|
|
106
106
|
if (this.currentTarget && this.allowedTarget) {
|
|
107
107
|
this.source = this.currentTarget.id;
|
|
108
|
-
this.tool.dispatchFeedback([
|
|
108
|
+
this.tool.dispatchFeedback([
|
|
109
|
+
DrawFeedbackEdgeAction.create({ elementTypeId: this.triggerAction.elementTypeId, sourceId: this.source })
|
|
110
|
+
]);
|
|
109
111
|
}
|
|
110
112
|
} else {
|
|
111
113
|
if (this.currentTarget && this.allowedTarget) {
|
|
@@ -113,15 +115,22 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
|
|
|
113
115
|
}
|
|
114
116
|
}
|
|
115
117
|
if (this.source && this.target) {
|
|
116
|
-
result.push(
|
|
118
|
+
result.push(
|
|
119
|
+
CreateEdgeOperation.create({
|
|
120
|
+
elementTypeId: this.triggerAction.elementTypeId,
|
|
121
|
+
sourceElementId: this.source,
|
|
122
|
+
targetElementId: this.target,
|
|
123
|
+
args: this.triggerAction.args
|
|
124
|
+
})
|
|
125
|
+
);
|
|
117
126
|
if (!isCtrlOrCmd(event)) {
|
|
118
|
-
result.push(
|
|
127
|
+
result.push(EnableDefaultToolsAction.create());
|
|
119
128
|
} else {
|
|
120
129
|
this.reinitialize();
|
|
121
130
|
}
|
|
122
131
|
}
|
|
123
132
|
} else if (event.button === 2) {
|
|
124
|
-
result.push(
|
|
133
|
+
result.push(EnableDefaultToolsAction.create());
|
|
125
134
|
}
|
|
126
135
|
return result;
|
|
127
136
|
}
|
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
EdgeRouterRegistry,
|
|
23
23
|
findParentByFeature,
|
|
24
24
|
isConnectable,
|
|
25
|
+
ISnapper,
|
|
25
26
|
isSelected,
|
|
26
27
|
SModelElement,
|
|
27
28
|
SModelRoot,
|
|
@@ -29,7 +30,7 @@ import {
|
|
|
29
30
|
SRoutingHandle
|
|
30
31
|
} from 'sprotty';
|
|
31
32
|
import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
|
|
32
|
-
import {
|
|
33
|
+
import { TYPES } from '../../base/types';
|
|
33
34
|
import { isRoutable, isRoutingHandle } from '../../utils/smodel-util';
|
|
34
35
|
import { isReconnectable, isReconnectHandle, isSourceRoutingHandle, isTargetRoutingHandle, SReconnectHandle } from '../reconnect/model';
|
|
35
36
|
import { SelectionListener, SelectionService } from '../select/selection-service';
|
|
@@ -50,9 +51,10 @@ import { BaseGLSPTool } from './base-glsp-tool';
|
|
|
50
51
|
export class EdgeEditTool extends BaseGLSPTool {
|
|
51
52
|
static ID = 'glsp.edge-edit-tool';
|
|
52
53
|
|
|
53
|
-
@inject(
|
|
54
|
+
@inject(TYPES.SelectionService) protected selectionService: SelectionService;
|
|
54
55
|
@inject(AnchorComputerRegistry) protected anchorRegistry: AnchorComputerRegistry;
|
|
55
56
|
@inject(EdgeRouterRegistry) @optional() protected edgeRouterRegistry?: EdgeRouterRegistry;
|
|
57
|
+
@inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
|
|
56
58
|
|
|
57
59
|
protected feedbackEdgeSourceMovingListener: FeedbackEdgeSourceMovingMouseListener;
|
|
58
60
|
protected feedbackEdgeTargetMovingListener: FeedbackEdgeTargetMovingMouseListener;
|
|
@@ -71,7 +73,7 @@ export class EdgeEditTool extends BaseGLSPTool {
|
|
|
71
73
|
// install feedback move mouse listener for client-side move updates
|
|
72
74
|
this.feedbackEdgeSourceMovingListener = new FeedbackEdgeSourceMovingMouseListener(this.anchorRegistry);
|
|
73
75
|
this.feedbackEdgeTargetMovingListener = new FeedbackEdgeTargetMovingMouseListener(this.anchorRegistry);
|
|
74
|
-
this.feedbackMovingListener = new FeedbackEdgeRouteMovingMouseListener(this.edgeRouterRegistry);
|
|
76
|
+
this.feedbackMovingListener = new FeedbackEdgeRouteMovingMouseListener(this.edgeRouterRegistry, this.snapper);
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
registerFeedbackListeners(): void {
|
|
@@ -123,10 +125,10 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
123
125
|
// note: order is important here as we want the reconnect handles to cover the routing handles
|
|
124
126
|
const feedbackActions = [];
|
|
125
127
|
if (canEditRouting(edge)) {
|
|
126
|
-
feedbackActions.push(
|
|
128
|
+
feedbackActions.push(SwitchRoutingModeAction.create({ elementsToActivate: [this.edge.id] }));
|
|
127
129
|
}
|
|
128
130
|
if (isReconnectable(edge)) {
|
|
129
|
-
feedbackActions.push(
|
|
131
|
+
feedbackActions.push(ShowEdgeReconnectHandlesFeedbackAction.create(this.edge.id));
|
|
130
132
|
}
|
|
131
133
|
this.tool.dispatchFeedback(feedbackActions);
|
|
132
134
|
}
|
|
@@ -139,16 +141,16 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
139
141
|
if (this.edge && this.edge.target && this.edge.source) {
|
|
140
142
|
if (isSourceRoutingHandle(edge, reconnectHandle)) {
|
|
141
143
|
this.tool.dispatchFeedback([
|
|
142
|
-
|
|
144
|
+
HideEdgeReconnectHandlesFeedbackAction.create(),
|
|
143
145
|
cursorFeedbackAction(CursorCSS.EDGE_RECONNECT),
|
|
144
|
-
|
|
146
|
+
DrawFeedbackEdgeSourceAction.create({ elementTypeId: this.edge.type, targetId: this.edge.targetId })
|
|
145
147
|
]);
|
|
146
148
|
this.reconnectMode = 'NEW_SOURCE';
|
|
147
149
|
} else if (isTargetRoutingHandle(edge, reconnectHandle)) {
|
|
148
150
|
this.tool.dispatchFeedback([
|
|
149
|
-
|
|
151
|
+
HideEdgeReconnectHandlesFeedbackAction.create(),
|
|
150
152
|
cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET),
|
|
151
|
-
|
|
153
|
+
DrawFeedbackEdgeAction.create({ elementTypeId: this.edge.type, sourceId: this.edge.sourceId })
|
|
152
154
|
]);
|
|
153
155
|
this.reconnectMode = 'NEW_TARGET';
|
|
154
156
|
}
|
|
@@ -224,10 +226,10 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
224
226
|
}
|
|
225
227
|
|
|
226
228
|
if (this.edge && this.newConnectable) {
|
|
227
|
-
const
|
|
228
|
-
const
|
|
229
|
-
if (this.requiresReconnect(
|
|
230
|
-
result.push(
|
|
229
|
+
const sourceElementId = this.isReconnectingNewSource() ? this.newConnectable.id : this.edge.sourceId;
|
|
230
|
+
const targetElementId = this.isReconnectingNewSource() ? this.edge.targetId : this.newConnectable.id;
|
|
231
|
+
if (this.requiresReconnect(sourceElementId, targetElementId)) {
|
|
232
|
+
result.push(ReconnectEdgeOperation.create({ edgeElementId: this.edge.id, sourceElementId, targetElementId }));
|
|
231
233
|
}
|
|
232
234
|
this.reset();
|
|
233
235
|
} else if (this.edge && this.routingHandle) {
|
|
@@ -235,7 +237,9 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
235
237
|
// reroute actions
|
|
236
238
|
const latestEdge = target.index.getById(this.edge.id);
|
|
237
239
|
if (latestEdge && isRoutable(latestEdge)) {
|
|
238
|
-
result.push(
|
|
240
|
+
result.push(
|
|
241
|
+
ChangeRoutingPointsOperation.create([{ elementId: latestEdge.id, newRoutingPoints: latestEdge.routingPoints }])
|
|
242
|
+
);
|
|
239
243
|
this.routingHandle = undefined;
|
|
240
244
|
}
|
|
241
245
|
}
|
|
@@ -306,9 +310,9 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
|
|
|
306
310
|
protected resetFeedback(): void {
|
|
307
311
|
const result: Action[] = [];
|
|
308
312
|
if (this.edge) {
|
|
309
|
-
result.push(
|
|
313
|
+
result.push(SwitchRoutingModeAction.create({ elementsToDeactivate: [this.edge.id] }));
|
|
310
314
|
}
|
|
311
|
-
result.push(...[
|
|
315
|
+
result.push(...[HideEdgeReconnectHandlesFeedbackAction.create(), cursorFeedbackAction(), RemoveFeedbackEdgeAction.create()]);
|
|
312
316
|
this.tool.deregisterFeedback(result);
|
|
313
317
|
this.tool.deregisterFeedbackListeners();
|
|
314
318
|
}
|