@eclipse-glsp/client 1.1.0-next.698b9de.254 → 1.1.0-next.69a77b0.259

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.
Files changed (519) hide show
  1. package/lib/base/action-dispatcher.d.ts.map +1 -1
  2. package/lib/base/action-dispatcher.js +5 -3
  3. package/lib/base/action-dispatcher.js.map +1 -1
  4. package/lib/base/actions/focus-change-action.js +1 -1
  5. package/lib/base/actions/focus-change-action.js.map +1 -1
  6. package/lib/base/auto-complete/auto-complete-actions.js +1 -1
  7. package/lib/base/auto-complete/auto-complete-actions.js.map +1 -1
  8. package/lib/base/auto-complete/validation-decorator.js +1 -1
  9. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  10. package/lib/base/command-stack.d.ts +17 -2
  11. package/lib/base/command-stack.d.ts.map +1 -1
  12. package/lib/base/command-stack.js +43 -3
  13. package/lib/base/command-stack.js.map +1 -1
  14. package/lib/base/di.config.d.ts.map +1 -1
  15. package/lib/base/di.config.js +21 -3
  16. package/lib/base/di.config.js.map +1 -1
  17. package/lib/base/drag-aware-mouse-listener.d.ts +2 -2
  18. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  19. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  20. package/lib/base/editor-context-service.d.ts +10 -7
  21. package/lib/base/editor-context-service.d.ts.map +1 -1
  22. package/lib/base/editor-context-service.js +27 -10
  23. package/lib/base/editor-context-service.js.map +1 -1
  24. package/lib/{features/tool-feedback → base/feedback}/css-feedback.d.ts +1 -1
  25. package/lib/base/feedback/css-feedback.d.ts.map +1 -0
  26. package/lib/{features/tool-feedback → base/feedback}/css-feedback.js +5 -6
  27. package/lib/base/feedback/css-feedback.js.map +1 -0
  28. package/lib/{features/tool-feedback → base/feedback}/feedback-action-dispatcher.d.ts +11 -9
  29. package/lib/base/feedback/feedback-action-dispatcher.d.ts.map +1 -0
  30. package/lib/{features/tool-feedback → base/feedback}/feedback-action-dispatcher.js +26 -20
  31. package/lib/base/feedback/feedback-action-dispatcher.js.map +1 -0
  32. package/lib/{features/tool-feedback/model.d.ts → base/feedback/feedback-command.d.ts} +1 -1
  33. package/lib/base/feedback/feedback-command.d.ts.map +1 -0
  34. package/lib/{features/tool-feedback/model.js → base/feedback/feedback-command.js} +1 -1
  35. package/lib/base/feedback/feedback-command.js.map +1 -0
  36. package/lib/base/{model → feedback}/update-model-command.d.ts +3 -15
  37. package/lib/base/feedback/update-model-command.d.ts.map +1 -0
  38. package/lib/base/{model → feedback}/update-model-command.js +3 -27
  39. package/lib/base/feedback/update-model-command.js.map +1 -0
  40. package/lib/base/focus-tracker.js +2 -3
  41. package/lib/base/focus-tracker.js.map +1 -1
  42. package/lib/base/model/model-registry.js +2 -3
  43. package/lib/base/model/model-registry.js.map +1 -1
  44. package/lib/base/model-initialization-constraint.js +4 -6
  45. package/lib/base/model-initialization-constraint.js.map +1 -1
  46. package/lib/base/ranked.d.ts +34 -0
  47. package/lib/base/ranked.d.ts.map +1 -0
  48. package/lib/base/ranked.js +38 -0
  49. package/lib/base/ranked.js.map +1 -0
  50. package/lib/base/selection-clearing-mouse-listener.js +2 -3
  51. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  52. package/lib/{features/select → base}/selection-service.d.ts +34 -13
  53. package/lib/base/selection-service.d.ts.map +1 -0
  54. package/lib/{features/select → base}/selection-service.js +73 -29
  55. package/lib/base/selection-service.js.map +1 -0
  56. package/lib/base/selection-service.spec.d.ts +2 -0
  57. package/lib/base/selection-service.spec.d.ts.map +1 -0
  58. package/lib/base/selection-service.spec.js +281 -0
  59. package/lib/base/selection-service.spec.js.map +1 -0
  60. package/lib/base/tool-manager/glsp-tool-manager.d.ts +3 -3
  61. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  62. package/lib/base/tool-manager/glsp-tool-manager.js +5 -6
  63. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  64. package/lib/base/view/key-tool.d.ts +5 -0
  65. package/lib/base/view/key-tool.d.ts.map +1 -0
  66. package/lib/base/view/key-tool.js +36 -0
  67. package/lib/base/view/key-tool.js.map +1 -0
  68. package/lib/base/view/mouse-tool.d.ts +19 -0
  69. package/lib/base/view/mouse-tool.d.ts.map +1 -0
  70. package/lib/{features/mouse-tool → base/view}/mouse-tool.js +14 -11
  71. package/lib/base/view/mouse-tool.js.map +1 -0
  72. package/lib/base/view/view-registry.js +2 -3
  73. package/lib/base/view/view-registry.js.map +1 -1
  74. package/lib/{base/container-modules.d.ts → container-modules.d.ts} +2 -2
  75. package/lib/container-modules.d.ts.map +1 -0
  76. package/lib/{base/container-modules.js → container-modules.js} +49 -41
  77. package/lib/container-modules.js.map +1 -0
  78. package/lib/features/accessibility/move-zoom/move-handler.js +6 -8
  79. package/lib/features/accessibility/move-zoom/move-handler.js.map +1 -1
  80. package/lib/features/accessibility/move-zoom/zoom-handler.js +6 -8
  81. package/lib/features/accessibility/move-zoom/zoom-handler.js.map +1 -1
  82. package/lib/features/accessibility/resize-key-tool/resize-key-handler.js +4 -5
  83. package/lib/features/accessibility/resize-key-tool/resize-key-handler.js.map +1 -1
  84. package/lib/features/accessibility/resize-key-tool/resize-key-tool.d.ts +1 -1
  85. package/lib/features/accessibility/resize-key-tool/resize-key-tool.d.ts.map +1 -1
  86. package/lib/features/accessibility/resize-key-tool/resize-key-tool.js +6 -8
  87. package/lib/features/accessibility/resize-key-tool/resize-key-tool.js.map +1 -1
  88. package/lib/features/accessibility/search/search-palette.js +3 -4
  89. package/lib/features/accessibility/search/search-palette.js.map +1 -1
  90. package/lib/features/accessibility/search/search-tool.js +2 -3
  91. package/lib/features/accessibility/search/search-tool.js.map +1 -1
  92. package/lib/features/accessibility/view-key-tools/deselect-key-tool.js +2 -3
  93. package/lib/features/accessibility/view-key-tools/deselect-key-tool.js.map +1 -1
  94. package/lib/features/accessibility/view-key-tools/movement-key-tool.d.ts +1 -1
  95. package/lib/features/accessibility/view-key-tools/movement-key-tool.d.ts.map +1 -1
  96. package/lib/features/accessibility/view-key-tools/movement-key-tool.js +5 -6
  97. package/lib/features/accessibility/view-key-tools/movement-key-tool.js.map +1 -1
  98. package/lib/features/accessibility/view-key-tools/zoom-key-tool.d.ts +1 -1
  99. package/lib/features/accessibility/view-key-tools/zoom-key-tool.d.ts.map +1 -1
  100. package/lib/features/accessibility/view-key-tools/zoom-key-tool.js +5 -6
  101. package/lib/features/accessibility/view-key-tools/zoom-key-tool.js.map +1 -1
  102. package/lib/features/autocomplete-palette/base-autocomplete-palette.js +1 -1
  103. package/lib/features/autocomplete-palette/base-autocomplete-palette.js.map +1 -1
  104. package/lib/features/bounds/freeform-layout.js +2 -3
  105. package/lib/features/bounds/freeform-layout.js.map +1 -1
  106. package/lib/features/bounds/freeform-layout.spec.d.ts +3 -0
  107. package/lib/features/bounds/freeform-layout.spec.d.ts.map +1 -0
  108. package/lib/features/bounds/freeform-layout.spec.js +201 -0
  109. package/lib/features/bounds/freeform-layout.spec.js.map +1 -0
  110. package/lib/features/bounds/glsp-hidden-bounds-updater.js +2 -3
  111. package/lib/features/bounds/glsp-hidden-bounds-updater.js.map +1 -1
  112. package/lib/features/bounds/hbox-layout.js +2 -3
  113. package/lib/features/bounds/hbox-layout.js.map +1 -1
  114. package/lib/features/bounds/hbox-layout.spec.d.ts +3 -0
  115. package/lib/features/bounds/hbox-layout.spec.d.ts.map +1 -0
  116. package/lib/features/bounds/hbox-layout.spec.js +160 -0
  117. package/lib/features/bounds/hbox-layout.spec.js.map +1 -0
  118. package/lib/features/bounds/layouter-test-util.spec.d.ts +32 -0
  119. package/lib/features/bounds/layouter-test-util.spec.d.ts.map +1 -0
  120. package/lib/features/bounds/layouter-test-util.spec.js +96 -0
  121. package/lib/features/bounds/layouter-test-util.spec.js.map +1 -0
  122. package/lib/features/bounds/layouter.js +2 -3
  123. package/lib/features/bounds/layouter.js.map +1 -1
  124. package/lib/features/bounds/vbox-layout.js +2 -3
  125. package/lib/features/bounds/vbox-layout.js.map +1 -1
  126. package/lib/features/bounds/vbox-layout.spec.d.ts +3 -0
  127. package/lib/features/bounds/vbox-layout.spec.d.ts.map +1 -0
  128. package/lib/features/bounds/vbox-layout.spec.js +160 -0
  129. package/lib/features/bounds/vbox-layout.spec.js.map +1 -0
  130. package/lib/features/change-bounds/model.js +2 -2
  131. package/lib/features/change-bounds/model.js.map +1 -1
  132. package/lib/features/change-bounds/movement-restrictor.d.ts +1 -1
  133. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  134. package/lib/features/change-bounds/movement-restrictor.js +3 -4
  135. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  136. package/lib/features/change-bounds/snap.js +2 -3
  137. package/lib/features/change-bounds/snap.js.map +1 -1
  138. package/lib/features/{rank/model.d.ts → change-bounds/snap.spec.d.ts} +3 -8
  139. package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
  140. package/lib/features/change-bounds/snap.spec.js +82 -0
  141. package/lib/features/change-bounds/snap.spec.js.map +1 -0
  142. package/lib/features/command-palette/command-palette-tool.js +2 -3
  143. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  144. package/lib/features/command-palette/server-command-palette-provider.js +3 -4
  145. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  146. package/lib/features/context-menu/delete-element-context-menu.js +2 -3
  147. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  148. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +1 -1
  149. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  150. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +4 -5
  151. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  152. package/lib/features/context-menu/server-context-menu-provider.js +3 -4
  153. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  154. package/lib/features/copy-paste/copy-paste-context-menu.js +6 -8
  155. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  156. package/lib/features/copy-paste/copy-paste-handler.js +4 -6
  157. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  158. package/lib/features/decoration/decoration-placer.js +2 -3
  159. package/lib/features/decoration/decoration-placer.js.map +1 -1
  160. package/lib/features/edit-label/edit-label-tool.d.ts +0 -3
  161. package/lib/features/edit-label/edit-label-tool.d.ts.map +1 -1
  162. package/lib/features/edit-label/edit-label-tool.js +3 -11
  163. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  164. package/lib/features/edit-label/edit-label-validator.js +5 -7
  165. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  166. package/lib/features/export/glsp-svg-exporter.js +2 -3
  167. package/lib/features/export/glsp-svg-exporter.js.map +1 -1
  168. package/lib/features/hints/type-hints.d.ts +2 -2
  169. package/lib/features/hints/type-hints.d.ts.map +1 -1
  170. package/lib/features/hints/type-hints.js +9 -11
  171. package/lib/features/hints/type-hints.js.map +1 -1
  172. package/lib/features/hover/hover.d.ts.map +1 -1
  173. package/lib/features/hover/hover.js +3 -4
  174. package/lib/features/hover/hover.js.map +1 -1
  175. package/lib/features/layout/di.config.js +1 -1
  176. package/lib/features/layout/di.config.js.map +1 -1
  177. package/lib/features/layout/layout-elements-action.d.ts +1 -1
  178. package/lib/features/layout/layout-elements-action.d.ts.map +1 -1
  179. package/lib/features/layout/layout-elements-action.js +14 -17
  180. package/lib/features/layout/layout-elements-action.js.map +1 -1
  181. package/lib/features/layout/layout-elements-action.spec.d.ts +3 -0
  182. package/lib/features/layout/layout-elements-action.spec.d.ts.map +1 -0
  183. package/lib/features/layout/layout-elements-action.spec.js +321 -0
  184. package/lib/features/layout/layout-elements-action.spec.js.map +1 -0
  185. package/lib/features/navigation/navigation-action-handler.js +5 -6
  186. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  187. package/lib/features/navigation/navigation-target-resolver.js +2 -3
  188. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  189. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +3 -0
  190. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -0
  191. package/lib/features/navigation/navigation-target-resolver.spec.js +53 -0
  192. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -0
  193. package/lib/features/routing/di.config.d.ts +22 -0
  194. package/lib/features/routing/di.config.d.ts.map +1 -0
  195. package/lib/features/routing/di.config.js +57 -0
  196. package/lib/features/routing/di.config.js.map +1 -0
  197. package/lib/features/routing/glsp-manhattan-edge-router.d.ts.map +1 -0
  198. package/lib/features/routing/glsp-manhattan-edge-router.js.map +1 -0
  199. package/lib/features/select/di.config.d.ts.map +1 -1
  200. package/lib/features/select/di.config.js +3 -5
  201. package/lib/features/select/di.config.js.map +1 -1
  202. package/lib/features/select/select-feedback-command.d.ts +12 -0
  203. package/lib/features/select/select-feedback-command.d.ts.map +1 -0
  204. package/lib/features/select/{select-feedback-action.js → select-feedback-command.js} +6 -30
  205. package/lib/features/select/select-feedback-command.js.map +1 -0
  206. package/lib/features/select/select-mouse-listener.d.ts +1 -1
  207. package/lib/features/select/select-mouse-listener.d.ts.map +1 -1
  208. package/lib/features/select/select-mouse-listener.js +2 -2
  209. package/lib/features/select/select-mouse-listener.js.map +1 -1
  210. package/lib/features/source-model-watcher/source-model-changed-action-handler.js +5 -7
  211. package/lib/features/source-model-watcher/source-model-changed-action-handler.js.map +1 -1
  212. package/lib/features/svg-metadata/metadata-placer.js +2 -3
  213. package/lib/features/svg-metadata/metadata-placer.js.map +1 -1
  214. package/lib/features/tool-palette/tool-palette.d.ts +4 -4
  215. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  216. package/lib/features/tool-palette/tool-palette.js +12 -13
  217. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  218. package/lib/features/tools/base-glsp-creation-tool.d.ts +10 -0
  219. package/lib/features/tools/base-glsp-creation-tool.d.ts.map +1 -0
  220. package/lib/features/tools/base-glsp-creation-tool.js +45 -0
  221. package/lib/features/tools/base-glsp-creation-tool.js.map +1 -0
  222. package/lib/features/tools/base-glsp-tool.d.ts +26 -8
  223. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  224. package/lib/features/tools/base-glsp-tool.js +34 -11
  225. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  226. package/lib/features/{tool-feedback → tools/change-bounds}/change-bounds-tool-feedback.d.ts +12 -5
  227. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.d.ts.map +1 -0
  228. package/lib/features/{tool-feedback → tools/change-bounds}/change-bounds-tool-feedback.js +45 -27
  229. package/lib/features/tools/change-bounds/change-bounds-tool-feedback.js.map +1 -0
  230. package/lib/features/tools/{change-bounds-tool.d.ts → change-bounds/change-bounds-tool.d.ts} +13 -14
  231. package/lib/features/tools/change-bounds/change-bounds-tool.d.ts.map +1 -0
  232. package/lib/features/tools/{change-bounds-tool.js → change-bounds/change-bounds-tool.js} +50 -35
  233. package/lib/features/tools/change-bounds/change-bounds-tool.js.map +1 -0
  234. package/lib/features/tools/change-bounds/di.config.d.ts +19 -0
  235. package/lib/features/tools/change-bounds/di.config.d.ts.map +1 -0
  236. package/lib/features/tools/change-bounds/di.config.js +32 -0
  237. package/lib/features/tools/change-bounds/di.config.js.map +1 -0
  238. package/lib/features/tools/change-bounds/view.d.ts +9 -0
  239. package/lib/features/tools/change-bounds/view.d.ts.map +1 -0
  240. package/lib/features/{tool-feedback → tools/change-bounds}/view.js +5 -21
  241. package/lib/features/tools/change-bounds/view.js.map +1 -0
  242. package/lib/features/tools/{delete-tool.d.ts → deletion/delete-tool.d.ts} +4 -9
  243. package/lib/features/tools/deletion/delete-tool.d.ts.map +1 -0
  244. package/lib/features/tools/{delete-tool.js → deletion/delete-tool.js} +13 -29
  245. package/lib/features/tools/deletion/delete-tool.js.map +1 -0
  246. package/lib/features/{tool-feedback → tools/deletion}/di.config.d.ts +2 -2
  247. package/lib/features/tools/deletion/di.config.d.ts.map +1 -0
  248. package/lib/features/{mouse-tool → tools/deletion}/di.config.js +7 -7
  249. package/lib/features/tools/deletion/di.config.js.map +1 -0
  250. package/lib/features/{tool-feedback/creation-tool-feedback.d.ts → tools/edge-creation/dangling-edge-feedback.d.ts} +5 -10
  251. package/lib/features/tools/edge-creation/dangling-edge-feedback.d.ts.map +1 -0
  252. package/lib/features/{tool-feedback/creation-tool-feedback.js → tools/edge-creation/dangling-edge-feedback.js} +25 -87
  253. package/lib/features/tools/edge-creation/dangling-edge-feedback.js.map +1 -0
  254. package/lib/features/tools/edge-creation/di.config.d.ts +19 -0
  255. package/lib/features/tools/edge-creation/di.config.d.ts.map +1 -0
  256. package/lib/features/tools/edge-creation/di.config.js +29 -0
  257. package/lib/features/tools/edge-creation/di.config.js.map +1 -0
  258. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.d.ts +26 -0
  259. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.d.ts.map +1 -0
  260. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.js +74 -0
  261. package/lib/features/tools/edge-creation/edge-creation-tool-feedback.js.map +1 -0
  262. package/lib/features/tools/{edge-creation-tool.d.ts → edge-creation/edge-creation-tool.d.ts} +6 -11
  263. package/lib/features/tools/edge-creation/edge-creation-tool.d.ts.map +1 -0
  264. package/lib/features/tools/{edge-creation-tool.js → edge-creation/edge-creation-tool.js} +29 -40
  265. package/lib/features/tools/edge-creation/edge-creation-tool.js.map +1 -0
  266. package/lib/features/tools/edge-creation/view.d.ts +10 -0
  267. package/lib/features/tools/edge-creation/view.d.ts.map +1 -0
  268. package/lib/features/tools/edge-creation/view.js +43 -0
  269. package/lib/features/tools/edge-creation/view.js.map +1 -0
  270. package/lib/features/{mouse-tool → tools/edge-edit}/di.config.d.ts +2 -2
  271. package/lib/features/tools/edge-edit/di.config.d.ts.map +1 -0
  272. package/lib/features/tools/edge-edit/di.config.js +35 -0
  273. package/lib/features/tools/edge-edit/di.config.js.map +1 -0
  274. package/lib/features/{tool-feedback → tools/edge-edit}/edge-edit-tool-feedback.d.ts +14 -8
  275. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.d.ts.map +1 -0
  276. package/lib/features/{tool-feedback → tools/edge-edit}/edge-edit-tool-feedback.js +42 -37
  277. package/lib/features/tools/edge-edit/edge-edit-tool-feedback.js.map +1 -0
  278. package/lib/features/tools/{edge-edit-tool.d.ts → edge-edit/edge-edit-tool.d.ts} +7 -9
  279. package/lib/features/tools/edge-edit/edge-edit-tool.d.ts.map +1 -0
  280. package/lib/features/tools/{edge-edit-tool.js → edge-edit/edge-edit-tool.js} +28 -33
  281. package/lib/features/tools/edge-edit/edge-edit-tool.js.map +1 -0
  282. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts +21 -0
  283. package/lib/features/tools/enable-default-tools-on-focus-loss.d.ts.map +1 -1
  284. package/lib/features/tools/enable-default-tools-on-focus-loss.js +9 -3
  285. package/lib/features/tools/enable-default-tools-on-focus-loss.js.map +1 -1
  286. package/lib/features/tools/marquee-selection/di.config.d.ts +19 -0
  287. package/lib/features/tools/marquee-selection/di.config.d.ts.map +1 -0
  288. package/lib/features/tools/marquee-selection/di.config.js +34 -0
  289. package/lib/features/tools/marquee-selection/di.config.js.map +1 -0
  290. package/lib/features/tools/{marquee-behavior.d.ts → marquee-selection/marquee-behavior.d.ts} +10 -10
  291. package/lib/features/tools/marquee-selection/marquee-behavior.d.ts.map +1 -0
  292. package/lib/features/tools/{marquee-behavior.js → marquee-selection/marquee-behavior.js} +2 -2
  293. package/lib/features/tools/marquee-selection/marquee-behavior.js.map +1 -0
  294. package/lib/features/tools/marquee-selection/marquee-behavior.spec.d.ts +17 -0
  295. package/lib/features/tools/marquee-selection/marquee-behavior.spec.d.ts.map +1 -0
  296. package/lib/features/tools/marquee-selection/marquee-behavior.spec.js +165 -0
  297. package/lib/features/tools/marquee-selection/marquee-behavior.spec.js.map +1 -0
  298. package/lib/features/tools/{marquee-mouse-tool.d.ts → marquee-selection/marquee-mouse-tool.d.ts} +4 -6
  299. package/lib/features/tools/marquee-selection/marquee-mouse-tool.d.ts.map +1 -0
  300. package/lib/features/tools/{marquee-mouse-tool.js → marquee-selection/marquee-mouse-tool.js} +12 -22
  301. package/lib/features/tools/marquee-selection/marquee-mouse-tool.js.map +1 -0
  302. package/lib/features/{tool-feedback → tools/marquee-selection}/marquee-tool-feedback.d.ts +2 -2
  303. package/lib/features/tools/marquee-selection/marquee-tool-feedback.d.ts.map +1 -0
  304. package/lib/features/{tool-feedback → tools/marquee-selection}/marquee-tool-feedback.js +8 -10
  305. package/lib/features/tools/marquee-selection/marquee-tool-feedback.js.map +1 -0
  306. package/lib/features/tools/marquee-selection/marquee-tool.d.ts +12 -0
  307. package/lib/features/tools/marquee-selection/marquee-tool.d.ts.map +1 -0
  308. package/lib/features/tools/{marquee-tool.js → marquee-selection/marquee-tool.js} +8 -20
  309. package/lib/features/tools/marquee-selection/marquee-tool.js.map +1 -0
  310. package/lib/features/tools/{model.d.ts → marquee-selection/model.d.ts} +1 -1
  311. package/lib/features/tools/marquee-selection/model.d.ts.map +1 -0
  312. package/lib/features/tools/{model.js → marquee-selection/model.js} +2 -2
  313. package/lib/features/tools/marquee-selection/model.js.map +1 -0
  314. package/lib/features/tools/{view.d.ts → marquee-selection/view.d.ts} +1 -1
  315. package/lib/features/tools/marquee-selection/view.d.ts.map +1 -0
  316. package/lib/features/tools/{view.js → marquee-selection/view.js} +3 -4
  317. package/lib/features/tools/marquee-selection/view.js.map +1 -0
  318. package/lib/features/tools/node-creation/di.config.d.ts +19 -0
  319. package/lib/features/tools/node-creation/di.config.d.ts.map +1 -0
  320. package/lib/features/{rank/model.js → tools/node-creation/di.config.js} +12 -13
  321. package/lib/features/tools/node-creation/di.config.js.map +1 -0
  322. package/lib/features/tools/{node-creation-tool.d.ts → node-creation/node-creation-tool.d.ts} +7 -10
  323. package/lib/features/tools/node-creation/node-creation-tool.d.ts.map +1 -0
  324. package/lib/features/tools/{node-creation-tool.js → node-creation/node-creation-tool.js} +17 -30
  325. package/lib/features/tools/node-creation/node-creation-tool.js.map +1 -0
  326. package/lib/features/validation/marker-navigator.d.ts +4 -3
  327. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  328. package/lib/features/validation/marker-navigator.js +16 -20
  329. package/lib/features/validation/marker-navigator.js.map +1 -1
  330. package/lib/features/validation/marker-navigator.spec.d.ts +3 -0
  331. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -0
  332. package/lib/features/validation/marker-navigator.spec.js +182 -0
  333. package/lib/features/validation/marker-navigator.spec.js.map +1 -0
  334. package/lib/features/validation/validate.d.ts +2 -2
  335. package/lib/features/validation/validate.d.ts.map +1 -1
  336. package/lib/features/validation/validate.js +12 -17
  337. package/lib/features/validation/validate.js.map +1 -1
  338. package/lib/features/viewport/glsp-scroll-mouse-listener.js +3 -4
  339. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  340. package/lib/glsp-sprotty/index.d.ts +1 -1
  341. package/lib/glsp-sprotty/index.d.ts.map +1 -1
  342. package/lib/glsp-sprotty/index.js +26 -25
  343. package/lib/glsp-sprotty/index.js.map +1 -1
  344. package/lib/glsp-sprotty/types.d.ts +4 -8
  345. package/lib/glsp-sprotty/types.d.ts.map +1 -1
  346. package/lib/glsp-sprotty/types.js +1 -1
  347. package/lib/glsp-sprotty/types.js.map +1 -1
  348. package/lib/index.d.ts +36 -27
  349. package/lib/index.d.ts.map +1 -1
  350. package/lib/index.js +58 -46
  351. package/lib/index.js.map +1 -1
  352. package/lib/lib/model.js +1 -1
  353. package/lib/lib/model.js.map +1 -1
  354. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  355. package/lib/model-source/glsp-diagram-server.js +5 -3
  356. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  357. package/lib/utils/argument-utils.js +3 -3
  358. package/lib/utils/argument-utils.js.map +1 -1
  359. package/lib/utils/marker.js +1 -1
  360. package/lib/utils/marker.js.map +1 -1
  361. package/lib/utils/smodel-util.spec.d.ts +2 -0
  362. package/lib/utils/smodel-util.spec.d.ts.map +1 -0
  363. package/lib/utils/smodel-util.spec.js +184 -0
  364. package/lib/utils/smodel-util.spec.js.map +1 -0
  365. package/lib/utils/viewpoint-util.d.ts +20 -1
  366. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  367. package/lib/utils/viewpoint-util.js +30 -1
  368. package/lib/utils/viewpoint-util.js.map +1 -1
  369. package/lib/views/compartments.js +2 -3
  370. package/lib/views/compartments.js.map +1 -1
  371. package/lib/views/glsp-edge-view.js +2 -3
  372. package/lib/views/glsp-edge-view.js.map +1 -1
  373. package/lib/views/glsp-projection-view.js +2 -3
  374. package/lib/views/glsp-projection-view.js.map +1 -1
  375. package/lib/views/issue-marker-view.js +2 -3
  376. package/lib/views/issue-marker-view.js.map +1 -1
  377. package/lib/views/rounded-corner-view.js +2 -3
  378. package/lib/views/rounded-corner-view.js.map +1 -1
  379. package/package.json +3 -3
  380. package/src/base/action-dispatcher.ts +3 -1
  381. package/src/base/command-stack.ts +55 -3
  382. package/src/base/di.config.ts +34 -9
  383. package/src/base/drag-aware-mouse-listener.ts +2 -2
  384. package/src/base/editor-context-service.ts +28 -13
  385. package/src/{features/tool-feedback → base/feedback}/css-feedback.ts +1 -1
  386. package/src/{features/tool-feedback → base/feedback}/feedback-action-dispatcher.ts +31 -23
  387. package/src/base/{model → feedback}/update-model-command.ts +3 -29
  388. package/src/base/ranked.ts +42 -0
  389. package/src/{features/select → base}/selection-service.spec.ts +51 -121
  390. package/src/{features/select → base}/selection-service.ts +82 -31
  391. package/src/base/tool-manager/glsp-tool-manager.ts +4 -4
  392. package/src/{features/rank/model.ts → base/view/key-tool.ts} +9 -13
  393. package/src/{features/mouse-tool → base/view}/mouse-tool.ts +14 -15
  394. package/src/{base/container-modules.ts → container-modules.ts} +33 -26
  395. package/src/features/accessibility/resize-key-tool/resize-key-tool.ts +2 -2
  396. package/src/features/accessibility/search/search-palette.ts +1 -1
  397. package/src/features/accessibility/view-key-tools/movement-key-tool.ts +2 -2
  398. package/src/features/accessibility/view-key-tools/zoom-key-tool.ts +3 -3
  399. package/src/features/bounds/layouter-test-util.spec.ts +1 -1
  400. package/src/features/change-bounds/movement-restrictor.ts +1 -1
  401. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +2 -2
  402. package/src/features/copy-paste/copy-paste-context-menu.ts +1 -1
  403. package/src/features/edit-label/edit-label-tool.ts +4 -12
  404. package/src/features/hints/type-hints.ts +2 -2
  405. package/src/features/hover/hover.ts +2 -1
  406. package/src/features/layout/di.config.ts +1 -1
  407. package/src/features/layout/layout-elements-action.spec.ts +1 -3
  408. package/src/features/layout/layout-elements-action.ts +2 -2
  409. package/src/features/navigation/navigation-action-handler.ts +1 -1
  410. package/src/features/routing/di.config.ts +82 -0
  411. package/src/features/select/di.config.ts +2 -4
  412. package/src/features/select/{select-feedback-action.ts → select-feedback-command.ts} +2 -38
  413. package/src/features/select/select-mouse-listener.ts +2 -2
  414. package/src/features/source-model-watcher/source-model-changed-action-handler.ts +1 -1
  415. package/src/features/tool-palette/tool-palette.ts +12 -12
  416. package/src/features/tools/base-glsp-creation-tool.ts +40 -0
  417. package/src/features/tools/base-glsp-tool.ts +32 -10
  418. package/src/features/{tool-feedback → tools/change-bounds}/change-bounds-tool-feedback.ts +52 -21
  419. package/src/features/tools/{change-bounds-tool.ts → change-bounds/change-bounds-tool.ts} +64 -35
  420. package/src/features/tools/change-bounds/di.config.ts +31 -0
  421. package/src/features/{tool-feedback → tools/change-bounds}/view.tsx +2 -14
  422. package/src/features/tools/{delete-tool.ts → deletion/delete-tool.ts} +8 -18
  423. package/src/features/{mouse-tool → tools/deletion}/di.config.ts +7 -7
  424. package/src/features/{tool-feedback/creation-tool-feedback.ts → tools/edge-creation/dangling-edge-feedback.ts} +18 -88
  425. package/src/features/tools/edge-creation/di.config.ts +28 -0
  426. package/src/features/tools/edge-creation/edge-creation-tool-feedback.ts +89 -0
  427. package/src/features/tools/{edge-creation-tool.ts → edge-creation/edge-creation-tool.ts} +26 -43
  428. package/src/features/tools/edge-creation/view.tsx +33 -0
  429. package/src/features/tools/edge-edit/di.config.ts +41 -0
  430. package/src/features/{tool-feedback → tools/edge-edit}/edge-edit-tool-feedback.ts +27 -15
  431. package/src/features/tools/{edge-edit-tool.ts → edge-edit/edge-edit-tool.ts} +29 -27
  432. package/src/features/tools/enable-default-tools-on-focus-loss.ts +11 -2
  433. package/src/features/tools/marquee-selection/di.config.ts +35 -0
  434. package/src/features/tools/{marquee-behavior.ts → marquee-selection/marquee-behavior.ts} +9 -9
  435. package/src/features/tools/{marquee-mouse-tool.ts → marquee-selection/marquee-mouse-tool.ts} +11 -17
  436. package/src/features/{tool-feedback → tools/marquee-selection}/marquee-tool-feedback.ts +1 -1
  437. package/src/features/tools/{marquee-tool.ts → marquee-selection/marquee-tool.ts} +5 -11
  438. package/{lib/features/tools/di.config.d.ts → src/features/tools/node-creation/di.config.ts} +10 -12
  439. package/src/features/tools/{node-creation-tool.ts → node-creation/node-creation-tool.ts} +14 -31
  440. package/src/features/validation/marker-navigator.ts +5 -5
  441. package/src/features/validation/validate.ts +2 -2
  442. package/src/features/viewport/glsp-scroll-mouse-listener.ts +1 -1
  443. package/src/glsp-sprotty/index.ts +1 -1
  444. package/src/glsp-sprotty/types.ts +2 -4
  445. package/src/index.ts +63 -49
  446. package/src/model-source/glsp-diagram-server.ts +7 -1
  447. package/src/utils/smodel-util.spec.ts +3 -3
  448. package/src/utils/viewpoint-util.ts +32 -0
  449. package/lib/base/container-modules.d.ts.map +0 -1
  450. package/lib/base/container-modules.js.map +0 -1
  451. package/lib/base/model/update-model-command.d.ts.map +0 -1
  452. package/lib/base/model/update-model-command.js.map +0 -1
  453. package/lib/features/mouse-tool/di.config.d.ts.map +0 -1
  454. package/lib/features/mouse-tool/di.config.js.map +0 -1
  455. package/lib/features/mouse-tool/mouse-tool.d.ts +0 -22
  456. package/lib/features/mouse-tool/mouse-tool.d.ts.map +0 -1
  457. package/lib/features/mouse-tool/mouse-tool.js.map +0 -1
  458. package/lib/features/rank/model.d.ts.map +0 -1
  459. package/lib/features/rank/model.js.map +0 -1
  460. package/lib/features/select/select-feedback-action.d.ts +0 -25
  461. package/lib/features/select/select-feedback-action.d.ts.map +0 -1
  462. package/lib/features/select/select-feedback-action.js.map +0 -1
  463. package/lib/features/select/selection-service.d.ts.map +0 -1
  464. package/lib/features/select/selection-service.js.map +0 -1
  465. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +0 -1
  466. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +0 -1
  467. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +0 -1
  468. package/lib/features/tool-feedback/creation-tool-feedback.js.map +0 -1
  469. package/lib/features/tool-feedback/css-feedback.d.ts.map +0 -1
  470. package/lib/features/tool-feedback/css-feedback.js.map +0 -1
  471. package/lib/features/tool-feedback/di.config.d.ts.map +0 -1
  472. package/lib/features/tool-feedback/di.config.js +0 -53
  473. package/lib/features/tool-feedback/di.config.js.map +0 -1
  474. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +0 -1
  475. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +0 -1
  476. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +0 -1
  477. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +0 -1
  478. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +0 -1
  479. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +0 -1
  480. package/lib/features/tool-feedback/model.d.ts.map +0 -1
  481. package/lib/features/tool-feedback/model.js.map +0 -1
  482. package/lib/features/tool-feedback/view.d.ts +0 -16
  483. package/lib/features/tool-feedback/view.d.ts.map +0 -1
  484. package/lib/features/tool-feedback/view.js.map +0 -1
  485. package/lib/features/tools/change-bounds-tool.d.ts.map +0 -1
  486. package/lib/features/tools/change-bounds-tool.js.map +0 -1
  487. package/lib/features/tools/delete-tool.d.ts.map +0 -1
  488. package/lib/features/tools/delete-tool.js.map +0 -1
  489. package/lib/features/tools/di.config.d.ts.map +0 -1
  490. package/lib/features/tools/di.config.js +0 -66
  491. package/lib/features/tools/di.config.js.map +0 -1
  492. package/lib/features/tools/edge-creation-tool.d.ts.map +0 -1
  493. package/lib/features/tools/edge-creation-tool.js.map +0 -1
  494. package/lib/features/tools/edge-edit-tool.d.ts.map +0 -1
  495. package/lib/features/tools/edge-edit-tool.js.map +0 -1
  496. package/lib/features/tools/glsp-manhattan-edge-router.d.ts.map +0 -1
  497. package/lib/features/tools/glsp-manhattan-edge-router.js.map +0 -1
  498. package/lib/features/tools/marquee-behavior.d.ts.map +0 -1
  499. package/lib/features/tools/marquee-behavior.js.map +0 -1
  500. package/lib/features/tools/marquee-mouse-tool.d.ts.map +0 -1
  501. package/lib/features/tools/marquee-mouse-tool.js.map +0 -1
  502. package/lib/features/tools/marquee-tool.d.ts +0 -14
  503. package/lib/features/tools/marquee-tool.d.ts.map +0 -1
  504. package/lib/features/tools/marquee-tool.js.map +0 -1
  505. package/lib/features/tools/model.d.ts.map +0 -1
  506. package/lib/features/tools/model.js.map +0 -1
  507. package/lib/features/tools/node-creation-tool.d.ts.map +0 -1
  508. package/lib/features/tools/node-creation-tool.js.map +0 -1
  509. package/lib/features/tools/view.d.ts.map +0 -1
  510. package/lib/features/tools/view.js.map +0 -1
  511. package/src/features/tool-feedback/di.config.ts +0 -65
  512. package/src/features/tools/di.config.ts +0 -77
  513. /package/lib/features/{tools → routing}/glsp-manhattan-edge-router.d.ts +0 -0
  514. /package/lib/features/{tools → routing}/glsp-manhattan-edge-router.js +0 -0
  515. /package/src/{features/tool-feedback/model.ts → base/feedback/feedback-command.ts} +0 -0
  516. /package/src/features/{tools → routing}/glsp-manhattan-edge-router.ts +0 -0
  517. /package/src/features/tools/{marquee-behavior.spec.ts → marquee-selection/marquee-behavior.spec.ts} +0 -0
  518. /package/src/features/tools/{model.ts → marquee-selection/model.ts} +0 -0
  519. /package/src/features/tools/{view.tsx → marquee-selection/view.tsx} +0 -0
