@eclipse-glsp/client 0.9.0-next.fd1a8bb6 → 0.10.0-next.827bd0d.158
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +642 -277
- package/README.md +4 -2
- package/css/command-palette.css +9 -5
- package/css/decoration.css +3 -2
- package/css/glsp-sprotty.css +16 -7
- package/css/tool-palette.css +44 -27
- package/lib/base/action-dispatcher.d.ts +19 -3
- package/lib/base/action-dispatcher.d.ts.map +1 -1
- package/lib/base/action-dispatcher.js +11 -8
- package/lib/base/action-dispatcher.js.map +1 -1
- package/lib/base/actions/focus-change-action.d.ts +1 -1
- package/lib/base/actions/focus-change-action.d.ts.map +1 -1
- package/lib/base/{args.d.ts → argumentable.d.ts} +2 -4
- package/lib/base/argumentable.d.ts.map +1 -0
- package/lib/base/{args.js → argumentable.js} +1 -1
- package/lib/base/argumentable.js.map +1 -0
- package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
- package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.d.ts +2 -2
- package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
- package/lib/base/auto-complete/auto-complete-widget.js +20 -4
- package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
- package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
- package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
- package/lib/base/auto-complete/validation-decorator.js +9 -8
- package/lib/base/auto-complete/validation-decorator.js.map +1 -1
- package/lib/base/command-stack.d.ts.map +1 -1
- package/lib/base/command-stack.js +3 -3
- package/lib/base/command-stack.js.map +1 -1
- package/lib/base/container-modules.d.ts +40 -0
- package/lib/base/container-modules.d.ts.map +1 -0
- package/lib/base/container-modules.js +100 -0
- package/lib/base/container-modules.js.map +1 -0
- package/lib/base/di.config.d.ts +4 -2
- package/lib/base/di.config.d.ts.map +1 -1
- package/lib/base/di.config.js +10 -8
- package/lib/base/di.config.js.map +1 -1
- package/lib/base/drag-aware-mouse-listener.d.ts +2 -1
- package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
- package/lib/base/drag-aware-mouse-listener.js +0 -15
- package/lib/base/drag-aware-mouse-listener.js.map +1 -1
- package/lib/base/{editor-context.d.ts → editor-context-service.d.ts} +18 -22
- package/lib/base/editor-context-service.d.ts.map +1 -0
- package/lib/base/{editor-context.js → editor-context-service.js} +6 -7
- package/lib/base/editor-context-service.js.map +1 -0
- package/lib/base/focus-tracker.d.ts +17 -1
- package/lib/base/focus-tracker.d.ts.map +1 -1
- package/lib/base/focus-tracker.js +0 -15
- package/lib/base/focus-tracker.js.map +1 -1
- package/lib/base/model/update-model-command.d.ts +19 -5
- package/lib/base/model/update-model-command.d.ts.map +1 -1
- package/lib/base/model/update-model-command.js +8 -12
- package/lib/base/model/update-model-command.js.map +1 -1
- package/lib/base/model-initialization-constraint.d.ts +16 -1
- package/lib/base/model-initialization-constraint.d.ts.map +1 -1
- package/lib/base/model-initialization-constraint.js +3 -2
- package/lib/base/model-initialization-constraint.js.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.d.ts +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
- package/lib/base/tool-manager/glsp-tool-manager.js +6 -7
- package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
- package/lib/base/types.d.ts +3 -1
- package/lib/base/types.d.ts.map +1 -1
- package/lib/base/types.js +4 -2
- package/lib/base/types.js.map +1 -1
- package/lib/features/change-bounds/model.d.ts +2 -0
- package/lib/features/change-bounds/model.d.ts.map +1 -1
- package/lib/features/change-bounds/model.js +6 -0
- package/lib/features/change-bounds/model.js.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts +17 -1
- package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
- package/lib/features/change-bounds/movement-restrictor.js +0 -15
- package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
- package/lib/features/change-bounds/snap.d.ts +17 -1
- package/lib/features/change-bounds/snap.d.ts.map +1 -1
- package/lib/features/change-bounds/snap.js +0 -15
- package/lib/features/change-bounds/snap.js.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.d.ts +18 -2
- package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
- package/lib/features/command-palette/server-command-palette-provider.js +6 -6
- package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts +1 -1
- package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
- package/lib/features/context-menu/delete-element-context-menu.js +3 -3
- package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
- package/lib/features/context-menu/di.config.d.ts.map +1 -1
- 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 +16 -0
- 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 +36 -8
- package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.d.ts +18 -2
- package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
- package/lib/features/context-menu/server-context-menu-provider.js +6 -6
- package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts +17 -1
- package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-context-menu.js +6 -6
- package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.d.ts +17 -2
- package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
- package/lib/features/copy-paste/copy-paste-handler.js +7 -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 -5
- package/lib/features/copy-paste/di.config.js.map +1 -1
- package/lib/features/decoration/decoration-placer.d.ts +17 -1
- package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
- package/lib/features/decoration/decoration-placer.js +0 -15
- package/lib/features/decoration/decoration-placer.js.map +1 -1
- package/lib/features/edit-label/edit-label-validator.d.ts +16 -1
- package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
- package/lib/features/edit-label/edit-label-validator.js +5 -5
- package/lib/features/edit-label/edit-label-validator.js.map +1 -1
- package/lib/features/hints/di.config.d.ts +0 -15
- package/lib/features/hints/di.config.d.ts.map +1 -1
- package/lib/features/hints/di.config.js +3 -3
- package/lib/features/hints/di.config.js.map +1 -1
- package/lib/features/hints/model.d.ts +2 -1
- package/lib/features/hints/model.d.ts.map +1 -1
- package/lib/features/hints/model.js.map +1 -1
- package/lib/features/hints/type-hints.d.ts +17 -45
- package/lib/features/hints/type-hints.d.ts.map +1 -1
- package/lib/features/hints/type-hints.js +3 -20
- package/lib/features/hints/type-hints.js.map +1 -1
- package/lib/features/hover/di.config.d.ts +1 -1
- package/lib/features/hover/di.config.d.ts.map +1 -1
- package/lib/features/hover/di.config.js +4 -2
- package/lib/features/hover/di.config.js.map +1 -1
- package/lib/features/hover/hover.d.ts +28 -2
- package/lib/features/hover/hover.d.ts.map +1 -1
- package/lib/features/hover/hover.js +24 -3
- package/lib/features/hover/hover.js.map +1 -1
- package/lib/features/layout/di.config.d.ts +1 -1
- package/lib/features/layout/di.config.d.ts.map +1 -1
- package/lib/features/layout/di.config.js +6 -2
- package/lib/features/layout/di.config.js.map +1 -1
- package/lib/features/layout/freeform-layout.d.ts +16 -0
- package/lib/features/layout/freeform-layout.d.ts.map +1 -0
- package/lib/features/layout/freeform-layout.js +107 -0
- package/lib/features/layout/freeform-layout.js.map +1 -0
- package/lib/features/layout/layout-commands.d.ts +17 -1
- package/lib/features/layout/layout-commands.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.js +3 -3
- package/lib/features/layout/layout-commands.js.map +1 -1
- package/lib/features/layout/layout-commands.spec.d.ts +0 -15
- package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
- package/lib/features/layout/layout-commands.spec.js +4 -4
- package/lib/features/layout/layout-commands.spec.js.map +1 -1
- package/lib/features/layout/vbox-layout.d.ts +25 -0
- package/lib/features/layout/vbox-layout.d.ts.map +1 -0
- package/lib/features/layout/vbox-layout.js +188 -0
- package/lib/features/layout/vbox-layout.js.map +1 -0
- package/lib/features/model-source-watcher/di.config.d.ts +0 -15
- package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
- package/lib/features/model-source-watcher/di.config.js +4 -4
- package/lib/features/model-source-watcher/di.config.js.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
- package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js +7 -8
- package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
- package/lib/features/mouse-tool/mouse-tool.js +2 -1
- package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
- package/lib/features/navigation/di.config.d.ts +0 -15
- package/lib/features/navigation/di.config.d.ts.map +1 -1
- package/lib/features/navigation/di.config.js +7 -6
- package/lib/features/navigation/di.config.js.map +1 -1
- package/lib/features/navigation/navigation-action-handler.d.ts +19 -38
- package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
- package/lib/features/navigation/navigation-action-handler.js +12 -67
- package/lib/features/navigation/navigation-action-handler.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
- package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.js +6 -83
- package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts +0 -15
- package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
- package/lib/features/navigation/navigation-target-resolver.spec.js +16 -16
- package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
- package/lib/features/save/di.config.js +2 -2
- package/lib/features/save/di.config.js.map +1 -1
- package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +3 -9
- package/lib/features/save/save-keylistener.d.ts.map +1 -0
- package/lib/features/save/{save.js → save-keylistener.js} +4 -15
- package/lib/features/save/save-keylistener.js.map +1 -0
- package/lib/features/select/selection-service.d.ts +17 -1
- package/lib/features/select/selection-service.d.ts.map +1 -1
- package/lib/features/select/selection-service.js +5 -5
- package/lib/features/select/selection-service.js.map +1 -1
- package/lib/features/select/selection-service.spec.js +0 -16
- package/lib/features/select/selection-service.spec.js.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +18 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js +16 -18
- package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts +18 -2
- package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/creation-tool-feedback.js +30 -19
- package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/css-feedback.d.ts +20 -2
- package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/css-feedback.js +5 -3
- package/lib/features/tool-feedback/css-feedback.js.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +17 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js +0 -15
- package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +17 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
- package/lib/features/tool-feedback/feedback-action-dispatcher.js +0 -15
- package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +17 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
- package/lib/features/tool-feedback/marquee-tool-feedback.js +0 -15
- package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
- package/lib/features/tool-feedback/view.d.ts +17 -1
- package/lib/features/tool-feedback/view.d.ts.map +1 -1
- package/lib/features/tool-feedback/view.js +0 -15
- 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 +1 -1
- package/lib/features/tool-palette/di.config.js.map +1 -1
- package/lib/features/tool-palette/palette-item.d.ts +1 -2
- package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
- package/lib/features/tool-palette/palette-item.js +3 -4
- package/lib/features/tool-palette/palette-item.js.map +1 -1
- package/lib/features/tool-palette/tool-palette.d.ts +19 -3
- package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
- package/lib/features/tool-palette/tool-palette.js +38 -31
- package/lib/features/tool-palette/tool-palette.js.map +1 -1
- package/lib/features/tools/base-glsp-tool.d.ts +18 -2
- package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
- package/lib/features/tools/base-glsp-tool.js +3 -18
- package/lib/features/tools/base-glsp-tool.js.map +1 -1
- package/lib/features/tools/change-bounds-tool.d.ts +20 -3
- package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
- package/lib/features/tools/change-bounds-tool.js +28 -13
- package/lib/features/tools/change-bounds-tool.js.map +1 -1
- package/lib/features/tools/delete-tool.d.ts +17 -1
- package/lib/features/tools/delete-tool.d.ts.map +1 -1
- package/lib/features/tools/delete-tool.js +3 -3
- package/lib/features/tools/delete-tool.js.map +1 -1
- package/lib/features/tools/di.config.d.ts +0 -15
- package/lib/features/tools/di.config.d.ts.map +1 -1
- package/lib/features/tools/di.config.js +4 -4
- package/lib/features/tools/di.config.js.map +1 -1
- package/lib/features/tools/edge-creation-tool.d.ts +17 -2
- package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-creation-tool.js +4 -4
- package/lib/features/tools/edge-creation-tool.js.map +1 -1
- package/lib/features/tools/edge-edit-tool.d.ts +17 -1
- package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
- package/lib/features/tools/edge-edit-tool.js +5 -4
- package/lib/features/tools/edge-edit-tool.js.map +1 -1
- package/lib/features/tools/marquee-behavior.d.ts +42 -0
- package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
- package/lib/features/tools/marquee-behavior.js +128 -0
- package/lib/features/tools/marquee-behavior.js.map +1 -0
- package/{src/features/undo-redo/model.ts → lib/features/tools/marquee-behavior.spec.d.ts} +3 -12
- package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
- package/lib/features/tools/marquee-behavior.spec.js +165 -0
- package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
- package/lib/features/tools/marquee-mouse-tool.d.ts +24 -13
- package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-mouse-tool.js +33 -121
- package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
- package/lib/features/tools/marquee-tool.d.ts +17 -1
- package/lib/features/tools/marquee-tool.d.ts.map +1 -1
- package/lib/features/tools/marquee-tool.js +0 -15
- package/lib/features/tools/marquee-tool.js.map +1 -1
- package/lib/features/tools/node-creation-tool.d.ts +17 -2
- package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
- package/lib/features/tools/node-creation-tool.js +4 -4
- package/lib/features/tools/node-creation-tool.js.map +1 -1
- package/lib/features/validation/issue-marker.d.ts +2 -2
- package/lib/features/validation/issue-marker.d.ts.map +1 -1
- package/lib/features/validation/issue-marker.js +5 -5
- package/lib/features/validation/issue-marker.js.map +1 -1
- package/lib/features/validation/marker-navigator.d.ts +17 -1
- package/lib/features/validation/marker-navigator.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.js +2 -1
- package/lib/features/validation/marker-navigator.js.map +1 -1
- package/lib/features/validation/marker-navigator.spec.d.ts +0 -15
- package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
- package/lib/features/validation/marker-navigator.spec.js +9 -9
- package/lib/features/validation/marker-navigator.spec.js.map +1 -1
- package/lib/features/validation/validate.d.ts +18 -29
- package/lib/features/validation/validate.d.ts.map +1 -1
- package/lib/features/validation/validate.js +11 -49
- package/lib/features/validation/validate.js.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +18 -2
- package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
- package/lib/features/viewport/glsp-scroll-mouse-listener.js +0 -15
- package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
- package/lib/index.d.ts +6 -12
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +6 -12
- package/lib/index.js.map +1 -1
- package/lib/model-source/glsp-diagram-server.d.ts +2 -4
- package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
- package/lib/model-source/glsp-diagram-server.js +21 -6
- package/lib/model-source/glsp-diagram-server.js.map +1 -1
- package/lib/protocol-reexport.d.ts +45 -0
- package/lib/protocol-reexport.d.ts.map +1 -0
- package/lib/protocol-reexport.js +75 -0
- package/lib/protocol-reexport.js.map +1 -0
- package/lib/utils/argument-utils.d.ts.map +1 -1
- package/lib/utils/argument-utils.js +6 -6
- package/lib/utils/argument-utils.js.map +1 -1
- package/lib/utils/layout-utils.d.ts +2 -1
- package/lib/utils/layout-utils.d.ts.map +1 -1
- package/lib/utils/marker.d.ts +0 -38
- package/lib/utils/marker.d.ts.map +1 -1
- package/lib/utils/marker.js +6 -11
- package/lib/utils/marker.js.map +1 -1
- package/lib/utils/smodel-util.d.ts +1 -1
- package/lib/utils/smodel-util.d.ts.map +1 -1
- package/lib/utils/smodel-util.js +0 -15
- package/lib/utils/smodel-util.js.map +1 -1
- package/lib/utils/viewpoint-util.d.ts +2 -1
- package/lib/utils/viewpoint-util.d.ts.map +1 -1
- package/lib/utils/viewpoint-util.js +0 -15
- package/lib/utils/viewpoint-util.js.map +1 -1
- package/lib/views/base-view-module.d.ts +0 -15
- package/lib/views/base-view-module.d.ts.map +1 -1
- package/lib/views/base-view-module.js +20 -20
- package/lib/views/base-view-module.js.map +1 -1
- package/lib/views/compartments.d.ts +6 -0
- package/lib/views/compartments.d.ts.map +1 -0
- package/lib/{base/actions/edit-mode-action.js → views/compartments.js} +18 -26
- package/lib/views/compartments.js.map +1 -0
- package/lib/views/glsp-edge-view.d.ts +17 -1
- package/lib/views/glsp-edge-view.d.ts.map +1 -1
- package/lib/views/glsp-edge-view.js +0 -15
- package/lib/views/glsp-edge-view.js.map +1 -1
- package/lib/views/index.d.ts +1 -1
- package/lib/views/index.d.ts.map +1 -1
- package/lib/views/index.js +1 -1
- package/lib/views/index.js.map +1 -1
- package/lib/views/issue-marker-view.d.ts +1 -0
- package/lib/views/issue-marker-view.d.ts.map +1 -1
- package/lib/views/issue-marker-view.js +17 -8
- package/lib/views/issue-marker-view.js.map +1 -1
- package/lib/views/rounded-corner.d.ts +2 -1
- package/lib/views/rounded-corner.d.ts.map +1 -1
- package/package.json +8 -5
- package/src/base/action-dispatcher.ts +11 -10
- package/src/base/actions/focus-change-action.ts +1 -1
- package/src/base/{args.ts → argumentable.ts} +1 -4
- package/src/base/auto-complete/auto-complete-actions.ts +1 -1
- package/src/base/auto-complete/auto-complete-widget.ts +3 -4
- package/src/base/auto-complete/validation-decorator.ts +7 -6
- package/src/base/command-stack.ts +1 -2
- package/src/base/container-modules.ts +112 -0
- package/src/base/di.config.ts +6 -7
- package/src/base/drag-aware-mouse-listener.ts +2 -1
- package/src/base/{editor-context.ts → editor-context-service.ts} +2 -27
- package/src/base/focus-tracker.ts +2 -2
- package/src/base/model/update-model-command.ts +5 -12
- package/src/base/model-initialization-constraint.ts +3 -2
- package/src/base/tool-manager/glsp-tool-manager.ts +3 -5
- package/src/base/types.ts +4 -2
- package/src/features/change-bounds/model.ts +9 -1
- package/src/features/change-bounds/movement-restrictor.ts +2 -2
- package/src/features/change-bounds/snap.ts +3 -2
- package/src/features/command-palette/server-command-palette-provider.ts +3 -4
- package/src/features/context-menu/delete-element-context-menu.ts +3 -4
- package/src/features/context-menu/di.config.ts +0 -1
- package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +40 -11
- package/src/features/context-menu/server-context-menu-provider.ts +3 -4
- package/src/features/copy-paste/copy-paste-context-menu.ts +2 -13
- package/src/features/copy-paste/copy-paste-handler.ts +3 -4
- package/src/features/copy-paste/di.config.ts +2 -3
- package/src/features/decoration/decoration-placer.ts +2 -1
- package/src/features/edit-label/edit-label-validator.ts +1 -1
- package/src/features/hints/di.config.ts +2 -3
- package/src/features/hints/model.ts +2 -1
- package/src/features/hints/type-hints.ts +1 -64
- package/src/features/hover/di.config.ts +4 -3
- package/src/features/hover/hover.ts +27 -7
- package/src/features/layout/di.config.ts +8 -4
- package/src/features/layout/freeform-layout.ts +133 -0
- package/src/features/layout/layout-commands.spec.ts +3 -8
- package/src/features/layout/layout-commands.ts +1 -3
- package/src/features/layout/vbox-layout.ts +256 -0
- package/src/features/model-source-watcher/di.config.ts +3 -4
- package/src/features/model-source-watcher/model-source-changed-action-handler.ts +8 -4
- package/src/features/mouse-tool/mouse-tool.ts +2 -1
- package/src/features/navigation/di.config.ts +4 -10
- package/src/features/navigation/navigation-action-handler.ts +16 -62
- package/src/features/navigation/navigation-target-resolver.spec.ts +2 -4
- package/src/features/navigation/navigation-target-resolver.ts +8 -88
- package/src/features/save/di.config.ts +1 -1
- package/src/features/save/{save.ts → save-keylistener.ts} +2 -10
- package/src/features/select/selection-service.spec.ts +2 -2
- package/src/features/select/selection-service.ts +1 -5
- package/src/features/tool-feedback/change-bounds-tool-feedback.ts +19 -6
- package/src/features/tool-feedback/creation-tool-feedback.ts +34 -8
- package/src/features/tool-feedback/css-feedback.ts +5 -3
- package/src/features/tool-feedback/edge-edit-tool-feedback.ts +1 -3
- package/src/features/tool-feedback/feedback-action-dispatcher.ts +2 -1
- package/src/features/tool-feedback/marquee-tool-feedback.ts +1 -3
- package/src/features/tool-feedback/view.tsx +2 -2
- package/src/features/tool-palette/di.config.ts +1 -3
- package/src/features/tool-palette/palette-item.ts +1 -3
- package/src/features/tool-palette/tool-palette.ts +32 -26
- package/src/features/tools/base-glsp-tool.ts +4 -4
- package/src/features/tools/change-bounds-tool.ts +36 -18
- package/src/features/tools/delete-tool.ts +1 -3
- package/src/features/tools/di.config.ts +2 -3
- package/src/features/tools/edge-creation-tool.ts +1 -3
- package/src/features/tools/edge-edit-tool.ts +3 -4
- package/src/features/tools/marquee-behavior.spec.ts +175 -0
- package/src/features/tools/marquee-behavior.ts +158 -0
- package/src/features/tools/marquee-mouse-tool.ts +35 -146
- package/src/features/tools/marquee-tool.ts +2 -2
- package/src/features/tools/node-creation-tool.ts +1 -3
- package/src/features/validation/issue-marker.ts +2 -3
- package/src/features/validation/marker-navigator.spec.ts +3 -5
- package/src/features/validation/marker-navigator.ts +1 -4
- package/src/features/validation/validate.ts +4 -33
- package/src/features/viewport/glsp-scroll-mouse-listener.ts +3 -3
- package/src/index.ts +6 -12
- package/src/model-source/glsp-diagram-server.ts +12 -14
- package/src/protocol-reexport.ts +64 -0
- package/src/utils/argument-utils.ts +1 -2
- package/src/utils/layout-utils.ts +2 -2
- package/src/utils/marker.ts +2 -26
- package/src/utils/smodel-util.ts +1 -1
- package/src/utils/viewpoint-util.ts +1 -2
- package/src/views/base-view-module.ts +1 -2
- package/src/{base/actions/edit-mode-action.ts → views/compartments.tsx} +18 -13
- package/src/views/glsp-edge-view.tsx +2 -2
- package/src/views/index.ts +1 -1
- package/src/views/issue-marker-view.tsx +18 -8
- package/src/views/rounded-corner.ts +2 -2
- package/lib/base/actions/context-actions.d.ts +0 -36
- package/lib/base/actions/context-actions.d.ts.map +0 -1
- package/lib/base/actions/context-actions.js +0 -44
- package/lib/base/actions/context-actions.js.map +0 -1
- package/lib/base/actions/edit-mode-action.d.ts +0 -13
- package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
- package/lib/base/actions/edit-mode-action.js.map +0 -1
- package/lib/base/actions/edit-validation-actions.d.ts +0 -78
- package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
- package/lib/base/actions/edit-validation-actions.js +0 -80
- package/lib/base/actions/edit-validation-actions.js.map +0 -1
- package/lib/base/args.d.ts.map +0 -1
- package/lib/base/args.js.map +0 -1
- package/lib/base/editor-context.d.ts.map +0 -1
- package/lib/base/editor-context.js.map +0 -1
- package/lib/base/operations/operation.d.ts +0 -135
- package/lib/base/operations/operation.d.ts.map +0 -1
- package/lib/base/operations/operation.js +0 -191
- package/lib/base/operations/operation.js.map +0 -1
- package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
- package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
- package/lib/features/copy-paste/copy-paste-actions.js +0 -58
- package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
- package/lib/features/hints/request-type-hints-action.d.ts +0 -32
- package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
- package/lib/features/hints/request-type-hints-action.js +0 -28
- package/lib/features/hints/request-type-hints-action.js.map +0 -1
- package/lib/features/model-source-watcher/model-source-changed-action.d.ts +0 -24
- package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
- package/lib/features/model-source-watcher/model-source-changed-action.js +0 -16
- package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
- package/lib/features/save/save.d.ts.map +0 -1
- package/lib/features/save/save.js.map +0 -1
- package/lib/features/undo-redo/model.d.ts +0 -27
- package/lib/features/undo-redo/model.d.ts.map +0 -1
- package/lib/features/undo-redo/model.js +0 -18
- package/lib/features/undo-redo/model.js.map +0 -1
- package/lib/model-source/glsp-server-status.d.ts +0 -30
- package/lib/model-source/glsp-server-status.d.ts.map +0 -1
- package/lib/model-source/glsp-server-status.js +0 -44
- package/lib/model-source/glsp-server-status.js.map +0 -1
- package/lib/utils/array-utils.d.ts +0 -28
- package/lib/utils/array-utils.d.ts.map +0 -1
- package/lib/utils/array-utils.js +0 -56
- package/lib/utils/array-utils.js.map +0 -1
- package/lib/views/default-types.d.ts +0 -37
- package/lib/views/default-types.d.ts.map +0 -1
- package/lib/views/default-types.js +0 -47
- package/lib/views/default-types.js.map +0 -1
- package/src/base/actions/context-actions.ts +0 -43
- package/src/base/actions/edit-validation-actions.ts +0 -115
- package/src/base/operations/operation.ts +0 -205
- package/src/features/copy-paste/copy-paste-actions.ts +0 -63
- package/src/features/hints/request-type-hints-action.ts +0 -41
- package/src/features/model-source-watcher/model-source-changed-action.ts +0 -26
- package/src/model-source/glsp-server-status.ts +0 -38
- package/src/utils/array-utils.ts +0 -57
- package/src/views/default-types.ts +0 -48
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Action, Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
18
|
import { VNode } from 'snabbdom';
|
|
18
19
|
import {
|
|
19
|
-
Action,
|
|
20
20
|
CommandExecutionContext,
|
|
21
21
|
CommandReturn,
|
|
22
22
|
ElementMove,
|
|
@@ -26,15 +26,15 @@ import {
|
|
|
26
26
|
isViewport,
|
|
27
27
|
MouseListener,
|
|
28
28
|
MoveAction,
|
|
29
|
-
|
|
29
|
+
SChildElement,
|
|
30
30
|
SModelElement,
|
|
31
31
|
SModelRoot,
|
|
32
32
|
TYPES
|
|
33
33
|
} from 'sprotty';
|
|
34
|
-
|
|
35
34
|
import { isNotUndefined } from '../../utils/smodel-util';
|
|
36
35
|
import { addResizeHandles, isResizable, removeResizeHandles, SResizeHandle } from '../change-bounds/model';
|
|
37
36
|
import { createMovementRestrictionFeedback, removeMovementRestrictionFeedback } from '../change-bounds/movement-restrictor';
|
|
37
|
+
import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
|
|
38
38
|
import { ChangeBoundsTool } from '../tools/change-bounds-tool';
|
|
39
39
|
import { FeedbackCommand } from './model';
|
|
40
40
|
|
|
@@ -120,15 +120,17 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
120
120
|
const moveAction = this.getElementMoves(target, event, false);
|
|
121
121
|
if (moveAction) {
|
|
122
122
|
result.push(moveAction);
|
|
123
|
+
result.push(cursorFeedbackAction(CursorCSS.MOVE));
|
|
123
124
|
}
|
|
124
125
|
}
|
|
125
126
|
return result;
|
|
126
127
|
}
|
|
127
128
|
|
|
128
129
|
protected collectStartPositions(root: SModelRoot): void {
|
|
129
|
-
root.index
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
const selectedElements = root.index.all().filter(element => isSelectable(element) && element.selected);
|
|
131
|
+
const elementsSet = new Set(selectedElements);
|
|
132
|
+
selectedElements
|
|
133
|
+
.filter(element => !this.isChildOfSelected(elementsSet, element))
|
|
132
134
|
.forEach(element => {
|
|
133
135
|
if (isMoveable(element)) {
|
|
134
136
|
this.elementId2startPos.set(element.id, element.position);
|
|
@@ -136,6 +138,16 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
136
138
|
});
|
|
137
139
|
}
|
|
138
140
|
|
|
141
|
+
protected isChildOfSelected(selectedElements: Set<SModelElement>, element: SModelElement): boolean {
|
|
142
|
+
while (element instanceof SChildElement) {
|
|
143
|
+
element = element.parent;
|
|
144
|
+
if (selectedElements.has(element)) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
|
|
139
151
|
protected getElementMoves(target: SModelElement, event: MouseEvent, isFinished: boolean): MoveAction | undefined {
|
|
140
152
|
if (!this.startDragPosition) {
|
|
141
153
|
return undefined;
|
|
@@ -224,6 +236,7 @@ export class FeedbackMoveMouseListener extends MouseListener {
|
|
|
224
236
|
if (this.tool.movementRestrictor) {
|
|
225
237
|
this.tool.deregisterFeedback([removeMovementRestrictionFeedback(target, this.tool.movementRestrictor)], this);
|
|
226
238
|
}
|
|
239
|
+
result.push(cursorFeedbackAction(CursorCSS.DEFAULT));
|
|
227
240
|
}
|
|
228
241
|
this.hasDragged = false;
|
|
229
242
|
this.startDragPosition = undefined;
|
|
@@ -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, Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
add,
|
|
20
20
|
AnchorComputerRegistry,
|
|
21
21
|
center,
|
|
@@ -28,7 +28,6 @@ import {
|
|
|
28
28
|
isConnectable,
|
|
29
29
|
MouseListener,
|
|
30
30
|
MoveAction,
|
|
31
|
-
Point,
|
|
32
31
|
PolylineEdgeRouter,
|
|
33
32
|
SChildElement,
|
|
34
33
|
SConnectableElement,
|
|
@@ -39,8 +38,7 @@ import {
|
|
|
39
38
|
SRoutableElement,
|
|
40
39
|
TYPES
|
|
41
40
|
} from 'sprotty';
|
|
42
|
-
|
|
43
|
-
import { isRoutable } from '../../utils/smodel-util';
|
|
41
|
+
import { isRoutable, BoundsAwareModelElement } from '../../utils/smodel-util';
|
|
44
42
|
import { getAbsolutePosition, toAbsoluteBounds, toAbsolutePosition } from '../../utils/viewpoint-util';
|
|
45
43
|
import { FeedbackCommand } from './model';
|
|
46
44
|
|
|
@@ -108,12 +106,12 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
|
|
|
108
106
|
|
|
109
107
|
const edge = edgeEnd.feedbackEdge;
|
|
110
108
|
const position = getAbsolutePosition(edgeEnd, event);
|
|
111
|
-
const endAtMousePosition = findChildrenAtPosition(target.root, position).find(
|
|
109
|
+
const endAtMousePosition = findChildrenAtPosition(target.root, position).reverse().find(
|
|
112
110
|
element => isConnectable(element) && element.canConnect(edge, 'target')
|
|
113
111
|
);
|
|
114
112
|
|
|
115
113
|
if (endAtMousePosition instanceof SConnectableElement && edge.source && isBoundsAware(edge.source)) {
|
|
116
|
-
const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(edge.source
|
|
114
|
+
const anchor = this.computeAbsoluteAnchor(endAtMousePosition, center(toAbsoluteBounds(edge.source)));
|
|
117
115
|
if (euclideanDistance(anchor, edgeEnd.position) > 1) {
|
|
118
116
|
return [new MoveAction([{ elementId: edgeEnd.id, toPosition: anchor }], false)];
|
|
119
117
|
}
|
|
@@ -124,9 +122,10 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
|
|
|
124
122
|
return [];
|
|
125
123
|
}
|
|
126
124
|
|
|
127
|
-
protected computeAbsoluteAnchor(element: SConnectableElement,
|
|
125
|
+
protected computeAbsoluteAnchor(element: SConnectableElement, absoluteReferencePoint: Point, offset?: number): Point {
|
|
126
|
+
const referencePointInParent = absoluteToParent(element, absoluteReferencePoint);
|
|
128
127
|
const anchorComputer = this.anchorRegistry.get(PolylineEdgeRouter.KIND, element.anchorKind);
|
|
129
|
-
let anchor = anchorComputer.getAnchor(element,
|
|
128
|
+
let anchor = anchorComputer.getAnchor(element, referencePointInParent, offset);
|
|
130
129
|
// The anchor is computed in the local coordinate system of the element.
|
|
131
130
|
// If the element is a nested child element we have to add the absolute position of its parent to the anchor.
|
|
132
131
|
if (element.parent !== element.root) {
|
|
@@ -140,6 +139,33 @@ export class FeedbackEdgeEndMovingMouseListener extends MouseListener {
|
|
|
140
139
|
}
|
|
141
140
|
}
|
|
142
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Convert a point, specified in absolute coordinates, to a point relative
|
|
144
|
+
* to the parent of the specified child element.
|
|
145
|
+
* @param element the child element
|
|
146
|
+
* @param absolutePoint a point in absolute coordinates
|
|
147
|
+
* @returns the equivalent point, relative to the element's parent coordinates
|
|
148
|
+
*/
|
|
149
|
+
function absoluteToParent(element: BoundsAwareModelElement & SChildElement, absolutePoint: Point): Point{
|
|
150
|
+
if (isBoundsAware(element.parent)){
|
|
151
|
+
return absoluteToLocal(element.parent, absolutePoint);
|
|
152
|
+
}
|
|
153
|
+
// If the parent is not bounds-aware, assume it's at 0; 0 and proceed
|
|
154
|
+
return absoluteToLocal(element, absolutePoint);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Convert a point, specified in absolute coordinates, to a point relative
|
|
159
|
+
* to the specified element.
|
|
160
|
+
* @param element the element
|
|
161
|
+
* @param absolutePoint a point in absolute coordinates
|
|
162
|
+
* @returns the equivalent point, relative to the element's coordinates
|
|
163
|
+
*/
|
|
164
|
+
function absoluteToLocal(element: BoundsAwareModelElement, absolutePoint: Point): Point {
|
|
165
|
+
const absoluteElementBounds = toAbsoluteBounds(element);
|
|
166
|
+
return {x: absolutePoint.x - absoluteElementBounds.x, y: absolutePoint.y - absoluteElementBounds.y};
|
|
167
|
+
}
|
|
168
|
+
|
|
143
169
|
export function feedbackEdgeId(root: SModelRoot): string {
|
|
144
170
|
return root.id + '_feedback_edge';
|
|
145
171
|
}
|
|
@@ -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, isStringArray } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
|
-
import {
|
|
18
|
-
import { isStringArray } from '../../utils/array-utils';
|
|
18
|
+
import { CommandExecutionContext, SModelElement, SModelRoot, TYPES } from 'sprotty';
|
|
19
19
|
import { addCssClasses, removeCssClasses } from '../../utils/smodel-util';
|
|
20
20
|
import { FeedbackCommand } from './model';
|
|
21
21
|
|
|
@@ -78,7 +78,9 @@ export enum CursorCSS {
|
|
|
78
78
|
EDGE_RECONNECT = 'edge-reconnect-select-target-mode',
|
|
79
79
|
OPERATION_NOT_ALLOWED = 'edge-modification-not-allowed-mode',
|
|
80
80
|
ELEMENT_DELETION = 'element-deletion-mode',
|
|
81
|
-
|
|
81
|
+
RESIZE_NESW = 'resize-nesw-mode',
|
|
82
|
+
RESIZE_NWSE = 'resize-nwse-mode',
|
|
83
|
+
MOVE = 'move-mode',
|
|
82
84
|
MARQUEE = 'marquee-mode'
|
|
83
85
|
}
|
|
84
86
|
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Action, Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
18
|
import { VNode } from 'snabbdom';
|
|
18
19
|
import {
|
|
19
|
-
Action,
|
|
20
20
|
add,
|
|
21
21
|
AnchorComputerRegistry,
|
|
22
22
|
center,
|
|
@@ -33,7 +33,6 @@ import {
|
|
|
33
33
|
isViewport,
|
|
34
34
|
MouseListener,
|
|
35
35
|
MoveAction,
|
|
36
|
-
Point,
|
|
37
36
|
PolylineEdgeRouter,
|
|
38
37
|
SConnectableElement,
|
|
39
38
|
SModelElement,
|
|
@@ -43,7 +42,6 @@ import {
|
|
|
43
42
|
SwitchEditModeCommand,
|
|
44
43
|
TYPES
|
|
45
44
|
} from 'sprotty';
|
|
46
|
-
|
|
47
45
|
import { isNotUndefined, isRoutable, isRoutingHandle } from '../../utils/smodel-util';
|
|
48
46
|
import { getAbsolutePosition, toAbsoluteBounds } from '../../utils/viewpoint-util';
|
|
49
47
|
import { addReconnectHandles, removeReconnectHandles } from '../reconnect/model';
|
|
@@ -13,8 +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 } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
|
-
import {
|
|
18
|
+
import { IActionDispatcher, ILogger, TYPES } from 'sprotty';
|
|
18
19
|
|
|
19
20
|
export interface IFeedbackEmitter {}
|
|
20
21
|
|
|
@@ -13,20 +13,18 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Action, Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
AnchorComputerRegistry,
|
|
20
20
|
CommandExecutionContext,
|
|
21
21
|
CommandReturn,
|
|
22
22
|
MouseListener,
|
|
23
|
-
Point,
|
|
24
23
|
SChildElement,
|
|
25
24
|
SModelElement,
|
|
26
25
|
SModelRoot,
|
|
27
26
|
TYPES
|
|
28
27
|
} from 'sprotty';
|
|
29
|
-
|
|
30
28
|
import { FeedbackCommand } from './model';
|
|
31
29
|
|
|
32
30
|
export class DrawMarqueeAction implements Action {
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Point } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { injectable } from 'inversify';
|
|
17
18
|
import { VNode } from 'snabbdom';
|
|
18
|
-
import { IView, ORIGIN_POINT,
|
|
19
|
-
|
|
19
|
+
import { IView, ORIGIN_POINT, RenderingContext, setAttr, SModelElement, svg } from 'sprotty';
|
|
20
20
|
import { isResizable, ResizeHandleLocation, SResizeHandle } from '../change-bounds/model';
|
|
21
21
|
|
|
22
22
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -13,11 +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 '../../../css/tool-palette.css';
|
|
17
|
-
|
|
18
16
|
import { ContainerModule } from 'inversify';
|
|
19
17
|
import { configureActionHandler, EnableDefaultToolsAction, TYPES } from 'sprotty';
|
|
20
|
-
|
|
18
|
+
import '../../../css/tool-palette.css';
|
|
21
19
|
import { EnableToolPaletteAction, ToolPalette } from './tool-palette';
|
|
22
20
|
|
|
23
21
|
const toolPaletteModule = new ContainerModule((bind, _unbind, isBound, rebind) => {
|
|
@@ -13,9 +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 { isLabeledAction, LabeledAction } from '
|
|
17
|
-
|
|
18
|
-
import { isTriggerElementTypeCreationAction, TriggerElementCreationAction } from '../../base/operations/operation';
|
|
16
|
+
import { isLabeledAction, isTriggerElementTypeCreationAction, LabeledAction, TriggerElementCreationAction } from '@eclipse-glsp/protocol';
|
|
19
17
|
|
|
20
18
|
export interface PaletteItem extends LabeledAction {
|
|
21
19
|
readonly id: string;
|
|
@@ -13,6 +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 { isSetContextActionsAction, RequestContextActions, RequestMarkersAction, SetContextActions } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable, postConstruct } from 'inversify';
|
|
17
18
|
import {
|
|
18
19
|
AbstractUIExtension,
|
|
@@ -26,20 +27,18 @@ import {
|
|
|
26
27
|
SModelRoot,
|
|
27
28
|
TYPES
|
|
28
29
|
} from 'sprotty';
|
|
30
|
+
import { codiconCSSClasses } from 'sprotty/lib/utils/codicon';
|
|
29
31
|
import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
|
|
30
|
-
|
|
31
32
|
import { GLSPActionDispatcher } from '../../base/action-dispatcher';
|
|
32
|
-
import {
|
|
33
|
-
import { EditModeListener, EditorContextService } from '../../base/editor-context';
|
|
33
|
+
import { EditModeListener, EditorContextService } from '../../base/editor-context-service';
|
|
34
34
|
import { MouseDeleteTool } from '../tools/delete-tool';
|
|
35
35
|
import { MarqueeMouseTool } from '../tools/marquee-mouse-tool';
|
|
36
|
-
import { RequestMarkersAction } from '../validation/validate';
|
|
37
36
|
import { PaletteItem } from './palette-item';
|
|
38
37
|
|
|
39
38
|
const CLICKED_CSS_CLASS = 'clicked';
|
|
40
|
-
const
|
|
41
|
-
const
|
|
42
|
-
const
|
|
39
|
+
const SEARCH_ICON_ID = 'search';
|
|
40
|
+
const PALETTE_ICON_ID = 'symbol-color';
|
|
41
|
+
const CHEVRON_DOWN_ICON_ID = 'chevron-right';
|
|
43
42
|
const PALETTE_HEIGHT = '500px';
|
|
44
43
|
|
|
45
44
|
@injectable()
|
|
@@ -101,7 +100,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
|
|
|
101
100
|
this.containerElement.classList.add('collapsible-palette');
|
|
102
101
|
if (baseDiv) {
|
|
103
102
|
const insertedDiv = baseDiv.insertBefore(minPaletteDiv, baseDiv.firstChild);
|
|
104
|
-
const minimizeIcon = createIcon(
|
|
103
|
+
const minimizeIcon = createIcon(CHEVRON_DOWN_ICON_ID);
|
|
105
104
|
this.updateMinimizePaletteButtonTooltip(minPaletteDiv);
|
|
106
105
|
minimizeIcon.onclick = _event => {
|
|
107
106
|
if (this.isPaletteMaximized()) {
|
|
@@ -110,10 +109,8 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
|
|
|
110
109
|
this.containerElement.style.maxHeight = PALETTE_HEIGHT;
|
|
111
110
|
}
|
|
112
111
|
this.updateMinimizePaletteButtonTooltip(minPaletteDiv);
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
changeCSSClass(minimizeIcon, 'fas');
|
|
116
|
-
changeCSSClass(minimizeIcon, CHEVRON_DOWN);
|
|
112
|
+
changeCodiconClass(minimizeIcon, PALETTE_ICON_ID);
|
|
113
|
+
changeCodiconClass(minimizeIcon, CHEVRON_DOWN_ICON_ID);
|
|
117
114
|
};
|
|
118
115
|
insertedDiv.appendChild(minimizeIcon);
|
|
119
116
|
}
|
|
@@ -192,7 +189,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
|
|
|
192
189
|
}
|
|
193
190
|
|
|
194
191
|
protected createDefaultToolButton(): HTMLElement {
|
|
195
|
-
const button = createIcon(
|
|
192
|
+
const button = createIcon('inspect');
|
|
196
193
|
button.id = 'btn_default_tools';
|
|
197
194
|
button.title = 'Enable selection tool';
|
|
198
195
|
button.onclick = this.onClickStaticToolButton(this.defaultToolsButton);
|
|
@@ -200,21 +197,21 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
|
|
|
200
197
|
}
|
|
201
198
|
|
|
202
199
|
protected createMouseDeleteToolButton(): HTMLElement {
|
|
203
|
-
const deleteToolButton = createIcon(
|
|
200
|
+
const deleteToolButton = createIcon('chrome-close');
|
|
204
201
|
deleteToolButton.title = 'Enable deletion tool';
|
|
205
202
|
deleteToolButton.onclick = this.onClickStaticToolButton(deleteToolButton, MouseDeleteTool.ID);
|
|
206
203
|
return deleteToolButton;
|
|
207
204
|
}
|
|
208
205
|
|
|
209
206
|
protected createMarqueeToolButton(): HTMLElement {
|
|
210
|
-
const marqueeToolButton = createIcon(
|
|
207
|
+
const marqueeToolButton = createIcon('screen-full');
|
|
211
208
|
marqueeToolButton.title = 'Enable marquee tool';
|
|
212
209
|
marqueeToolButton.onclick = this.onClickStaticToolButton(marqueeToolButton, MarqueeMouseTool.ID);
|
|
213
210
|
return marqueeToolButton;
|
|
214
211
|
}
|
|
215
212
|
|
|
216
213
|
protected createValidateButton(): HTMLElement {
|
|
217
|
-
const validateActionButton = createIcon(
|
|
214
|
+
const validateActionButton = createIcon('pass');
|
|
218
215
|
validateActionButton.title = 'Validate model';
|
|
219
216
|
validateActionButton.onclick = _event => {
|
|
220
217
|
const modelIds: string[] = [this.modelRootId];
|
|
@@ -224,15 +221,15 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
|
|
|
224
221
|
}
|
|
225
222
|
|
|
226
223
|
protected createSearchButton(): HTMLElement {
|
|
227
|
-
const searchIcon = createIcon(
|
|
224
|
+
const searchIcon = createIcon(SEARCH_ICON_ID);
|
|
228
225
|
searchIcon.onclick = _ev => {
|
|
229
226
|
const searchField = document.getElementById(this.containerElement.id + '_search_field');
|
|
230
227
|
if (searchField) {
|
|
231
|
-
if (searchField.style.display === '
|
|
232
|
-
searchField.style.display = '
|
|
233
|
-
} else {
|
|
234
|
-
searchField.style.display = 'inline';
|
|
228
|
+
if (searchField.style.display === 'none') {
|
|
229
|
+
searchField.style.display = '';
|
|
235
230
|
searchField.focus();
|
|
231
|
+
} else {
|
|
232
|
+
searchField.style.display = 'none';
|
|
236
233
|
}
|
|
237
234
|
}
|
|
238
235
|
};
|
|
@@ -256,7 +253,7 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
|
|
|
256
253
|
protected createHeaderTitle(): HTMLElement {
|
|
257
254
|
const header = document.createElement('div');
|
|
258
255
|
header.classList.add('header-icon');
|
|
259
|
-
header.appendChild(createIcon(
|
|
256
|
+
header.appendChild(createIcon(PALETTE_ICON_ID));
|
|
260
257
|
header.insertAdjacentText('beforeend', 'Palette');
|
|
261
258
|
return header;
|
|
262
259
|
}
|
|
@@ -265,7 +262,10 @@ export class ToolPalette extends AbstractUIExtension implements IActionHandler,
|
|
|
265
262
|
const button = document.createElement('div');
|
|
266
263
|
button.tabIndex = index;
|
|
267
264
|
button.classList.add('tool-button');
|
|
268
|
-
|
|
265
|
+
if (item.icon) {
|
|
266
|
+
button.appendChild(createIcon(item.icon));
|
|
267
|
+
}
|
|
268
|
+
button.insertAdjacentText('beforeend', item.label);
|
|
269
269
|
button.onclick = this.onClickCreateToolButton(button, item);
|
|
270
270
|
button.onkeydown = ev => this.clearToolOnEscape(ev);
|
|
271
271
|
return button;
|
|
@@ -382,9 +382,9 @@ export function compare(a: PaletteItem, b: PaletteItem): number {
|
|
|
382
382
|
return a.label.localeCompare(b.label);
|
|
383
383
|
}
|
|
384
384
|
|
|
385
|
-
export function createIcon(
|
|
385
|
+
export function createIcon(codiconId: string): HTMLElement {
|
|
386
386
|
const icon = document.createElement('i');
|
|
387
|
-
icon.classList.add(...
|
|
387
|
+
icon.classList.add(...codiconCSSClasses(codiconId));
|
|
388
388
|
return icon;
|
|
389
389
|
}
|
|
390
390
|
|
|
@@ -395,7 +395,7 @@ export function createToolGroup(item: PaletteItem): HTMLElement {
|
|
|
395
395
|
const header = document.createElement('div');
|
|
396
396
|
header.classList.add('group-header');
|
|
397
397
|
if (item.icon) {
|
|
398
|
-
header.appendChild(createIcon(
|
|
398
|
+
header.appendChild(createIcon(item.icon));
|
|
399
399
|
}
|
|
400
400
|
header.insertAdjacentText('beforeend', item.label);
|
|
401
401
|
header.ondblclick = _ev => {
|
|
@@ -412,3 +412,9 @@ export function createToolGroup(item: PaletteItem): HTMLElement {
|
|
|
412
412
|
export function changeCSSClass(element: Element, css: string): void {
|
|
413
413
|
element.classList.contains(css) ? element.classList.remove(css) : element.classList.add(css);
|
|
414
414
|
}
|
|
415
|
+
|
|
416
|
+
export function changeCodiconClass(element: Element, codiconId: string): void {
|
|
417
|
+
element.classList.contains(codiconCSSClasses(codiconId)[1])
|
|
418
|
+
? element.classList.remove(codiconCSSClasses(codiconId)[1])
|
|
419
|
+
: element.classList.add(codiconCSSClasses(codiconId)[1]);
|
|
420
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2020-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { Action } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
import { EditorContextService } from '../../base/editor-context';
|
|
18
|
+
import { IActionDispatcher, KeyTool, TYPES } from 'sprotty';
|
|
19
|
+
import { EditorContextService } from '../../base/editor-context-service';
|
|
20
20
|
import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
|
|
21
21
|
import { GLSP_TYPES } from '../../base/types';
|
|
22
22
|
import { IMouseTool } from '../mouse-tool/mouse-tool';
|
|
@@ -13,10 +13,18 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
-
import { inject, injectable, optional } from 'inversify';
|
|
17
16
|
import {
|
|
18
17
|
Action,
|
|
19
18
|
Bounds,
|
|
19
|
+
ChangeBoundsOperation,
|
|
20
|
+
ChangeRoutingPointsOperation,
|
|
21
|
+
CompoundOperation,
|
|
22
|
+
ElementAndRoutingPoints,
|
|
23
|
+
Operation,
|
|
24
|
+
Point
|
|
25
|
+
} from '@eclipse-glsp/protocol';
|
|
26
|
+
import { inject, injectable, optional } from 'inversify';
|
|
27
|
+
import {
|
|
20
28
|
BoundsAware,
|
|
21
29
|
Dimension,
|
|
22
30
|
EdgeRouterRegistry,
|
|
@@ -26,7 +34,7 @@ import {
|
|
|
26
34
|
isSelected,
|
|
27
35
|
isViewport,
|
|
28
36
|
MouseListener,
|
|
29
|
-
|
|
37
|
+
SChildElement,
|
|
30
38
|
SConnectableElement,
|
|
31
39
|
SetBoundsAction,
|
|
32
40
|
SModelElement,
|
|
@@ -34,15 +42,7 @@ import {
|
|
|
34
42
|
SParentElement,
|
|
35
43
|
TYPES
|
|
36
44
|
} from 'sprotty';
|
|
37
|
-
|
|
38
45
|
import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
|
|
39
|
-
import {
|
|
40
|
-
ChangeBoundsOperation,
|
|
41
|
-
ChangeRoutingPointsOperation,
|
|
42
|
-
CompoundOperation,
|
|
43
|
-
ElementAndRoutingPoints,
|
|
44
|
-
Operation
|
|
45
|
-
} from '../../base/operations/operation';
|
|
46
46
|
import { GLSP_TYPES } from '../../base/types';
|
|
47
47
|
import { isValidMove, isValidSize, WriteablePoint } from '../../utils/layout-utils';
|
|
48
48
|
import {
|
|
@@ -76,8 +76,8 @@ import { BaseGLSPTool } from './base-glsp-tool';
|
|
|
76
76
|
* | Move | MoveAction | ChangeBoundsOperationAction
|
|
77
77
|
* | Resize | SetBoundsAction | ChangeBoundsOperationAction
|
|
78
78
|
*
|
|
79
|
-
* To provide a visual client updates during move we install the `FeedbackMoveMouseListener` and to provide visual client updates during
|
|
80
|
-
* and send the server updates we install the `ChangeBoundsListener`.
|
|
79
|
+
* To provide a visual client updates during move we install the `FeedbackMoveMouseListener` and to provide visual client updates during
|
|
80
|
+
* resize and send the server updates we install the `ChangeBoundsListener`.
|
|
81
81
|
*/
|
|
82
82
|
@injectable()
|
|
83
83
|
export class ChangeBoundsTool extends BaseGLSPTool {
|
|
@@ -163,7 +163,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
163
163
|
// rely on the FeedbackMoveMouseListener to update the element bounds of selected elements
|
|
164
164
|
// consider resize handles ourselves
|
|
165
165
|
const actions: Action[] = [
|
|
166
|
-
cursorFeedbackAction(CursorCSS.
|
|
166
|
+
cursorFeedbackAction(this.activeResizeHandle.isNwSeResize() ? CursorCSS.RESIZE_NWSE : CursorCSS.RESIZE_NESW),
|
|
167
167
|
applyCssClasses(this.activeResizeHandle, ChangeBoundsListener.CSS_CLASS_ACTIVE)
|
|
168
168
|
];
|
|
169
169
|
const positionUpdate = this.updatePosition(target, event);
|
|
@@ -208,15 +208,33 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
208
208
|
protected handleMoveElementsOnServer(target: SModelElement): Action[] {
|
|
209
209
|
const result: Operation[] = [];
|
|
210
210
|
const newBounds: ElementAndBounds[] = [];
|
|
211
|
+
const selectedElements: (SModelElement & BoundsAware)[] = [];
|
|
211
212
|
forEachElement(target, isNonRoutableSelectedMovableBoundsAware, element => {
|
|
212
|
-
|
|
213
|
+
selectedElements.push(element);
|
|
213
214
|
});
|
|
215
|
+
|
|
216
|
+
const selectionSet: Set<SModelElement & BoundsAware> = new Set(selectedElements);
|
|
217
|
+
selectedElements
|
|
218
|
+
.filter(element => !this.isChildOfSelected(selectionSet, element))
|
|
219
|
+
.map(element => this.createElementAndBounds(element))
|
|
220
|
+
.forEach(bounds => newBounds.push(...bounds));
|
|
221
|
+
|
|
214
222
|
if (newBounds.length > 0) {
|
|
215
223
|
result.push(new ChangeBoundsOperation(newBounds));
|
|
216
224
|
}
|
|
217
225
|
return result;
|
|
218
226
|
}
|
|
219
227
|
|
|
228
|
+
protected isChildOfSelected(selectedElements: Set<SModelElement>, element: SModelElement): boolean {
|
|
229
|
+
while (element instanceof SChildElement) {
|
|
230
|
+
element = element.parent;
|
|
231
|
+
if (selectedElements.has(element)) {
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
237
|
+
|
|
220
238
|
protected handleMoveRoutingPointsOnServer(target: SModelElement): Action[] {
|
|
221
239
|
const result: Operation[] = [];
|
|
222
240
|
const newRoutingPoints: ElementAndRoutingPoints[] = [];
|
|
@@ -310,14 +328,14 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
|
|
|
310
328
|
|
|
311
329
|
// snap our delta and only send update if the position actually changes
|
|
312
330
|
// otherwise accumulate delta until we do snap to an update
|
|
313
|
-
const positionUpdate = this.snap(this.positionDelta, target, !event.
|
|
331
|
+
const positionUpdate = this.snap(this.positionDelta, target, !event.altKey);
|
|
314
332
|
if (positionUpdate.x === 0 && positionUpdate.y === 0) {
|
|
315
333
|
return undefined;
|
|
316
334
|
}
|
|
317
335
|
|
|
318
|
-
// we update our position so we
|
|
319
|
-
this.positionDelta.x
|
|
320
|
-
this.positionDelta.y
|
|
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;
|
|
321
339
|
return positionUpdate;
|
|
322
340
|
}
|
|
323
341
|
return undefined;
|
|
@@ -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, DeleteElementOperation } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
EnableDefaultToolsAction,
|
|
20
20
|
findParentByFeature,
|
|
21
21
|
isCtrlOrCmd,
|
|
@@ -27,8 +27,6 @@ import {
|
|
|
27
27
|
SModelElement
|
|
28
28
|
} from 'sprotty';
|
|
29
29
|
import { matchesKeystroke } from 'sprotty/lib/utils/keyboard';
|
|
30
|
-
|
|
31
|
-
import { DeleteElementOperation } from '../../base/operations/operation';
|
|
32
30
|
import { GLSPTool } from '../../base/tool-manager/glsp-tool-manager';
|
|
33
31
|
import { GLSP_TYPES } from '../../base/types';
|
|
34
32
|
import { IMouseTool } from '../mouse-tool/mouse-tool';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 EclipseSource and others.
|
|
2
|
+
* Copyright (c) 2019-2021 EclipseSource and others.
|
|
3
3
|
*
|
|
4
4
|
* This program and the accompanying materials are made available under the
|
|
5
5
|
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
@@ -13,10 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
|
+
import { TriggerEdgeCreationAction, TriggerNodeCreationAction } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { ContainerModule, interfaces } from 'inversify';
|
|
17
18
|
import { configureActionHandler, configureModelElement } from 'sprotty';
|
|
18
|
-
|
|
19
|
-
import { TriggerEdgeCreationAction, TriggerNodeCreationAction } from '../../base/operations/operation';
|
|
20
19
|
import { GLSP_TYPES } from '../../base/types';
|
|
21
20
|
import { MARQUEE } from '../tool-feedback/marquee-tool-feedback';
|
|
22
21
|
import { ChangeBoundsTool } from './change-bounds-tool';
|
|
@@ -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, CreateEdgeOperation, isTriggerElementTypeCreationAction, TriggerEdgeCreationAction } from '@eclipse-glsp/protocol';
|
|
16
17
|
import { inject, injectable } from 'inversify';
|
|
17
18
|
import {
|
|
18
|
-
Action,
|
|
19
19
|
AnchorComputerRegistry,
|
|
20
20
|
EnableDefaultToolsAction,
|
|
21
21
|
EnableToolsAction,
|
|
@@ -26,9 +26,7 @@ import {
|
|
|
26
26
|
SEdge,
|
|
27
27
|
SModelElement
|
|
28
28
|
} from 'sprotty';
|
|
29
|
-
|
|
30
29
|
import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
|
|
31
|
-
import { CreateEdgeOperation, isTriggerElementTypeCreationAction, TriggerEdgeCreationAction } from '../../base/operations/operation';
|
|
32
30
|
import {
|
|
33
31
|
DrawFeedbackEdgeAction,
|
|
34
32
|
FeedbackEdgeEndMovingMouseListener,
|