@eclipse-glsp/client 0.9.0-rc-01 → 0.10.0-next.146a812.165

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 (599) hide show
  1. package/LICENSE +642 -277
  2. package/README.md +4 -2
  3. package/css/command-palette.css +9 -5
  4. package/css/decoration.css +3 -2
  5. package/css/glsp-sprotty.css +125 -14
  6. package/css/tool-palette.css +44 -27
  7. package/lib/base/action-dispatcher.d.ts +19 -3
  8. package/lib/base/action-dispatcher.d.ts.map +1 -1
  9. package/lib/base/action-dispatcher.js +47 -65
  10. package/lib/base/action-dispatcher.js.map +1 -1
  11. package/lib/base/actions/focus-change-action.d.ts +1 -1
  12. package/lib/base/actions/focus-change-action.d.ts.map +1 -1
  13. package/lib/base/actions/focus-change-action.js +4 -5
  14. package/lib/base/actions/focus-change-action.js.map +1 -1
  15. package/lib/base/{args.d.ts → argumentable.d.ts} +3 -5
  16. package/lib/base/argumentable.d.ts.map +1 -0
  17. package/lib/base/{args.js → argumentable.js} +1 -1
  18. package/lib/base/argumentable.js.map +1 -0
  19. package/lib/base/auto-complete/auto-complete-actions.d.ts +1 -1
  20. package/lib/base/auto-complete/auto-complete-actions.d.ts.map +1 -1
  21. package/lib/base/auto-complete/auto-complete-widget.d.ts +3 -3
  22. package/lib/base/auto-complete/auto-complete-widget.d.ts.map +1 -1
  23. package/lib/base/auto-complete/auto-complete-widget.js +123 -157
  24. package/lib/base/auto-complete/auto-complete-widget.js.map +1 -1
  25. package/lib/base/auto-complete/validation-decorator.d.ts +3 -18
  26. package/lib/base/auto-complete/validation-decorator.d.ts.map +1 -1
  27. package/lib/base/auto-complete/validation-decorator.js +44 -65
  28. package/lib/base/auto-complete/validation-decorator.js.map +1 -1
  29. package/lib/base/command-stack.d.ts.map +1 -1
  30. package/lib/base/command-stack.js +19 -37
  31. package/lib/base/command-stack.js.map +1 -1
  32. package/lib/base/container-modules.d.ts +40 -0
  33. package/lib/base/container-modules.d.ts.map +1 -0
  34. package/lib/base/container-modules.js +100 -0
  35. package/lib/base/container-modules.js.map +1 -0
  36. package/lib/base/di.config.d.ts +12 -2
  37. package/lib/base/di.config.d.ts.map +1 -1
  38. package/lib/base/di.config.js +46 -30
  39. package/lib/base/di.config.js.map +1 -1
  40. package/lib/base/drag-aware-mouse-listener.d.ts +3 -2
  41. package/lib/base/drag-aware-mouse-listener.d.ts.map +1 -1
  42. package/lib/base/drag-aware-mouse-listener.js +23 -62
  43. package/lib/base/drag-aware-mouse-listener.js.map +1 -1
  44. package/lib/base/{editor-context.d.ts → editor-context-service.d.ts} +18 -22
  45. package/lib/base/editor-context-service.d.ts.map +1 -0
  46. package/lib/base/editor-context-service.js +110 -0
  47. package/lib/base/editor-context-service.js.map +1 -0
  48. package/lib/base/focus-tracker.d.ts +17 -1
  49. package/lib/base/focus-tracker.d.ts.map +1 -1
  50. package/lib/base/focus-tracker.js +20 -40
  51. package/lib/base/focus-tracker.js.map +1 -1
  52. package/lib/base/model/model-registry.d.ts.map +1 -1
  53. package/lib/base/model/model-registry.js +11 -29
  54. package/lib/base/model/model-registry.js.map +1 -1
  55. package/lib/base/model/update-model-command.d.ts +19 -5
  56. package/lib/base/model/update-model-command.d.ts.map +1 -1
  57. package/lib/base/model/update-model-command.js +69 -94
  58. package/lib/base/model/update-model-command.js.map +1 -1
  59. package/lib/base/model-initialization-constraint.d.ts +18 -3
  60. package/lib/base/model-initialization-constraint.d.ts.map +1 -1
  61. package/lib/base/model-initialization-constraint.js +37 -58
  62. package/lib/base/model-initialization-constraint.js.map +1 -1
  63. package/lib/base/selection-clearing-mouse-listener.d.ts.map +1 -1
  64. package/lib/base/selection-clearing-mouse-listener.js +10 -28
  65. package/lib/base/selection-clearing-mouse-listener.js.map +1 -1
  66. package/lib/base/source-uri-aware.js +2 -5
  67. package/lib/base/source-uri-aware.js.map +1 -1
  68. package/lib/base/tool-manager/glsp-tool-manager.d.ts +2 -2
  69. package/lib/base/tool-manager/glsp-tool-manager.d.ts.map +1 -1
  70. package/lib/base/tool-manager/glsp-tool-manager.js +58 -140
  71. package/lib/base/tool-manager/glsp-tool-manager.js.map +1 -1
  72. package/lib/base/types.d.ts +3 -1
  73. package/lib/base/types.d.ts.map +1 -1
  74. package/lib/base/types.js +4 -2
  75. package/lib/base/types.js.map +1 -1
  76. package/lib/base/view/view-registry.d.ts.map +1 -1
  77. package/lib/base/view/view-registry.js +11 -29
  78. package/lib/base/view/view-registry.js.map +1 -1
  79. package/lib/features/change-bounds/model.d.ts +3 -1
  80. package/lib/features/change-bounds/model.d.ts.map +1 -1
  81. package/lib/features/change-bounds/model.js +22 -33
  82. package/lib/features/change-bounds/model.js.map +1 -1
  83. package/lib/features/change-bounds/movement-restrictor.d.ts +17 -1
  84. package/lib/features/change-bounds/movement-restrictor.d.ts.map +1 -1
  85. package/lib/features/change-bounds/movement-restrictor.js +29 -43
  86. package/lib/features/change-bounds/movement-restrictor.js.map +1 -1
  87. package/lib/features/change-bounds/snap.d.ts +58 -1
  88. package/lib/features/change-bounds/snap.d.ts.map +1 -1
  89. package/lib/features/change-bounds/snap.js +91 -41
  90. package/lib/features/change-bounds/snap.js.map +1 -1
  91. package/{src/features/undo-redo/model.ts → lib/features/change-bounds/snap.spec.d.ts} +3 -12
  92. package/lib/features/change-bounds/snap.spec.d.ts.map +1 -0
  93. package/lib/features/change-bounds/snap.spec.js +82 -0
  94. package/lib/features/change-bounds/snap.spec.js.map +1 -0
  95. package/lib/features/command-palette/command-palette-tool.js +30 -38
  96. package/lib/features/command-palette/command-palette-tool.js.map +1 -1
  97. package/lib/features/command-palette/di.config.js +6 -6
  98. package/lib/features/command-palette/di.config.js.map +1 -1
  99. package/lib/features/command-palette/server-command-palette-provider.d.ts +18 -2
  100. package/lib/features/command-palette/server-command-palette-provider.d.ts.map +1 -1
  101. package/lib/features/command-palette/server-command-palette-provider.js +28 -33
  102. package/lib/features/command-palette/server-command-palette-provider.js.map +1 -1
  103. package/lib/features/context-menu/delete-element-context-menu.d.ts +1 -1
  104. package/lib/features/context-menu/delete-element-context-menu.d.ts.map +1 -1
  105. package/lib/features/context-menu/delete-element-context-menu.js +20 -68
  106. package/lib/features/context-menu/delete-element-context-menu.js.map +1 -1
  107. package/lib/features/context-menu/di.config.d.ts +1 -1
  108. package/lib/features/context-menu/di.config.d.ts.map +1 -1
  109. package/lib/features/context-menu/di.config.js +8 -8
  110. package/lib/features/context-menu/di.config.js.map +1 -1
  111. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts +16 -0
  112. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.d.ts.map +1 -1
  113. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js +61 -71
  114. package/lib/features/context-menu/selection-service-aware-context-menu-mouse-listener.js.map +1 -1
  115. package/lib/features/context-menu/server-context-menu-provider.d.ts +18 -2
  116. package/lib/features/context-menu/server-context-menu-provider.d.ts.map +1 -1
  117. package/lib/features/context-menu/server-context-menu-provider.js +30 -31
  118. package/lib/features/context-menu/server-context-menu-provider.js.map +1 -1
  119. package/lib/features/copy-paste/copy-paste-context-menu.d.ts +22 -2
  120. package/lib/features/copy-paste/copy-paste-context-menu.d.ts.map +1 -1
  121. package/lib/features/copy-paste/copy-paste-context-menu.js +99 -72
  122. package/lib/features/copy-paste/copy-paste-context-menu.js.map +1 -1
  123. package/lib/features/copy-paste/copy-paste-handler.d.ts +19 -2
  124. package/lib/features/copy-paste/copy-paste-handler.d.ts.map +1 -1
  125. package/lib/features/copy-paste/copy-paste-handler.js +70 -70
  126. package/lib/features/copy-paste/copy-paste-handler.js.map +1 -1
  127. package/lib/features/copy-paste/di.config.d.ts +1 -1
  128. package/lib/features/copy-paste/di.config.d.ts.map +1 -1
  129. package/lib/features/copy-paste/di.config.js +11 -11
  130. package/lib/features/copy-paste/di.config.js.map +1 -1
  131. package/lib/features/decoration/decoration-placer.d.ts +17 -1
  132. package/lib/features/decoration/decoration-placer.d.ts.map +1 -1
  133. package/lib/features/decoration/decoration-placer.js +13 -47
  134. package/lib/features/decoration/decoration-placer.js.map +1 -1
  135. package/lib/features/decoration/di.config.js +4 -4
  136. package/lib/features/decoration/di.config.js.map +1 -1
  137. package/lib/features/edit-label/di.config.js +7 -7
  138. package/lib/features/edit-label/di.config.js.map +1 -1
  139. package/lib/features/edit-label/edit-label-tool.js +20 -43
  140. package/lib/features/edit-label/edit-label-tool.js.map +1 -1
  141. package/lib/features/edit-label/edit-label-validator.d.ts +16 -1
  142. package/lib/features/edit-label/edit-label-validator.d.ts.map +1 -1
  143. package/lib/features/edit-label/edit-label-validator.js +40 -62
  144. package/lib/features/edit-label/edit-label-validator.js.map +1 -1
  145. package/lib/features/hints/di.config.d.ts +0 -15
  146. package/lib/features/hints/di.config.d.ts.map +1 -1
  147. package/lib/features/hints/di.config.js +9 -9
  148. package/lib/features/hints/di.config.js.map +1 -1
  149. package/lib/features/hints/model.d.ts +3 -2
  150. package/lib/features/hints/model.d.ts.map +1 -1
  151. package/lib/features/hints/model.js.map +1 -1
  152. package/lib/features/hints/type-hints.d.ts +17 -45
  153. package/lib/features/hints/type-hints.d.ts.map +1 -1
  154. package/lib/features/hints/type-hints.js +81 -140
  155. package/lib/features/hints/type-hints.js.map +1 -1
  156. package/lib/features/hover/di.config.d.ts +1 -1
  157. package/lib/features/hover/di.config.d.ts.map +1 -1
  158. package/lib/features/hover/di.config.js +19 -17
  159. package/lib/features/hover/di.config.js.map +1 -1
  160. package/lib/features/hover/hover.d.ts +28 -2
  161. package/lib/features/hover/hover.d.ts.map +1 -1
  162. package/lib/features/hover/hover.js +56 -76
  163. package/lib/features/hover/hover.js.map +1 -1
  164. package/lib/features/layout/di.config.d.ts +1 -1
  165. package/lib/features/layout/di.config.d.ts.map +1 -1
  166. package/lib/features/layout/di.config.js +11 -7
  167. package/lib/features/layout/di.config.js.map +1 -1
  168. package/lib/features/layout/freeform-layout.d.ts +16 -0
  169. package/lib/features/layout/freeform-layout.d.ts.map +1 -0
  170. package/lib/features/layout/freeform-layout.js +107 -0
  171. package/lib/features/layout/freeform-layout.js.map +1 -0
  172. package/lib/features/layout/layout-commands.d.ts +19 -3
  173. package/lib/features/layout/layout-commands.d.ts.map +1 -1
  174. package/lib/features/layout/layout-commands.js +196 -269
  175. package/lib/features/layout/layout-commands.js.map +1 -1
  176. package/lib/features/layout/layout-commands.spec.d.ts +0 -15
  177. package/lib/features/layout/layout-commands.spec.d.ts.map +1 -1
  178. package/lib/features/layout/layout-commands.spec.js +101 -95
  179. package/lib/features/layout/layout-commands.spec.js.map +1 -1
  180. package/lib/features/layout/vbox-layout.d.ts +25 -0
  181. package/lib/features/layout/vbox-layout.d.ts.map +1 -0
  182. package/lib/features/layout/vbox-layout.js +188 -0
  183. package/lib/features/layout/vbox-layout.js.map +1 -0
  184. package/lib/features/model-source-watcher/di.config.d.ts +0 -15
  185. package/lib/features/model-source-watcher/di.config.d.ts.map +1 -1
  186. package/lib/features/model-source-watcher/di.config.js +7 -7
  187. package/lib/features/model-source-watcher/di.config.js.map +1 -1
  188. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts +17 -2
  189. package/lib/features/model-source-watcher/model-source-changed-action-handler.d.ts.map +1 -1
  190. package/lib/features/model-source-watcher/model-source-changed-action-handler.js +38 -46
  191. package/lib/features/model-source-watcher/model-source-changed-action-handler.js.map +1 -1
  192. package/lib/features/mouse-tool/di.config.js +5 -5
  193. package/lib/features/mouse-tool/di.config.js.map +1 -1
  194. package/lib/features/mouse-tool/mouse-tool.d.ts +10 -5
  195. package/lib/features/mouse-tool/mouse-tool.d.ts.map +1 -1
  196. package/lib/features/mouse-tool/mouse-tool.js +54 -235
  197. package/lib/features/mouse-tool/mouse-tool.js.map +1 -1
  198. package/lib/features/navigation/di.config.d.ts +0 -15
  199. package/lib/features/navigation/di.config.d.ts.map +1 -1
  200. package/lib/features/navigation/di.config.js +11 -10
  201. package/lib/features/navigation/di.config.js.map +1 -1
  202. package/lib/features/navigation/navigation-action-handler.d.ts +19 -38
  203. package/lib/features/navigation/navigation-action-handler.d.ts.map +1 -1
  204. package/lib/features/navigation/navigation-action-handler.js +118 -254
  205. package/lib/features/navigation/navigation-action-handler.js.map +1 -1
  206. package/lib/features/navigation/navigation-target-resolver.d.ts +18 -40
  207. package/lib/features/navigation/navigation-target-resolver.d.ts.map +1 -1
  208. package/lib/features/navigation/navigation-target-resolver.js +46 -188
  209. package/lib/features/navigation/navigation-target-resolver.js.map +1 -1
  210. package/lib/features/navigation/navigation-target-resolver.spec.d.ts +0 -15
  211. package/lib/features/navigation/navigation-target-resolver.spec.d.ts.map +1 -1
  212. package/lib/features/navigation/navigation-target-resolver.spec.js +27 -27
  213. package/lib/features/navigation/navigation-target-resolver.spec.js.map +1 -1
  214. package/lib/features/rank/model.d.ts +1 -1
  215. package/lib/features/rank/model.js +2 -2
  216. package/lib/features/rank/model.js.map +1 -1
  217. package/lib/features/reconnect/model.d.ts +1 -1
  218. package/lib/features/reconnect/model.d.ts.map +1 -1
  219. package/lib/features/reconnect/model.js +9 -27
  220. package/lib/features/reconnect/model.js.map +1 -1
  221. package/lib/features/save/di.config.d.ts +1 -1
  222. package/lib/features/save/di.config.d.ts.map +1 -1
  223. package/lib/features/save/di.config.js +6 -6
  224. package/lib/features/save/di.config.js.map +1 -1
  225. package/lib/features/save/{save.d.ts → save-keylistener.d.ts} +4 -10
  226. package/lib/features/save/save-keylistener.d.ts.map +1 -0
  227. package/lib/features/{undo-redo/model.d.ts → save/save-keylistener.js} +16 -12
  228. package/lib/features/save/save-keylistener.js.map +1 -0
  229. package/lib/features/select/di.config.js +11 -11
  230. package/lib/features/select/di.config.js.map +1 -1
  231. package/lib/features/select/select-feedback-action.d.ts.map +1 -1
  232. package/lib/features/select/select-feedback-action.js +45 -71
  233. package/lib/features/select/select-feedback-action.js.map +1 -1
  234. package/lib/features/select/select-mouse-listener.js +7 -23
  235. package/lib/features/select/select-mouse-listener.js.map +1 -1
  236. package/lib/features/select/selection-service.d.ts +18 -2
  237. package/lib/features/select/selection-service.d.ts.map +1 -1
  238. package/lib/features/select/selection-service.js +140 -240
  239. package/lib/features/select/selection-service.js.map +1 -1
  240. package/lib/features/select/selection-service.spec.js +111 -154
  241. package/lib/features/select/selection-service.spec.js.map +1 -1
  242. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts +19 -2
  243. package/lib/features/tool-feedback/change-bounds-tool-feedback.d.ts.map +1 -1
  244. package/lib/features/tool-feedback/change-bounds-tool-feedback.js +110 -150
  245. package/lib/features/tool-feedback/change-bounds-tool-feedback.js.map +1 -1
  246. package/lib/features/tool-feedback/creation-tool-feedback.d.ts +18 -2
  247. package/lib/features/tool-feedback/creation-tool-feedback.d.ts.map +1 -1
  248. package/lib/features/tool-feedback/creation-tool-feedback.js +103 -124
  249. package/lib/features/tool-feedback/creation-tool-feedback.js.map +1 -1
  250. package/lib/features/tool-feedback/css-feedback.d.ts +20 -2
  251. package/lib/features/tool-feedback/css-feedback.d.ts.map +1 -1
  252. package/lib/features/tool-feedback/css-feedback.js +37 -81
  253. package/lib/features/tool-feedback/css-feedback.js.map +1 -1
  254. package/lib/features/tool-feedback/di.config.d.ts +1 -1
  255. package/lib/features/tool-feedback/di.config.d.ts.map +1 -1
  256. package/lib/features/tool-feedback/di.config.js +27 -27
  257. package/lib/features/tool-feedback/di.config.js.map +1 -1
  258. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts +24 -5
  259. package/lib/features/tool-feedback/edge-edit-tool-feedback.d.ts.map +1 -1
  260. package/lib/features/tool-feedback/edge-edit-tool-feedback.js +185 -239
  261. package/lib/features/tool-feedback/edge-edit-tool-feedback.js.map +1 -1
  262. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts +20 -4
  263. package/lib/features/tool-feedback/feedback-action-dispatcher.d.ts.map +1 -1
  264. package/lib/features/tool-feedback/feedback-action-dispatcher.js +35 -72
  265. package/lib/features/tool-feedback/feedback-action-dispatcher.js.map +1 -1
  266. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts +17 -1
  267. package/lib/features/tool-feedback/marquee-tool-feedback.d.ts.map +1 -1
  268. package/lib/features/tool-feedback/marquee-tool-feedback.js +41 -84
  269. package/lib/features/tool-feedback/marquee-tool-feedback.js.map +1 -1
  270. package/lib/features/tool-feedback/model.d.ts +1 -2
  271. package/lib/features/tool-feedback/model.d.ts.map +1 -1
  272. package/lib/features/tool-feedback/model.js +11 -27
  273. package/lib/features/tool-feedback/model.js.map +1 -1
  274. package/lib/features/tool-feedback/view.d.ts +21 -5
  275. package/lib/features/tool-feedback/view.d.ts.map +1 -1
  276. package/lib/features/tool-feedback/view.js +31 -53
  277. package/lib/features/tool-feedback/view.js.map +1 -1
  278. package/lib/features/tool-palette/di.config.d.ts +1 -1
  279. package/lib/features/tool-palette/di.config.d.ts.map +1 -1
  280. package/lib/features/tool-palette/di.config.js +6 -6
  281. package/lib/features/tool-palette/di.config.js.map +1 -1
  282. package/lib/features/tool-palette/palette-item.d.ts +2 -3
  283. package/lib/features/tool-palette/palette-item.d.ts.map +1 -1
  284. package/lib/features/tool-palette/palette-item.js +6 -6
  285. package/lib/features/tool-palette/palette-item.js.map +1 -1
  286. package/lib/features/tool-palette/tool-palette.d.ts +19 -3
  287. package/lib/features/tool-palette/tool-palette.d.ts.map +1 -1
  288. package/lib/features/tool-palette/tool-palette.js +203 -271
  289. package/lib/features/tool-palette/tool-palette.js.map +1 -1
  290. package/lib/features/tools/base-glsp-tool.d.ts +20 -4
  291. package/lib/features/tools/base-glsp-tool.d.ts.map +1 -1
  292. package/lib/features/tools/base-glsp-tool.js +39 -61
  293. package/lib/features/tools/base-glsp-tool.js.map +1 -1
  294. package/lib/features/tools/change-bounds-tool.d.ts +22 -7
  295. package/lib/features/tools/change-bounds-tool.d.ts.map +1 -1
  296. package/lib/features/tools/change-bounds-tool.js +196 -270
  297. package/lib/features/tools/change-bounds-tool.js.map +1 -1
  298. package/lib/features/tools/delete-tool.d.ts +17 -1
  299. package/lib/features/tools/delete-tool.d.ts.map +1 -1
  300. package/lib/features/tools/delete-tool.js +75 -108
  301. package/lib/features/tools/delete-tool.js.map +1 -1
  302. package/lib/features/tools/di.config.d.ts +0 -15
  303. package/lib/features/tools/di.config.d.ts.map +1 -1
  304. package/lib/features/tools/di.config.js +20 -20
  305. package/lib/features/tools/di.config.js.map +1 -1
  306. package/lib/features/tools/edge-creation-tool.d.ts +17 -2
  307. package/lib/features/tools/edge-creation-tool.d.ts.map +1 -1
  308. package/lib/features/tools/edge-creation-tool.js +68 -93
  309. package/lib/features/tools/edge-creation-tool.js.map +1 -1
  310. package/lib/features/tools/edge-edit-tool.d.ts +18 -1
  311. package/lib/features/tools/edge-edit-tool.d.ts.map +1 -1
  312. package/lib/features/tools/edge-edit-tool.js +129 -195
  313. package/lib/features/tools/edge-edit-tool.js.map +1 -1
  314. package/lib/features/tools/marquee-behavior.d.ts +42 -0
  315. package/lib/features/tools/marquee-behavior.d.ts.map +1 -0
  316. package/lib/features/tools/marquee-behavior.js +128 -0
  317. package/lib/features/tools/marquee-behavior.js.map +1 -0
  318. package/lib/features/{model-source-watcher/model-source-changed-action.d.ts → tools/marquee-behavior.spec.d.ts} +3 -10
  319. package/lib/features/tools/marquee-behavior.spec.d.ts.map +1 -0
  320. package/lib/features/tools/marquee-behavior.spec.js +165 -0
  321. package/lib/features/tools/marquee-behavior.spec.js.map +1 -0
  322. package/lib/features/tools/marquee-mouse-tool.d.ts +24 -13
  323. package/lib/features/tools/marquee-mouse-tool.d.ts.map +1 -1
  324. package/lib/features/tools/marquee-mouse-tool.js +89 -198
  325. package/lib/features/tools/marquee-mouse-tool.js.map +1 -1
  326. package/lib/features/tools/marquee-tool.d.ts +17 -1
  327. package/lib/features/tools/marquee-tool.d.ts.map +1 -1
  328. package/lib/features/tools/marquee-tool.js +32 -73
  329. package/lib/features/tools/marquee-tool.js.map +1 -1
  330. package/lib/features/tools/model.d.ts +1 -1
  331. package/lib/features/tools/model.d.ts.map +1 -1
  332. package/lib/features/tools/model.js +5 -23
  333. package/lib/features/tools/model.js.map +1 -1
  334. package/lib/features/tools/node-creation-tool.d.ts +17 -2
  335. package/lib/features/tools/node-creation-tool.d.ts.map +1 -1
  336. package/lib/features/tools/node-creation-tool.js +63 -93
  337. package/lib/features/tools/node-creation-tool.js.map +1 -1
  338. package/lib/features/tools/view.d.ts +1 -1
  339. package/lib/features/tools/view.d.ts.map +1 -1
  340. package/lib/features/tools/view.js +13 -32
  341. package/lib/features/tools/view.js.map +1 -1
  342. package/lib/features/validation/di.config.js +12 -12
  343. package/lib/features/validation/di.config.js.map +1 -1
  344. package/lib/features/validation/issue-marker.d.ts +2 -2
  345. package/lib/features/validation/issue-marker.d.ts.map +1 -1
  346. package/lib/features/validation/issue-marker.js +17 -55
  347. package/lib/features/validation/issue-marker.js.map +1 -1
  348. package/lib/features/validation/marker-navigator.d.ts +17 -1
  349. package/lib/features/validation/marker-navigator.d.ts.map +1 -1
  350. package/lib/features/validation/marker-navigator.js +134 -167
  351. package/lib/features/validation/marker-navigator.js.map +1 -1
  352. package/lib/features/validation/marker-navigator.spec.d.ts +0 -15
  353. package/lib/features/validation/marker-navigator.spec.d.ts.map +1 -1
  354. package/lib/features/validation/marker-navigator.spec.js +104 -98
  355. package/lib/features/validation/marker-navigator.spec.js.map +1 -1
  356. package/lib/features/validation/validate.d.ts +18 -29
  357. package/lib/features/validation/validate.d.ts.map +1 -1
  358. package/lib/features/validation/validate.js +148 -301
  359. package/lib/features/validation/validate.js.map +1 -1
  360. package/lib/features/viewport/di.config.js +10 -10
  361. package/lib/features/viewport/di.config.js.map +1 -1
  362. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts +18 -2
  363. package/lib/features/viewport/glsp-scroll-mouse-listener.d.ts.map +1 -1
  364. package/lib/features/viewport/glsp-scroll-mouse-listener.js +16 -47
  365. package/lib/features/viewport/glsp-scroll-mouse-listener.js.map +1 -1
  366. package/lib/index.d.ts +9 -15
  367. package/lib/index.d.ts.map +1 -1
  368. package/lib/index.js +36 -37
  369. package/lib/index.js.map +1 -1
  370. package/lib/lib/model.d.ts +1 -1
  371. package/lib/lib/model.d.ts.map +1 -1
  372. package/lib/lib/model.js +12 -28
  373. package/lib/lib/model.js.map +1 -1
  374. package/lib/model-source/glsp-diagram-server.d.ts +3 -5
  375. package/lib/model-source/glsp-diagram-server.d.ts.map +1 -1
  376. package/lib/model-source/glsp-diagram-server.js +61 -121
  377. package/lib/model-source/glsp-diagram-server.js.map +1 -1
  378. package/lib/protocol-reexport.d.ts +45 -0
  379. package/lib/protocol-reexport.d.ts.map +1 -0
  380. package/lib/protocol-reexport.js +80 -0
  381. package/lib/protocol-reexport.js.map +1 -0
  382. package/lib/utils/argument-utils.d.ts +3 -3
  383. package/lib/utils/argument-utils.d.ts.map +1 -1
  384. package/lib/utils/argument-utils.js +32 -97
  385. package/lib/utils/argument-utils.js.map +1 -1
  386. package/lib/utils/html-utils.js +2 -2
  387. package/lib/utils/html-utils.js.map +1 -1
  388. package/lib/utils/layout-utils.d.ts +3 -2
  389. package/lib/utils/layout-utils.d.ts.map +1 -1
  390. package/lib/utils/layout-utils.js +5 -5
  391. package/lib/utils/layout-utils.js.map +1 -1
  392. package/lib/utils/marker.d.ts +0 -38
  393. package/lib/utils/marker.d.ts.map +1 -1
  394. package/lib/utils/marker.js +14 -61
  395. package/lib/utils/marker.js.map +1 -1
  396. package/lib/utils/smodel-util.d.ts +116 -10
  397. package/lib/utils/smodel-util.d.ts.map +1 -1
  398. package/lib/utils/smodel-util.js +131 -75
  399. package/lib/utils/smodel-util.js.map +1 -1
  400. package/lib/utils/viewpoint-util.d.ts +3 -2
  401. package/lib/utils/viewpoint-util.d.ts.map +1 -1
  402. package/lib/utils/viewpoint-util.js +15 -30
  403. package/lib/utils/viewpoint-util.js.map +1 -1
  404. package/lib/views/base-view-module.d.ts +0 -15
  405. package/lib/views/base-view-module.d.ts.map +1 -1
  406. package/lib/views/base-view-module.js +28 -28
  407. package/lib/views/base-view-module.js.map +1 -1
  408. package/lib/views/compartments.d.ts +6 -0
  409. package/lib/views/compartments.d.ts.map +1 -0
  410. package/lib/views/compartments.js +43 -0
  411. package/lib/views/compartments.js.map +1 -0
  412. package/lib/views/glsp-edge-view.d.ts +18 -3
  413. package/lib/views/glsp-edge-view.d.ts.map +1 -1
  414. package/lib/views/glsp-edge-view.js +32 -77
  415. package/lib/views/glsp-edge-view.js.map +1 -1
  416. package/lib/views/index.d.ts +1 -1
  417. package/lib/views/index.d.ts.map +1 -1
  418. package/lib/views/index.js +7 -3
  419. package/lib/views/index.js.map +1 -1
  420. package/lib/views/issue-marker-view.d.ts +2 -1
  421. package/lib/views/issue-marker-view.d.ts.map +1 -1
  422. package/lib/views/issue-marker-view.js +37 -51
  423. package/lib/views/issue-marker-view.js.map +1 -1
  424. package/lib/views/rounded-corner-view.d.ts +2 -3
  425. package/lib/views/rounded-corner-view.d.ts.map +1 -1
  426. package/lib/views/rounded-corner-view.js +41 -71
  427. package/lib/views/rounded-corner-view.js.map +1 -1
  428. package/lib/views/rounded-corner.d.ts +2 -1
  429. package/lib/views/rounded-corner.d.ts.map +1 -1
  430. package/lib/views/rounded-corner.js +44 -65
  431. package/lib/views/rounded-corner.js.map +1 -1
  432. package/package.json +13 -31
  433. package/src/base/action-dispatcher.ts +15 -15
  434. package/src/base/actions/focus-change-action.ts +2 -2
  435. package/src/base/{args.ts → argumentable.ts} +2 -3
  436. package/src/base/auto-complete/auto-complete-actions.ts +1 -1
  437. package/src/base/auto-complete/auto-complete-widget.ts +37 -25
  438. package/src/base/auto-complete/validation-decorator.ts +12 -11
  439. package/src/base/command-stack.ts +4 -7
  440. package/src/base/container-modules.ts +112 -0
  441. package/src/base/di.config.ts +33 -18
  442. package/src/base/drag-aware-mouse-listener.ts +6 -7
  443. package/src/base/{editor-context.ts → editor-context-service.ts} +4 -31
  444. package/src/base/focus-tracker.ts +2 -4
  445. package/src/base/model/model-registry.ts +2 -2
  446. package/src/base/model/update-model-command.ts +9 -17
  447. package/src/base/model-initialization-constraint.ts +10 -10
  448. package/src/base/selection-clearing-mouse-listener.ts +1 -1
  449. package/src/base/tool-manager/glsp-tool-manager.ts +9 -11
  450. package/src/base/types.ts +4 -2
  451. package/src/base/view/view-registry.ts +2 -2
  452. package/src/features/change-bounds/model.ts +17 -7
  453. package/src/features/change-bounds/movement-restrictor.ts +17 -9
  454. package/src/features/change-bounds/snap.spec.ts +89 -0
  455. package/src/features/change-bounds/snap.ts +87 -2
  456. package/src/features/command-palette/server-command-palette-provider.ts +11 -9
  457. package/src/features/context-menu/delete-element-context-menu.ts +3 -4
  458. package/src/features/context-menu/di.config.ts +11 -9
  459. package/src/features/context-menu/selection-service-aware-context-menu-mouse-listener.ts +41 -11
  460. package/src/features/context-menu/server-context-menu-provider.ts +10 -7
  461. package/src/features/copy-paste/copy-paste-context-menu.ts +59 -30
  462. package/src/features/copy-paste/copy-paste-handler.ts +18 -10
  463. package/src/features/copy-paste/di.config.ts +2 -3
  464. package/src/features/decoration/decoration-placer.ts +4 -14
  465. package/src/features/edit-label/edit-label-validator.ts +11 -12
  466. package/src/features/hints/di.config.ts +2 -3
  467. package/src/features/hints/model.ts +4 -3
  468. package/src/features/hints/type-hints.ts +24 -91
  469. package/src/features/hover/di.config.ts +4 -3
  470. package/src/features/hover/hover.ts +27 -8
  471. package/src/features/layout/di.config.ts +8 -4
  472. package/src/features/layout/freeform-layout.ts +133 -0
  473. package/src/features/layout/layout-commands.spec.ts +82 -64
  474. package/src/features/layout/layout-commands.ts +47 -38
  475. package/src/features/layout/vbox-layout.ts +260 -0
  476. package/src/features/model-source-watcher/di.config.ts +3 -4
  477. package/src/features/model-source-watcher/model-source-changed-action-handler.ts +11 -7
  478. package/src/features/mouse-tool/mouse-tool.ts +28 -54
  479. package/src/features/navigation/di.config.ts +4 -10
  480. package/src/features/navigation/navigation-action-handler.ts +33 -69
  481. package/src/features/navigation/navigation-target-resolver.spec.ts +3 -7
  482. package/src/features/navigation/navigation-target-resolver.ts +13 -91
  483. package/src/features/rank/model.ts +2 -2
  484. package/src/features/reconnect/model.ts +3 -4
  485. package/src/features/save/di.config.ts +2 -3
  486. package/src/features/save/{save.ts → save-keylistener.ts} +4 -12
  487. package/src/features/select/select-feedback-action.ts +4 -6
  488. package/src/features/select/selection-service.spec.ts +11 -6
  489. package/src/features/select/selection-service.ts +18 -13
  490. package/src/features/tool-feedback/change-bounds-tool-feedback.ts +33 -26
  491. package/src/features/tool-feedback/creation-tool-feedback.ts +49 -14
  492. package/src/features/tool-feedback/css-feedback.ts +9 -6
  493. package/src/features/tool-feedback/di.config.ts +2 -5
  494. package/src/features/tool-feedback/edge-edit-tool-feedback.ts +78 -68
  495. package/src/features/tool-feedback/feedback-action-dispatcher.ts +9 -10
  496. package/src/features/tool-feedback/marquee-tool-feedback.ts +6 -7
  497. package/src/features/tool-feedback/model.ts +1 -4
  498. package/src/features/tool-feedback/view.tsx +17 -11
  499. package/src/features/tool-palette/di.config.ts +2 -4
  500. package/src/features/tool-palette/palette-item.ts +4 -6
  501. package/src/features/tool-palette/tool-palette.ts +48 -42
  502. package/src/features/tools/base-glsp-tool.ts +10 -10
  503. package/src/features/tools/change-bounds-tool.ts +73 -74
  504. package/src/features/tools/delete-tool.ts +11 -8
  505. package/src/features/tools/di.config.ts +2 -3
  506. package/src/features/tools/edge-creation-tool.ts +7 -12
  507. package/src/features/tools/edge-edit-tool.ts +19 -26
  508. package/src/features/tools/marquee-behavior.spec.ts +175 -0
  509. package/src/features/tools/marquee-behavior.ts +158 -0
  510. package/src/features/tools/marquee-mouse-tool.ts +48 -139
  511. package/src/features/tools/marquee-tool.ts +4 -5
  512. package/src/features/tools/model.ts +2 -2
  513. package/src/features/tools/node-creation-tool.ts +6 -13
  514. package/src/features/tools/view.tsx +19 -15
  515. package/src/features/validation/issue-marker.ts +2 -3
  516. package/src/features/validation/marker-navigator.spec.ts +18 -14
  517. package/src/features/validation/marker-navigator.ts +29 -15
  518. package/src/features/validation/validate.ts +10 -43
  519. package/src/features/viewport/glsp-scroll-mouse-listener.ts +4 -13
  520. package/src/index.ts +30 -19
  521. package/src/lib/model.ts +2 -3
  522. package/src/model-source/glsp-diagram-server.ts +18 -32
  523. package/src/protocol-reexport.ts +64 -0
  524. package/src/utils/argument-utils.ts +14 -11
  525. package/src/utils/layout-utils.ts +13 -7
  526. package/src/utils/marker.ts +2 -26
  527. package/src/utils/smodel-util.ts +140 -38
  528. package/src/utils/viewpoint-util.ts +4 -4
  529. package/src/views/base-view-module.ts +1 -2
  530. package/src/{base/actions/edit-mode-action.ts → views/compartments.tsx} +18 -14
  531. package/src/views/glsp-edge-view.tsx +25 -18
  532. package/src/views/index.ts +1 -1
  533. package/src/views/issue-marker-view.tsx +29 -20
  534. package/src/views/rounded-corner-view.tsx +40 -28
  535. package/src/views/rounded-corner.ts +5 -6
  536. package/lib/base/actions/context-actions.d.ts +0 -36
  537. package/lib/base/actions/context-actions.d.ts.map +0 -1
  538. package/lib/base/actions/context-actions.js +0 -51
  539. package/lib/base/actions/context-actions.js.map +0 -1
  540. package/lib/base/actions/edit-mode-action.d.ts +0 -13
  541. package/lib/base/actions/edit-mode-action.d.ts.map +0 -1
  542. package/lib/base/actions/edit-mode-action.js +0 -56
  543. package/lib/base/actions/edit-mode-action.js.map +0 -1
  544. package/lib/base/actions/edit-validation-actions.d.ts +0 -78
  545. package/lib/base/actions/edit-validation-actions.d.ts.map +0 -1
  546. package/lib/base/actions/edit-validation-actions.js +0 -83
  547. package/lib/base/actions/edit-validation-actions.js.map +0 -1
  548. package/lib/base/actions/protocol-actions.d.ts +0 -41
  549. package/lib/base/actions/protocol-actions.d.ts.map +0 -1
  550. package/lib/base/actions/protocol-actions.js +0 -151
  551. package/lib/base/actions/protocol-actions.js.map +0 -1
  552. package/lib/base/args.d.ts.map +0 -1
  553. package/lib/base/args.js.map +0 -1
  554. package/lib/base/editor-context.d.ts.map +0 -1
  555. package/lib/base/editor-context.js +0 -174
  556. package/lib/base/editor-context.js.map +0 -1
  557. package/lib/base/operations/operation.d.ts +0 -135
  558. package/lib/base/operations/operation.d.ts.map +0 -1
  559. package/lib/base/operations/operation.js +0 -231
  560. package/lib/base/operations/operation.js.map +0 -1
  561. package/lib/features/copy-paste/copy-paste-actions.d.ts +0 -50
  562. package/lib/features/copy-paste/copy-paste-actions.d.ts.map +0 -1
  563. package/lib/features/copy-paste/copy-paste-actions.js +0 -68
  564. package/lib/features/copy-paste/copy-paste-actions.js.map +0 -1
  565. package/lib/features/hints/request-type-hints-action.d.ts +0 -32
  566. package/lib/features/hints/request-type-hints-action.d.ts.map +0 -1
  567. package/lib/features/hints/request-type-hints-action.js +0 -30
  568. package/lib/features/hints/request-type-hints-action.js.map +0 -1
  569. package/lib/features/model-source-watcher/model-source-changed-action.d.ts.map +0 -1
  570. package/lib/features/model-source-watcher/model-source-changed-action.js +0 -17
  571. package/lib/features/model-source-watcher/model-source-changed-action.js.map +0 -1
  572. package/lib/features/save/save.d.ts.map +0 -1
  573. package/lib/features/save/save.js +0 -62
  574. package/lib/features/save/save.js.map +0 -1
  575. package/lib/features/undo-redo/model.d.ts.map +0 -1
  576. package/lib/features/undo-redo/model.js +0 -22
  577. package/lib/features/undo-redo/model.js.map +0 -1
  578. package/lib/model-source/glsp-server-status.d.ts +0 -30
  579. package/lib/model-source/glsp-server-status.d.ts.map +0 -1
  580. package/lib/model-source/glsp-server-status.js +0 -61
  581. package/lib/model-source/glsp-server-status.js.map +0 -1
  582. package/lib/utils/array-utils.d.ts +0 -28
  583. package/lib/utils/array-utils.d.ts.map +0 -1
  584. package/lib/utils/array-utils.js +0 -61
  585. package/lib/utils/array-utils.js.map +0 -1
  586. package/lib/views/default-types.d.ts +0 -37
  587. package/lib/views/default-types.d.ts.map +0 -1
  588. package/lib/views/default-types.js +0 -47
  589. package/lib/views/default-types.js.map +0 -1
  590. package/src/base/actions/context-actions.ts +0 -43
  591. package/src/base/actions/edit-validation-actions.ts +0 -103
  592. package/src/base/actions/protocol-actions.ts +0 -82
  593. package/src/base/operations/operation.ts +0 -178
  594. package/src/features/copy-paste/copy-paste-actions.ts +0 -60
  595. package/src/features/hints/request-type-hints-action.ts +0 -36
  596. package/src/features/model-source-watcher/model-source-changed-action.ts +0 -26
  597. package/src/model-source/glsp-server-status.ts +0 -38
  598. package/src/utils/array-utils.ts +0 -55
  599. package/src/views/default-types.ts +0 -48
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -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,
@@ -24,9 +32,8 @@ import {
24
32
  findParentByFeature,
25
33
  ISnapper,
26
34
  isSelected,
27
- isViewport,
28
35
  MouseListener,
29
- Point,
36
+ SChildElement,
30
37
  SConnectableElement,
31
38
  SetBoundsAction,
32
39
  SModelElement,
@@ -34,17 +41,9 @@ import {
34
41
  SParentElement,
35
42
  TYPES
36
43
  } from 'sprotty';
37
-
38
44
  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
45
  import { GLSP_TYPES } from '../../base/types';
47
- import { isValidMove, isValidSize, WriteablePoint } from '../../utils/layout-utils';
46
+ import { isValidMove, isValidSize } from '../../utils/layout-utils';
48
47
  import {
49
48
  forEachElement,
50
49
  isNonRoutableSelectedMovableBoundsAware,
@@ -57,6 +56,7 @@ import {
57
56
  IMovementRestrictor,
58
57
  removeMovementRestrictionFeedback
59
58
  } from '../change-bounds/movement-restrictor';
59
+ import { PointPositionUpdater } from '../change-bounds/snap';
60
60
  import { SelectionListener, SelectionService } from '../select/selection-service';
61
61
  import {
62
62
  FeedbackMoveMouseListener,
@@ -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 resize
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 {
@@ -118,7 +118,7 @@ export class ChangeBoundsTool extends BaseGLSPTool {
118
118
  this.selectionService.deregister(this.changeBoundsListener);
119
119
  this.mouseTool.deregister(this.feedbackMoveMouseListener);
120
120
  this.deregisterFeedback([], this.feedbackMoveMouseListener);
121
- this.deregisterFeedback([new HideChangeBoundsToolResizeFeedbackAction], this.changeBoundsListener);
121
+ this.deregisterFeedback([new HideChangeBoundsToolResizeFeedbackAction()], this.changeBoundsListener);
122
122
  }
123
123
  }
124
124
 
@@ -127,8 +127,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
127
127
 
128
128
  // members for calculating the correct position change
129
129
  protected initialBounds: Bounds | undefined;
130
- protected lastDragPosition?: Point;
131
- protected positionDelta: WriteablePoint = { x: 0, y: 0 };
130
+ protected pointPositionUpdater: PointPositionUpdater;
132
131
 
133
132
  // members for resize mode
134
133
  protected activeResizeElement?: SModelElement;
@@ -136,9 +135,10 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
136
135
 
137
136
  constructor(protected tool: ChangeBoundsTool) {
138
137
  super();
138
+ this.pointPositionUpdater = new PointPositionUpdater(tool.snapper);
139
139
  }
140
140
 
141
- mouseDown(target: SModelElement, event: MouseEvent): Action[] {
141
+ override mouseDown(target: SModelElement, event: MouseEvent): Action[] {
142
142
  super.mouseDown(target, event);
143
143
  if (event.button !== 0) {
144
144
  return [];
@@ -157,13 +157,16 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
157
157
  return [];
158
158
  }
159
159
 
160
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
160
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
161
161
  super.mouseMove(target, event);
162
162
  if (this.isMouseDrag && this.activeResizeHandle) {
163
163
  // rely on the FeedbackMoveMouseListener to update the element bounds of selected elements
164
164
  // consider resize handles ourselves
165
- const actions: Action[] = [cursorFeedbackAction(CursorCSS.RESIZE), applyCssClasses(this.activeResizeHandle, ChangeBoundsListener.CSS_CLASS_ACTIVE)];
166
- const positionUpdate = this.updatePosition(target, event);
165
+ const actions: Action[] = [
166
+ cursorFeedbackAction(this.activeResizeHandle.isNwSeResize() ? CursorCSS.RESIZE_NWSE : CursorCSS.RESIZE_NESW),
167
+ applyCssClasses(this.activeResizeHandle, ChangeBoundsListener.CSS_CLASS_ACTIVE)
168
+ ];
169
+ const positionUpdate = this.pointPositionUpdater.updatePosition(target, { x: event.pageX, y: event.pageY }, !event.altKey);
167
170
  if (positionUpdate) {
168
171
  const resizeActions = this.handleResizeOnClient(positionUpdate);
169
172
  actions.push(...resizeActions);
@@ -173,8 +176,8 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
173
176
  return [];
174
177
  }
175
178
 
176
- draggingMouseUp(target: SModelElement, event: MouseEvent): Action[] {
177
- if (this.lastDragPosition === undefined) {
179
+ override draggingMouseUp(target: SModelElement, event: MouseEvent): Action[] {
180
+ if (this.pointPositionUpdater.isLastDragPositionUndefined()) {
178
181
  this.resetPosition();
179
182
  return [];
180
183
  }
@@ -205,19 +208,37 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
205
208
  protected handleMoveElementsOnServer(target: SModelElement): Action[] {
206
209
  const result: Operation[] = [];
207
210
  const newBounds: ElementAndBounds[] = [];
208
- forEachElement(target, isNonRoutableSelectedMovableBoundsAware, element => {
209
- this.createElementAndBounds(element).forEach(bounds => newBounds.push(bounds));
211
+ const selectedElements: (SModelElement & BoundsAware)[] = [];
212
+ forEachElement(target.index, isNonRoutableSelectedMovableBoundsAware, element => {
213
+ selectedElements.push(element);
210
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
+
211
222
  if (newBounds.length > 0) {
212
223
  result.push(new ChangeBoundsOperation(newBounds));
213
224
  }
214
225
  return result;
215
226
  }
216
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
+
217
238
  protected handleMoveRoutingPointsOnServer(target: SModelElement): Action[] {
218
239
  const result: Operation[] = [];
219
240
  const newRoutingPoints: ElementAndRoutingPoints[] = [];
220
- forEachElement(target, isNonRoutableSelectedMovableBoundsAware, element => {
241
+ forEachElement(target.index, isNonRoutableSelectedMovableBoundsAware, element => {
221
242
  // If client routing is enabled -> delegate routingpoints of connected edges to server
222
243
  if (this.tool.edgeRouterRegistry && element instanceof SConnectableElement) {
223
244
  element.incomingEdges.map(toElementAndRoutingPoints).forEach(ear => newRoutingPoints.push(ear));
@@ -278,47 +299,21 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
278
299
  }
279
300
 
280
301
  protected initPosition(event: MouseEvent): void {
281
- this.lastDragPosition = { x: event.pageX, y: event.pageY };
302
+ this.pointPositionUpdater.updateLastDragPosition({ x: event.pageX, y: event.pageY });
282
303
  if (this.activeResizeHandle) {
283
304
  const resizeElement = findParentByFeature(this.activeResizeHandle, isResizable);
284
- this.initialBounds = { x: resizeElement!.bounds.x, y: resizeElement!.bounds.y, width: resizeElement!.bounds.width, height: resizeElement!.bounds.height };
305
+ this.initialBounds = {
306
+ x: resizeElement!.bounds.x,
307
+ y: resizeElement!.bounds.y,
308
+ width: resizeElement!.bounds.width,
309
+ height: resizeElement!.bounds.height
310
+ };
285
311
  }
286
312
  }
287
313
 
288
- protected updatePosition(target: SModelElement, event: MouseEvent): Point | undefined {
289
- if (this.lastDragPosition) {
290
- const newDragPosition = { x: event.pageX, y: event.pageY };
291
-
292
- const viewport = findParentByFeature(target, isViewport);
293
- const zoom = viewport ? viewport.zoom : 1;
294
- const dx = (event.pageX - this.lastDragPosition.x) / zoom;
295
- const dy = (event.pageY - this.lastDragPosition.y) / zoom;
296
- const deltaToLastPosition = { x: dx, y: dy };
297
- this.lastDragPosition = newDragPosition;
298
-
299
- // update position delta with latest delta
300
- this.positionDelta.x += deltaToLastPosition.x;
301
- this.positionDelta.y += deltaToLastPosition.y;
302
-
303
- // snap our delta and only send update if the position actually changes
304
- // otherwise accumulate delta until we do snap to an update
305
- const positionUpdate = this.snap(this.positionDelta, target, !event.shiftKey);
306
- if (positionUpdate.x === 0 && positionUpdate.y === 0) {
307
- return undefined;
308
- }
309
-
310
- // we update our position so we need to reset our delta
311
- this.positionDelta.x = 0;
312
- this.positionDelta.y = 0;
313
- return positionUpdate;
314
- }
315
- return undefined;
316
- }
317
-
318
314
  protected reset(): void {
319
315
  if (this.activeResizeElement && isResizable(this.activeResizeElement)) {
320
316
  this.tool.dispatchFeedback([new HideChangeBoundsToolResizeFeedbackAction()], this);
321
-
322
317
  }
323
318
  this.tool.dispatchActions([cursorFeedbackAction(CursorCSS.DEFAULT)]);
324
319
  this.resetPosition();
@@ -326,8 +321,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
326
321
 
327
322
  protected resetPosition(): void {
328
323
  this.activeResizeHandle = undefined;
329
- this.lastDragPosition = undefined;
330
- this.positionDelta = { x: 0, y: 0 };
324
+ this.pointPositionUpdater.resetPosition();
331
325
  }
332
326
 
333
327
  protected handleResizeOnClient(positionUpdate: Point): Action[] {
@@ -352,35 +346,43 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
352
346
  }
353
347
 
354
348
  protected handleTopLeftResize(resizeElement: SParentElement & Resizable, positionUpdate: Point): Action[] {
355
- return this.createSetBoundsAction(resizeElement,
349
+ return this.createSetBoundsAction(
350
+ resizeElement,
356
351
  resizeElement.bounds.x + positionUpdate.x,
357
352
  resizeElement.bounds.y + positionUpdate.y,
358
353
  resizeElement.bounds.width - positionUpdate.x,
359
- resizeElement.bounds.height - positionUpdate.y);
354
+ resizeElement.bounds.height - positionUpdate.y
355
+ );
360
356
  }
361
357
 
362
358
  protected handleTopRightResize(resizeElement: SParentElement & Resizable, positionUpdate: Point): Action[] {
363
- return this.createSetBoundsAction(resizeElement,
359
+ return this.createSetBoundsAction(
360
+ resizeElement,
364
361
  resizeElement.bounds.x,
365
362
  resizeElement.bounds.y + positionUpdate.y,
366
363
  resizeElement.bounds.width + positionUpdate.x,
367
- resizeElement.bounds.height - positionUpdate.y);
364
+ resizeElement.bounds.height - positionUpdate.y
365
+ );
368
366
  }
369
367
 
370
368
  protected handleBottomLeftResize(resizeElement: SParentElement & Resizable, positionUpdate: Point): Action[] {
371
- return this.createSetBoundsAction(resizeElement,
369
+ return this.createSetBoundsAction(
370
+ resizeElement,
372
371
  resizeElement.bounds.x + positionUpdate.x,
373
372
  resizeElement.bounds.y,
374
373
  resizeElement.bounds.width - positionUpdate.x,
375
- resizeElement.bounds.height + positionUpdate.y);
374
+ resizeElement.bounds.height + positionUpdate.y
375
+ );
376
376
  }
377
377
 
378
378
  protected handleBottomRightResize(resizeElement: SParentElement & Resizable, positionUpdate: Point): Action[] {
379
- return this.createSetBoundsAction(resizeElement,
379
+ return this.createSetBoundsAction(
380
+ resizeElement,
380
381
  resizeElement.bounds.x,
381
382
  resizeElement.bounds.y,
382
383
  resizeElement.bounds.width + positionUpdate.x,
383
- resizeElement.bounds.height + positionUpdate.y);
384
+ resizeElement.bounds.height + positionUpdate.y
385
+ );
384
386
  }
385
387
 
386
388
  protected createChangeBoundsAction(element: SModelElement & BoundsAware): Action[] {
@@ -414,7 +416,6 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
414
416
  result.push(removeMovementRestrictionFeedback(element, this.tool.movementRestrictor));
415
417
  }
416
418
  result.push(new SetBoundsAction([{ elementId: element.id, newPosition, newSize }]));
417
-
418
419
  } else if (this.isValidSize(element, newSize)) {
419
420
  if (this.tool.movementRestrictor) {
420
421
  result.push(createMovementRestrictionFeedback(element, this.tool.movementRestrictor));
@@ -426,9 +427,7 @@ export class ChangeBoundsListener extends DragAwareMouseListener implements Sele
426
427
  }
427
428
 
428
429
  protected snap(position: Point, element: SModelElement, isSnap: boolean): Point {
429
- return isSnap && this.tool.snapper
430
- ? this.tool.snapper.snap(position, element)
431
- : { x: position.x, y: position.y };
430
+ return isSnap && this.tool.snapper ? this.tool.snapper.snap(position, element) : { x: position.x, y: position.y };
432
431
  }
433
432
 
434
433
  protected isValidBoundChange(element: SModelElement & BoundsAware, newPosition: Point, newSize: Dimension): boolean {
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -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';
@@ -62,10 +60,15 @@ export class DelKeyDeleteTool implements GLSPTool {
62
60
 
63
61
  @injectable()
64
62
  export class DeleteKeyListener extends KeyListener {
65
- keyDown(element: SModelElement, event: KeyboardEvent): Action[] {
63
+ override keyDown(element: SModelElement, event: KeyboardEvent): Action[] {
66
64
  if (matchesKeystroke(event, 'Delete')) {
67
- const deleteElementIds = Array.from(element.root.index.all().filter(e => isDeletable(e) && isSelectable(e) && e.selected)
68
- .filter(e => e.id !== e.root.id).map(e => e.id));
65
+ const deleteElementIds = Array.from(
66
+ element.root.index
67
+ .all()
68
+ .filter(e => isDeletable(e) && isSelectable(e) && e.selected)
69
+ .filter(e => e.id !== e.root.id)
70
+ .map(e => e.id)
71
+ );
69
72
  if (deleteElementIds.length > 0) {
70
73
  return [new DeleteElementOperation(deleteElementIds)];
71
74
  }
@@ -105,7 +108,7 @@ export class MouseDeleteTool implements GLSPTool {
105
108
 
106
109
  @injectable()
107
110
  export class DeleteToolMouseListener extends MouseListener {
108
- mouseUp(target: SModelElement, event: MouseEvent): Action[] {
111
+ override mouseUp(target: SModelElement, event: MouseEvent): Action[] {
109
112
  const deletableParent = findParentByFeature(target, isDeletable);
110
113
  if (deletableParent === undefined) {
111
114
  return [];
@@ -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';
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -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,13 +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 {
32
- CreateEdgeOperation,
33
- isTriggerElementTypeCreationAction,
34
- TriggerEdgeCreationAction
35
- } from '../../base/operations/operation';
36
30
  import {
37
31
  DrawFeedbackEdgeAction,
38
32
  FeedbackEdgeEndMovingMouseListener,
@@ -105,7 +99,7 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
105
99
  this.tool.dispatchFeedback([new RemoveFeedbackEdgeAction()]);
106
100
  }
107
101
 
108
- nonDraggingMouseUp(_element: SModelElement, event: MouseEvent): Action[] {
102
+ override nonDraggingMouseUp(_element: SModelElement, event: MouseEvent): Action[] {
109
103
  const result: Action[] = [];
110
104
  if (event.button === 0) {
111
105
  if (!this.isSourceSelected()) {
@@ -140,7 +134,7 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
140
134
  return this.target !== undefined;
141
135
  }
142
136
 
143
- mouseOver(target: SModelElement, event: MouseEvent): Action[] {
137
+ override mouseOver(target: SModelElement, event: MouseEvent): Action[] {
144
138
  const newCurrentTarget = findParentByFeature(target, isConnectable);
145
139
  if (newCurrentTarget !== this.currentTarget) {
146
140
  this.currentTarget = newCurrentTarget;
@@ -151,8 +145,9 @@ export class EdgeCreationToolMouseListener extends DragAwareMouseListener {
151
145
  this.allowedTarget = this.isAllowedTarget(newCurrentTarget);
152
146
  }
153
147
  if (this.allowedTarget) {
154
- const action = !this.isSourceSelected() ? cursorFeedbackAction(CursorCSS.EDGE_CREATION_SOURCE) :
155
- cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET);
148
+ const action = !this.isSourceSelected()
149
+ ? cursorFeedbackAction(CursorCSS.EDGE_CREATION_SOURCE)
150
+ : cursorFeedbackAction(CursorCSS.EDGE_CREATION_TARGET);
156
151
  return [action];
157
152
  }
158
153
  }
@@ -1,5 +1,5 @@
1
1
  /********************************************************************************
2
- * Copyright (c) 2019 EclipseSource and others.
2
+ * Copyright (c) 2019-2022 EclipseSource and others.
3
3
  *
4
4
  * This program and the accompanying materials are made available under the
5
5
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,33 +13,27 @@
13
13
  *
14
14
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  ********************************************************************************/
16
+ import { Action, ChangeRoutingPointsOperation, ReconnectEdgeOperation } from '@eclipse-glsp/protocol';
16
17
  import { inject, injectable, optional } from 'inversify';
17
18
  import {
18
- Action,
19
19
  AnchorComputerRegistry,
20
20
  canEditRouting,
21
21
  Connectable,
22
22
  EdgeRouterRegistry,
23
23
  findParentByFeature,
24
24
  isConnectable,
25
+ ISnapper,
25
26
  isSelected,
26
27
  SModelElement,
27
28
  SModelRoot,
28
29
  SRoutableElement,
29
- SRoutingHandle
30
+ SRoutingHandle,
31
+ TYPES
30
32
  } from 'sprotty';
31
-
32
33
  import { DragAwareMouseListener } from '../../base/drag-aware-mouse-listener';
33
- import { ChangeRoutingPointsOperation, ReconnectEdgeOperation } from '../../base/operations/operation';
34
34
  import { GLSP_TYPES } from '../../base/types';
35
35
  import { isRoutable, isRoutingHandle } from '../../utils/smodel-util';
36
- import {
37
- isReconnectable,
38
- isReconnectHandle,
39
- isSourceRoutingHandle,
40
- isTargetRoutingHandle,
41
- SReconnectHandle
42
- } from '../reconnect/model';
36
+ import { isReconnectable, isReconnectHandle, isSourceRoutingHandle, isTargetRoutingHandle, SReconnectHandle } from '../reconnect/model';
43
37
  import { SelectionListener, SelectionService } from '../select/selection-service';
44
38
  import { DrawFeedbackEdgeAction, feedbackEdgeId, RemoveFeedbackEdgeAction } from '../tool-feedback/creation-tool-feedback';
45
39
  import { CursorCSS, cursorFeedbackAction } from '../tool-feedback/css-feedback';
@@ -61,6 +55,7 @@ export class EdgeEditTool extends BaseGLSPTool {
61
55
  @inject(GLSP_TYPES.SelectionService) protected selectionService: SelectionService;
62
56
  @inject(AnchorComputerRegistry) protected anchorRegistry: AnchorComputerRegistry;
63
57
  @inject(EdgeRouterRegistry) @optional() protected edgeRouterRegistry?: EdgeRouterRegistry;
58
+ @inject(TYPES.ISnapper) @optional() readonly snapper?: ISnapper;
64
59
 
65
60
  protected feedbackEdgeSourceMovingListener: FeedbackEdgeSourceMovingMouseListener;
66
61
  protected feedbackEdgeTargetMovingListener: FeedbackEdgeTargetMovingMouseListener;
@@ -79,7 +74,7 @@ export class EdgeEditTool extends BaseGLSPTool {
79
74
  // install feedback move mouse listener for client-side move updates
80
75
  this.feedbackEdgeSourceMovingListener = new FeedbackEdgeSourceMovingMouseListener(this.anchorRegistry);
81
76
  this.feedbackEdgeTargetMovingListener = new FeedbackEdgeTargetMovingMouseListener(this.anchorRegistry);
82
- this.feedbackMovingListener = new FeedbackEdgeRouteMovingMouseListener(this.edgeRouterRegistry);
77
+ this.feedbackMovingListener = new FeedbackEdgeRouteMovingMouseListener(this.edgeRouterRegistry, this.snapper);
83
78
  }
84
79
 
85
80
  registerFeedbackListeners(): void {
@@ -193,7 +188,7 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
193
188
  return this.routingHandle !== undefined;
194
189
  }
195
190
 
196
- mouseDown(target: SModelElement, event: MouseEvent): Action[] {
191
+ override mouseDown(target: SModelElement, event: MouseEvent): Action[] {
197
192
  const result: Action[] = super.mouseDown(target, event);
198
193
  if (event.button === 0) {
199
194
  const reconnectHandle = findParentByFeature(target, isReconnectHandle);
@@ -216,7 +211,7 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
216
211
  return result;
217
212
  }
218
213
 
219
- mouseMove(target: SModelElement, event: MouseEvent): Action[] {
214
+ override mouseMove(target: SModelElement, event: MouseEvent): Action[] {
220
215
  const result = super.mouseMove(target, event);
221
216
  if (this.isMouseDrag) {
222
217
  // reset any selected connectables when we are dragging, maybe the user is just panning
@@ -225,7 +220,7 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
225
220
  return result;
226
221
  }
227
222
 
228
- mouseUp(target: SModelElement, event: MouseEvent): Action[] {
223
+ override mouseUp(target: SModelElement, event: MouseEvent): Action[] {
229
224
  const result = super.mouseUp(target, event);
230
225
  if (!this.isReadyToReconnect() && !this.isReadyToReroute()) {
231
226
  return result;
@@ -239,7 +234,8 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
239
234
  }
240
235
  this.reset();
241
236
  } else if (this.edge && this.routingHandle) {
242
- // we need to re-retrieve the edge as it might have changed due to a server udpate since we do not reset the state between reroute actions
237
+ // we need to re-retrieve the edge as it might have changed due to a server update since we do not reset the state between
238
+ // reroute actions
243
239
  const latestEdge = target.index.getById(this.edge.id);
244
240
  if (latestEdge && isRoutable(latestEdge)) {
245
241
  result.push(new ChangeRoutingPointsOperation([{ elementId: latestEdge.id, newRoutingPoints: latestEdge.routingPoints }]));
@@ -249,15 +245,16 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
249
245
  return result;
250
246
  }
251
247
 
252
- mouseOver(target: SModelElement, event: MouseEvent): Action[] {
248
+ override mouseOver(target: SModelElement, event: MouseEvent): Action[] {
253
249
  if (this.edge && this.isReconnecting()) {
254
250
  const currentTarget = findParentByFeature(target, isConnectable);
255
251
  if (!this.newConnectable || currentTarget !== this.newConnectable) {
256
252
  this.setNewConnectable(currentTarget);
257
253
  if (currentTarget) {
258
- if ((this.reconnectMode === 'NEW_SOURCE' && currentTarget.canConnect(this.edge, 'source')) ||
259
- (this.reconnectMode === 'NEW_TARGET' && currentTarget.canConnect(this.edge, 'target'))) {
260
-
254
+ if (
255
+ (this.reconnectMode === 'NEW_SOURCE' && currentTarget.canConnect(this.edge, 'source')) ||
256
+ (this.reconnectMode === 'NEW_TARGET' && currentTarget.canConnect(this.edge, 'target'))
257
+ ) {
261
258
  this.tool.dispatchFeedback([cursorFeedbackAction(CursorCSS.EDGE_RECONNECT)]);
262
259
  return [];
263
260
  }
@@ -314,11 +311,7 @@ class EdgeEditListener extends DragAwareMouseListener implements SelectionListen
314
311
  if (this.edge) {
315
312
  result.push(new SwitchRoutingModeAction([], [this.edge.id]));
316
313
  }
317
- result.push(...[
318
- new HideEdgeReconnectHandlesFeedbackAction(),
319
- cursorFeedbackAction(),
320
- new RemoveFeedbackEdgeAction()
321
- ]);
314
+ result.push(...[new HideEdgeReconnectHandlesFeedbackAction(), cursorFeedbackAction(), new RemoveFeedbackEdgeAction()]);
322
315
  this.tool.deregisterFeedback(result);
323
316
  this.tool.deregisterFeedbackListeners();
324
317
  }