@@ -19,8 +19,6 @@ import {
19
19
  AnchorComputerRegistry,
20
20
  CreateEdgeOperation,
21
21
  EnableDefaultToolsAction,
22
- EnableToolsAction,
23
- IActionHandler,
24
22
  SEdge,
25
23
  SModelElement,
26
24
  TriggerEdgeCreationAction,
@@ -28,54 +26,39 @@ import {
28
26
  isConnectable,
29
27
  isCtrlOrCmd
30
28
  } from '~glsp-sprotty';
31
- import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
32
- import {
33
- DrawFeedbackEdgeAction,
34
- FeedbackEdgeEndMovingMouseListener,
35
- RemoveFeedbackEdgeAction
36
- } from '../tool-feedback/creation-tool-feedback';
37
- import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
38
- import { BaseGLSPTool } from './base-glsp-tool';
29
+ import { DragAwareMouseListener } from '../../../base/drag-aware-mouse-listener';
30
+
31
+ import { CursorCSS, cursorFeedbackAction } from '../../../base/feedback/css-feedback';
32
+ import { BaseGLSPCreationTool } from '../base-glsp-creation-tool';
33
+ import { DrawFeedbackEdgeAction, RemoveFeedbackEdgeAction } from './dangling-edge-feedback';
34
+ import { FeedbackEdgeEndMovingMouseListener } from './edge-creation-tool-feedback';
39
35
 
40
36
  /**
41
37
  * Tool to create connections in a Diagram, by selecting a source and target node.
42
38
  */
43
39
  @injectable()
44
- export class EdgeCreationTool extends BaseGLSPTool implements IActionHandler {
40
+ export class EdgeCreationTool extends BaseGLSPCreationTool<TriggerEdgeCreationAction> {
45
41
  static ID = 'tool_create_edge';
46
42
 
47
43
  @inject(AnchorComputerRegistry) protected anchorRegistry: AnchorComputerRegistry;
48
44
 
49
- protected triggerAction: TriggerEdgeCreationAction;
50
- protected creationToolMouseListener: EdgeCreationToolMouseListener;
51
- protected feedbackEndMovingMouseListener: FeedbackEdgeEndMovingMouseListener;
45
+ protected isTriggerAction = TriggerEdgeCreationAction.is;
52
46
 
53
47
  get id(): string {
54
48
  return EdgeCreationTool.ID;
55
49
  }
56
50
 
57
- enable(): void {
58
- if (this.triggerAction === undefined) {
59
- throw new TypeError(`Could not enable tool ${this.id}.The triggerAction cannot be undefined.`);
60
- }
61
- this.creationToolMouseListener = new EdgeCreationToolMouseListener(this.triggerAction, this);
62
- this.mouseTool.register(this.creationToolMouseListener);
63
- this.feedbackEndMovingMouseListener = new FeedbackEdgeEndMovingMouseListener(this.anchorRegistry);
64
- this.mouseTool.register(this.feedbackEndMovingMouseListener);
65
- this.dispatchFeedback([cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED)]);
66
- }
67
-
68
- disable(): void {
69
- this.mouseTool.deregister(this.creationToolMouseListener);
70
- this.mouseTool.deregister(this.feedbackEndMovingMouseListener);
71
- this.deregisterFeedback([RemoveFeedbackEdgeAction.create(), cursorFeedbackAction()]);
72
- }
73
-
74
- handle(action: Action): Action | void {
75
- if (TriggerEdgeCreationAction.is(action)) {
76
- this.triggerAction = action;
77
- return EnableToolsAction.create([this.id]);
78
- }
51
+ doEnable(): void {
52
+ const mouseMovingFeedback = new FeedbackEdgeEndMovingMouseListener(this.anchorRegistry, this.feedbackDispatcher);
53
+ this.toDisposeOnDisable.push(
54
+ mouseMovingFeedback,
55
+ this.mouseTool.registerListener(new EdgeCreationToolMouseListener(this.triggerAction, this)),
56
+ this.mouseTool.registerListener(mouseMovingFeedback),
57
+ this.registerFeedback([cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED)], this, [
58
+ RemoveFeedbackEdgeAction.create(),
59
+ cursorFeedbackAction()
60
+ ])
61
+ );
79
62
  }
80
63
  }
81
64
 
@@ -98,7 +81,7 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
98
81
  this.target = undefined;
99
82
  this.currentTarget = undefined;
100
83
  this.allowedTarget = false;
101
- this.tool.dispatchFeedback([RemoveFeedbackEdgeAction.create()]);
84
+ this.tool.registerFeedback([RemoveFeedbackEdgeAction.create()]);
102
85
  }
