@eclipse-glsp/server 1.1.0-RC05

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 (618) hide show
  1. package/LICENSE +642 -0
  2. package/README.md +8 -0
  3. package/browser.d.ts +16 -0
  4. package/browser.js +18 -0
  5. package/lib/browser/di/app-module.d.ts +24 -0
  6. package/lib/browser/di/app-module.d.ts.map +1 -0
  7. package/lib/browser/di/app-module.js +55 -0
  8. package/lib/browser/di/app-module.js.map +1 -0
  9. package/lib/browser/di/console-logger.d.ts +29 -0
  10. package/lib/browser/di/console-logger.d.ts.map +1 -0
  11. package/lib/browser/di/console-logger.js +81 -0
  12. package/lib/browser/di/console-logger.js.map +1 -0
  13. package/lib/browser/index.d.ts +20 -0
  14. package/lib/browser/index.d.ts.map +1 -0
  15. package/lib/browser/index.js +36 -0
  16. package/lib/browser/index.js.map +1 -0
  17. package/lib/browser/launch/worker-server-launcher.d.ts +26 -0
  18. package/lib/browser/launch/worker-server-launcher.d.ts.map +1 -0
  19. package/lib/browser/launch/worker-server-launcher.js +65 -0
  20. package/lib/browser/launch/worker-server-launcher.js.map +1 -0
  21. package/lib/common/actions/action-dispatcher.d.ts +74 -0
  22. package/lib/common/actions/action-dispatcher.d.ts.map +1 -0
  23. package/lib/common/actions/action-dispatcher.js +128 -0
  24. package/lib/common/actions/action-dispatcher.js.map +1 -0
  25. package/lib/common/actions/action-dispatcher.spec.d.ts +2 -0
  26. package/lib/common/actions/action-dispatcher.spec.d.ts.map +1 -0
  27. package/lib/common/actions/action-dispatcher.spec.js +264 -0
  28. package/lib/common/actions/action-dispatcher.spec.js.map +1 -0
  29. package/lib/common/actions/action-handler-registry.d.ts +40 -0
  30. package/lib/common/actions/action-handler-registry.d.ts.map +1 -0
  31. package/lib/common/actions/action-handler-registry.js +65 -0
  32. package/lib/common/actions/action-handler-registry.js.map +1 -0
  33. package/lib/common/actions/action-handler-registry.spec.d.ts +2 -0
  34. package/lib/common/actions/action-handler-registry.spec.d.ts.map +1 -0
  35. package/lib/common/actions/action-handler-registry.spec.js +50 -0
  36. package/lib/common/actions/action-handler-registry.spec.js.map +1 -0
  37. package/lib/common/actions/action-handler.d.ts +55 -0
  38. package/lib/common/actions/action-handler.d.ts.map +1 -0
  39. package/lib/common/actions/action-handler.js +7 -0
  40. package/lib/common/actions/action-handler.js.map +1 -0
  41. package/lib/common/actions/client-action-handler.d.ts +30 -0
  42. package/lib/common/actions/client-action-handler.d.ts.map +1 -0
  43. package/lib/common/actions/client-action-handler.js +56 -0
  44. package/lib/common/actions/client-action-handler.js.map +1 -0
  45. package/lib/common/actions/global-action-provider.d.ts +30 -0
  46. package/lib/common/actions/global-action-provider.d.ts.map +1 -0
  47. package/lib/common/actions/global-action-provider.js +81 -0
  48. package/lib/common/actions/global-action-provider.js.map +1 -0
  49. package/lib/common/actions/global-action-provider.spec.d.ts +2 -0
  50. package/lib/common/actions/global-action-provider.spec.d.ts.map +1 -0
  51. package/lib/common/actions/global-action-provider.spec.js +70 -0
  52. package/lib/common/actions/global-action-provider.spec.js.map +1 -0
  53. package/lib/common/command/command-stack.d.ts +67 -0
  54. package/lib/common/command/command-stack.d.ts.map +1 -0
  55. package/lib/common/command/command-stack.js +117 -0
  56. package/lib/common/command/command-stack.js.map +1 -0
  57. package/lib/common/command/command-stack.spec.d.ts +2 -0
  58. package/lib/common/command/command-stack.spec.d.ts.map +1 -0
  59. package/lib/common/command/command-stack.spec.js +207 -0
  60. package/lib/common/command/command-stack.spec.js.map +1 -0
  61. package/lib/common/command/command.d.ts +63 -0
  62. package/lib/common/command/command.d.ts.map +1 -0
  63. package/lib/common/command/command.js +87 -0
  64. package/lib/common/command/command.js.map +1 -0
  65. package/lib/common/command/command.spec.d.ts +2 -0
  66. package/lib/common/command/command.spec.d.ts.map +1 -0
  67. package/lib/common/command/command.spec.js +86 -0
  68. package/lib/common/command/command.spec.js.map +1 -0
  69. package/lib/common/command/recording-command.d.ts +75 -0
  70. package/lib/common/command/recording-command.d.ts.map +1 -0
  71. package/lib/common/command/recording-command.js +99 -0
  72. package/lib/common/command/recording-command.js.map +1 -0
  73. package/lib/common/command/recording-command.spec.d.ts +17 -0
  74. package/lib/common/command/recording-command.spec.d.ts.map +1 -0
  75. package/lib/common/command/recording-command.spec.js +62 -0
  76. package/lib/common/command/recording-command.spec.js.map +1 -0
  77. package/lib/common/command/undo-redo-action-handler.d.ts +28 -0
  78. package/lib/common/command/undo-redo-action-handler.d.ts.map +1 -0
  79. package/lib/common/command/undo-redo-action-handler.js +72 -0
  80. package/lib/common/command/undo-redo-action-handler.js.map +1 -0
  81. package/lib/common/di/binding-target.d.ts +73 -0
  82. package/lib/common/di/binding-target.d.ts.map +1 -0
  83. package/lib/common/di/binding-target.js +143 -0
  84. package/lib/common/di/binding-target.js.map +1 -0
  85. package/lib/common/di/binding-target.spec.d.ts +2 -0
  86. package/lib/common/di/binding-target.spec.d.ts.map +1 -0
  87. package/lib/common/di/binding-target.spec.js +121 -0
  88. package/lib/common/di/binding-target.spec.js.map +1 -0
  89. package/lib/common/di/client-session-module.d.ts +19 -0
  90. package/lib/common/di/client-session-module.d.ts.map +1 -0
  91. package/lib/common/di/client-session-module.js +34 -0
  92. package/lib/common/di/client-session-module.js.map +1 -0
  93. package/lib/common/di/diagram-module.d.ts +130 -0
  94. package/lib/common/di/diagram-module.d.ts.map +1 -0
  95. package/lib/common/di/diagram-module.js +295 -0
  96. package/lib/common/di/diagram-module.js.map +1 -0
  97. package/lib/common/di/glsp-module.d.ts +47 -0
  98. package/lib/common/di/glsp-module.d.ts.map +1 -0
  99. package/lib/common/di/glsp-module.js +59 -0
  100. package/lib/common/di/glsp-module.js.map +1 -0
  101. package/lib/common/di/multi-binding.d.ts +41 -0
  102. package/lib/common/di/multi-binding.d.ts.map +1 -0
  103. package/lib/common/di/multi-binding.js +82 -0
  104. package/lib/common/di/multi-binding.js.map +1 -0
  105. package/lib/common/di/multi-bindings.spec.d.ts +2 -0
  106. package/lib/common/di/multi-bindings.spec.d.ts.map +1 -0
  107. package/lib/common/di/multi-bindings.spec.js +137 -0
  108. package/lib/common/di/multi-bindings.spec.js.map +1 -0
  109. package/lib/common/di/server-module.d.ts +73 -0
  110. package/lib/common/di/server-module.d.ts.map +1 -0
  111. package/lib/common/di/server-module.js +103 -0
  112. package/lib/common/di/server-module.js.map +1 -0
  113. package/lib/common/di/service-identifiers.d.ts +29 -0
  114. package/lib/common/di/service-identifiers.d.ts.map +1 -0
  115. package/lib/common/di/service-identifiers.js +14 -0
  116. package/lib/common/di/service-identifiers.js.map +1 -0
  117. package/lib/common/diagram/diagram-configuration.d.ts +89 -0
  118. package/lib/common/diagram/diagram-configuration.d.ts.map +1 -0
  119. package/lib/common/diagram/diagram-configuration.js +30 -0
  120. package/lib/common/diagram/diagram-configuration.js.map +1 -0
  121. package/lib/common/diagram/request-type-hints-action-handler.d.ts +25 -0
  122. package/lib/common/diagram/request-type-hints-action-handler.d.ts.map +1 -0
  123. package/lib/common/diagram/request-type-hints-action-handler.js +53 -0
  124. package/lib/common/diagram/request-type-hints-action-handler.js.map +1 -0
  125. package/lib/common/diagram/request-type-hints-action-handler.spec.d.ts +2 -0
  126. package/lib/common/diagram/request-type-hints-action-handler.spec.d.ts.map +1 -0
  127. package/lib/common/diagram/request-type-hints-action-handler.spec.js +57 -0
  128. package/lib/common/diagram/request-type-hints-action-handler.spec.js.map +1 -0
  129. package/lib/common/features/clipboard/request-clipboard-data-action-handler.d.ts +26 -0
  130. package/lib/common/features/clipboard/request-clipboard-data-action-handler.d.ts.map +1 -0
  131. package/lib/common/features/clipboard/request-clipboard-data-action-handler.js +61 -0
  132. package/lib/common/features/clipboard/request-clipboard-data-action-handler.js.map +1 -0
  133. package/lib/common/features/contextactions/command-palette-action-provider.d.ts +63 -0
  134. package/lib/common/features/contextactions/command-palette-action-provider.d.ts.map +1 -0
  135. package/lib/common/features/contextactions/command-palette-action-provider.js +72 -0
  136. package/lib/common/features/contextactions/command-palette-action-provider.js.map +1 -0
  137. package/lib/common/features/contextactions/context-actions-provider-registry.d.ts +12 -0
  138. package/lib/common/features/contextactions/context-actions-provider-registry.d.ts.map +1 -0
  139. package/lib/common/features/contextactions/context-actions-provider-registry.js +70 -0
  140. package/lib/common/features/contextactions/context-actions-provider-registry.js.map +1 -0
  141. package/lib/common/features/contextactions/context-actions-provider-registry.spec.d.ts +2 -0
  142. package/lib/common/features/contextactions/context-actions-provider-registry.spec.d.ts.map +1 -0
  143. package/lib/common/features/contextactions/context-actions-provider-registry.spec.js +34 -0
  144. package/lib/common/features/contextactions/context-actions-provider-registry.spec.js.map +1 -0
  145. package/lib/common/features/contextactions/context-actions-provider.d.ts +34 -0
  146. package/lib/common/features/contextactions/context-actions-provider.d.ts.map +1 -0
  147. package/lib/common/features/contextactions/context-actions-provider.js +5 -0
  148. package/lib/common/features/contextactions/context-actions-provider.js.map +1 -0
  149. package/lib/common/features/contextactions/context-menu-item-provider.d.ts +43 -0
  150. package/lib/common/features/contextactions/context-menu-item-provider.d.ts.map +1 -0
  151. package/lib/common/features/contextactions/context-menu-item-provider.js +36 -0
  152. package/lib/common/features/contextactions/context-menu-item-provider.js.map +1 -0
  153. package/lib/common/features/contextactions/request-context-actions-handler.d.ts +24 -0
  154. package/lib/common/features/contextactions/request-context-actions-handler.d.ts.map +1 -0
  155. package/lib/common/features/contextactions/request-context-actions-handler.js +53 -0
  156. package/lib/common/features/contextactions/request-context-actions-handler.js.map +1 -0
  157. package/lib/common/features/contextactions/request-context-actions-handler.spec.d.ts +2 -0
  158. package/lib/common/features/contextactions/request-context-actions-handler.spec.d.ts.map +1 -0
  159. package/lib/common/features/contextactions/request-context-actions-handler.spec.js +63 -0
  160. package/lib/common/features/contextactions/request-context-actions-handler.spec.js.map +1 -0
  161. package/lib/common/features/contextactions/tool-palette-item-provider.d.ts +50 -0
  162. package/lib/common/features/contextactions/tool-palette-item-provider.d.ts.map +1 -0
  163. package/lib/common/features/contextactions/tool-palette-item-provider.js +86 -0
  164. package/lib/common/features/contextactions/tool-palette-item-provider.js.map +1 -0
  165. package/lib/common/features/contextactions/tool-palette-item-provider.spec.d.ts +2 -0
  166. package/lib/common/features/contextactions/tool-palette-item-provider.spec.d.ts.map +1 -0
  167. package/lib/common/features/contextactions/tool-palette-item-provider.spec.js +48 -0
  168. package/lib/common/features/contextactions/tool-palette-item-provider.spec.js.map +1 -0
  169. package/lib/common/features/directediting/context-edit-validator-registry.d.ts +14 -0
  170. package/lib/common/features/directediting/context-edit-validator-registry.d.ts.map +1 -0
  171. package/lib/common/features/directediting/context-edit-validator-registry.js +57 -0
  172. package/lib/common/features/directediting/context-edit-validator-registry.js.map +1 -0
  173. package/lib/common/features/directediting/context-edit-validator-registry.spec.d.ts +2 -0
  174. package/lib/common/features/directediting/context-edit-validator-registry.spec.d.ts.map +1 -0
  175. package/lib/common/features/directediting/context-edit-validator-registry.spec.js +44 -0
  176. package/lib/common/features/directediting/context-edit-validator-registry.spec.js.map +1 -0
  177. package/lib/common/features/directediting/context-edit-validator.d.ts +25 -0
  178. package/lib/common/features/directediting/context-edit-validator.d.ts.map +1 -0
  179. package/lib/common/features/directediting/context-edit-validator.js +40 -0
  180. package/lib/common/features/directediting/context-edit-validator.js.map +1 -0
  181. package/lib/common/features/directediting/label-edit-validator.d.ts +32 -0
  182. package/lib/common/features/directediting/label-edit-validator.d.ts.map +1 -0
  183. package/lib/common/features/directediting/label-edit-validator.js +21 -0
  184. package/lib/common/features/directediting/label-edit-validator.js.map +1 -0
  185. package/lib/common/features/directediting/request-edit-validation-handler.d.ts +26 -0
  186. package/lib/common/features/directediting/request-edit-validation-handler.d.ts.map +1 -0
  187. package/lib/common/features/directediting/request-edit-validation-handler.js +61 -0
  188. package/lib/common/features/directediting/request-edit-validation-handler.js.map +1 -0
  189. package/lib/common/features/directediting/request-edit-validation-handler.spec.d.ts +2 -0
  190. package/lib/common/features/directediting/request-edit-validation-handler.spec.d.ts.map +1 -0
  191. package/lib/common/features/directediting/request-edit-validation-handler.spec.js +97 -0
  192. package/lib/common/features/directediting/request-edit-validation-handler.spec.js.map +1 -0
  193. package/lib/common/features/layout/computed-bounds-action-handler.d.ts +34 -0
  194. package/lib/common/features/layout/computed-bounds-action-handler.d.ts.map +1 -0
  195. package/lib/common/features/layout/computed-bounds-action-handler.js +55 -0
  196. package/lib/common/features/layout/computed-bounds-action-handler.js.map +1 -0
  197. package/lib/common/features/layout/layout-engine.d.ts +29 -0
  198. package/lib/common/features/layout/layout-engine.d.ts.map +1 -0
  199. package/lib/common/features/layout/layout-engine.js +20 -0
  200. package/lib/common/features/layout/layout-engine.js.map +1 -0
  201. package/lib/common/features/layout/layout-operation-handler.d.ts +37 -0
  202. package/lib/common/features/layout/layout-operation-handler.d.ts.map +1 -0
  203. package/lib/common/features/layout/layout-operation-handler.js +82 -0
  204. package/lib/common/features/layout/layout-operation-handler.js.map +1 -0
  205. package/lib/common/features/model/gmodel-factory.d.ts +39 -0
  206. package/lib/common/features/model/gmodel-factory.d.ts.map +1 -0
  207. package/lib/common/features/model/gmodel-factory.js +39 -0
  208. package/lib/common/features/model/gmodel-factory.js.map +1 -0
  209. package/lib/common/features/model/gmodel-index.d.ts +107 -0
  210. package/lib/common/features/model/gmodel-index.d.ts.map +1 -0
  211. package/lib/common/features/model/gmodel-index.js +193 -0
  212. package/lib/common/features/model/gmodel-index.js.map +1 -0
  213. package/lib/common/features/model/gmodel-serializer.d.ts +67 -0
  214. package/lib/common/features/model/gmodel-serializer.d.ts.map +1 -0
  215. package/lib/common/features/model/gmodel-serializer.js +143 -0
  216. package/lib/common/features/model/gmodel-serializer.js.map +1 -0
  217. package/lib/common/features/model/gmodel-serializer.spec.d.ts +2 -0
  218. package/lib/common/features/model/gmodel-serializer.spec.d.ts.map +1 -0
  219. package/lib/common/features/model/gmodel-serializer.spec.js +124 -0
  220. package/lib/common/features/model/gmodel-serializer.spec.js.map +1 -0
  221. package/lib/common/features/model/model-state.d.ts +51 -0
  222. package/lib/common/features/model/model-state.d.ts.map +1 -0
  223. package/lib/common/features/model/model-state.js +74 -0
  224. package/lib/common/features/model/model-state.js.map +1 -0
  225. package/lib/common/features/model/model-submission-handler.d.ts +58 -0
  226. package/lib/common/features/model/model-submission-handler.d.ts.map +1 -0
  227. package/lib/common/features/model/model-submission-handler.js +102 -0
  228. package/lib/common/features/model/model-submission-handler.js.map +1 -0
  229. package/lib/common/features/model/request-model-action-handler.d.ts +37 -0
  230. package/lib/common/features/model/request-model-action-handler.d.ts.map +1 -0
  231. package/lib/common/features/model/request-model-action-handler.js +83 -0
  232. package/lib/common/features/model/request-model-action-handler.js.map +1 -0
  233. package/lib/common/features/model/save-model-action-handler.d.ts +26 -0
  234. package/lib/common/features/model/save-model-action-handler.d.ts.map +1 -0
  235. package/lib/common/features/model/save-model-action-handler.js +54 -0
  236. package/lib/common/features/model/save-model-action-handler.js.map +1 -0
  237. package/lib/common/features/model/source-model-storage.d.ts +47 -0
  238. package/lib/common/features/model/source-model-storage.d.ts.map +1 -0
  239. package/lib/common/features/model/source-model-storage.js +5 -0
  240. package/lib/common/features/model/source-model-storage.js.map +1 -0
  241. package/lib/common/features/navigation/json-opener-options.d.ts +36 -0
  242. package/lib/common/features/navigation/json-opener-options.d.ts.map +1 -0
  243. package/lib/common/features/navigation/json-opener-options.js +60 -0
  244. package/lib/common/features/navigation/json-opener-options.js.map +1 -0
  245. package/lib/common/features/navigation/navigation-target-provider-registry.d.ts +12 -0
  246. package/lib/common/features/navigation/navigation-target-provider-registry.d.ts.map +1 -0
  247. package/lib/common/features/navigation/navigation-target-provider-registry.js +47 -0
  248. package/lib/common/features/navigation/navigation-target-provider-registry.js.map +1 -0
  249. package/lib/common/features/navigation/navigation-target-provider.d.ts +48 -0
  250. package/lib/common/features/navigation/navigation-target-provider.d.ts.map +1 -0
  251. package/lib/common/features/navigation/navigation-target-provider.js +5 -0
  252. package/lib/common/features/navigation/navigation-target-provider.js.map +1 -0
  253. package/lib/common/features/navigation/navigation-target-resolution.d.ts +23 -0
  254. package/lib/common/features/navigation/navigation-target-resolution.d.ts.map +1 -0
  255. package/lib/common/features/navigation/navigation-target-resolution.js +12 -0
  256. package/lib/common/features/navigation/navigation-target-resolution.js.map +1 -0
  257. package/lib/common/features/navigation/navigation-target-resolver.d.ts +31 -0
  258. package/lib/common/features/navigation/navigation-target-resolver.d.ts.map +1 -0
  259. package/lib/common/features/navigation/navigation-target-resolver.js +49 -0
  260. package/lib/common/features/navigation/navigation-target-resolver.js.map +1 -0
  261. package/lib/common/features/navigation/request-navigation-targets-action-handler.d.ts +24 -0
  262. package/lib/common/features/navigation/request-navigation-targets-action-handler.d.ts.map +1 -0
  263. package/lib/common/features/navigation/request-navigation-targets-action-handler.js +55 -0
  264. package/lib/common/features/navigation/request-navigation-targets-action-handler.js.map +1 -0
  265. package/lib/common/features/navigation/resolve-navigation-targets-action-handler.d.ts +26 -0
  266. package/lib/common/features/navigation/resolve-navigation-targets-action-handler.d.ts.map +1 -0
  267. package/lib/common/features/navigation/resolve-navigation-targets-action-handler.js +59 -0
  268. package/lib/common/features/navigation/resolve-navigation-targets-action-handler.js.map +1 -0
  269. package/lib/common/features/popup/popup-model-factory.d.ts +36 -0
  270. package/lib/common/features/popup/popup-model-factory.d.ts.map +1 -0
  271. package/lib/common/features/popup/popup-model-factory.js +20 -0
  272. package/lib/common/features/popup/popup-model-factory.js.map +1 -0
  273. package/lib/common/features/popup/request-popup-model-action-handler.d.ts +31 -0
  274. package/lib/common/features/popup/request-popup-model-action-handler.d.ts.map +1 -0
  275. package/lib/common/features/popup/request-popup-model-action-handler.js +77 -0
  276. package/lib/common/features/popup/request-popup-model-action-handler.js.map +1 -0
  277. package/lib/common/features/validation/model-validator.d.ts +33 -0
  278. package/lib/common/features/validation/model-validator.d.ts.map +1 -0
  279. package/lib/common/features/validation/model-validator.js +5 -0
  280. package/lib/common/features/validation/model-validator.js.map +1 -0
  281. package/lib/common/features/validation/request-markers-handler.d.ts +11 -0
  282. package/lib/common/features/validation/request-markers-handler.d.ts.map +1 -0
  283. package/lib/common/features/validation/request-markers-handler.js +70 -0
  284. package/lib/common/features/validation/request-markers-handler.js.map +1 -0
  285. package/lib/common/gmodel/apply-label-edit-operation-handler.d.ts +8 -0
  286. package/lib/common/gmodel/apply-label-edit-operation-handler.d.ts.map +1 -0
  287. package/lib/common/gmodel/apply-label-edit-operation-handler.js +46 -0
  288. package/lib/common/gmodel/apply-label-edit-operation-handler.js.map +1 -0
  289. package/lib/common/gmodel/change-bounds-operation-handler.d.ts +13 -0
  290. package/lib/common/gmodel/change-bounds-operation-handler.d.ts.map +1 -0
  291. package/lib/common/gmodel/change-bounds-operation-handler.js +71 -0
  292. package/lib/common/gmodel/change-bounds-operation-handler.js.map +1 -0
  293. package/lib/common/gmodel/change-routing-points-operation-handler.d.ts +24 -0
  294. package/lib/common/gmodel/change-routing-points-operation-handler.d.ts.map +1 -0
  295. package/lib/common/gmodel/change-routing-points-operation-handler.js +50 -0
  296. package/lib/common/gmodel/change-routing-points-operation-handler.js.map +1 -0
  297. package/lib/common/gmodel/cut-operation-handler.d.ts +26 -0
  298. package/lib/common/gmodel/cut-operation-handler.d.ts.map +1 -0
  299. package/lib/common/gmodel/cut-operation-handler.js +55 -0
  300. package/lib/common/gmodel/cut-operation-handler.js.map +1 -0
  301. package/lib/common/gmodel/delete-operation-handler.d.ts +32 -0
  302. package/lib/common/gmodel/delete-operation-handler.d.ts.map +1 -0
  303. package/lib/common/gmodel/delete-operation-handler.js +119 -0
  304. package/lib/common/gmodel/delete-operation-handler.js.map +1 -0
  305. package/lib/common/gmodel/gmodel-create-edge-operation-handler.d.ts +35 -0
  306. package/lib/common/gmodel/gmodel-create-edge-operation-handler.d.ts.map +1 -0
  307. package/lib/common/gmodel/gmodel-create-edge-operation-handler.js +64 -0
  308. package/lib/common/gmodel/gmodel-create-edge-operation-handler.js.map +1 -0
  309. package/lib/common/gmodel/gmodel-create-node-operation-handler.d.ts +58 -0
  310. package/lib/common/gmodel/gmodel-create-node-operation-handler.d.ts.map +1 -0
  311. package/lib/common/gmodel/gmodel-create-node-operation-handler.js +100 -0
  312. package/lib/common/gmodel/gmodel-create-node-operation-handler.js.map +1 -0
  313. package/lib/common/gmodel/gmodel-diagram-module.d.ts +31 -0
  314. package/lib/common/gmodel/gmodel-diagram-module.d.ts.map +1 -0
  315. package/lib/common/gmodel/gmodel-diagram-module.js +80 -0
  316. package/lib/common/gmodel/gmodel-diagram-module.js.map +1 -0
  317. package/lib/common/gmodel/gmodel-operation-handler.d.ts +23 -0
  318. package/lib/common/gmodel/gmodel-operation-handler.d.ts.map +1 -0
  319. package/lib/common/gmodel/gmodel-operation-handler.js +43 -0
  320. package/lib/common/gmodel/gmodel-operation-handler.js.map +1 -0
  321. package/lib/common/gmodel/index.d.ts +27 -0
  322. package/lib/common/gmodel/index.d.ts.map +1 -0
  323. package/lib/common/gmodel/index.js +43 -0
  324. package/lib/common/gmodel/index.js.map +1 -0
  325. package/lib/common/gmodel/paste-operation-handler.d.ts +36 -0
  326. package/lib/common/gmodel/paste-operation-handler.d.ts.map +1 -0
  327. package/lib/common/gmodel/paste-operation-handler.js +136 -0
  328. package/lib/common/gmodel/paste-operation-handler.js.map +1 -0
  329. package/lib/common/gmodel/reconnect-edge-operation-handler.d.ts +9 -0
  330. package/lib/common/gmodel/reconnect-edge-operation-handler.d.ts.map +1 -0
  331. package/lib/common/gmodel/reconnect-edge-operation-handler.js +64 -0
  332. package/lib/common/gmodel/reconnect-edge-operation-handler.js.map +1 -0
  333. package/lib/common/index.d.ts +89 -0
  334. package/lib/common/index.d.ts.map +1 -0
  335. package/lib/common/index.js +105 -0
  336. package/lib/common/index.js.map +1 -0
  337. package/lib/common/launch/glsp-server-launcher.d.ts +34 -0
  338. package/lib/common/launch/glsp-server-launcher.d.ts.map +1 -0
  339. package/lib/common/launch/glsp-server-launcher.js +64 -0
  340. package/lib/common/launch/glsp-server-launcher.js.map +1 -0
  341. package/lib/common/operations/compound-operation-handler.d.ts +25 -0
  342. package/lib/common/operations/compound-operation-handler.d.ts.map +1 -0
  343. package/lib/common/operations/compound-operation-handler.js +82 -0
  344. package/lib/common/operations/compound-operation-handler.js.map +1 -0
  345. package/lib/common/operations/create-operation-handler.d.ts +32 -0
  346. package/lib/common/operations/create-operation-handler.d.ts.map +1 -0
  347. package/lib/common/operations/create-operation-handler.js +31 -0
  348. package/lib/common/operations/create-operation-handler.js.map +1 -0
  349. package/lib/common/operations/operation-action-handler.d.ts +42 -0
  350. package/lib/common/operations/operation-action-handler.d.ts.map +1 -0
  351. package/lib/common/operations/operation-action-handler.js +109 -0
  352. package/lib/common/operations/operation-action-handler.js.map +1 -0
  353. package/lib/common/operations/operation-handler-registry.d.ts +38 -0
  354. package/lib/common/operations/operation-handler-registry.d.ts.map +1 -0
  355. package/lib/common/operations/operation-handler-registry.js +87 -0
  356. package/lib/common/operations/operation-handler-registry.js.map +1 -0
  357. package/lib/common/operations/operation-handler-registry.spec.d.ts +2 -0
  358. package/lib/common/operations/operation-handler-registry.spec.d.ts.map +1 -0
  359. package/lib/common/operations/operation-handler-registry.spec.js +50 -0
  360. package/lib/common/operations/operation-handler-registry.spec.js.map +1 -0
  361. package/lib/common/operations/operation-handler.d.ts +67 -0
  362. package/lib/common/operations/operation-handler.d.ts.map +1 -0
  363. package/lib/common/operations/operation-handler.js +56 -0
  364. package/lib/common/operations/operation-handler.js.map +1 -0
  365. package/lib/common/protocol/glsp-client-proxy.d.ts +45 -0
  366. package/lib/common/protocol/glsp-client-proxy.d.ts.map +1 -0
  367. package/lib/common/protocol/glsp-client-proxy.js +53 -0
  368. package/lib/common/protocol/glsp-client-proxy.js.map +1 -0
  369. package/lib/common/protocol/glsp-server-listener.d.ts +37 -0
  370. package/lib/common/protocol/glsp-server-listener.d.ts.map +1 -0
  371. package/lib/common/protocol/glsp-server-listener.js +5 -0
  372. package/lib/common/protocol/glsp-server-listener.js.map +1 -0
  373. package/lib/common/protocol/glsp-server.d.ts +150 -0
  374. package/lib/common/protocol/glsp-server.d.ts.map +1 -0
  375. package/lib/common/protocol/glsp-server.js +188 -0
  376. package/lib/common/protocol/glsp-server.js.map +1 -0
  377. package/lib/common/protocol/glsp-server.spec.d.ts +2 -0
  378. package/lib/common/protocol/glsp-server.spec.d.ts.map +1 -0
  379. package/lib/common/protocol/glsp-server.spec.js +119 -0
  380. package/lib/common/protocol/glsp-server.spec.js.map +1 -0
  381. package/lib/common/session/client-session-factory.d.ts +42 -0
  382. package/lib/common/session/client-session-factory.d.ts.map +1 -0
  383. package/lib/common/session/client-session-factory.js +54 -0
  384. package/lib/common/session/client-session-factory.js.map +1 -0
  385. package/lib/common/session/client-session-factory.spec.d.ts +2 -0
  386. package/lib/common/session/client-session-factory.spec.d.ts.map +1 -0
  387. package/lib/common/session/client-session-factory.spec.js +56 -0
  388. package/lib/common/session/client-session-factory.spec.js.map +1 -0
  389. package/lib/common/session/client-session-initializer.d.ts +26 -0
  390. package/lib/common/session/client-session-initializer.d.ts.map +1 -0
  391. package/lib/common/session/client-session-initializer.js +5 -0
  392. package/lib/common/session/client-session-initializer.js.map +1 -0
  393. package/lib/common/session/client-session-listener.d.ts +40 -0
  394. package/lib/common/session/client-session-listener.d.ts.map +1 -0
  395. package/lib/common/session/client-session-listener.js +3 -0
  396. package/lib/common/session/client-session-listener.js.map +1 -0
  397. package/lib/common/session/client-session-manager.d.ts +102 -0
  398. package/lib/common/session/client-session-manager.d.ts.map +1 -0
  399. package/lib/common/session/client-session-manager.js +116 -0
  400. package/lib/common/session/client-session-manager.js.map +1 -0
  401. package/lib/common/session/client-session-manager.spec.d.ts +2 -0
  402. package/lib/common/session/client-session-manager.spec.d.ts.map +1 -0
  403. package/lib/common/session/client-session-manager.spec.js +74 -0
  404. package/lib/common/session/client-session-manager.spec.js.map +1 -0
  405. package/lib/common/session/client-session.d.ts +52 -0
  406. package/lib/common/session/client-session.d.ts.map +1 -0
  407. package/lib/common/session/client-session.js +34 -0
  408. package/lib/common/session/client-session.js.map +1 -0
  409. package/lib/common/test/mock-util.d.ts +117 -0
  410. package/lib/common/test/mock-util.d.ts.map +1 -0
  411. package/lib/common/test/mock-util.js +194 -0
  412. package/lib/common/test/mock-util.js.map +1 -0
  413. package/lib/common/utils/args-util.d.ts +38 -0
  414. package/lib/common/utils/args-util.d.ts.map +1 -0
  415. package/lib/common/utils/args-util.js +81 -0
  416. package/lib/common/utils/args-util.js.map +1 -0
  417. package/lib/common/utils/client-options-util.d.ts +20 -0
  418. package/lib/common/utils/client-options-util.d.ts.map +1 -0
  419. package/lib/common/utils/client-options-util.js +26 -0
  420. package/lib/common/utils/client-options-util.js.map +1 -0
  421. package/lib/common/utils/glsp-server-error.d.ts +21 -0
  422. package/lib/common/utils/glsp-server-error.d.ts.map +1 -0
  423. package/lib/common/utils/glsp-server-error.js +33 -0
  424. package/lib/common/utils/glsp-server-error.js.map +1 -0
  425. package/lib/common/utils/layout-util.d.ts +74 -0
  426. package/lib/common/utils/layout-util.d.ts.map +1 -0
  427. package/lib/common/utils/layout-util.js +166 -0
  428. package/lib/common/utils/layout-util.js.map +1 -0
  429. package/lib/common/utils/logger.d.ts +27 -0
  430. package/lib/common/utils/logger.d.ts.map +1 -0
  431. package/lib/common/utils/logger.js +67 -0
  432. package/lib/common/utils/logger.js.map +1 -0
  433. package/lib/common/utils/promise-queue.d.ts +48 -0
  434. package/lib/common/utils/promise-queue.d.ts.map +1 -0
  435. package/lib/common/utils/promise-queue.js +93 -0
  436. package/lib/common/utils/promise-queue.js.map +1 -0
  437. package/lib/common/utils/promise-queue.spec.d.ts +2 -0
  438. package/lib/common/utils/promise-queue.spec.d.ts.map +1 -0
  439. package/lib/common/utils/promise-queue.spec.js +117 -0
  440. package/lib/common/utils/promise-queue.spec.js.map +1 -0
  441. package/lib/common/utils/registry.d.ts +73 -0
  442. package/lib/common/utils/registry.d.ts.map +1 -0
  443. package/lib/common/utils/registry.js +160 -0
  444. package/lib/common/utils/registry.js.map +1 -0
  445. package/lib/common/utils/registry.spec.d.ts +2 -0
  446. package/lib/common/utils/registry.spec.d.ts.map +1 -0
  447. package/lib/common/utils/registry.spec.js +199 -0
  448. package/lib/common/utils/registry.spec.js.map +1 -0
  449. package/lib/node/abstract-json-model-storage.d.ts +45 -0
  450. package/lib/node/abstract-json-model-storage.d.ts.map +1 -0
  451. package/lib/node/abstract-json-model-storage.js +103 -0
  452. package/lib/node/abstract-json-model-storage.js.map +1 -0
  453. package/lib/node/di/app-module.d.ts +36 -0
  454. package/lib/node/di/app-module.d.ts.map +1 -0
  455. package/lib/node/di/app-module.js +91 -0
  456. package/lib/node/di/app-module.js.map +1 -0
  457. package/lib/node/di/winston-logger.d.ts +32 -0
  458. package/lib/node/di/winston-logger.d.ts.map +1 -0
  459. package/lib/node/di/winston-logger.js +57 -0
  460. package/lib/node/di/winston-logger.js.map +1 -0
  461. package/lib/node/gmodel/gmodel-storage.d.ts +34 -0
  462. package/lib/node/gmodel/gmodel-storage.d.ts.map +1 -0
  463. package/lib/node/gmodel/gmodel-storage.js +68 -0
  464. package/lib/node/gmodel/gmodel-storage.js.map +1 -0
  465. package/lib/node/index.d.ts +24 -0
  466. package/lib/node/index.d.ts.map +1 -0
  467. package/lib/node/index.js +40 -0
  468. package/lib/node/index.js.map +1 -0
  469. package/lib/node/launch/cli-parser.d.ts +34 -0
  470. package/lib/node/launch/cli-parser.d.ts.map +1 -0
  471. package/lib/node/launch/cli-parser.js +71 -0
  472. package/lib/node/launch/cli-parser.js.map +1 -0
  473. package/lib/node/launch/cli-parser.spec.d.ts +2 -0
  474. package/lib/node/launch/cli-parser.spec.d.ts.map +1 -0
  475. package/lib/node/launch/cli-parser.spec.js +56 -0
  476. package/lib/node/launch/cli-parser.spec.js.map +1 -0
  477. package/lib/node/launch/socket-cli-parser.d.ts +9 -0
  478. package/lib/node/launch/socket-cli-parser.d.ts.map +1 -0
  479. package/lib/node/launch/socket-cli-parser.js +43 -0
  480. package/lib/node/launch/socket-cli-parser.js.map +1 -0
  481. package/lib/node/launch/socket-cli-parser.spec.d.ts +2 -0
  482. package/lib/node/launch/socket-cli-parser.spec.d.ts.map +1 -0
  483. package/lib/node/launch/socket-cli-parser.spec.js +66 -0
  484. package/lib/node/launch/socket-cli-parser.spec.js.map +1 -0
  485. package/lib/node/launch/socket-server-launcher.d.ts +34 -0
  486. package/lib/node/launch/socket-server-launcher.d.ts.map +1 -0
  487. package/lib/node/launch/socket-server-launcher.js +104 -0
  488. package/lib/node/launch/socket-server-launcher.js.map +1 -0
  489. package/lib/node/launch/socket-server-launcher.spec.d.ts +17 -0
  490. package/lib/node/launch/socket-server-launcher.spec.d.ts.map +1 -0
  491. package/lib/node/launch/socket-server-launcher.spec.js +70 -0
  492. package/lib/node/launch/socket-server-launcher.spec.js.map +1 -0
  493. package/node.d.ts +16 -0
  494. package/node.js +18 -0
  495. package/package.json +77 -0
  496. package/src/browser/di/app-module.ts +55 -0
  497. package/src/browser/di/console-logger.ts +71 -0
  498. package/src/browser/index.ts +19 -0
  499. package/src/browser/launch/worker-server-launcher.ts +58 -0
  500. package/src/common/actions/action-dispatcher.spec.ts +290 -0
  501. package/src/common/actions/action-dispatcher.ts +152 -0
  502. package/src/common/actions/action-handler-registry.spec.ts +52 -0
  503. package/src/common/actions/action-handler-registry.ts +60 -0
  504. package/src/common/actions/action-handler.ts +62 -0
  505. package/src/common/actions/client-action-handler.ts +50 -0
  506. package/src/common/actions/global-action-provider.spec.ts +79 -0
  507. package/src/common/actions/global-action-provider.ts +72 -0
  508. package/src/common/command/command-stack.spec.ts +239 -0
  509. package/src/common/command/command-stack.ts +159 -0
  510. package/src/common/command/command.spec.ts +93 -0
  511. package/src/common/command/command.ts +124 -0
  512. package/src/common/command/recording-command.spec.ts +74 -0
  513. package/src/common/command/recording-command.ts +119 -0
  514. package/src/common/command/undo-redo-action-handler.ts +57 -0
  515. package/src/common/di/binding-target.spec.ts +147 -0
  516. package/src/common/di/binding-target.ts +188 -0
  517. package/src/common/di/client-session-module.ts +29 -0
  518. package/src/common/di/diagram-module.ts +410 -0
  519. package/src/common/di/glsp-module.ts +66 -0
  520. package/src/common/di/multi-binding.ts +89 -0
  521. package/src/common/di/multi-bindings.spec.ts +133 -0
  522. package/src/common/di/server-module.ts +131 -0
  523. package/src/common/di/service-identifiers.ts +39 -0
  524. package/src/common/diagram/diagram-configuration.ts +97 -0
  525. package/src/common/diagram/request-type-hints-action-handler.spec.ts +59 -0
  526. package/src/common/diagram/request-type-hints-action-handler.ts +36 -0
  527. package/src/common/features/clipboard/request-clipboard-data-action-handler.ts +51 -0
  528. package/src/common/features/contextactions/command-palette-action-provider.ts +94 -0
  529. package/src/common/features/contextactions/context-actions-provider-registry.spec.ts +69 -0
  530. package/src/common/features/contextactions/context-actions-provider-registry.ts +47 -0
  531. package/src/common/features/contextactions/context-actions-provider.ts +36 -0
  532. package/src/common/features/contextactions/context-menu-item-provider.ts +52 -0
  533. package/src/common/features/contextactions/request-context-actions-handler.spec.ts +75 -0
  534. package/src/common/features/contextactions/request-context-actions-handler.ts +37 -0
  535. package/src/common/features/contextactions/tool-palette-item-provider.spec.ts +46 -0
  536. package/src/common/features/contextactions/tool-palette-item-provider.ts +88 -0
  537. package/src/common/features/directediting/context-edit-validator-registry.spec.ts +54 -0
  538. package/src/common/features/directediting/context-edit-validator-registry.ts +43 -0
  539. package/src/common/features/directediting/context-edit-validator.ts +55 -0
  540. package/src/common/features/directediting/label-edit-validator.ts +35 -0
  541. package/src/common/features/directediting/request-edit-validation-handler.spec.ts +131 -0
  542. package/src/common/features/directediting/request-edit-validation-handler.ts +43 -0
  543. package/src/common/features/layout/computed-bounds-action-handler.ts +56 -0
  544. package/src/common/features/layout/layout-engine.ts +31 -0
  545. package/src/common/features/layout/layout-operation-handler.ts +62 -0
  546. package/src/common/features/model/gmodel-factory.ts +60 -0
  547. package/src/common/features/model/gmodel-index.ts +195 -0
  548. package/src/common/features/model/gmodel-serializer.spec.ts +141 -0
  549. package/src/common/features/model/gmodel-serializer.ts +175 -0
  550. package/src/common/features/model/model-state.ts +98 -0
  551. package/src/common/features/model/model-submission-handler.ts +110 -0
  552. package/src/common/features/model/request-model-action-handler.ts +67 -0
  553. package/src/common/features/model/save-model-action-handler.ts +37 -0
  554. package/src/common/features/model/source-model-storage.ts +49 -0
  555. package/src/common/features/navigation/json-opener-options.ts +69 -0
  556. package/src/common/features/navigation/navigation-target-provider-registry.ts +36 -0
  557. package/src/common/features/navigation/navigation-target-provider.ts +50 -0
  558. package/src/common/features/navigation/navigation-target-resolution.ts +22 -0
  559. package/src/common/features/navigation/navigation-target-resolver.ts +61 -0
  560. package/src/common/features/navigation/request-navigation-targets-action-handler.ts +39 -0
  561. package/src/common/features/navigation/resolve-navigation-targets-action-handler.ts +42 -0
  562. package/src/common/features/popup/popup-model-factory.ts +38 -0
  563. package/src/common/features/popup/request-popup-model-action-handler.ts +60 -0
  564. package/src/common/features/validation/model-validator.ts +34 -0
  565. package/src/common/features/validation/request-markers-handler.ts +51 -0
  566. package/src/common/gmodel/README.md +7 -0
  567. package/src/common/gmodel/apply-label-edit-operation-handler.ts +36 -0
  568. package/src/common/gmodel/change-bounds-operation-handler.ts +62 -0
  569. package/src/common/gmodel/change-routing-points-operation-handler.ts +40 -0
  570. package/src/common/gmodel/cut-operation-handler.ts +39 -0
  571. package/src/common/gmodel/delete-operation-handler.ts +121 -0
  572. package/src/common/gmodel/gmodel-create-edge-operation-handler.ts +64 -0
  573. package/src/common/gmodel/gmodel-create-node-operation-handler.ts +95 -0
  574. package/src/common/gmodel/gmodel-diagram-module.ts +76 -0
  575. package/src/common/gmodel/gmodel-operation-handler.ts +31 -0
  576. package/src/common/gmodel/index.ts +27 -0
  577. package/src/common/gmodel/paste-operation-handler.ts +127 -0
  578. package/src/common/gmodel/reconnect-edge-operation-handler.ts +56 -0
  579. package/src/common/index.ts +89 -0
  580. package/src/common/launch/glsp-server-launcher.ts +70 -0
  581. package/src/common/operations/compound-operation-handler.ts +40 -0
  582. package/src/common/operations/create-operation-handler.ts +49 -0
  583. package/src/common/operations/operation-action-handler.ts +93 -0
  584. package/src/common/operations/operation-handler-registry.spec.ts +50 -0
  585. package/src/common/operations/operation-handler-registry.ts +66 -0
  586. package/src/common/operations/operation-handler.ts +82 -0
  587. package/src/common/protocol/glsp-client-proxy.ts +65 -0
  588. package/src/common/protocol/glsp-server-listener.ts +39 -0
  589. package/src/common/protocol/glsp-server.spec.ts +150 -0
  590. package/src/common/protocol/glsp-server.ts +320 -0
  591. package/src/common/session/client-session-factory.spec.ts +60 -0
  592. package/src/common/session/client-session-factory.ts +70 -0
  593. package/src/common/session/client-session-initializer.ts +27 -0
  594. package/src/common/session/client-session-listener.ts +41 -0
  595. package/src/common/session/client-session-manager.spec.ts +82 -0
  596. package/src/common/session/client-session-manager.ts +182 -0
  597. package/src/common/session/client-session.ts +62 -0
  598. package/src/common/test/mock-util.ts +241 -0
  599. package/src/common/utils/args-util.ts +98 -0
  600. package/src/common/utils/client-options-util.ts +22 -0
  601. package/src/common/utils/glsp-server-error.ts +27 -0
  602. package/src/common/utils/layout-util.ts +164 -0
  603. package/src/common/utils/logger.ts +72 -0
  604. package/src/common/utils/promise-queue.spec.ts +138 -0
  605. package/src/common/utils/promise-queue.ts +103 -0
  606. package/src/common/utils/registry.spec.ts +223 -0
  607. package/src/common/utils/registry.ts +154 -0
  608. package/src/node/abstract-json-model-storage.ts +114 -0
  609. package/src/node/di/app-module.ts +102 -0
  610. package/src/node/di/winston-logger.ts +76 -0
  611. package/src/node/gmodel/gmodel-storage.ts +53 -0
  612. package/src/node/index.ts +23 -0
  613. package/src/node/launch/cli-parser.spec.ts +61 -0
  614. package/src/node/launch/cli-parser.ts +86 -0
  615. package/src/node/launch/socket-cli-parser.spec.ts +73 -0
  616. package/src/node/launch/socket-cli-parser.ts +52 -0
  617. package/src/node/launch/socket-server-launcher.spec.ts +68 -0
  618. package/src/node/launch/socket-server-launcher.ts +90 -0
