@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,26 +13,19 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { Action, ChangeBoundsOperation, ElementAndBounds } from '@eclipse-glsp/protocol';
|
|
16
|
+
import { Action, ChangeBoundsOperation, ElementAndBounds, hasArrayProp, hasNumberProp, SetBoundsAction } from '@eclipse-glsp/protocol';
|
|
17
17
|
import { inject, injectable, optional } from 'inversify';
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
CommandExecutionContext,
|
|
21
|
-
CommandReturn,
|
|
22
|
-
ElementMove,
|
|
23
|
-
IActionDispatcher,
|
|
24
|
-
MoveAction,
|
|
25
|
-
SetBoundsAction,
|
|
26
|
-
SModelElement,
|
|
27
|
-
TYPES
|
|
28
|
-
} from 'sprotty';
|
|
29
|
-
import { GLSP_TYPES } from '../../base/types';
|
|
18
|
+
import { Command, CommandExecutionContext, CommandReturn, ElementMove, IActionDispatcher, MoveAction, SModelElement } from 'sprotty';
|
|
19
|
+
import { TYPES } from '../../base/types';
|
|
30
20
|
import { toValidElementAndBounds, toValidElementMove, WriteableElementAndBounds, WriteableElementMove } from '../../utils/layout-utils';
|
|
31
21
|
import { BoundsAwareModelElement } from '../../utils/smodel-util';
|
|
32
22
|
import { isBoundsAwareMoveable, isResizable } from '../change-bounds/model';
|
|
33
23
|
import { IMovementRestrictor } from '../change-bounds/movement-restrictor';
|
|
34
24
|
import { SelectionService } from '../select/selection-service';
|
|
35
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Used to specify the desired resize dimension for a {@link ResizeElementsCommand}.
|
|
28
|
+
*/
|
|
36
29
|
// eslint-disable-next-line no-shadow
|
|
37
30
|
export enum ResizeDimension {
|
|
38
31
|
Width,
|
|
@@ -41,43 +34,99 @@ export enum ResizeDimension {
|
|
|
41
34
|
}
|
|
42
35
|
|
|
43
36
|
export namespace Reduce {
|
|
37
|
+
/**
|
|
38
|
+
* Returns the minimal value of the given numbers.
|
|
39
|
+
* @param values Numbers to be evaluated.
|
|
40
|
+
* @returns The reduced number.
|
|
41
|
+
*/
|
|
44
42
|
export function min(...values: number[]): number {
|
|
45
43
|
return Math.min(...values);
|
|
46
44
|
}
|
|
47
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Returns the maximal value of the given numbers.
|
|
48
|
+
* @param values Numbers to be evaluated.
|
|
49
|
+
* @returns The reduced number.
|
|
50
|
+
*/
|
|
48
51
|
export function max(...values: number[]): number {
|
|
49
52
|
return Math.max(...values);
|
|
50
53
|
}
|
|
51
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Computes the average of the given numbers.
|
|
57
|
+
* @param values Numbers to be evaluated.
|
|
58
|
+
*/
|
|
52
59
|
export function avg(...values: number[]): number {
|
|
53
60
|
return values.reduce((a, b) => a + b, 0) / values.length;
|
|
54
61
|
}
|
|
55
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Returns the last value of the given numbers.
|
|
65
|
+
* @param values Numbers to be evaluated.
|
|
66
|
+
* @returns The reduced number.
|
|
67
|
+
*/
|
|
56
68
|
export function first(...values: number[]): number {
|
|
57
69
|
return values[0];
|
|
58
70
|
}
|
|
59
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Returns the minimal value of the given numbers.
|
|
74
|
+
* @param values Numbers to be evaluated.
|
|
75
|
+
* @returns The reduced number.
|
|
76
|
+
*/
|
|
60
77
|
export function last(...values: number[]): number {
|
|
61
78
|
return values[values.length - 1];
|
|
62
79
|
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Returns the reduce function that corresponds to the given {@link ReduceFunctionKind}.
|
|
83
|
+
* @param type The reduce function kind.
|
|
84
|
+
* @returns The corresponding reduce function.
|
|
85
|
+
*/
|
|
63
86
|
}
|
|
64
87
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
88
|
+
type ReduceFn = (...values: number[]) => number;
|
|
89
|
+
export interface ResizeElementsAction extends Action {
|
|
90
|
+
kind: typeof ResizeElementsAction.KIND;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* IDs of the elements that should be resized. If no IDs are given, the selected elements will be resized.
|
|
94
|
+
*/
|
|
95
|
+
elementIds: string[];
|
|
96
|
+
/**
|
|
97
|
+
* Resize dimension. The default is {@link ResizeDimension.Width}.
|
|
98
|
+
*/
|
|
99
|
+
dimension: ResizeDimension;
|
|
100
|
+
/**
|
|
101
|
+
* Function to reduce the dimension to a target dimension value, see Reduce.* for potential functions.
|
|
102
|
+
*/
|
|
103
|
+
reductionFunction: ReduceFn;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export namespace ResizeElementsAction {
|
|
107
|
+
export const KIND = 'resizeElementAction';
|
|
108
|
+
|
|
109
|
+
export function is(object: any): object is ResizeElementsAction {
|
|
110
|
+
return (
|
|
111
|
+
Action.hasKind(object, KIND) &&
|
|
112
|
+
hasArrayProp(object, 'elementIds') &&
|
|
113
|
+
hasNumberProp(object, 'dimension') &&
|
|
114
|
+
'reductionFunction' in object
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export function create(options: {
|
|
119
|
+
elementIds?: string[];
|
|
120
|
+
dimension?: ResizeDimension;
|
|
121
|
+
reductionFunction: ReduceFn;
|
|
122
|
+
}): ResizeElementsAction {
|
|
123
|
+
return {
|
|
124
|
+
kind: KIND,
|
|
125
|
+
dimension: ResizeDimension.Width,
|
|
126
|
+
elementIds: [],
|
|
127
|
+
...options
|
|
128
|
+
};
|
|
129
|
+
}
|
|
81
130
|
}
|
|
82
131
|
|
|
83
132
|
// eslint-disable-next-line no-shadow
|
|
@@ -104,31 +153,56 @@ export namespace Select {
|
|
|
104
153
|
}
|
|
105
154
|
}
|
|
106
155
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
156
|
+
type SelectFn = (elements: BoundsAwareModelElement[]) => BoundsAwareModelElement[];
|
|
157
|
+
export interface AlignElementsAction extends Action {
|
|
158
|
+
kind: typeof AlignElementsAction.KIND;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* IDs of the elements that should be aligned. If no IDs are given, the selected elements will be aligned.
|
|
162
|
+
*/
|
|
163
|
+
elementIds: string[];
|
|
164
|
+
/**
|
|
165
|
+
* Alignment direction. The default is {@link Alignment.Left}
|
|
166
|
+
*/
|
|
167
|
+
alignment: Alignment;
|
|
168
|
+
/**
|
|
169
|
+
* Function to selected elements that are considered during alignment calculation, see Select.* for potential functions.
|
|
170
|
+
* The default value is {@link Select.all}.
|
|
171
|
+
*/
|
|
172
|
+
selectionFunction: SelectFn;
|
|
123
173
|
}
|
|
124
174
|
|
|
175
|
+
export namespace AlignElementsAction {
|
|
176
|
+
export const KIND = 'alignElements';
|
|
177
|
+
|
|
178
|
+
export function is(object: any): object is AlignElementsAction {
|
|
179
|
+
return (
|
|
180
|
+
Action.hasKind(object, KIND) &&
|
|
181
|
+
hasArrayProp(object, 'elementIds') &&
|
|
182
|
+
hasNumberProp(object, 'alignment') &&
|
|
183
|
+
'selectionFunction' in object
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export function create(
|
|
188
|
+
options: { elementIds?: string[]; alignment?: Alignment; selectionFunction?: SelectFn } = {}
|
|
189
|
+
): AlignElementsAction {
|
|
190
|
+
return {
|
|
191
|
+
kind: KIND,
|
|
192
|
+
elementIds: [],
|
|
193
|
+
alignment: Alignment.Left,
|
|
194
|
+
selectionFunction: Select.all,
|
|
195
|
+
...options
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
125
199
|
@injectable()
|
|
126
200
|
abstract class LayoutElementsCommand extends Command {
|
|
127
201
|
constructor(
|
|
128
202
|
@inject(TYPES.Action) protected action: ResizeElementsAction | AlignElementsAction,
|
|
129
203
|
@inject(TYPES.IActionDispatcher) protected actionDispatcher: IActionDispatcher,
|
|
130
|
-
@inject(
|
|
131
|
-
@inject(
|
|
204
|
+
@inject(TYPES.SelectionService) protected selectionService: SelectionService,
|
|
205
|
+
@inject(TYPES.IMovementRestrictor) @optional() readonly movementRestrictor?: IMovementRestrictor
|
|
132
206
|
) {
|
|
133
207
|
super();
|
|
134
208
|
}
|
|
@@ -163,13 +237,13 @@ abstract class LayoutElementsCommand extends Command {
|
|
|
163
237
|
|
|
164
238
|
@injectable()
|
|
165
239
|
export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
166
|
-
static readonly KIND =
|
|
240
|
+
static readonly KIND = ResizeElementsAction.KIND;
|
|
167
241
|
|
|
168
242
|
constructor(
|
|
169
243
|
@inject(TYPES.Action) protected override action: ResizeElementsAction,
|
|
170
244
|
@inject(TYPES.IActionDispatcher) protected override actionDispatcher: IActionDispatcher,
|
|
171
|
-
@inject(
|
|
172
|
-
@inject(
|
|
245
|
+
@inject(TYPES.SelectionService) protected override selectionService: SelectionService,
|
|
246
|
+
@inject(TYPES.IMovementRestrictor) @optional() override readonly movementRestrictor?: IMovementRestrictor
|
|
173
247
|
) {
|
|
174
248
|
super(action, actionDispatcher, selectionService, movementRestrictor);
|
|
175
249
|
}
|
|
@@ -242,7 +316,7 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
|
242
316
|
elementAndBounds.push(elementChange);
|
|
243
317
|
}
|
|
244
318
|
});
|
|
245
|
-
this.dispatchActions([
|
|
319
|
+
this.dispatchActions([SetBoundsAction.create(elementAndBounds), ChangeBoundsOperation.create(elementAndBounds)]);
|
|
246
320
|
}
|
|
247
321
|
|
|
248
322
|
createElementAndBounds(
|
|
@@ -277,13 +351,13 @@ export class ResizeElementsCommand extends LayoutElementsCommand {
|
|
|
277
351
|
|
|
278
352
|
@injectable()
|
|
279
353
|
export class AlignElementsCommand extends LayoutElementsCommand {
|
|
280
|
-
static readonly KIND =
|
|
354
|
+
static readonly KIND = AlignElementsAction.KIND;
|
|
281
355
|
|
|
282
356
|
constructor(
|
|
283
357
|
@inject(TYPES.Action) protected override action: AlignElementsAction,
|
|
284
358
|
@inject(TYPES.IActionDispatcher) protected override actionDispatcher: IActionDispatcher,
|
|
285
|
-
@inject(
|
|
286
|
-
@inject(
|
|
359
|
+
@inject(TYPES.SelectionService) protected override selectionService: SelectionService,
|
|
360
|
+
@inject(TYPES.IMovementRestrictor) @optional() override readonly movementRestrictor?: IMovementRestrictor
|
|
287
361
|
) {
|
|
288
362
|
super(action, actionDispatcher, selectionService, movementRestrictor);
|
|
289
363
|
}
|
|
@@ -376,7 +450,7 @@ export class AlignElementsCommand extends LayoutElementsCommand {
|
|
|
376
450
|
elementAndBounds.push(elementAndBound);
|
|
377
451
|
}
|
|
378
452
|
});
|
|
379
|
-
this.dispatchActions([
|
|
453
|
+
this.dispatchActions([MoveAction.create(moves), ChangeBoundsOperation.create(elementAndBounds)]);
|
|
380
454
|
}
|
|
381
455
|
|
|
382
456
|
createElementMove(
|
|
@@ -13,17 +13,13 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Bounds, Dimension, Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { injectable } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Bounds,
|
|
19
19
|
BoundsData,
|
|
20
|
-
Dimension,
|
|
21
|
-
EMPTY_BOUNDS,
|
|
22
20
|
isBoundsAware,
|
|
23
21
|
isLayoutableChild,
|
|
24
|
-
isValidDimension,
|
|
25
22
|
LayoutContainer,
|
|
26
|
-
Point,
|
|
27
23
|
SChildElement,
|
|
28
24
|
SModelElement,
|
|
29
25
|
SParentElement,
|
|
@@ -91,7 +87,7 @@ export class VBoxLayouterExt extends VBoxLayouter {
|
|
|
91
87
|
container.children.forEach(child => {
|
|
92
88
|
if (isLayoutableChild(child)) {
|
|
93
89
|
const bounds = layouter.getBoundsData(child).bounds;
|
|
94
|
-
if (bounds !== undefined &&
|
|
90
|
+
if (bounds !== undefined && Dimension.isValid(bounds)) {
|
|
95
91
|
maxHeight += bounds.height;
|
|
96
92
|
if (isFirst) {
|
|
97
93
|
isFirst = false;
|
|
@@ -128,7 +124,7 @@ export class VBoxLayouterExt extends VBoxLayouter {
|
|
|
128
124
|
const boundsData = layouter.getBoundsData(child);
|
|
129
125
|
const bounds = boundsData.bounds;
|
|
130
126
|
const childOptions = this.getChildLayoutOptions(child, containerOptions);
|
|
131
|
-
if (bounds !== undefined &&
|
|
127
|
+
if (bounds !== undefined && Dimension.isValid(bounds)) {
|
|
132
128
|
currentOffset = this.layoutChild(
|
|
133
129
|
child,
|
|
134
130
|
boundsData,
|
|
@@ -197,7 +193,7 @@ export class VBoxLayouterExt extends VBoxLayouter {
|
|
|
197
193
|
const height = elementOptions?.prefHeight ?? 0;
|
|
198
194
|
return { ...bounds, width, height };
|
|
199
195
|
}
|
|
200
|
-
return
|
|
196
|
+
return Bounds.EMPTY;
|
|
201
197
|
}
|
|
202
198
|
|
|
203
199
|
protected override getChildLayoutOptions(child: SChildElement, containerOptions: VBoxLayoutOptionsExt): VBoxLayoutOptionsExt {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020-
|
|
2
|
+
* Copyright (c) 2020-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
|
|
@@ -13,15 +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
|
-
Action,
|
|
18
|
-
GLSPServerStatusAction,
|
|
19
|
-
isModelSourceChangedAction,
|
|
20
|
-
ModelSourceChangedAction,
|
|
21
|
-
ServerMessageAction
|
|
22
|
-
} from '@eclipse-glsp/protocol';
|
|
16
|
+
import { Action, ModelSourceChangedAction, ServerMessageAction, ServerStatusAction } from '@eclipse-glsp/protocol';
|
|
23
17
|
import { inject, injectable, optional } from 'inversify';
|
|
24
|
-
import { IActionDispatcher, IActionHandler,
|
|
18
|
+
import { IActionDispatcher, IActionHandler, ViewerOptions } from 'sprotty';
|
|
19
|
+
import { TYPES } from '../../base/types';
|
|
25
20
|
|
|
26
21
|
/**
|
|
27
22
|
* An external handler of the model source change event.
|
|
@@ -51,7 +46,7 @@ export class ModelSourceChangedActionHandler implements IActionHandler {
|
|
|
51
46
|
protected externalModelSourceChangedHandler?: ExternalModelSourceChangedHandler;
|
|
52
47
|
|
|
53
48
|
handle(action: Action): void {
|
|
54
|
-
if (
|
|
49
|
+
if (ModelSourceChangedAction.is(action)) {
|
|
55
50
|
if (this.externalModelSourceChangedHandler) {
|
|
56
51
|
this.externalModelSourceChangedHandler
|
|
57
52
|
.notifyModelSourceChange(action.modelSourceName, this.options)
|
|
@@ -67,8 +62,8 @@ export class ModelSourceChangedActionHandler implements IActionHandler {
|
|
|
67
62
|
const timeout = 0;
|
|
68
63
|
const severity = 'WARNING';
|
|
69
64
|
this.dispatcher.dispatchAll([
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
ServerStatusAction.create(message, { severity, timeout }),
|
|
66
|
+
ServerMessageAction.create(message, { severity, timeout })
|
|
72
67
|
]);
|
|
73
68
|
}
|
|
74
69
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 EclipseSource and others.
|
|
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
|
|
@@ -15,13 +15,12 @@
|
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
import { ContainerModule } from 'inversify';
|
|
17
17
|
import { MouseTool } from 'sprotty';
|
|
18
|
-
|
|
19
|
-
import { GLSP_TYPES } from '../../base/types';
|
|
18
|
+
import { TYPES } from '../../base/types';
|
|
20
19
|
import { RankingMouseTool } from './mouse-tool';
|
|
21
20
|
|
|
22
21
|
const glspMouseToolModule = new ContainerModule((bind, _unbind, _isBound, rebind) => {
|
|
23
22
|
bind(RankingMouseTool).toSelf().inSingletonScope();
|
|
24
|
-
bind(
|
|
23
|
+
bind(TYPES.MouseTool).toService(RankingMouseTool);
|
|
25
24
|
rebind(MouseTool).toService(RankingMouseTool);
|
|
26
25
|
});
|
|
27
26
|
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { Action, isAction } from '@eclipse-glsp/protocol';
|
|
17
16
|
import { injectable, multiInject, optional } from 'inversify';
|
|
18
|
-
import { MouseListener, MouseTool, SModelElement, SModelRoot
|
|
17
|
+
import { MouseListener, MouseTool, SModelElement, SModelRoot } from 'sprotty';
|
|
18
|
+
import { TYPES } from '../../base/types';
|
|
19
19
|
import { getRank } from '../rank/model';
|
|
20
20
|
|
|
21
21
|
export interface IMouseTool {
|
|
@@ -82,13 +82,8 @@ export class RankingMouseTool extends MouseTool implements IMouseTool {
|
|
|
82
82
|
if (actions.length > 0) {
|
|
83
83
|
event.preventDefault();
|
|
84
84
|
for (const actionOrPromise of actions) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
} else {
|
|
88
|
-
actionOrPromise.then((action: Action) => {
|
|
89
|
-
this.actionDispatcher.dispatch(action);
|
|
90
|
-
});
|
|
91
|
-
}
|
|
85
|
+
const action = await actionOrPromise;
|
|
86
|
+
await this.actionDispatcher.dispatch(action);
|
|
92
87
|
}
|
|
93
88
|
}
|
|
94
89
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020-
|
|
2
|
+
* Copyright (c) 2020-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
|
|
@@ -17,10 +17,8 @@ import {
|
|
|
17
17
|
Action,
|
|
18
18
|
Args,
|
|
19
19
|
CenterAction,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
isNavigateToTargetAction,
|
|
23
|
-
isSetNavigationTargetsAction,
|
|
20
|
+
hasObjectProp,
|
|
21
|
+
hasStringProp,
|
|
24
22
|
NavigateToExternalTargetAction,
|
|
25
23
|
NavigateToTargetAction,
|
|
26
24
|
NavigationTarget,
|
|
@@ -28,13 +26,15 @@ import {
|
|
|
28
26
|
SelectAction,
|
|
29
27
|
SelectAllAction,
|
|
30
28
|
ServerMessageAction,
|
|
29
|
+
ServerSeverity,
|
|
30
|
+
ServerStatusAction,
|
|
31
|
+
SetNavigationTargetsAction,
|
|
31
32
|
SetResolvedNavigationTargetAction
|
|
32
33
|
} from '@eclipse-glsp/protocol';
|
|
33
34
|
import { inject, injectable } from 'inversify';
|
|
34
|
-
import { ActionHandlerRegistry, IActionDispatcher, IActionHandler, ICommand, ILogger
|
|
35
|
-
|
|
35
|
+
import { ActionHandlerRegistry, IActionDispatcher, IActionHandler, ICommand, ILogger } from 'sprotty';
|
|
36
36
|
import { EditorContextServiceProvider } from '../../base/editor-context-service';
|
|
37
|
-
import {
|
|
37
|
+
import { TYPES } from '../../base/types';
|
|
38
38
|
import { NavigationTargetResolver } from './navigation-target-resolver';
|
|
39
39
|
|
|
40
40
|
/**
|
|
@@ -48,38 +48,66 @@ import { NavigationTargetResolver } from './navigation-target-resolver';
|
|
|
48
48
|
*
|
|
49
49
|
* This action is typically triggered by a user action.
|
|
50
50
|
*/
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
|
|
52
|
+
export interface NavigateAction extends Action {
|
|
53
|
+
kind: typeof NavigateAction.KIND;
|
|
54
|
+
/**
|
|
55
|
+
* Navigation target type, such as `documentation`, `implementation`, etc.
|
|
56
|
+
*/
|
|
57
|
+
targetTypeId: string;
|
|
58
|
+
/**
|
|
59
|
+
* Additional arguments for customization.
|
|
60
|
+
*/
|
|
61
|
+
args?: Args;
|
|
55
62
|
}
|
|
56
63
|
|
|
57
|
-
export
|
|
58
|
-
|
|
64
|
+
export namespace NavigateAction {
|
|
65
|
+
export const KIND = 'navigate';
|
|
66
|
+
|
|
67
|
+
export function is(object: any): object is NavigateAction {
|
|
68
|
+
return Action.hasKind(object, KIND) && hasStringProp(object, 'targetTypeId');
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function create(targetTypeId: string, options: { args?: Args } = {}): NavigateAction {
|
|
72
|
+
return {
|
|
73
|
+
kind: KIND,
|
|
74
|
+
targetTypeId,
|
|
75
|
+
...options
|
|
76
|
+
};
|
|
77
|
+
}
|
|
59
78
|
}
|
|
60
79
|
|
|
61
|
-
/**
|
|
62
|
-
*
|
|
80
|
+
/**
|
|
81
|
+
* Action to trigger the processing of additional navigation arguments.
|
|
63
82
|
* The resolution of a `NavigationTarget` may entail additional arguments. In this case, this action is
|
|
64
83
|
* triggered allowing the client to react to those arguments. The default `NavigationActionHandler` will
|
|
65
84
|
* only process the arguments' keys `info`, `warning`, and `error` to present them to the user.
|
|
66
85
|
* Customizations, however, may add domain-specific arguments and register custom handler to also process
|
|
67
86
|
* other arguments and trigger some additional behavior (e.g. update other views, etc.).
|
|
68
87
|
*/
|
|
69
|
-
export class ProcessNavigationArgumentsAction implements Action {
|
|
70
|
-
static readonly KIND = 'processNavigationArguments';
|
|
71
|
-
readonly kind = ProcessNavigationArgumentsAction.KIND;
|
|
72
|
-
constructor(readonly args: Args) {}
|
|
73
|
-
}
|
|
74
88
|
|
|
75
|
-
export
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
89
|
+
export interface ProcessNavigationArgumentsAction extends Action {
|
|
90
|
+
kind: typeof ProcessNavigationArgumentsAction.KIND;
|
|
91
|
+
/**
|
|
92
|
+
* The navigation arguments.
|
|
93
|
+
*/
|
|
94
|
+
args: Args;
|
|
81
95
|
}
|
|
82
96
|
|
|
97
|
+
export namespace ProcessNavigationArgumentsAction {
|
|
98
|
+
export const KIND = 'processNavigationArguments';
|
|
99
|
+
|
|
100
|
+
export function is(object: any): object is ProcessNavigationArgumentsAction {
|
|
101
|
+
return Action.hasKind(object, KIND) && hasObjectProp(object, 'args');
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export function create(args: Args): ProcessNavigationArgumentsAction {
|
|
105
|
+
return {
|
|
106
|
+
kind: KIND,
|
|
107
|
+
args
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
83
111
|
/**
|
|
84
112
|
* Default handler for all actions that are related to the navigation.
|
|
85
113
|
*
|
|
@@ -109,17 +137,17 @@ export class NavigationActionHandler implements IActionHandler {
|
|
|
109
137
|
@inject(TYPES.ILogger) protected logger: ILogger;
|
|
110
138
|
@inject(TYPES.IActionDispatcher) protected dispatcher: IActionDispatcher;
|
|
111
139
|
@inject(TYPES.ActionHandlerRegistryProvider) protected actionHandlerRegistryProvider: () => Promise<ActionHandlerRegistry>;
|
|
112
|
-
@inject(
|
|
140
|
+
@inject(TYPES.IEditorContextServiceProvider) protected editorContextService: EditorContextServiceProvider;
|
|
113
141
|
@inject(NavigationTargetResolver) protected resolver: NavigationTargetResolver;
|
|
114
142
|
|
|
115
143
|
handle(action: Action): ICommand | Action | void {
|
|
116
|
-
if (
|
|
144
|
+
if (NavigateAction.is(action)) {
|
|
117
145
|
this.handleNavigateAction(action);
|
|
118
|
-
} else if (
|
|
146
|
+
} else if (NavigateToTargetAction.is(action)) {
|
|
119
147
|
this.handleNavigateToTarget(action);
|
|
120
|
-
} else if (
|
|
148
|
+
} else if (ProcessNavigationArgumentsAction.is(action)) {
|
|
121
149
|
this.processNavigationArguments(action.args);
|
|
122
|
-
} else if (
|
|
150
|
+
} else if (NavigateToExternalTargetAction.is(action)) {
|
|
123
151
|
this.handleNavigateToExternalTarget(action);
|
|
124
152
|
}
|
|
125
153
|
}
|
|
@@ -127,9 +155,11 @@ export class NavigationActionHandler implements IActionHandler {
|
|
|
127
155
|
protected async handleNavigateAction(action: NavigateAction): Promise<void> {
|
|
128
156
|
try {
|
|
129
157
|
const editorContextService = await this.editorContextService();
|
|
130
|
-
const
|
|
131
|
-
const response = await this.dispatcher.request(
|
|
132
|
-
|
|
158
|
+
const editorContext = editorContextService.get(action.args);
|
|
159
|
+
const response = await this.dispatcher.request(
|
|
160
|
+
RequestNavigationTargetsAction.create({ targetTypeId: action.targetTypeId, editorContext })
|
|
161
|
+
);
|
|
162
|
+
if (SetNavigationTargetsAction.is(response) && response.targets && response.targets.length === 1) {
|
|
133
163
|
if (response.targets.length > 1) {
|
|
134
164
|
this.logger.warn(
|
|
135
165
|
this,
|
|
@@ -137,7 +167,7 @@ export class NavigationActionHandler implements IActionHandler {
|
|
|
137
167
|
response.targets
|
|
138
168
|
);
|
|
139
169
|
}
|
|
140
|
-
return this.dispatcher.dispatch(
|
|
170
|
+
return this.dispatcher.dispatch(NavigateToTargetAction.create(response.targets[0]));
|
|
141
171
|
}
|
|
142
172
|
this.warnAboutFailedNavigation('No valid navigation target found');
|
|
143
173
|
} catch (reason) {
|
|
@@ -184,7 +214,11 @@ export class NavigationActionHandler implements IActionHandler {
|
|
|
184
214
|
if (!this.containsElementIds(elementIds)) {
|
|
185
215
|
return;
|
|
186
216
|
}
|
|
187
|
-
this.dispatcher.dispatchAll([
|
|
217
|
+
this.dispatcher.dispatchAll([
|
|
218
|
+
SelectAllAction.create(false),
|
|
219
|
+
SelectAction.create({ selectedElementsIDs: elementIds }),
|
|
220
|
+
CenterAction.create(elementIds)
|
|
221
|
+
]);
|
|
188
222
|
}
|
|
189
223
|
|
|
190
224
|
protected handleResolutionArguments(target: SetResolvedNavigationTargetAction): void {
|
|
@@ -192,11 +226,11 @@ export class NavigationActionHandler implements IActionHandler {
|
|
|
192
226
|
if (!this.containsArguments(args)) {
|
|
193
227
|
return;
|
|
194
228
|
}
|
|
195
|
-
this.dispatcher.dispatch(
|
|
229
|
+
this.dispatcher.dispatch(ProcessNavigationArgumentsAction.create(args));
|
|
196
230
|
}
|
|
197
231
|
|
|
198
232
|
protected navigateToExternal(target: NavigationTarget): Promise<void> {
|
|
199
|
-
return this.dispatcher.dispatch(
|
|
233
|
+
return this.dispatcher.dispatch(NavigateToExternalTargetAction.create(target));
|
|
200
234
|
}
|
|
201
235
|
|
|
202
236
|
protected processNavigationArguments(args: Args): void {
|
|
@@ -226,11 +260,11 @@ export class NavigationActionHandler implements IActionHandler {
|
|
|
226
260
|
this.notify('WARNING', message);
|
|
227
261
|
}
|
|
228
262
|
|
|
229
|
-
private notify(severity:
|
|
263
|
+
private notify(severity: ServerSeverity, message: string): void {
|
|
230
264
|
const timeout = this.notificationTimeout;
|
|
231
265
|
this.dispatcher.dispatchAll([
|
|
232
|
-
|
|
233
|
-
|
|
266
|
+
ServerStatusAction.create(message, { severity, timeout }),
|
|
267
|
+
ServerMessageAction.create(message, { severity, timeout })
|
|
234
268
|
]);
|
|
235
269
|
}
|
|
236
270
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020-
|
|
2
|
+
* Copyright (c) 2020-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
|
|
@@ -22,7 +22,7 @@ import 'reflect-metadata';
|
|
|
22
22
|
describe('NavigationTarget', () => {
|
|
23
23
|
it('should be able to set and get element IDs', () => {
|
|
24
24
|
const navigationTarget: NavigationTarget = { uri: 'uri' };
|
|
25
|
-
NavigationTarget.setElementIds(navigationTarget,
|
|
25
|
+
NavigationTarget.setElementIds(navigationTarget, 'id1', 'id2');
|
|
26
26
|
expect(NavigationTarget.getElementIds(navigationTarget)).to.be.eql(['id1', 'id2']);
|
|
27
27
|
});
|
|
28
28
|
|
|
@@ -46,7 +46,7 @@ describe('NavigationTarget', () => {
|
|
|
46
46
|
|
|
47
47
|
navigationTarget = { uri: 'uri' };
|
|
48
48
|
expect(NavigationTarget.hasArguments(navigationTarget)).to.be.false;
|
|
49
|
-
NavigationTarget.setElementIds(navigationTarget,
|
|
49
|
+
NavigationTarget.setElementIds(navigationTarget, 'id1', 'id2');
|
|
50
50
|
expect(NavigationTarget.hasArguments(navigationTarget)).to.be.true;
|
|
51
51
|
|
|
52
52
|
navigationTarget = { uri: 'uri' };
|