103
86
 
104
87
  override nonDraggingMouseUp(_element: SModelElement, event: MouseEvent): Action[] {
@@ -107,7 +90,7 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
107
90
  if (!this.isSourceSelected()) {
108
91
  if (this.currentTarget && this.allowedTarget) {
109
92
  this.source = this.currentTarget.id;
110
- this.tool.dispatchFeedback([
93
+ this.tool.registerFeedback([
111
94
  DrawFeedbackEdgeAction.create({ elementTypeId: this.triggerAction.elementTypeId, sourceId: this.source })
112
95
  ]);
113
96
  }
@@ -117,6 +100,11 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
117
100
  }
118
101
  }
119
102
  if (this.source && this.target) {
103
+ if (!isCtrlOrCmd(event)) {
104
+ result.push(EnableDefaultToolsAction.create());
105
+ } else {
106
+ this.reinitialize();
107
+ }
120
108
  result.push(
121
109
  CreateEdgeOperation.create({
122
110
  elementTypeId: this.triggerAction.elementTypeId,
@@ -125,11 +113,6 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
125
113
  args: this.triggerAction.args
126
114
  })
127
115
  );
128
- if (!isCtrlOrCmd(event)) {
129
- result.push(EnableDefaultToolsAction.create());
130
- } else {
131
- this.reinitialize();
132
- }
133
116
  }
134
117
  } else if (event.button === 2) {
135
118
  result.push(EnableDefaultToolsAction.create());
@@ -0,0 +1,33 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2019-2023 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { injectable } from 'inversify';
17
+ import { VNode } from 'snabbdom';
18
+ import { IView, Point, RenderingContext, SModelElement, svg } from '~glsp-sprotty';
19
+
20
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
21
+ const JSX = { createElement: svg };
22
+
23
+ /**
24
+ * This view is used for the invisible end of the feedback edge.
25
+ * A feedback edge is shown as a visual feedback when creating edges.
26
+ */
27
+ @injectable()
28
+ export class FeedbackEdgeEndView implements IView {
29
+ render(model: Readonly<SModelElement>, context: RenderingContext): VNode {
30
+ const position: Point = (model as any).position ?? Point.ORIGIN;
31
+ return <g x={position.x} y={position.y} />;
32
+ }
33
+ }
@@ -0,0 +1,41 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2019-2023 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { ContainerModule } from 'inversify';
17
+ import { TYPES, bindAsService, configureCommand } from '~glsp-sprotty';
18
+ import { EdgeEditTool } from './edge-edit-tool';
19
+ import {
20
+ DrawFeedbackEdgeSourceCommand,
21
+ HideEdgeReconnectHandlesFeedbackCommand,
22
+ ShowEdgeReconnectHandlesFeedbackCommand,
23
+ SwitchRoutingModeCommand
24
+ } from './edge-edit-tool-feedback';
25
+ import { configureDanglingFeedbackEdge } from '../edge-creation/dangling-edge-feedback';
26
+
27
+ const edgeEditToolModule = new ContainerModule((bind, unbind, isBound, rebind) => {
28
+ const context = { bind, unbind, isBound, rebind };
29
+ bindAsService(context, TYPES.IDefaultTool, EdgeEditTool);
30
+
31
+ // reconnect edge tool feedback
32
+ configureCommand(context, ShowEdgeReconnectHandlesFeedbackCommand);
33
+ configureCommand(context, HideEdgeReconnectHandlesFeedbackCommand);
34
+ configureCommand(context, DrawFeedbackEdgeSourceCommand);
35
+ configureCommand(context, SwitchRoutingModeCommand);
36
+
37
+ // dangling edge feedback
38
+ configureDanglingFeedbackEdge(context);
39
+ });
40
+
41
+ export default edgeEditToolModule;
@@ -21,6 +21,7 @@ import {
21
21
  Bounds,
22
22
  CommandExecutionContext,
23
23
  CommandReturn,
24
+ Disposable,
24
25
  EdgeRouterRegistry,
25
26
  ElementMove,
26
27
  ISnapper,
@@ -41,12 +42,14 @@ import {
41
42
  isConnectable,
42
43
  isSelected
43
44
  } from '~glsp-sprotty';
44
- import { forEachElement, isRoutable, isRoutingHandle } from '../../utils/smodel-util';
45
- import { getAbsolutePosition, toAbsoluteBounds } from '../../utils/viewpoint-util';
46
- import { PointPositionUpdater } from '../change-bounds/snap';
47
- import { addReconnectHandles, removeReconnectHandles } from '../reconnect/model';
48
- import { FeedbackEdgeEnd, FeedbackEdgeEndMovingMouseListener, feedbackEdgeEndId, feedbackEdgeId } from './creation-tool-feedback';
49
- import { FeedbackCommand } from './model';
45
+ import { IFeedbackActionDispatcher } from '../../../base/feedback/feedback-action-dispatcher';
46
+ import { FeedbackCommand } from '../../../base/feedback/feedback-command';
47
+ import { forEachElement, isRoutable, isRoutingHandle } from '../../../utils/smodel-util';
48
+ import { getAbsolutePosition, toAbsoluteBounds } from '../../../utils/viewpoint-util';
49
+ import { PointPositionUpdater } from '../../change-bounds/snap';
50
+ import { addReconnectHandles, removeReconnectHandles } from '../../reconnect/model';
51
+ import { FeedbackEdgeEnd, feedbackEdgeEndId, feedbackEdgeId } from '../edge-creation/dangling-edge-feedback';
52
+ import { FeedbackEdgeEndMovingMouseListener } from '../edge-creation/edge-creation-tool-feedback';
50
53
 
51
54
  /**
52
55
  * RECONNECT HANDLES FEEDBACK
@@ -67,6 +70,7 @@ export namespace ShowEdgeReconnectHandlesFeedbackAction {
67
70
  return { kind: KIND, elementId };
68
71
  }
69
72
  }
73
+
70
74
  export interface HideEdgeReconnectHandlesFeedbackAction extends Action {
71
75
  kind: typeof HideEdgeReconnectHandlesFeedbackAction.KIND;
72
76
  }
@@ -135,6 +139,7 @@ export namespace SwitchRoutingModeAction {
135
139
  };
136
140
  }
137
141
  }
142
+
138
143
  @injectable()
139
144
  export class SwitchRoutingModeCommand extends SwitchEditModeCommand {
140
145
  static override KIND = SwitchRoutingModeAction.KIND;
@@ -187,13 +192,13 @@ export class DrawFeedbackEdgeSourceCommand extends FeedbackCommand {
187
192
  */
188
193
 
189
194
  export class FeedbackEdgeTargetMovingMouseListener extends FeedbackEdgeEndMovingMouseListener {
190
- constructor(protected override anchorRegistry: AnchorComputerRegistry) {
191
- super(anchorRegistry);
195
+ constructor(anchorRegistry: AnchorComputerRegistry, feedbackDispatcher: IFeedbackActionDispatcher) {
196
+ super(anchorRegistry, feedbackDispatcher);
192
197
  }
193
198
  }
194
199
 
195
- export class FeedbackEdgeSourceMovingMouseListener extends MouseListener {
196
- constructor(protected anchorRegistry: AnchorComputerRegistry) {
200
+ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener implements Disposable {
201
+ constructor(protected anchorRegistry: AnchorComputerRegistry, protected feedbackDispatcher: IFeedbackActionDispatcher) {
197
202
  super();
198
203
  }
199
204
 
@@ -207,16 +212,20 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener {
207
212
  const edge = edgeEnd.feedbackEdge;
208
213
  const position = getAbsolutePosition(edgeEnd, event);
209
214
  const endAtMousePosition = findChildrenAtPosition(target.root, position).find(
210
- e => isConnectable(e) && e.canConnect(edge, 'source')
215
+ element => isConnectable(element) && element.canConnect(edge, 'source')
211
216
  );
212
217
 
213
218
  if (endAtMousePosition instanceof SConnectableElement && edge.target && isBoundsAware(edge.target)) {
214
219
  const anchor = this.computeAbsoluteAnchor(endAtMousePosition, Bounds.center(edge.target.bounds));
215
220
  if (Point.euclideanDistance(anchor, edgeEnd.position) > 1) {
216
- return [MoveAction.create([{ elementId: edgeEnd.id, toPosition: anchor }], { animate: false })];
221
+ this.feedbackDispatcher.registerFeedback(this, [
222
+ MoveAction.create([{ elementId: edgeEnd.id, toPosition: anchor }], { animate: false })
223
+ ]);
217
224
  }
218
225
  } else {
219
- return [MoveAction.create([{ elementId: edgeEnd.id, toPosition: position }], { animate: false })];
226
+ this.feedbackDispatcher.registerFeedback(this, [
227
+ MoveAction.create([{ elementId: edgeEnd.id, toPosition: position }], { animate: false })
228
+ ]);
220
229
  }
221
230
 
222
231
  return [];
@@ -236,6 +245,10 @@ export class FeedbackEdgeSourceMovingMouseListener extends MouseListener {
236
245
  }
237
246
  return anchor;
238
247
  }
248
+
249
+ dispose(): void {
250
+ this.feedbackDispatcher.deregisterFeedback(this);
251
+ }
239
252
  }
240
253
 
241
254
  export class FeedbackEdgeRouteMovingMouseListener extends MouseListener {
@@ -341,8 +354,7 @@ export class FeedbackEdgeRouteMovingMouseListener extends MouseListener {
341
354
  /**
342
355
  * UTILITY FUNCTIONS
343
356
  */
344
-
345
- function drawFeedbackEdgeSource(context: CommandExecutionContext, targetId: string, elementTypeId: string): void {
357
+ export function drawFeedbackEdgeSource(context: CommandExecutionContext, targetId: string, elementTypeId: string): void {
346
358
  const root = context.root;
347
359
  const targetChild = root.index.getById(targetId);
348
360
  if (!targetChild) {
@@ -19,6 +19,7 @@ import {
19
19
  AnchorComputerRegistry,
20
20
  ChangeRoutingPointsOperation,
21
21
  Connectable,
22
+ Disposable,
22
23
  EdgeRouterRegistry,
23
24
  ISnapper,
24
25
  ReconnectEdgeOperation,
@@ -32,12 +33,13 @@ import {
32
33
  isConnectable,
33
34
  isSelected
34
35
  } from '~glsp-sprotty';
35
- import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
36
- import { calcElementAndRoutingPoints, isRoutable, isRoutingHandle } from '../../utils/smodel-util';
37
- import { SReconnectHandle, isReconnectHandle, isReconnectable, isSourceRoutingHandle, isTargetRoutingHandle } from '../reconnect/model';
38
- import { SelectionListener, SelectionService } from '../select/selection-service';
39
- import { DrawFeedbackEdgeAction, RemoveFeedbackEdgeAction, feedbackEdgeId } from '../tool-feedback/creation-tool-feedback';
40
- import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
36
+ import { DragAwareMouseListener } from '../../../base/drag-aware-mouse-listener';
37
+ import { CursorCSS, cursorFeedbackAction } from '../../../base/feedback/css-feedback';
38
+ import { ISelectionListener, SelectionService } from '../../../base/selection-service';
39
+ import { calcElementAndRoutingPoints, isRoutable, isRoutingHandle } from '../../../utils/smodel-util';
40
+ import { SReconnectHandle, isReconnectHandle, isReconnectable, isSourceRoutingHandle, isTargetRoutingHandle } from '../../reconnect/model';
41
+ import { BaseGLSPTool } from '../base-glsp-tool';
42
+ import { DrawFeedbackEdgeAction, RemoveFeedbackEdgeAction, feedbackEdgeId } from '../edge-creation/dangling-edge-feedback';
41
43
  import {
42
44
  DrawFeedbackEdgeSourceAction,
43
45
  FeedbackEdgeRouteMovingMouseListener,
@@ -46,14 +48,13 @@ import {
46
48
  HideEdgeReconnectHandlesFeedbackAction,
47
49
  ShowEdgeReconnectHandlesFeedbackAction,
48
50
  SwitchRoutingModeAction
49
- } from '../tool-feedback/edge-edit-tool-feedback';
50
- import { BaseGLSPTool } from './base-glsp-tool';
51
+ } from './edge-edit-tool-feedback';
51
52
 
52
53
  @injectable()
53
54
  export class EdgeEditTool extends BaseGLSPTool {
54
55
  static ID = 'glsp.edge-edit-tool';
55
56
 
56
- @inject(TYPES.SelectionService) protected selectionService: SelectionService;
57
+ @inject(SelectionService) protected selectionService: SelectionService;
57
58
  @inject(AnchorComputerRegistry) protected anchorRegistry: AnchorComputerRegistry;
58
59
  @inject(EdgeRouterRegistry) @optional() readonly edgeRouterRegistry?: EdgeRouterRegistry;
59
60
  @inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
@@ -69,13 +70,19 @@ export class EdgeEditTool extends BaseGLSPTool {
69
70
 
70
71
  enable(): void {
71
72
  this.edgeEditListener = new EdgeEditListener(this);
72
- this.mouseTool.register(this.edgeEditListener);
73
- this.selectionService.register(this.edgeEditListener);
74
73
 
75
74
  // install feedback move mouse listener for client-side move updates
76
- this.feedbackEdgeSourceMovingListener = new FeedbackEdgeSourceMovingMouseListener(this.anchorRegistry);
77
- this.feedbackEdgeTargetMovingListener = new FeedbackEdgeTargetMovingMouseListener(this.anchorRegistry);
75
+ this.feedbackEdgeSourceMovingListener = new FeedbackEdgeSourceMovingMouseListener(this.anchorRegistry, this.feedbackDispatcher);
76
+ this.feedbackEdgeTargetMovingListener = new FeedbackEdgeTargetMovingMouseListener(this.anchorRegistry, this.feedbackDispatcher);
78
77
  this.feedbackMovingListener = new FeedbackEdgeRouteMovingMouseListener(this.edgeRouterRegistry, this.snapper);
78
+
79
+ this.toDisposeOnDisable.push(
80
+ Disposable.create(() => this.edgeEditListener.reset()),
81
+ this.mouseTool.registerListener(this.edgeEditListener),
82
+ this.feedbackEdgeSourceMovingListener,
83
+ this.feedbackEdgeTargetMovingListener,
84
+ this.selectionService.onSelectionChanged(change => this.edgeEditListener.selectionChanged(change.root, change.selectedElements))
85
+ );
79
86
  }
80
87
 
81
88
  registerFeedbackListeners(): void {
@@ -85,20 +92,15 @@ export class EdgeEditTool extends BaseGLSPTool {
85
92
  }
86
93
 
87
94
  deregisterFeedbackListeners(): void {
95
+ this.feedbackEdgeSourceMovingListener.dispose();
96
+ this.feedbackEdgeTargetMovingListener.dispose();
88
97
  this.mouseTool.deregister(this.feedbackEdgeSourceMovingListener);
89
98
  this.mouseTool.deregister(this.feedbackEdgeTargetMovingListener);
90
99
  this.mouseTool.deregister(this.feedbackMovingListener);
91
100
  }
92
-
93
- disable(): void {
94
- this.edgeEditListener.reset();
95
- this.selectionService.deregister(this.edgeEditListener);
96
- this.deregisterFeedbackListeners();
97
- this.mouseTool.deregister(this.edgeEditListener);
98
- }
99
101
  }
100
102
 
101
- class EdgeEditListener extends DragAwareMouseListener implements SelectionListener {
103
+ export class EdgeEditListener extends DragAwareMouseListener implements ISelectionListener {
102
104
  // active selection data
103
105
  protected edge?: SRoutableElement;
104
106
  protected routingHandle?: SRoutingHandle;
@@ -132,7 +134,7 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
132
134
  if (isReconnectable(edge)) {
133
135
  feedbackActions.push(ShowEdgeReconnectHandlesFeedbackAction.create(this.edge.id));
134
136
  }
135
- this.tool.dispatchFeedback(feedbackActions);
137
+ this.tool.registerFeedback(feedbackActions);
136
138
  }
137
139
 
138
140
  protected isEdgeSelected(): boolean {
@@ -142,14 +144,14 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
142
144
  protected setReconnectHandleSelected(edge: SRoutableElement, reconnectHandle: SReconnectHandle): void {
143
145
  if (this.edge && this.edge.target && this.edge.source) {
144
146
  if (isSourceRoutingHandle(edge, reconnectHandle)) {
145
- this.tool.dispatchFeedback([
147
+ this.tool.registerFeedback([
146
148
  HideEdgeReconnectHandlesFeedbackAction.create(),
147
149
  cursorFeedbackAction(CursorCSS.EDGE_RECONNECT),
148
150
  DrawFeedbackEdgeSourceAction.create({ elementTypeId: this.edge.type, targetId: this.edge.targetId })
149
151
  ]);
150
152
  this.reconnectMode = 'NEW_SOURCE';
151
153
  } else if (isTargetRoutingHandle(edge, reconnectHandle)) {
152
- this.tool.dispatchFeedback([
154
+ this.tool.registerFeedback([
153
155
  HideEdgeReconnectHandlesFeedbackAction.create(),
154
156
  cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET),
155
157
  DrawFeedbackEdgeAction.create({ elementTypeId: this.edge.type, sourceId: this.edge.sourceId })
@@ -257,11 +259,11 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
257
259
  (this.reconnectMode === 'NEW_SOURCE' && currentTarget.canConnect(this.edge, 'source')) ||
258
260
  (this.reconnectMode === 'NEW_TARGET' && currentTarget.canConnect(this.edge, 'target'))
259
261
  ) {
260
- this.tool.dispatchFeedback([cursorFeedbackAction(CursorCSS.EDGE_RECONNECT)]);
262
+ this.tool.registerFeedback([cursorFeedbackAction(CursorCSS.EDGE_RECONNECT)]);
261
263
  return [];
262
264
  }
263
265
  }
264
- this.tool.dispatchFeedback([cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED)]);
266
+ this.tool.registerFeedback([cursorFeedbackAction(CursorCSS.OPERATION_NOT_ALLOWED)]);
265
267
  }
266
268
  }
267
269
  return [];
@@ -314,7 +316,7 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
314
316
  result.push(SwitchRoutingModeAction.create({ elementsToDeactivate: [this.edge.id] }));
315
317
  }
316
318
  result.push(...[HideEdgeReconnectHandlesFeedbackAction.create(), cursorFeedbackAction(), RemoveFeedbackEdgeAction.create()]);
317
- this.tool.deregisterFeedback(result);
319
+ this.tool.deregisterFeedback(undefined, result);
318
320
  this.tool.deregisterFeedbackListeners();
319
321
  }
320
322
  }
@@ -13,8 +13,8 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
- import { injectable } from 'inversify';
17
- import { Action, EnableDefaultToolsAction, IActionHandler, ICommand } from '~glsp-sprotty';
16
+ import { ContainerModule, injectable } from 'inversify';
17
+ import { Action, EnableDefaultToolsAction, IActionHandler, ICommand, configureActionHandler } from '~glsp-sprotty';
18
18
  import { FocusStateChangedAction } from '../../base/actions/focus-change-action';
19
19
 
20
20
  /**
@@ -30,3 +30,12 @@ export class EnableDefaultToolsOnFocusLossHandler implements IActionHandler {
30
30
  }
31
31
  }
32
32
  }
33
+
34
+ /**
35
+ * Enables the default tools in the tool manager if the diagram looses focus.
36
+ */
37
+ const enableDefaultToolsOnFocusLossModule = new ContainerModule((bind, _unbind, isBound) => {
38
+ configureActionHandler({ bind, isBound }, FocusStateChangedAction.KIND, EnableDefaultToolsOnFocusLossHandler);
39
+ });
40
+
41
+ export default enableDefaultToolsOnFocusLossModule;
@@ -0,0 +1,35 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2019-2023 EclipseSource and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { ContainerModule } from 'inversify';
17
+ import { TYPES, bindAsService, configureCommand, configureModelElement } from '~glsp-sprotty';
18
+ import { MarqueeMouseTool } from './marquee-mouse-tool';
19
+ import { MarqueeTool } from './marquee-tool';
20
+ import { DrawMarqueeCommand, MARQUEE, RemoveMarqueeCommand } from './marquee-tool-feedback';
21
+ import { MarqueeNode } from './model';
22
+ import { MarqueeView } from './view';
23
+
24
+ const marqueeSelectionToolModule = new ContainerModule((bind, unbind, isBound, rebind) => {
25
+ const context = { bind, unbind, isBound, rebind };
26
+ bindAsService(context, TYPES.IDefaultTool, MarqueeTool);
27
+ bindAsService(context, TYPES.ITool, MarqueeMouseTool);
28
+
29
+ configureCommand(context, DrawMarqueeCommand);
30
+ configureCommand(context, RemoveMarqueeCommand);
31
+
32
+ configureModelElement(context, MARQUEE, MarqueeNode, MarqueeView);
33
+ });
34
+
35
+ export default marqueeSelectionToolModule;
@@ -15,7 +15,7 @@
15
15
  ********************************************************************************/
16
16
 
17
17
  import { Bounds, Point, PointToPointLine } from '~glsp-sprotty';
18
- import { DrawMarqueeAction } from '../tool-feedback/marquee-tool-feedback';
18
+ import { DrawMarqueeAction } from './marquee-tool-feedback';
19
19
 
20
20
  export interface IMarqueeBehavior {
21
21
  readonly entireElement: boolean;
@@ -77,7 +77,7 @@ export class MarqueeUtil {
77
77
  return horizontallyIn && verticallyIn;
78
78
  }
79
79
 
80
- private isEntireEdgeMarked(points: Point[]): boolean {
80
+ protected isEntireEdgeMarked(points: Point[]): boolean {
81
81
  for (let i = 0; i < points.length; i++) {
82
82
  if (!this.pointInRect(points[i])) {
83
83
  return false;
@@ -86,7 +86,7 @@ export class MarqueeUtil {
86
86
  return true;
87
87
  }
88
88
 
89
- private isPartOfEdgeMarked(points: Point[]): boolean {
89
+ protected isPartOfEdgeMarked(points: Point[]): boolean {
90
90
  for (let i = 0; i < points.length - 1; i++) {
91
91
  if (this.isLineMarked(points[i], points[i + 1])) {
92
92
  return true;
@@ -95,7 +95,7 @@ export class MarqueeUtil {
95
95
  return false;
96
96
  }
97
97
 
98
- private isLineMarked(point1: Point, point2: Point): boolean {
98
+ protected isLineMarked(point1: Point, point2: Point): boolean {
99
99
  const line = new PointToPointLine(point1, point2);
100
100
  return (
101
101
  this.pointInRect(point1) ||
@@ -107,11 +107,11 @@ export class MarqueeUtil {
107
107
  );
108
108
  }
109
109
 
110
- private lineIntersect(line: PointToPointLine, p1: Point, p2: Point): boolean {
110
+ protected lineIntersect(line: PointToPointLine, p1: Point, p2: Point): boolean {
111
111
  return line.intersection(new PointToPointLine(p1, p2)) !== undefined;
112
112
  }
113
113
 
114
- private pointInRect(point: Point): boolean {
114
+ protected pointInRect(point: Point): boolean {
115
115
  const boolX =
116
116
  this.startPoint.x <= this.currentPoint.x
117
117
  ? this.isBetween(point.x, this.startPoint.x, this.currentPoint.x)
@@ -123,7 +123,7 @@ export class MarqueeUtil {
123
123
  return boolX && boolY;
124
124
  }
125
125
 
126
- private isElementBetweenXAxis(elementBounds: Bounds, marqueeLeft: number, marqueeRight: number): boolean {
126
+ protected isElementBetweenXAxis(elementBounds: Bounds, marqueeLeft: number, marqueeRight: number): boolean {
127
127
  const leftEdge = this.isBetween(elementBounds.x, marqueeLeft, marqueeRight);
128
128
  const rightEdge = this.isBetween(elementBounds.x + elementBounds.width, marqueeLeft, marqueeRight);
129
129
  if (this.marqueeBehavior.entireElement) {
@@ -137,7 +137,7 @@ export class MarqueeUtil {
137
137
  );
138
138
  }
139
139
 
140
- private isElementBetweenYAxis(elementBounds: Bounds, marqueeTop: number, marqueeBottom: number): boolean {
140
+ protected isElementBetweenYAxis(elementBounds: Bounds, marqueeTop: number, marqueeBottom: number): boolean {
141
141
  const topEdge = this.isBetween(elementBounds.y, marqueeTop, marqueeBottom);
142
142
  const bottomEdge = this.isBetween(elementBounds.y + elementBounds.height, marqueeTop, marqueeBottom);
143
143
  if (this.marqueeBehavior.entireElement) {
@@ -151,7 +151,7 @@ export class MarqueeUtil {
151
151
  );
152
152
  }
153
153
 
154
- private isBetween(x: number, lower: number, upper: number): boolean {
154
+ protected isBetween(x: number, lower: number, upper: number): boolean {
155
155
  return lower <= x && x <= upper;
156
156
  }
157
157
  }
@@ -29,12 +29,12 @@ import {
29
29
  isSelectable,
30
30
  isSelected
31
31
  } from '~glsp-sprotty';
32
- import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
33
- import { getAbsolutePosition, toAbsoluteBounds } from '../../utils/viewpoint-util';
34
- import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
35
- import { RemoveMarqueeAction } from '../tool-feedback/marquee-tool-feedback';
36
- import { BaseGLSPTool } from './base-glsp-tool';
32
+ import { DragAwareMouseListener } from '../../../base/drag-aware-mouse-listener';
33
+ import { CursorCSS, cursorFeedbackAction } from '../../../base/feedback/css-feedback';
34
+ import { getAbsolutePosition, toAbsoluteBounds } from '../../../utils/viewpoint-util';
35
+ import { BaseGLSPTool } from '../base-glsp-tool';
37
36
  import { IMarqueeBehavior, MarqueeUtil } from './marquee-behavior';
37
+ import { RemoveMarqueeAction } from './marquee-tool-feedback';
38
38
 
39
39
  @injectable()
40
40
  export class MarqueeMouseTool extends BaseGLSPTool {
@@ -43,7 +43,6 @@ export class MarqueeMouseTool extends BaseGLSPTool {
43
43
  @inject(TYPES.DOMHelper) protected domHelper: DOMHelper;
44
44
  @inject(TYPES.IMarqueeBehavior) @optional() protected marqueeBehavior: IMarqueeBehavior;
45
45
 
46
- protected marqueeMouseListener: MarqueeMouseListener;
47
46
  protected shiftKeyListener: ShiftKeyListener = new ShiftKeyListener();
48
47
 
49
48
  get id(): string {
@@ -51,16 +50,11 @@ export class MarqueeMouseTool extends BaseGLSPTool {
51
50
  }
52
51
 
53
52
  enable(): void {
54
- this.marqueeMouseListener = new MarqueeMouseListener(this.domHelper, this.editorContext.modelRoot, this.marqueeBehavior);
55
- this.mouseTool.register(this.marqueeMouseListener);
56
- this.keyTool.register(this.shiftKeyListener);
57
- this.dispatchFeedback([cursorFeedbackAction(CursorCSS.MARQUEE)]);
58
- }
59
-
60
- disable(): void {
61
- this.mouseTool.deregister(this.marqueeMouseListener);
62
- this.keyTool.deregister(this.shiftKeyListener);
63
- this.deregisterFeedback([cursorFeedbackAction()]);
53
+ this.toDisposeOnDisable.push(
54
+ this.mouseTool.registerListener(new MarqueeMouseListener(this.domHelper, this.editorContext.modelRoot, this.marqueeBehavior)),
55
+ this.keyTool.registerListener(this.shiftKeyListener),
56
+ this.registerFeedback([cursorFeedbackAction(CursorCSS.MARQUEE)], this, [cursorFeedbackAction()])
57
+ );
64
58
  }
65
59
  }
66
60
 
@@ -119,7 +113,7 @@ export class MarqueeMouseListener extends DragAwareMouseListener {
119
113
  return [];
120
114
  }
121
115
 
122
- override mouseUp(target: SModelElement, event: MouseEvent): Action[] {
116
+ override mouseUp(_target: SModelElement, event: MouseEvent): Action[] {
123
117
  this.isActive = false;
124
118
  if (event.shiftKey) {
125
119
  return [RemoveMarqueeAction.create()];
@@ -27,7 +27,7 @@ import {
27
27
  TYPES,
28
28
  hasObjectProp
29
29
  } from '~glsp-sprotty';
30
- import { FeedbackCommand } from './model';
30
+ import { FeedbackCommand } from '../../../base/feedback/feedback-command';
31
31
 
32
32
  export interface DrawMarqueeAction extends Action {
33
33
  kind: typeof DrawMarqueeAction.KIND;