@@ -0,0 +1,51 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics 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 {
17
+ Action,
18
+ ClipboardData,
19
+ MaybePromise,
20
+ RequestClipboardDataAction,
21
+ SetClipboardDataAction,
22
+ SModelElementSchema
23
+ } from '@eclipse-glsp/protocol';
24
+ import { inject, injectable } from 'inversify';
25
+ import { ActionHandler } from '../../actions/action-handler';
26
+ import { GModelSerializer } from '../model/gmodel-serializer';
27
+ import { ModelState } from '../model/model-state';
28
+
29
+ @injectable()
30
+ export class RequestClipboardDataActionHandler implements ActionHandler {
31
+ actionKinds = [RequestClipboardDataAction.KIND];
32
+
33
+ @inject(ModelState)
34
+ protected modelState: ModelState;
35
+
36
+ @inject(GModelSerializer)
37
+ protected modelSerializer: GModelSerializer;
38
+
39
+ execute(action: RequestClipboardDataAction): MaybePromise<Action[]> {
40
+ const schemas: SModelElementSchema[] = [];
41
+ const index = this.modelState.index;
42
+ const selectedElements = index.getAll(action.editorContext.selectedElementIds);
43
+ const clipboardData: ClipboardData = { format: 'application/json' };
44
+ selectedElements.forEach(element => {
45
+ schemas.push(this.modelSerializer.createSchema(element));
46
+ });
47
+ // eslint-disable-next-line no-null/no-null
48
+ clipboardData['application/json'] = JSON.stringify(schemas, undefined, 2);
49
+ return [SetClipboardDataAction.create(clipboardData)];
50
+ }
51
+ }
@@ -0,0 +1,94 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics 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 { GModelElement } from '@eclipse-glsp/graph';
17
+ import { Args, EditorContext, LabeledAction, Point } from '@eclipse-glsp/protocol';
18
+ import { inject, injectable } from 'inversify';
19
+ import { ModelState } from '../model/model-state';
20
+ import { ContextActionsProvider } from './context-actions-provider';
21
+
22
+ /**
23
+ * A {@link ContextActionsProvider} for CommandPaletteActions.
24
+ */
25
+ @injectable()
26
+ export abstract class CommandPaletteActionProvider implements ContextActionsProvider {
27
+ @inject(ModelState)
28
+ protected modelState: ModelState;
29
+
30
+ readonly TEXT = 'text';
31
+ readonly INDEX = 'index';
32
+
33
+ /**
34
+ * Returns the context id of the provider.
35
+ */
36
+ get contextId(): string {
37
+ return 'command-palette';
38
+ }
39
+
40
+ /**
41
+ * Retrieves the value for the "text" key from the given arguments {@link Args}.
42
+ *
43
+ * @param args The given arguments.
44
+ * @returns The value associated with the "text" key.
45
+ */
46
+ getText(args: Args): string {
47
+ return args[this.TEXT] ? args[this.TEXT].toString() : '';
48
+ }
49
+
50
+ /**
51
+ * Returns the value of the "index" key from a given {@link Args}.
52
+ *
53
+ * @param args The given arguments.
54
+ * @returns The value associated with the "index" key.
55
+ */
56
+ getIndex(args: Args): number {
57
+ return args[this.INDEX] ? (args[this.INDEX] as number) : 0.0;
58
+ }
59
+
60
+ /**
61
+ * Returns a list of {@link LabeledAction}s for a given {@link EditorContext}.
62
+ *
63
+ * @param editorContext The editorContext for which the actions are returned.
64
+ * @returns A list of {@link LabeledAction}s for a given {@link EditorContext}.
65
+ */
66
+ getActions(editorContext: EditorContext): LabeledAction[] {
67
+ const actions: LabeledAction[] = [];
68
+ if (this.modelState.isReadonly) {
69
+ return actions;
70
+ }
71
+
72
+ const selectedIds = editorContext.selectedElementIds;
73
+ const position = editorContext.lastMousePosition ? editorContext.lastMousePosition : { x: 0, y: 0 };
74
+ const selectedElements = this.modelState.index.getAll(selectedIds);
75
+
76
+ return this.getPaletteActions(selectedIds, selectedElements, position, editorContext.args);
77
+ }
78
+
79
+ /**
80
+ * Returns a list of {@link LabeledAction}s for given selectedElements at a given mouse position.
81
+ *
82
+ * @param selectedElementIds The list of currently selected elementIds.
83
+ * @param selectedElements The list of currently selected elements.
84
+ * @param position The current mouse position.
85
+ * @param args Additional arguments.
86
+ * @returns A list of {@link LabeledAction}s.
87
+ */
88
+ abstract getPaletteActions(
89
+ selectedElementIds: string[],
90
+ selectedElements: GModelElement[],
91
+ position: Point,
92
+ args?: Args
93
+ ): LabeledAction[];
94
+ }
@@ -0,0 +1,69 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics 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 { GModelElement } from '@eclipse-glsp/graph';
17
+ import { Args, LabeledAction, Point } from '@eclipse-glsp/protocol';
18
+ import { CommandPaletteActionProvider } from './command-palette-action-provider';
19
+ import { ContextActionsProvider } from './context-actions-provider';
20
+ import { ContextActionsProviderRegistry } from './context-actions-provider-registry';
21
+ import { DefaultToolPaletteItemProvider } from './tool-palette-item-provider';
22
+ import { expect } from 'chai';
23
+
24
+ describe('Test DefaultContextActionsProviderRegistry', () => {
25
+ it('check if default registry is empty', () => {
26
+ const contextActionsProvider: ContextActionsProvider[] = [];
27
+ const contextActionsProviderRegistry = new ContextActionsProviderRegistry(contextActionsProvider);
28
+ expect(contextActionsProviderRegistry.keys()).to.have.length(0);
29
+ });
30
+
31
+ it('register DefaultToolPaletteItemProvider via ContextActionsProviders list', () => {
32
+ const contextActionsProvider: ContextActionsProvider[] = [new DefaultToolPaletteItemProvider()];
33
+ const contextActionsProviderRegistry = new ContextActionsProviderRegistry(contextActionsProvider);
34
+ expect(contextActionsProviderRegistry.keys()).to.have.length(1);
35
+ });
36
+
37
+ it('register DefaultToolPaletteItemProvider via ToolPaletteItemProvider', () => {
38
+ const contextActionsProvider: ContextActionsProvider[] = [];
39
+ const contextActionsProviderRegistry = new ContextActionsProviderRegistry(
40
+ contextActionsProvider,
41
+ undefined,
42
+ undefined,
43
+ new DefaultToolPaletteItemProvider()
44
+ );
45
+ expect(contextActionsProviderRegistry.keys()).to.have.length(1);
46
+ });
47
+
48
+ it('register CustomCommandPaletteActionProvider via CommandPaletteActionProvider', () => {
49
+ class CustomCommandPaletteActionProvider extends CommandPaletteActionProvider {
50
+ getPaletteActions(
51
+ _selectedElementIds: string[],
52
+ _selectedElements: GModelElement[],
53
+ _position: Point,
54
+ _args?: Args
55
+ ): LabeledAction[] {
56
+ return [];
57
+ }
58
+ }
59
+
60
+ const contextActionsProvider: ContextActionsProvider[] = [];
61
+ const contextActionsProviderRegistry = new ContextActionsProviderRegistry(
62
+ contextActionsProvider,
63
+ undefined,
64
+ new CustomCommandPaletteActionProvider(),
65
+ undefined
66
+ );
67
+ expect(contextActionsProviderRegistry.keys()).to.have.length(1);
68
+ });
69
+ });
@@ -0,0 +1,47 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics 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 { inject, injectable, multiInject, optional } from 'inversify';
17
+ import { ContextActionsProviders } from '../../di/service-identifiers';
18
+ import { Registry } from '../../utils/registry';
19
+ import { CommandPaletteActionProvider } from './command-palette-action-provider';
20
+ import { ContextActionsProvider } from './context-actions-provider';
21
+ import { ContextMenuItemProvider } from './context-menu-item-provider';
22
+ import { ToolPaletteItemProvider } from './tool-palette-item-provider';
23
+
24
+ /**
25
+ * A registry that keeps track of all registered {@link ContextActionsProvider}s.
26
+ */
27
+ @injectable()
28
+ export class ContextActionsProviderRegistry extends Registry<string, ContextActionsProvider> {
29
+ constructor(
30
+ @multiInject(ContextActionsProviders) @optional() contextActionsProvider: ContextActionsProvider[] = [],
31
+ @inject(ContextMenuItemProvider) @optional() contextMenuItemProvider?: ContextMenuItemProvider,
32
+ @inject(CommandPaletteActionProvider) @optional() commandPaletteActionProvider?: CommandPaletteActionProvider,
33
+ @inject(ToolPaletteItemProvider) @optional() toolPaletteItemProvider?: ToolPaletteItemProvider
34
+ ) {
35
+ super();
36
+ contextActionsProvider.forEach(provider => this.register(provider.contextId, provider));
37
+ if (contextMenuItemProvider) {
38
+ this.register(contextMenuItemProvider.contextId, contextMenuItemProvider);
39
+ }
40
+ if (commandPaletteActionProvider) {
41
+ this.register(commandPaletteActionProvider.contextId, commandPaletteActionProvider);
42
+ }
43
+ if (toolPaletteItemProvider) {
44
+ this.register(toolPaletteItemProvider.contextId, toolPaletteItemProvider);
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,36 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics 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 { EditorContext, LabeledAction, MaybePromise } from '@eclipse-glsp/protocol';
17
+
18
+ export const ContextActionsProvider = Symbol('ContextActionsProvider');
19
+
20
+ /**
21
+ * A provider for a certain contextId that provides {@link LabeledAction}s.
22
+ */
23
+ export interface ContextActionsProvider {
24
+ /**
25
+ * The context id of the {@link ContextActionsProvider}.
26
+ */
27
+ contextId: string;
28
+
29
+ /**
30
+ * Returns a list of {@link LabeledAction}s for a given {@link EditorContext}.
31
+ *
32
+ * @param editorContext The editorContext for which the actions are returned.
33
+ * @returns A list of {@link LabeledAction}s for a given {@link EditorContext}.
34
+ */
35
+ getActions(editorContext: EditorContext): MaybePromise<LabeledAction[]>;
36
+ }
@@ -0,0 +1,52 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics 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 { Args, EditorContext, LabeledAction, MenuItem, Point } from '@eclipse-glsp/protocol';
17
+ import { injectable } from 'inversify';
18
+ import { ContextActionsProvider } from './context-actions-provider';
19
+
20
+ /**
21
+ * A {@link ContextActionsProvider} for {@link MenuItem}s.
22
+ */
23
+ @injectable()
24
+ export abstract class ContextMenuItemProvider implements ContextActionsProvider {
25
+ /**
26
+ * Returns the context id of the {@link ContextMenuItemProvider}.
27
+ */
28
+ get contextId(): string {
29
+ return 'context-menu';
30
+ }
31
+
32
+ /**
33
+ * Returns a list of {@link MenuItem}s for a given list of selected elements at a certain mouse position.
34
+ *
35
+ * @param selectedElementIds The list of currently selected elementIds.
36
+ * @param position The current mouse position.
37
+ * @param args Additional arguments.
38
+ * @returns A list of {@link MenuItem}s for a given list of selected elements at a certain mouse position.
39
+ */
40
+ abstract getItems(selectedElementIds: string[], position: Point, args?: Args): MenuItem[];
41
+
42
+ /**
43
+ * Returns a list of {@link LabeledAction}s for a given {@link EditorContext}.
44
+ *
45
+ * @param editorContext The editorContext for which the actions are returned.
46
+ * @returns A list of {@link LabeledAction}s for a given {@link EditorContext}.
47
+ */
48
+ getActions(editorContext: EditorContext): LabeledAction[] {
49
+ const position = editorContext.lastMousePosition ? editorContext.lastMousePosition : { x: 0, y: 0 };
50
+ return this.getItems(editorContext.selectedElementIds, position, editorContext.args);
51
+ }
52
+ }
@@ -0,0 +1,75 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics 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 { PaletteItem, RequestContextActions, SetContextActions } from '@eclipse-glsp/protocol';
17
+ import { expect } from 'chai';
18
+ import { OperationHandlerRegistry } from '../../operations/operation-handler-registry';
19
+ import * as mock from '../../test/mock-util';
20
+ import { ContextActionsProvider } from './context-actions-provider';
21
+ import { ContextActionsProviderRegistry } from './context-actions-provider-registry';
22
+ import { RequestContextActionsHandler } from './request-context-actions-handler';
23
+ import { DefaultToolPaletteItemProvider } from './tool-palette-item-provider';
24
+
25
+ describe('Test RequestContextActionsHandler', () => {
26
+ const operationHandlerRegistry = new OperationHandlerRegistry();
27
+ const stubANode = new mock.StubCreateNodeOperationHandler('ANode');
28
+ const stubBNode = new mock.StubCreateNodeOperationHandler('BNode');
29
+ const stubAEdge = new mock.StubCreateEdgeOperationHandler('AEdge');
30
+ const stubBEdge = new mock.StubCreateEdgeOperationHandler('BEdge');
31
+ operationHandlerRegistry.registerHandler(stubBNode);
32
+ operationHandlerRegistry.registerHandler(stubANode);
33
+ operationHandlerRegistry.registerHandler(stubBEdge);
34
+ operationHandlerRegistry.registerHandler(stubAEdge);
35
+
36
+ const contextActionsProvider: ContextActionsProvider[] = [];
37
+ const toolPaletteItemProvider = new DefaultToolPaletteItemProvider();
38
+ toolPaletteItemProvider.operationHandlerRegistry = operationHandlerRegistry;
39
+
40
+ const contextActionsProviderRegistry = new ContextActionsProviderRegistry(
41
+ contextActionsProvider,
42
+ undefined,
43
+ undefined,
44
+ toolPaletteItemProvider
45
+ );
46
+
47
+ const requestContextActionsHandler = new RequestContextActionsHandler();
48
+ requestContextActionsHandler['contextActionsProviderRegistry'] = contextActionsProviderRegistry;
49
+
50
+ it('request ToolPaletteContextActions', async () => {
51
+ const actions = await requestContextActionsHandler.execute(
52
+ RequestContextActions.create({ contextId: 'tool-palette', editorContext: { selectedElementIds: [] } })
53
+ );
54
+ expect(actions).to.have.length(1);
55
+ const action = actions[0];
56
+
57
+ expect(SetContextActions.is(action)).to.be.true;
58
+ const setContextActions = action as SetContextActions;
59
+ expect(setContextActions.actions).to.have.length(2);
60
+
61
+ expect(PaletteItem.is(setContextActions.actions[0])).to.be.true;
62
+ const firstPaletteItem = setContextActions.actions[0] as PaletteItem;
63
+ expect(firstPaletteItem.label).to.be.equal('Nodes');
64
+ expect(firstPaletteItem.children).to.have.length(2);
65
+ expect(firstPaletteItem.children?.[0].label).to.be.equal('ANode');
66
+ expect(firstPaletteItem.children?.[1].label).to.be.equal('BNode');
67
+
68
+ expect(PaletteItem.is(setContextActions.actions[1])).to.be.true;
69
+ const secondPaletteItem = setContextActions.actions[1] as PaletteItem;
70
+ expect(secondPaletteItem.label).to.be.equal('Edges');
71
+ expect(secondPaletteItem.children).to.have.length(2);
72
+ expect(secondPaletteItem.children?.[0].label).to.be.equal('AEdge');
73
+ expect(secondPaletteItem.children?.[1].label).to.be.equal('BEdge');
74
+ });
75
+ });
@@ -0,0 +1,37 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics 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 { Action, LabeledAction, RequestContextActions, SetContextActions } from '@eclipse-glsp/protocol';
17
+ import { inject, injectable } from 'inversify';
18
+ import { ActionHandler } from '../../actions/action-handler';
19
+ import { ContextActionsProviderRegistry } from './context-actions-provider-registry';
20
+
21
+ @injectable()
22
+ export class RequestContextActionsHandler implements ActionHandler {
23
+ actionKinds = [RequestContextActions.KIND];
24
+
25
+ @inject(ContextActionsProviderRegistry)
26
+ protected contextActionsProviderRegistry: ContextActionsProviderRegistry;
27
+
28
+ async execute(action: RequestContextActions): Promise<Action[]> {
29
+ const editorContext = action.editorContext;
30
+ const actions: LabeledAction[] = [];
31
+ if (this.contextActionsProviderRegistry.get(action.contextId)) {
32
+ const provider = this.contextActionsProviderRegistry.get(action.contextId)!;
33
+ (await provider.getActions(editorContext)).forEach(returnAction => actions.push(returnAction));
34
+ }
35
+ return [SetContextActions.create(actions, { args: action.editorContext.args })];
36
+ }
37
+ }
@@ -0,0 +1,46 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics 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 { OperationHandlerRegistry } from '../../operations/operation-handler-registry';
17
+ import * as mock from '../../test/mock-util';
18
+ import { DefaultToolPaletteItemProvider } from './tool-palette-item-provider';
19
+ import { expect } from 'chai';
20
+
21
+ describe('Test DefaultToolPaletteItemProvider', () => {
22
+ const operationHandlerRegistry = new OperationHandlerRegistry();
23
+ const stubANode = new mock.StubCreateNodeOperationHandler('ANode');
24
+ const stubBNode = new mock.StubCreateNodeOperationHandler('BNode');
25
+ const stubAEdge = new mock.StubCreateEdgeOperationHandler('AEdge');
26
+ const stubBEdge = new mock.StubCreateEdgeOperationHandler('BEdge');
27
+ operationHandlerRegistry.registerHandler(stubBNode);
28
+ operationHandlerRegistry.registerHandler(stubANode);
29
+ operationHandlerRegistry.registerHandler(stubBEdge);
30
+ operationHandlerRegistry.registerHandler(stubAEdge);
31
+
32
+ it('test getItems', () => {
33
+ const toolPaletteItemProvider = new DefaultToolPaletteItemProvider();
34
+ toolPaletteItemProvider.operationHandlerRegistry = operationHandlerRegistry;
35
+ const items = toolPaletteItemProvider.getItems();
36
+ expect(items).to.have.length(2);
37
+ expect(items[0].label).to.be.equal('Nodes');
38
+ expect(items[0].children).to.have.length(2);
39
+ expect(items[0].children?.[0].label).to.be.equal('ANode');
40
+ expect(items[0].children?.[1].label).to.be.equal('BNode');
41
+ expect(items[1].label).to.be.equal('Edges');
42
+ expect(items[1].children).to.have.length(2);
43
+ expect(items[1].children?.[0].label).to.be.equal('AEdge');
44
+ expect(items[1].children?.[1].label).to.be.equal('BEdge');
45
+ });
46
+ });
@@ -0,0 +1,88 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics 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 {
17
+ Args,
18
+ CreateEdgeOperation,
19
+ CreateNodeOperation,
20
+ EditorContext,
21
+ LabeledAction,
22
+ MaybePromise,
23
+ PaletteItem
24
+ } from '@eclipse-glsp/protocol';
25
+ import { inject, injectable } from 'inversify';
26
+ import { CreateOperationHandler } from '../../operations/create-operation-handler';
27
+ import { OperationHandlerRegistry } from '../../operations/operation-handler-registry';
28
+ import { ContextActionsProvider } from './context-actions-provider';
29
+
30
+ /**
31
+ * A {@link ContextActionsProvider} for {@link PaletteItem}s.
32
+ */
33
+ @injectable()
34
+ export abstract class ToolPaletteItemProvider implements ContextActionsProvider {
35
+ /**
36
+ * Returns the context id of the provider.
37
+ */
38
+ get contextId(): string {
39
+ return 'tool-palette';
40
+ }
41
+
42
+ /**
43
+ * Returns a list of {@link LabeledAction}s for a given {@link EditorContext}.
44
+ *
45
+ * @param editorContext The editorContext for which the actions are returned.
46
+ * @returns A list of {@link LabeledAction}s for a given {@link EditorContext}.
47
+ */
48
+ async getActions(editorContext: EditorContext): Promise<LabeledAction[]> {
49
+ return this.getItems(editorContext.args);
50
+ }
51
+
52
+ /**
53
+ * Constructs a list of {@link PaletteItem}s for a given map of string arguments.
54
+ *
55
+ * @param args A map of string arguments.
56
+ * @returns A list of {@link PaletteItem}s for a given map of string arguments.
57
+ */
58
+ abstract getItems(args?: Args): MaybePromise<PaletteItem[]>;
59
+ }
60
+
61
+ @injectable()
62
+ export class DefaultToolPaletteItemProvider extends ToolPaletteItemProvider {
63
+ @inject(OperationHandlerRegistry) operationHandlerRegistry: OperationHandlerRegistry;
64
+ protected counter: number;
65
+
66
+ getItems(_args?: Args): PaletteItem[] {
67
+ const handlers = this.operationHandlerRegistry.getAll().filter(CreateOperationHandler.is) as CreateOperationHandler[];
68
+ this.counter = 0;
69
+ const nodes = this.createPaletteItem(handlers, CreateNodeOperation.KIND);
70
+ const edges = this.createPaletteItem(handlers, CreateEdgeOperation.KIND);
71
+ return [
72
+ { id: 'node-group', label: 'Nodes', actions: [], children: nodes, icon: 'symbol-property', sortString: 'A' },
73
+ { id: 'edge-group', label: 'Edges', actions: [], children: edges, icon: 'symbol-property', sortString: 'B' }
74
+ ];
75
+ }
76
+
77
+ createPaletteItem(handlers: CreateOperationHandler[], kind: string): PaletteItem[] {
78
+ return handlers
79
+ .filter(handler => handler.operationType === kind)
80
+ .map(handler => handler.getTriggerActions().map(action => this.create(action, handler.label)))
81
+ .reduce((accumulator, value) => accumulator.concat(value), [])
82
+ .sort((a, b) => a.sortString.localeCompare(b.sortString));
83
+ }
84
+
85
+ create(action: PaletteItem.TriggerElementCreationAction, label: string): PaletteItem {
86
+ return { id: `palette-item${this.counter}`, sortString: label.charAt(0), label, actions: [action] };
87
+ }
88
+ }
@@ -0,0 +1,54 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics 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 { expect } from 'chai';
17
+ import { TestContextEditValidator, TestLabelEditValidator } from '../../test/mock-util';
18
+ import { DefaultModelState } from '../model/model-state';
19
+ import { ContextEditValidator } from './context-edit-validator';
20
+ import { DefaultContextEditValidatorRegistry } from './context-edit-validator-registry';
21
+
22
+ describe('Test DefaultContextEditValidatorRegistry', () => {
23
+ it('check if default registry is empty', () => {
24
+ const contextEditValidators: ContextEditValidator[] = [];
25
+ const contextEditValidatorRegistry = new DefaultContextEditValidatorRegistry(new DefaultModelState(), contextEditValidators);
26
+ expect(contextEditValidatorRegistry.keys()).to.have.length(0);
27
+ });
28
+
29
+ it('register TestContextEditValidator via ContextEditValidators list', () => {
30
+ const contextEditValidators: ContextEditValidator[] = [new TestContextEditValidator()];
31
+ const contextEditValidatorsRegistry = new DefaultContextEditValidatorRegistry(new DefaultModelState(), contextEditValidators);
32
+ expect(contextEditValidatorsRegistry.keys()).to.have.length(1);
33
+ });
34
+
35
+ it('register TestLabelEditValidator via LabelEditValidator', () => {
36
+ const contextEditValidators: ContextEditValidator[] = [];
37
+ const contextEditValidatorsRegistry = new DefaultContextEditValidatorRegistry(
38
+ new DefaultModelState(),
39
+ contextEditValidators,
40
+ new TestLabelEditValidator()
41
+ );
42
+ expect(contextEditValidatorsRegistry.keys()).to.have.length(1);
43
+ });
44
+
45
+ it('register via ContextEditValidators list and LabelEditValidator', () => {
46
+ const contextEditValidators: ContextEditValidator[] = [new TestContextEditValidator()];
47
+ const contextEditValidatorsRegistry = new DefaultContextEditValidatorRegistry(
48
+ new DefaultModelState(),
49
+ contextEditValidators,
50
+ new TestLabelEditValidator()
51
+ );
52
+ expect(contextEditValidatorsRegistry.keys()).to.have.length(2);
53
+ });
54
+ });