@theia/core 1.45.1 → 1.46.0-next.137

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 (751) hide show
  1. package/README.md +6 -6
  2. package/i18n/nls.cs.json +24 -3
  3. package/i18n/nls.de.json +24 -3
  4. package/i18n/nls.es.json +24 -3
  5. package/i18n/nls.fr.json +24 -3
  6. package/i18n/nls.hu.json +24 -3
  7. package/i18n/nls.it.json +24 -3
  8. package/i18n/nls.ja.json +24 -3
  9. package/i18n/nls.json +24 -3
  10. package/i18n/nls.pl.json +24 -3
  11. package/i18n/nls.pt-br.json +24 -3
  12. package/i18n/nls.pt-pt.json +24 -3
  13. package/i18n/nls.ru.json +24 -3
  14. package/i18n/nls.zh-cn.json +24 -3
  15. package/lib/browser/about-dialog.js +13 -24
  16. package/lib/browser/about-dialog.js.map +1 -1
  17. package/lib/browser/authentication-service.js +12 -20
  18. package/lib/browser/authentication-service.js.map +1 -1
  19. package/lib/browser/breadcrumbs/breadcrumb-popup-container.js +12 -20
  20. package/lib/browser/breadcrumbs/breadcrumb-popup-container.js.map +1 -1
  21. package/lib/browser/breadcrumbs/breadcrumb-renderer.js +2 -7
  22. package/lib/browser/breadcrumbs/breadcrumb-renderer.js.map +1 -1
  23. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +14 -22
  24. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
  25. package/lib/browser/breadcrumbs/breadcrumbs-service.js +10 -18
  26. package/lib/browser/breadcrumbs/breadcrumbs-service.js.map +1 -1
  27. package/lib/browser/breadcrumbs/index.js +6 -15
  28. package/lib/browser/breadcrumbs/index.js.map +1 -1
  29. package/lib/browser/browser-clipboard-service.js +6 -14
  30. package/lib/browser/browser-clipboard-service.js.map +1 -1
  31. package/lib/browser/browser.d.ts +3 -0
  32. package/lib/browser/browser.d.ts.map +1 -1
  33. package/lib/browser/browser.js +5 -1
  34. package/lib/browser/browser.js.map +1 -1
  35. package/lib/browser/color-application-contribution.d.ts +4 -2
  36. package/lib/browser/color-application-contribution.d.ts.map +1 -1
  37. package/lib/browser/color-application-contribution.js +19 -17
  38. package/lib/browser/color-application-contribution.js.map +1 -1
  39. package/lib/browser/color-registry.js +2 -7
  40. package/lib/browser/color-registry.js.map +1 -1
  41. package/lib/browser/command-open-handler.js +5 -13
  42. package/lib/browser/command-open-handler.js.map +1 -1
  43. package/lib/browser/common-frontend-contribution.d.ts +6 -0
  44. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  45. package/lib/browser/common-frontend-contribution.js +92 -61
  46. package/lib/browser/common-frontend-contribution.js.map +1 -1
  47. package/lib/browser/common-styling-participants.js +9 -14
  48. package/lib/browser/common-styling-participants.js.map +1 -1
  49. package/lib/browser/connection-status-service.js +22 -33
  50. package/lib/browser/connection-status-service.js.map +1 -1
  51. package/lib/browser/context-key-service.d.ts +1 -2
  52. package/lib/browser/context-key-service.d.ts.map +1 -1
  53. package/lib/browser/context-key-service.js +2 -7
  54. package/lib/browser/context-key-service.js.map +1 -1
  55. package/lib/browser/context-menu-renderer.d.ts +0 -1
  56. package/lib/browser/context-menu-renderer.d.ts.map +1 -1
  57. package/lib/browser/context-menu-renderer.js +3 -12
  58. package/lib/browser/context-menu-renderer.js.map +1 -1
  59. package/lib/browser/core-preferences.d.ts +1 -0
  60. package/lib/browser/core-preferences.d.ts.map +1 -1
  61. package/lib/browser/core-preferences.js +5 -0
  62. package/lib/browser/core-preferences.js.map +1 -1
  63. package/lib/browser/credentials-service.js +4 -15
  64. package/lib/browser/credentials-service.js.map +1 -1
  65. package/lib/browser/decorations-service.js +6 -12
  66. package/lib/browser/decorations-service.js.map +1 -1
  67. package/lib/browser/dialogs/react-dialog.js +4 -15
  68. package/lib/browser/dialogs/react-dialog.js.map +1 -1
  69. package/lib/browser/dialogs.js +18 -29
  70. package/lib/browser/dialogs.js.map +1 -1
  71. package/lib/browser/diff-uris.js +4 -15
  72. package/lib/browser/diff-uris.js.map +1 -1
  73. package/lib/browser/encoding-registry.js +6 -14
  74. package/lib/browser/encoding-registry.js.map +1 -1
  75. package/lib/browser/external-uri-service.js +2 -7
  76. package/lib/browser/external-uri-service.js.map +1 -1
  77. package/lib/browser/frontend-application-contribution.js +2 -7
  78. package/lib/browser/frontend-application-contribution.js.map +1 -1
  79. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  80. package/lib/browser/frontend-application-module.js +4 -2
  81. package/lib/browser/frontend-application-module.js.map +1 -1
  82. package/lib/browser/frontend-application-state.js +4 -12
  83. package/lib/browser/frontend-application-state.js.map +1 -1
  84. package/lib/browser/frontend-application.js +21 -32
  85. package/lib/browser/frontend-application.js.map +1 -1
  86. package/lib/browser/hover-service.js +6 -14
  87. package/lib/browser/hover-service.js.map +1 -1
  88. package/lib/browser/http-open-handler.js +6 -14
  89. package/lib/browser/http-open-handler.js.map +1 -1
  90. package/lib/browser/i18n/language-quick-pick-service.js +8 -16
  91. package/lib/browser/i18n/language-quick-pick-service.js.map +1 -1
  92. package/lib/browser/icon-registry.d.ts +1 -7
  93. package/lib/browser/icon-registry.d.ts.map +1 -1
  94. package/lib/browser/icon-registry.js.map +1 -1
  95. package/lib/browser/icon-theme-contribution.js +7 -15
  96. package/lib/browser/icon-theme-contribution.js.map +1 -1
  97. package/lib/browser/icon-theme-service.js +13 -21
  98. package/lib/browser/icon-theme-service.js.map +1 -1
  99. package/lib/browser/index.js +32 -41
  100. package/lib/browser/index.js.map +1 -1
  101. package/lib/browser/json-schema-store.js +7 -15
  102. package/lib/browser/json-schema-store.js.map +1 -1
  103. package/lib/browser/keybinding.d.ts.map +1 -1
  104. package/lib/browser/keybinding.js +21 -26
  105. package/lib/browser/keybinding.js.map +1 -1
  106. package/lib/browser/keybinding.spec.js +4 -9
  107. package/lib/browser/keybinding.spec.js.map +1 -1
  108. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js +6 -14
  109. package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js.map +1 -1
  110. package/lib/browser/keyboard/browser-keyboard-layout-provider.js +10 -18
  111. package/lib/browser/keyboard/browser-keyboard-layout-provider.js.map +1 -1
  112. package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js +2 -7
  113. package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js.map +1 -1
  114. package/lib/browser/keyboard/index.js +5 -14
  115. package/lib/browser/keyboard/index.js.map +1 -1
  116. package/lib/browser/keyboard/keyboard-layout-service.js +8 -16
  117. package/lib/browser/keyboard/keyboard-layout-service.js.map +1 -1
  118. package/lib/browser/keyboard/keyboard-layout-service.spec.js +2 -7
  119. package/lib/browser/keyboard/keyboard-layout-service.spec.js.map +1 -1
  120. package/lib/browser/keyboard/keys.js +2 -11
  121. package/lib/browser/keyboard/keys.js.map +1 -1
  122. package/lib/browser/label-parser.js +2 -7
  123. package/lib/browser/label-parser.js.map +1 -1
  124. package/lib/browser/label-provider.js +11 -19
  125. package/lib/browser/label-provider.js.map +1 -1
  126. package/lib/browser/language-icon-provider.js +10 -18
  127. package/lib/browser/language-icon-provider.js.map +1 -1
  128. package/lib/browser/language-service.js +2 -7
  129. package/lib/browser/language-service.js.map +1 -1
  130. package/lib/browser/markdown-rendering/markdown-renderer.d.ts +1 -1
  131. package/lib/browser/markdown-rendering/markdown-renderer.d.ts.map +1 -1
  132. package/lib/browser/markdown-rendering/markdown-renderer.js +8 -16
  133. package/lib/browser/markdown-rendering/markdown-renderer.js.map +1 -1
  134. package/lib/browser/menu/browser-context-menu-renderer.d.ts.map +1 -1
  135. package/lib/browser/menu/browser-context-menu-renderer.js +6 -16
  136. package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
  137. package/lib/browser/menu/browser-menu-plugin.d.ts +1 -1
  138. package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
  139. package/lib/browser/menu/browser-menu-plugin.js +25 -36
  140. package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
  141. package/lib/browser/menu/context-menu-context.js +3 -11
  142. package/lib/browser/menu/context-menu-context.js.map +1 -1
  143. package/lib/browser/messaging/frontend-id-provider.js +2 -7
  144. package/lib/browser/messaging/frontend-id-provider.js.map +1 -1
  145. package/lib/browser/messaging/index.js +2 -11
  146. package/lib/browser/messaging/index.js.map +1 -1
  147. package/lib/browser/messaging/service-connection-provider.js +8 -16
  148. package/lib/browser/messaging/service-connection-provider.js.map +1 -1
  149. package/lib/browser/messaging/ws-connection-provider.js +4 -12
  150. package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
  151. package/lib/browser/messaging/ws-connection-source.js +9 -17
  152. package/lib/browser/messaging/ws-connection-source.js.map +1 -1
  153. package/lib/browser/mime-service.js +2 -7
  154. package/lib/browser/mime-service.js.map +1 -1
  155. package/lib/browser/navigatable.js +2 -11
  156. package/lib/browser/navigatable.js.map +1 -1
  157. package/lib/browser/opener-service.js +5 -16
  158. package/lib/browser/opener-service.js.map +1 -1
  159. package/lib/browser/performance/frontend-stopwatch.js +3 -11
  160. package/lib/browser/performance/frontend-stopwatch.js.map +1 -1
  161. package/lib/browser/performance/index.js +3 -12
  162. package/lib/browser/performance/index.js.map +1 -1
  163. package/lib/browser/preferences/index.js +8 -17
  164. package/lib/browser/preferences/index.js.map +1 -1
  165. package/lib/browser/preferences/injectable-preference-proxy.js +14 -22
  166. package/lib/browser/preferences/injectable-preference-proxy.js.map +1 -1
  167. package/lib/browser/preferences/preference-configurations.js +4 -12
  168. package/lib/browser/preferences/preference-configurations.js.map +1 -1
  169. package/lib/browser/preferences/preference-contribution.js +10 -18
  170. package/lib/browser/preferences/preference-contribution.js.map +1 -1
  171. package/lib/browser/preferences/preference-language-override-service.js +2 -7
  172. package/lib/browser/preferences/preference-language-override-service.js.map +1 -1
  173. package/lib/browser/preferences/preference-provider.js +5 -13
  174. package/lib/browser/preferences/preference-provider.js.map +1 -1
  175. package/lib/browser/preferences/preference-service.js +14 -22
  176. package/lib/browser/preferences/preference-service.js.map +1 -1
  177. package/lib/browser/preferences/preference-validation-service.js +6 -14
  178. package/lib/browser/preferences/preference-validation-service.js.map +1 -1
  179. package/lib/browser/preferences/test/index.js +4 -13
  180. package/lib/browser/preferences/test/index.js.map +1 -1
  181. package/lib/browser/preferences/test/mock-preference-service.js +3 -11
  182. package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
  183. package/lib/browser/preload/i18n-preload-contribution.js +4 -12
  184. package/lib/browser/preload/i18n-preload-contribution.js.map +1 -1
  185. package/lib/browser/preload/os-preload-contribution.js +4 -12
  186. package/lib/browser/preload/os-preload-contribution.js.map +1 -1
  187. package/lib/browser/preload/preloader.js +4 -12
  188. package/lib/browser/preload/preloader.js.map +1 -1
  189. package/lib/browser/preload/theme-preload-contribution.js +2 -7
  190. package/lib/browser/preload/theme-preload-contribution.js.map +1 -1
  191. package/lib/browser/progress-bar.js +11 -19
  192. package/lib/browser/progress-bar.js.map +1 -1
  193. package/lib/browser/progress-client.js +6 -14
  194. package/lib/browser/progress-client.js.map +1 -1
  195. package/lib/browser/progress-location-service.js +2 -7
  196. package/lib/browser/progress-location-service.js.map +1 -1
  197. package/lib/browser/progress-status-bar-item.js +4 -12
  198. package/lib/browser/progress-status-bar-item.js.map +1 -1
  199. package/lib/browser/quick-input/index.js +9 -18
  200. package/lib/browser/quick-input/index.js.map +1 -1
  201. package/lib/browser/quick-input/quick-command-frontend-contribution.js +6 -14
  202. package/lib/browser/quick-input/quick-command-frontend-contribution.js.map +1 -1
  203. package/lib/browser/quick-input/quick-command-service.js +12 -20
  204. package/lib/browser/quick-input/quick-command-service.js.map +1 -1
  205. package/lib/browser/quick-input/quick-help-service.js +6 -14
  206. package/lib/browser/quick-input/quick-help-service.js.map +1 -1
  207. package/lib/browser/quick-input/quick-input-frontend-contribution.js +4 -12
  208. package/lib/browser/quick-input/quick-input-frontend-contribution.js.map +1 -1
  209. package/lib/browser/quick-input/quick-input-service.js +2 -11
  210. package/lib/browser/quick-input/quick-input-service.js.map +1 -1
  211. package/lib/browser/quick-input/quick-pick-service-impl.js +4 -12
  212. package/lib/browser/quick-input/quick-pick-service-impl.js.map +1 -1
  213. package/lib/browser/quick-input/quick-view-service.js +6 -14
  214. package/lib/browser/quick-input/quick-view-service.js.map +1 -1
  215. package/lib/browser/request/browser-request-service.js +12 -20
  216. package/lib/browser/request/browser-request-service.js.map +1 -1
  217. package/lib/browser/resource-context-key.js +10 -18
  218. package/lib/browser/resource-context-key.js.map +1 -1
  219. package/lib/browser/save-resource-service.d.ts +3 -3
  220. package/lib/browser/save-resource-service.d.ts.map +1 -1
  221. package/lib/browser/save-resource-service.js +6 -13
  222. package/lib/browser/save-resource-service.js.map +1 -1
  223. package/lib/browser/secondary-window-handler.d.ts +12 -11
  224. package/lib/browser/secondary-window-handler.d.ts.map +1 -1
  225. package/lib/browser/secondary-window-handler.js +24 -39
  226. package/lib/browser/secondary-window-handler.js.map +1 -1
  227. package/lib/browser/shell/additional-views-menu-widget.js +6 -14
  228. package/lib/browser/shell/additional-views-menu-widget.js.map +1 -1
  229. package/lib/browser/shell/application-shell-mouse-tracker.js +4 -12
  230. package/lib/browser/shell/application-shell-mouse-tracker.js.map +1 -1
  231. package/lib/browser/shell/application-shell.d.ts +3 -1
  232. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  233. package/lib/browser/shell/application-shell.js +68 -66
  234. package/lib/browser/shell/application-shell.js.map +1 -1
  235. package/lib/browser/shell/index.js +8 -17
  236. package/lib/browser/shell/index.js.map +1 -1
  237. package/lib/browser/shell/shell-layout-restorer.js +12 -23
  238. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  239. package/lib/browser/shell/side-panel-handler.js +22 -30
  240. package/lib/browser/shell/side-panel-handler.js.map +1 -1
  241. package/lib/browser/shell/sidebar-bottom-menu-widget.js +2 -7
  242. package/lib/browser/shell/sidebar-bottom-menu-widget.js.map +1 -1
  243. package/lib/browser/shell/sidebar-menu-widget.js +7 -15
  244. package/lib/browser/shell/sidebar-menu-widget.js.map +1 -1
  245. package/lib/browser/shell/sidebar-top-menu-widget.js +2 -7
  246. package/lib/browser/shell/sidebar-top-menu-widget.js.map +1 -1
  247. package/lib/browser/shell/split-panels.js +2 -7
  248. package/lib/browser/shell/split-panels.js.map +1 -1
  249. package/lib/browser/shell/tab-bar-decorator.d.ts +7 -2
  250. package/lib/browser/shell/tab-bar-decorator.d.ts.map +1 -1
  251. package/lib/browser/shell/tab-bar-decorator.js +39 -16
  252. package/lib/browser/shell/tab-bar-decorator.js.map +1 -1
  253. package/lib/browser/shell/tab-bar-toolbar/index.js +4 -13
  254. package/lib/browser/shell/tab-bar-toolbar/index.js.map +1 -1
  255. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +10 -18
  256. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
  257. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +1 -0
  258. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
  259. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +35 -38
  260. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
  261. package/lib/browser/shell/tab-bars.d.ts +4 -1
  262. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  263. package/lib/browser/shell/tab-bars.js +39 -4
  264. package/lib/browser/shell/tab-bars.js.map +1 -1
  265. package/lib/browser/shell/view-contribution.js +9 -17
  266. package/lib/browser/shell/view-contribution.js.map +1 -1
  267. package/lib/browser/source-tree/index.js +4 -13
  268. package/lib/browser/source-tree/index.js.map +1 -1
  269. package/lib/browser/source-tree/source-tree-widget.js +6 -14
  270. package/lib/browser/source-tree/source-tree-widget.js.map +1 -1
  271. package/lib/browser/source-tree/source-tree.js +2 -7
  272. package/lib/browser/source-tree/source-tree.js.map +1 -1
  273. package/lib/browser/source-tree/tree-source.js +4 -15
  274. package/lib/browser/source-tree/tree-source.js.map +1 -1
  275. package/lib/browser/status-bar/index.js +4 -13
  276. package/lib/browser/status-bar/index.js.map +1 -1
  277. package/lib/browser/status-bar/status-bar-view-model.js +2 -7
  278. package/lib/browser/status-bar/status-bar-view-model.js.map +1 -1
  279. package/lib/browser/status-bar/status-bar.js +9 -20
  280. package/lib/browser/status-bar/status-bar.js.map +1 -1
  281. package/lib/browser/storage-service.js +12 -20
  282. package/lib/browser/storage-service.js.map +1 -1
  283. package/lib/browser/styling-service.d.ts +3 -2
  284. package/lib/browser/styling-service.d.ts.map +1 -1
  285. package/lib/browser/styling-service.js +19 -18
  286. package/lib/browser/styling-service.js.map +1 -1
  287. package/lib/browser/test/mock-opener-service.js +2 -7
  288. package/lib/browser/test/mock-opener-service.js.map +1 -1
  289. package/lib/browser/test/mock-storage-service.js +2 -7
  290. package/lib/browser/test/mock-storage-service.js.map +1 -1
  291. package/lib/browser/theming.js +10 -18
  292. package/lib/browser/theming.js.map +1 -1
  293. package/lib/browser/tooltip-service.js +13 -24
  294. package/lib/browser/tooltip-service.js.map +1 -1
  295. package/lib/browser/tree/fuzzy-search.js +2 -7
  296. package/lib/browser/tree/fuzzy-search.js.map +1 -1
  297. package/lib/browser/tree/index.d.ts +1 -0
  298. package/lib/browser/tree/index.d.ts.map +1 -1
  299. package/lib/browser/tree/index.js +14 -22
  300. package/lib/browser/tree/index.js.map +1 -1
  301. package/lib/browser/tree/test/mock-selectable-tree-model.d.ts +15 -0
  302. package/lib/browser/tree/test/mock-selectable-tree-model.d.ts.map +1 -0
  303. package/lib/browser/tree/test/mock-selectable-tree-model.js +103 -0
  304. package/lib/browser/tree/test/mock-selectable-tree-model.js.map +1 -0
  305. package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js +6 -14
  306. package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js.map +1 -1
  307. package/lib/browser/tree/tree-compression/compressed-tree-model.js +6 -14
  308. package/lib/browser/tree/tree-compression/compressed-tree-model.js.map +1 -1
  309. package/lib/browser/tree/tree-compression/compressed-tree-widget.js +10 -21
  310. package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
  311. package/lib/browser/tree/tree-compression/index.js +5 -14
  312. package/lib/browser/tree/tree-compression/index.js.map +1 -1
  313. package/lib/browser/tree/tree-compression/tree-compression-service.js +2 -7
  314. package/lib/browser/tree/tree-compression/tree-compression-service.js.map +1 -1
  315. package/lib/browser/tree/tree-consistency.spec.js +2 -7
  316. package/lib/browser/tree/tree-consistency.spec.js.map +1 -1
  317. package/lib/browser/tree/tree-decorator.js +4 -12
  318. package/lib/browser/tree/tree-decorator.js.map +1 -1
  319. package/lib/browser/tree/tree-expansion.js +8 -16
  320. package/lib/browser/tree/tree-expansion.js.map +1 -1
  321. package/lib/browser/tree/tree-focus-service.js +4 -12
  322. package/lib/browser/tree/tree-focus-service.js.map +1 -1
  323. package/lib/browser/tree/tree-label-provider.js +2 -7
  324. package/lib/browser/tree/tree-label-provider.js.map +1 -1
  325. package/lib/browser/tree/tree-model.d.ts +24 -0
  326. package/lib/browser/tree/tree-model.d.ts.map +1 -1
  327. package/lib/browser/tree/tree-model.js +66 -28
  328. package/lib/browser/tree/tree-model.js.map +1 -1
  329. package/lib/browser/tree/tree-navigation.js +2 -7
  330. package/lib/browser/tree/tree-navigation.js.map +1 -1
  331. package/lib/browser/tree/tree-preference.d.ts +11 -0
  332. package/lib/browser/tree/tree-preference.d.ts.map +1 -0
  333. package/lib/browser/tree/tree-preference.js +47 -0
  334. package/lib/browser/tree/tree-preference.js.map +1 -0
  335. package/lib/browser/tree/tree-search.js +12 -20
  336. package/lib/browser/tree/tree-search.js.map +1 -1
  337. package/lib/browser/tree/tree-selectable.spec.d.ts +2 -0
  338. package/lib/browser/tree/tree-selectable.spec.d.ts.map +1 -0
  339. package/lib/browser/tree/tree-selectable.spec.js +147 -0
  340. package/lib/browser/tree/tree-selectable.spec.js.map +1 -0
  341. package/lib/browser/tree/tree-selection-impl.js +10 -18
  342. package/lib/browser/tree/tree-selection-impl.js.map +1 -1
  343. package/lib/browser/tree/tree-view-welcome-widget.js +8 -16
  344. package/lib/browser/tree/tree-view-welcome-widget.js.map +1 -1
  345. package/lib/browser/tree/tree-widget.d.ts +6 -3
  346. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  347. package/lib/browser/tree/tree-widget.js +48 -38
  348. package/lib/browser/tree/tree-widget.js.map +1 -1
  349. package/lib/browser/tree/tree.d.ts.map +1 -1
  350. package/lib/browser/tree/tree.js +7 -12
  351. package/lib/browser/tree/tree.js.map +1 -1
  352. package/lib/browser/user-working-directory-provider.js +6 -14
  353. package/lib/browser/user-working-directory-provider.js.map +1 -1
  354. package/lib/browser/view-container.js +31 -39
  355. package/lib/browser/view-container.js.map +1 -1
  356. package/lib/browser/widget-manager.d.ts +9 -0
  357. package/lib/browser/widget-manager.d.ts.map +1 -1
  358. package/lib/browser/widget-manager.js +29 -14
  359. package/lib/browser/widget-manager.js.map +1 -1
  360. package/lib/browser/widget-open-handler.js +10 -18
  361. package/lib/browser/widget-open-handler.js.map +1 -1
  362. package/lib/browser/widgets/index.js +5 -14
  363. package/lib/browser/widgets/index.js.map +1 -1
  364. package/lib/browser/widgets/react-renderer.js +5 -16
  365. package/lib/browser/widgets/react-renderer.js.map +1 -1
  366. package/lib/browser/widgets/react-widget.js +4 -15
  367. package/lib/browser/widgets/react-widget.js.map +1 -1
  368. package/lib/browser/widgets/select-component.d.ts.map +1 -1
  369. package/lib/browser/widgets/select-component.js +1 -0
  370. package/lib/browser/widgets/select-component.js.map +1 -1
  371. package/lib/browser/widgets/widget.d.ts +2 -0
  372. package/lib/browser/widgets/widget.d.ts.map +1 -1
  373. package/lib/browser/widgets/widget.js +14 -24
  374. package/lib/browser/widgets/widget.js.map +1 -1
  375. package/lib/browser/window/default-secondary-window-service.d.ts +1 -1
  376. package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
  377. package/lib/browser/window/default-secondary-window-service.js +32 -43
  378. package/lib/browser/window/default-secondary-window-service.js.map +1 -1
  379. package/lib/browser/window/default-window-service.d.ts +1 -0
  380. package/lib/browser/window/default-window-service.d.ts.map +1 -1
  381. package/lib/browser/window/default-window-service.js +9 -14
  382. package/lib/browser/window/default-window-service.js.map +1 -1
  383. package/lib/browser/window/test/mock-window-service.d.ts +1 -0
  384. package/lib/browser/window/test/mock-window-service.d.ts.map +1 -1
  385. package/lib/browser/window/test/mock-window-service.js +3 -7
  386. package/lib/browser/window/test/mock-window-service.js.map +1 -1
  387. package/lib/browser/window/window-service.d.ts +10 -2
  388. package/lib/browser/window/window-service.d.ts.map +1 -1
  389. package/lib/browser/window/window-service.js.map +1 -1
  390. package/lib/browser/window/window-title-service.js +8 -16
  391. package/lib/browser/window/window-title-service.js.map +1 -1
  392. package/lib/browser/window/window-title-updater.js +6 -14
  393. package/lib/browser/window/window-title-updater.js.map +1 -1
  394. package/lib/browser/window-contribution.js +4 -12
  395. package/lib/browser/window-contribution.js.map +1 -1
  396. package/lib/browser-only/frontend-only-application-module.d.ts +5 -0
  397. package/lib/browser-only/frontend-only-application-module.d.ts.map +1 -0
  398. package/lib/browser-only/frontend-only-application-module.js +115 -0
  399. package/lib/browser-only/frontend-only-application-module.js.map +1 -0
  400. package/lib/browser-only/i18n/i18n-frontend-only-module.d.ts +4 -0
  401. package/lib/browser-only/i18n/i18n-frontend-only-module.d.ts.map +1 -0
  402. package/lib/browser-only/i18n/i18n-frontend-only-module.js +35 -0
  403. package/lib/browser-only/i18n/i18n-frontend-only-module.js.map +1 -0
  404. package/lib/browser-only/logger-frontend-only-module.d.ts +3 -0
  405. package/lib/browser-only/logger-frontend-only-module.d.ts.map +1 -0
  406. package/lib/browser-only/logger-frontend-only-module.js +61 -0
  407. package/lib/browser-only/logger-frontend-only-module.js.map +1 -0
  408. package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts +14 -0
  409. package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts.map +1 -0
  410. package/lib/browser-only/messaging/frontend-only-service-connection-provider.js +52 -0
  411. package/lib/browser-only/messaging/frontend-only-service-connection-provider.js.map +1 -0
  412. package/lib/browser-only/messaging/messaging-frontend-only-module.d.ts +3 -0
  413. package/lib/browser-only/messaging/messaging-frontend-only-module.d.ts.map +1 -0
  414. package/lib/browser-only/messaging/messaging-frontend-only-module.js +48 -0
  415. package/lib/browser-only/messaging/messaging-frontend-only-module.js.map +1 -0
  416. package/lib/browser-only/preload/frontend-only-preload-module.d.ts +4 -0
  417. package/lib/browser-only/preload/frontend-only-preload-module.d.ts.map +1 -0
  418. package/lib/browser-only/preload/frontend-only-preload-module.js +52 -0
  419. package/lib/browser-only/preload/frontend-only-preload-module.js.map +1 -0
  420. package/lib/common/application-protocol.d.ts +1 -0
  421. package/lib/common/application-protocol.d.ts.map +1 -1
  422. package/lib/common/command.js +5 -16
  423. package/lib/common/command.js.map +1 -1
  424. package/lib/common/contribution-filter/contribution-filter-registry.js +5 -16
  425. package/lib/common/contribution-filter/contribution-filter-registry.js.map +1 -1
  426. package/lib/common/contribution-filter/index.js +4 -13
  427. package/lib/common/contribution-filter/index.js.map +1 -1
  428. package/lib/common/disposable.d.ts +37 -0
  429. package/lib/common/disposable.d.ts.map +1 -1
  430. package/lib/common/disposable.js +54 -1
  431. package/lib/common/disposable.js.map +1 -1
  432. package/lib/common/disposable.spec.js +51 -0
  433. package/lib/common/disposable.spec.js.map +1 -1
  434. package/lib/common/encoding-service.js +2 -7
  435. package/lib/common/encoding-service.js.map +1 -1
  436. package/lib/common/env-variables/index.js +2 -11
  437. package/lib/common/env-variables/index.js.map +1 -1
  438. package/lib/common/event.d.ts +5 -0
  439. package/lib/common/event.d.ts.map +1 -1
  440. package/lib/common/event.js +14 -1
  441. package/lib/common/event.js.map +1 -1
  442. package/lib/{node → common}/file-uri.d.ts +1 -1
  443. package/lib/common/file-uri.d.ts.map +1 -0
  444. package/lib/{node → common}/file-uri.js +2 -2
  445. package/lib/common/file-uri.js.map +1 -0
  446. package/lib/common/index.d.ts +1 -0
  447. package/lib/common/index.d.ts.map +1 -1
  448. package/lib/common/index.js +34 -42
  449. package/lib/common/index.js.map +1 -1
  450. package/lib/common/logger-protocol.js +2 -7
  451. package/lib/common/logger-protocol.js.map +1 -1
  452. package/lib/common/logger-watcher.js +2 -7
  453. package/lib/common/logger-watcher.js.map +1 -1
  454. package/lib/common/logger.js +14 -22
  455. package/lib/common/logger.js.map +1 -1
  456. package/lib/common/markdown-rendering/index.js +3 -12
  457. package/lib/common/markdown-rendering/index.js.map +1 -1
  458. package/lib/common/markdown-rendering/markdown-string.d.ts +5 -2
  459. package/lib/common/markdown-rendering/markdown-string.d.ts.map +1 -1
  460. package/lib/common/markdown-rendering/markdown-string.js.map +1 -1
  461. package/lib/common/menu/composite-menu-node.js +5 -5
  462. package/lib/common/menu/composite-menu-node.js.map +1 -1
  463. package/lib/common/menu/composite-menu-node.spec.d.ts +2 -0
  464. package/lib/common/menu/composite-menu-node.spec.d.ts.map +1 -0
  465. package/lib/common/menu/composite-menu-node.spec.js +68 -0
  466. package/lib/common/menu/composite-menu-node.spec.js.map +1 -0
  467. package/lib/common/menu/index.js +6 -15
  468. package/lib/common/menu/index.js.map +1 -1
  469. package/lib/common/menu/menu-adapter.js +7 -15
  470. package/lib/common/menu/menu-adapter.js.map +1 -1
  471. package/lib/common/menu/menu-model-registry.d.ts +2 -2
  472. package/lib/common/menu/menu-model-registry.d.ts.map +1 -1
  473. package/lib/common/menu/menu-model-registry.js +22 -19
  474. package/lib/common/menu/menu-model-registry.js.map +1 -1
  475. package/lib/common/menu/menu.spec.js +28 -1
  476. package/lib/common/menu/menu.spec.js.map +1 -1
  477. package/lib/common/message-rpc/msg-pack-extension-manager.d.ts +1 -1
  478. package/lib/common/message-rpc/msg-pack-extension-manager.js +1 -1
  479. package/lib/common/message-rpc/rpc-protocol.d.ts +3 -1
  480. package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -1
  481. package/lib/common/message-rpc/rpc-protocol.js +19 -1
  482. package/lib/common/message-rpc/rpc-protocol.js.map +1 -1
  483. package/lib/common/message-service-protocol.js +2 -7
  484. package/lib/common/message-service-protocol.js.map +1 -1
  485. package/lib/common/message-service.js +4 -15
  486. package/lib/common/message-service.js.map +1 -1
  487. package/lib/common/messaging/index.js +4 -13
  488. package/lib/common/messaging/index.js.map +1 -1
  489. package/lib/common/messaging/proxy-factory.d.ts.map +1 -1
  490. package/lib/common/messaging/proxy-factory.js +1 -8
  491. package/lib/common/messaging/proxy-factory.js.map +1 -1
  492. package/lib/common/nls.js +3 -1
  493. package/lib/common/nls.js.map +1 -1
  494. package/lib/common/performance/index.js +4 -13
  495. package/lib/common/performance/index.js.map +1 -1
  496. package/lib/common/performance/measurement-protocol.js +5 -13
  497. package/lib/common/performance/measurement-protocol.js.map +1 -1
  498. package/lib/common/performance/stopwatch.js +5 -13
  499. package/lib/common/performance/stopwatch.js.map +1 -1
  500. package/lib/common/progress-service.js +6 -14
  501. package/lib/common/progress-service.js.map +1 -1
  502. package/lib/common/promise-util.spec.js +31 -6
  503. package/lib/common/promise-util.spec.js.map +1 -1
  504. package/lib/common/quick-pick-service.d.ts +16 -26
  505. package/lib/common/quick-pick-service.d.ts.map +1 -1
  506. package/lib/common/quick-pick-service.js +1 -26
  507. package/lib/common/quick-pick-service.js.map +1 -1
  508. package/lib/common/reference.d.ts +55 -0
  509. package/lib/common/reference.d.ts.map +1 -1
  510. package/lib/common/reference.js +55 -0
  511. package/lib/common/reference.js.map +1 -1
  512. package/lib/common/resource.d.ts +3 -1
  513. package/lib/common/resource.d.ts.map +1 -1
  514. package/lib/common/resource.js +8 -19
  515. package/lib/common/resource.js.map +1 -1
  516. package/lib/common/selection-service.js +2 -7
  517. package/lib/common/selection-service.js.map +1 -1
  518. package/lib/common/test/mock-logger.js +2 -7
  519. package/lib/common/test/mock-logger.js.map +1 -1
  520. package/lib/common/test/mock-resource-provider.js +3 -11
  521. package/lib/common/test/mock-resource-provider.js.map +1 -1
  522. package/lib/common/theme.d.ts +25 -0
  523. package/lib/common/theme.d.ts.map +1 -1
  524. package/lib/common/theme.js.map +1 -1
  525. package/lib/common/uri.d.ts +1 -0
  526. package/lib/common/uri.d.ts.map +1 -1
  527. package/lib/common/uri.js +1 -1
  528. package/lib/common/uri.js.map +1 -1
  529. package/lib/common/uuid.d.ts +7 -1
  530. package/lib/common/uuid.d.ts.map +1 -1
  531. package/lib/common/uuid.js +17 -58
  532. package/lib/common/uuid.js.map +1 -1
  533. package/lib/electron-browser/electron-clipboard-service.js +2 -7
  534. package/lib/electron-browser/electron-clipboard-service.js.map +1 -1
  535. package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js +6 -14
  536. package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js.map +1 -1
  537. package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
  538. package/lib/electron-browser/menu/electron-context-menu-renderer.js +18 -27
  539. package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
  540. package/lib/electron-browser/menu/electron-main-menu-factory.js +8 -16
  541. package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
  542. package/lib/electron-browser/menu/electron-menu-contribution.d.ts +2 -1
  543. package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
  544. package/lib/electron-browser/menu/electron-menu-contribution.js +33 -35
  545. package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
  546. package/lib/electron-browser/messaging/electron-frontend-id-provider.js +2 -7
  547. package/lib/electron-browser/messaging/electron-frontend-id-provider.js.map +1 -1
  548. package/lib/electron-browser/messaging/electron-ipc-connection-source.js +2 -7
  549. package/lib/electron-browser/messaging/electron-ipc-connection-source.js.map +1 -1
  550. package/lib/electron-browser/messaging/electron-local-ws-connection-source.js +2 -7
  551. package/lib/electron-browser/messaging/electron-local-ws-connection-source.js.map +1 -1
  552. package/lib/electron-browser/messaging/electron-messaging-frontend-module.js +3 -3
  553. package/lib/electron-browser/messaging/electron-messaging-frontend-module.js.map +1 -1
  554. package/lib/electron-browser/messaging/electron-ws-connection-source.js +3 -11
  555. package/lib/electron-browser/messaging/electron-ws-connection-source.js.map +1 -1
  556. package/lib/electron-browser/preload.js +2 -2
  557. package/lib/electron-browser/preload.js.map +1 -1
  558. package/lib/electron-browser/window/electron-frontend-application-state.js +2 -7
  559. package/lib/electron-browser/window/electron-frontend-application-state.js.map +1 -1
  560. package/lib/electron-browser/window/electron-secondary-window-service.d.ts +1 -1
  561. package/lib/electron-browser/window/electron-secondary-window-service.d.ts.map +1 -1
  562. package/lib/electron-browser/window/electron-secondary-window-service.js +6 -15
  563. package/lib/electron-browser/window/electron-secondary-window-service.js.map +1 -1
  564. package/lib/electron-browser/window/electron-window-service.d.ts +3 -1
  565. package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
  566. package/lib/electron-browser/window/electron-window-service.js +26 -24
  567. package/lib/electron-browser/window/electron-window-service.js.map +1 -1
  568. package/lib/electron-common/electron-api.d.ts +2 -2
  569. package/lib/electron-common/electron-api.d.ts.map +1 -1
  570. package/lib/electron-main/electron-api-main.d.ts.map +1 -1
  571. package/lib/electron-main/electron-api-main.js +16 -14
  572. package/lib/electron-main/electron-api-main.js.map +1 -1
  573. package/lib/electron-main/electron-main-application-module.js +2 -2
  574. package/lib/electron-main/electron-main-application-module.js.map +1 -1
  575. package/lib/electron-main/electron-main-application.js +16 -24
  576. package/lib/electron-main/electron-main-application.js.map +1 -1
  577. package/lib/electron-main/electron-main-window-service-impl.js +4 -12
  578. package/lib/electron-main/electron-main-window-service-impl.js.map +1 -1
  579. package/lib/electron-main/electron-security-token-service.js +4 -12
  580. package/lib/electron-main/electron-security-token-service.js.map +1 -1
  581. package/lib/electron-main/messaging/electron-messaging-contribution.js +10 -18
  582. package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
  583. package/lib/electron-main/theia-electron-window.js +13 -21
  584. package/lib/electron-main/theia-electron-window.js.map +1 -1
  585. package/lib/electron-node/hosting/electron-ws-origin-validator.js +4 -12
  586. package/lib/electron-node/hosting/electron-ws-origin-validator.js.map +1 -1
  587. package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js +2 -7
  588. package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js.map +1 -1
  589. package/lib/electron-node/request/electron-backend-request-service.js +2 -7
  590. package/lib/electron-node/request/electron-backend-request-service.js.map +1 -1
  591. package/lib/electron-node/token/electron-token-backend-contribution.js +4 -12
  592. package/lib/electron-node/token/electron-token-backend-contribution.js.map +1 -1
  593. package/lib/electron-node/token/electron-token-validator.js +6 -14
  594. package/lib/electron-node/token/electron-token-validator.js.map +1 -1
  595. package/lib/node/application-server.d.ts +1 -0
  596. package/lib/node/application-server.d.ts.map +1 -1
  597. package/lib/node/application-server.js +11 -13
  598. package/lib/node/application-server.js.map +1 -1
  599. package/lib/node/backend-application.js +17 -28
  600. package/lib/node/backend-application.js.map +1 -1
  601. package/lib/node/backend-remote-service.js +2 -7
  602. package/lib/node/backend-remote-service.js.map +1 -1
  603. package/lib/node/cli.js +5 -16
  604. package/lib/node/cli.js.map +1 -1
  605. package/lib/node/console-logger-server.js +10 -18
  606. package/lib/node/console-logger-server.js.map +1 -1
  607. package/lib/node/console-logger-server.spec.js +6 -14
  608. package/lib/node/console-logger-server.spec.js.map +1 -1
  609. package/lib/node/env-variables/env-variables-server.js +4 -12
  610. package/lib/node/env-variables/env-variables-server.js.map +1 -1
  611. package/lib/node/env-variables/index.js +2 -11
  612. package/lib/node/env-variables/index.js.map +1 -1
  613. package/lib/node/environment-utils.js +2 -7
  614. package/lib/node/environment-utils.js.map +1 -1
  615. package/lib/node/file-uri.spec.js +1 -1
  616. package/lib/node/file-uri.spec.js.map +1 -1
  617. package/lib/node/filesystem-locking.js +2 -7
  618. package/lib/node/filesystem-locking.js.map +1 -1
  619. package/lib/node/hosting/backend-application-hosts.js +6 -14
  620. package/lib/node/hosting/backend-application-hosts.js.map +1 -1
  621. package/lib/node/hosting/ws-origin-validator.js +4 -12
  622. package/lib/node/hosting/ws-origin-validator.js.map +1 -1
  623. package/lib/node/i18n/localization-contribution.js +6 -14
  624. package/lib/node/i18n/localization-contribution.js.map +1 -1
  625. package/lib/node/i18n/localization-provider.js +2 -7
  626. package/lib/node/i18n/localization-provider.js.map +1 -1
  627. package/lib/node/i18n/localization-server.js +6 -14
  628. package/lib/node/i18n/localization-server.js.map +1 -1
  629. package/lib/node/i18n/theia-localization-contribution.js +2 -7
  630. package/lib/node/i18n/theia-localization-contribution.js.map +1 -1
  631. package/lib/node/index.d.ts +1 -1
  632. package/lib/node/index.d.ts.map +1 -1
  633. package/lib/node/index.js +6 -15
  634. package/lib/node/index.js.map +1 -1
  635. package/lib/node/key-store-server.js +2 -7
  636. package/lib/node/key-store-server.js.map +1 -1
  637. package/lib/node/logger-cli-contribution.js +2 -7
  638. package/lib/node/logger-cli-contribution.js.map +1 -1
  639. package/lib/node/messaging/default-messaging-service.js +10 -18
  640. package/lib/node/messaging/default-messaging-service.js.map +1 -1
  641. package/lib/node/messaging/index.js +4 -13
  642. package/lib/node/messaging/index.js.map +1 -1
  643. package/lib/node/messaging/ipc-connection-provider.js +4 -12
  644. package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
  645. package/lib/node/messaging/messaging-listeners.js +4 -12
  646. package/lib/node/messaging/messaging-listeners.js.map +1 -1
  647. package/lib/node/messaging/test/test-web-socket-channel.js +3 -11
  648. package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
  649. package/lib/node/messaging/websocket-endpoint.js +6 -14
  650. package/lib/node/messaging/websocket-endpoint.js.map +1 -1
  651. package/lib/node/messaging/websocket-frontend-connection-service.js +4 -12
  652. package/lib/node/messaging/websocket-frontend-connection-service.js.map +1 -1
  653. package/lib/node/os-backend-provider.js +2 -7
  654. package/lib/node/os-backend-provider.js.map +1 -1
  655. package/lib/node/performance/index.js +3 -12
  656. package/lib/node/performance/index.js.map +1 -1
  657. package/lib/node/performance/node-stopwatch.js +3 -11
  658. package/lib/node/performance/node-stopwatch.js.map +1 -1
  659. package/lib/node/process-utils.js +2 -7
  660. package/lib/node/process-utils.js.map +1 -1
  661. package/lib/node/request/backend-request-facade.js +4 -12
  662. package/lib/node/request/backend-request-facade.js.map +1 -1
  663. package/lib/node/request/proxy-cli-contribution.js +4 -12
  664. package/lib/node/request/proxy-cli-contribution.js.map +1 -1
  665. package/lib/node/ws-request-validators.js +4 -12
  666. package/lib/node/ws-request-validators.js.map +1 -1
  667. package/package.json +14 -8
  668. package/src/browser/browser.ts +6 -1
  669. package/src/browser/color-application-contribution.ts +11 -2
  670. package/src/browser/command-open-handler.ts +1 -1
  671. package/src/browser/common-frontend-contribution.ts +47 -4
  672. package/src/browser/context-key-service.ts +1 -2
  673. package/src/browser/context-menu-renderer.ts +0 -4
  674. package/src/browser/core-preferences.ts +6 -0
  675. package/src/browser/decorations-service.ts +4 -4
  676. package/src/browser/frontend-application-module.ts +5 -2
  677. package/src/browser/icon-registry.ts +1 -10
  678. package/src/browser/keybinding.ts +3 -0
  679. package/src/browser/markdown-rendering/markdown-renderer.ts +1 -1
  680. package/src/browser/menu/browser-context-menu-renderer.ts +2 -1
  681. package/src/browser/menu/browser-menu-plugin.ts +2 -2
  682. package/src/browser/save-resource-service.ts +5 -4
  683. package/src/browser/secondary-window-handler.ts +21 -22
  684. package/src/browser/shell/application-shell.ts +33 -21
  685. package/src/browser/shell/tab-bar-decorator.ts +36 -6
  686. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +15 -10
  687. package/src/browser/shell/tab-bars.ts +41 -5
  688. package/src/browser/style/index.css +153 -148
  689. package/src/browser/style/select-component.css +12 -13
  690. package/src/browser/style/tabs.css +6 -0
  691. package/src/browser/styling-service.ts +12 -3
  692. package/src/browser/tooltip-service.tsx +2 -2
  693. package/src/browser/tree/index.ts +1 -0
  694. package/src/browser/tree/test/mock-selectable-tree-model.ts +109 -0
  695. package/src/browser/tree/tree-model.ts +74 -0
  696. package/src/browser/tree/tree-preference.ts +50 -0
  697. package/src/browser/tree/tree-selectable.spec.ts +152 -0
  698. package/src/browser/tree/tree-widget.tsx +24 -5
  699. package/src/browser/tree/tree.ts +2 -1
  700. package/src/browser/widget-manager.ts +25 -0
  701. package/src/browser/widgets/select-component.tsx +1 -0
  702. package/src/browser/widgets/widget.ts +8 -0
  703. package/src/browser/window/default-secondary-window-service.ts +24 -26
  704. package/src/browser/window/default-window-service.ts +4 -0
  705. package/src/browser/window/test/mock-window-service.ts +1 -0
  706. package/src/browser/window/window-service.ts +12 -2
  707. package/src/browser-only/frontend-only-application-module.ts +115 -0
  708. package/src/browser-only/i18n/i18n-frontend-only-module.ts +37 -0
  709. package/src/browser-only/logger-frontend-only-module.ts +63 -0
  710. package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +39 -0
  711. package/src/browser-only/messaging/messaging-frontend-only-module.ts +42 -0
  712. package/src/browser-only/preload/frontend-only-preload-module.ts +49 -0
  713. package/src/common/application-protocol.ts +1 -0
  714. package/src/common/disposable.spec.ts +66 -1
  715. package/src/common/disposable.ts +53 -0
  716. package/src/common/event.ts +18 -0
  717. package/src/{node → common}/file-uri.ts +2 -2
  718. package/src/common/index.ts +1 -0
  719. package/src/common/markdown-rendering/markdown-string.ts +6 -3
  720. package/src/common/menu/composite-menu-node.spec.ts +67 -0
  721. package/src/common/menu/composite-menu-node.ts +5 -5
  722. package/src/common/menu/menu-model-registry.ts +22 -5
  723. package/src/common/menu/menu.spec.ts +30 -2
  724. package/src/common/message-rpc/msg-pack-extension-manager.ts +1 -1
  725. package/src/common/message-rpc/rpc-protocol.ts +22 -2
  726. package/src/common/messaging/proxy-factory.ts +1 -8
  727. package/src/common/nls.ts +3 -1
  728. package/src/common/promise-util.spec.ts +48 -18
  729. package/src/common/quick-pick-service.ts +13 -34
  730. package/src/common/reference.ts +55 -0
  731. package/src/common/resource.ts +5 -1
  732. package/src/common/theme.ts +32 -0
  733. package/src/common/uri.ts +4 -2
  734. package/src/common/uuid.ts +15 -69
  735. package/src/electron-browser/menu/electron-context-menu-renderer.ts +3 -1
  736. package/src/electron-browser/menu/electron-menu-contribution.ts +9 -1
  737. package/src/electron-browser/messaging/electron-messaging-frontend-module.ts +1 -1
  738. package/src/electron-browser/preload.ts +3 -3
  739. package/src/electron-browser/window/electron-secondary-window-service.ts +4 -8
  740. package/src/electron-browser/window/electron-window-service.ts +15 -3
  741. package/src/electron-common/electron-api.ts +2 -2
  742. package/src/electron-main/electron-api-main.ts +11 -2
  743. package/src/electron-main/electron-main-application-module.ts +2 -2
  744. package/src/electron-main/electron-main-application.ts +1 -1
  745. package/src/electron-main/theia-electron-window.ts +1 -1
  746. package/src/node/application-server.ts +8 -1
  747. package/src/node/env-variables/env-variables-server.ts +1 -1
  748. package/src/node/file-uri.spec.ts +1 -1
  749. package/src/node/index.ts +1 -1
  750. package/lib/node/file-uri.d.ts.map +0 -1
  751. package/lib/node/file-uri.js.map +0 -1
@@ -99,21 +99,41 @@ export interface TreeModel extends Tree, TreeSelectionService, TreeExpansionServ
99
99
  */
100
100
  navigateBackward(): Promise<void>;
101
101
 
102
+ /**
103
+ * Selects the previous tree node, regardless of its selection or visibility state.
104
+ */
105
+ selectPrev(): void;
106
+
102
107
  /**
103
108
  * Selects the previous node relatively to the currently selected one. This method takes the expansion state of the tree into consideration.
104
109
  */
105
110
  selectPrevNode(type?: TreeSelection.SelectionType): void;
106
111
 
112
+ /**
113
+ * Returns the previous tree node, regardless of its selection or visibility state.
114
+ */
115
+ getPrevNode(node?: TreeNode): TreeNode | undefined;
116
+
107
117
  /**
108
118
  * Returns the previous selectable tree node.
109
119
  */
110
120
  getPrevSelectableNode(node?: TreeNode): SelectableTreeNode | undefined;
111
121
 
122
+ /**
123
+ * Selects the next tree node, regardless of its selection or visibility state.
124
+ */
125
+ selectNext(): void;
126
+
112
127
  /**
113
128
  * Selects the next node relatively to the currently selected one. This method takes the expansion state of the tree into consideration.
114
129
  */
115
130
  selectNextNode(type?: TreeSelection.SelectionType): void;
116
131
 
132
+ /**
133
+ * Returns the next tree node, regardless of its selection or visibility state.
134
+ */
135
+ getNextNode(node?: TreeNode): TreeNode | undefined;
136
+
117
137
  /**
118
138
  * Returns the next selectable tree node.
119
139
  */
@@ -294,6 +314,11 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
294
314
  }
295
315
  }
296
316
 
317
+ selectPrev(): void {
318
+ const node = this.getPrevNode();
319
+ this.selectNodeIfSelectable(node);
320
+ }
321
+
297
322
  selectPrevNode(type: TreeSelection.SelectionType = TreeSelection.SelectionType.DEFAULT): void {
298
323
  const node = this.getPrevSelectableNode();
299
324
  if (node) {
@@ -301,6 +326,11 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
301
326
  }
302
327
  }
303
328
 
329
+ getPrevNode(node: TreeNode | undefined = this.getFocusedNode()): TreeNode | undefined {
330
+ const iterator = this.createBackwardTreeIterator(node);
331
+ return iterator && this.doGetNode(iterator);
332
+ }
333
+
304
334
  getPrevSelectableNode(node: TreeNode | undefined = this.getFocusedNode()): SelectableTreeNode | undefined {
305
335
  if (!node) {
306
336
  return this.getNextSelectableNode(this.root);
@@ -309,6 +339,11 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
309
339
  return iterator && this.doGetNextNode(iterator, this.isVisibleSelectableNode.bind(this));
310
340
  }
311
341
 
342
+ selectNext(): void {
343
+ const node = this.getNextNode();
344
+ this.selectNodeIfSelectable(node);
345
+ }
346
+
312
347
  selectNextNode(type: TreeSelection.SelectionType = TreeSelection.SelectionType.DEFAULT): void {
313
348
  const node = this.getNextSelectableNode();
314
349
  if (node) {
@@ -316,11 +351,28 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
316
351
  }
317
352
  }
318
353
 
354
+ getNextNode(node: TreeNode | undefined = this.getFocusedNode()): TreeNode | undefined {
355
+ const iterator = this.createTreeIterator(node);
356
+ return iterator && this.doGetNode(iterator);
357
+ }
358
+
319
359
  getNextSelectableNode(node: TreeNode | undefined = this.getFocusedNode() ?? this.root): SelectableTreeNode | undefined {
320
360
  const iterator = this.createIterator(node);
321
361
  return iterator && this.doGetNextNode(iterator, this.isVisibleSelectableNode.bind(this));
322
362
  }
323
363
 
364
+ protected selectNodeIfSelectable(node: TreeNode | undefined): void {
365
+ if (SelectableTreeNode.is(node)) {
366
+ this.addSelection(node);
367
+ }
368
+ }
369
+
370
+ protected doGetNode(iterator: TreeIterator): TreeNode | undefined {
371
+ iterator.next();
372
+ const result = iterator.next();
373
+ return result.done ? undefined : result.value;
374
+ }
375
+
324
376
  protected doGetNextNode<T extends TreeNode>(iterator: TreeIterator, criterion: (node: TreeNode) => node is T): T | undefined {
325
377
  // Skip the first item. // TODO: clean this up, and skip the first item in a different way without loading everything.
326
378
  iterator.next();
@@ -338,6 +390,17 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
338
390
  return SelectableTreeNode.isVisible(node);
339
391
  }
340
392
 
393
+ protected createBackwardTreeIterator(node: TreeNode | undefined): TreeIterator | undefined {
394
+ const { filteredNodes } = this.treeSearch;
395
+ if (filteredNodes.length === 0) {
396
+ return node ? new BottomUpTreeIterator(node!, { pruneCollapsed: false }) : undefined;
397
+ }
398
+ if (node && filteredNodes.indexOf(node) === -1) {
399
+ return undefined;
400
+ }
401
+ return Iterators.cycle(filteredNodes.slice().reverse(), node);
402
+ }
403
+
341
404
  protected createBackwardIterator(node: TreeNode | undefined): TreeIterator | undefined {
342
405
  const { filteredNodes } = this.treeSearch;
343
406
  if (filteredNodes.length === 0) {
@@ -349,6 +412,17 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
349
412
  return Iterators.cycle(filteredNodes.slice().reverse(), node);
350
413
  }
351
414
 
415
+ protected createTreeIterator(node: TreeNode | undefined): TreeIterator | undefined {
416
+ const { filteredNodes } = this.treeSearch;
417
+ if (filteredNodes.length === 0) {
418
+ return node && new TopDownTreeIterator(node, { pruneCollapsed: false });
419
+ }
420
+ if (node && filteredNodes.indexOf(node) === -1) {
421
+ return undefined;
422
+ }
423
+ return Iterators.cycle(filteredNodes, node);
424
+ }
425
+
352
426
  protected createIterator(node: TreeNode | undefined): TreeIterator | undefined {
353
427
  const { filteredNodes } = this.treeSearch;
354
428
  if (filteredNodes.length === 0) {
@@ -0,0 +1,50 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2024 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-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { interfaces } from 'inversify';
18
+ import { PreferenceProxy, PreferenceContribution, PreferenceSchema } from '../preferences';
19
+ import { PreferenceProxyFactory } from '../preferences/injectable-preference-proxy';
20
+ import { nls } from '../../common/nls';
21
+
22
+ export const PREFERENCE_NAME_TREE_INDENT = 'workbench.tree.indent';
23
+
24
+ export const treePreferencesSchema: PreferenceSchema = {
25
+ type: 'object',
26
+ properties: {
27
+ [PREFERENCE_NAME_TREE_INDENT]: {
28
+ description: nls.localizeByDefault('Controls tree indentation in pixels.'),
29
+ type: 'number',
30
+ default: 8,
31
+ minimum: 4,
32
+ maximum: 40
33
+ },
34
+ }
35
+ };
36
+
37
+ export class TreeConfiguration {
38
+ [PREFERENCE_NAME_TREE_INDENT]: number;
39
+ }
40
+
41
+ export const TreePreferences = Symbol('treePreferences');
42
+ export type TreePreferences = PreferenceProxy<TreeConfiguration>;
43
+
44
+ export function bindTreePreferences(bind: interfaces.Bind): void {
45
+ bind(TreePreferences).toDynamicValue(ctx => {
46
+ const factory = ctx.container.get<PreferenceProxyFactory>(PreferenceProxyFactory);
47
+ return factory(treePreferencesSchema);
48
+ }).inSingletonScope();
49
+ bind(PreferenceContribution).toConstantValue({ schema: treePreferencesSchema });
50
+ }
@@ -0,0 +1,152 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2018 TypeFox 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-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { TreeNode } from './tree';
18
+ import { TreeModel } from './tree-model';
19
+ import { notEmpty } from '../../common/objects';
20
+ import { expect } from 'chai';
21
+ import { createTreeTestContainer } from './test/tree-test-container';
22
+ import { SelectableTreeNode } from './tree-selection';
23
+ import { MockSelectableTreeModel } from './test/mock-selectable-tree-model';
24
+ import { ExpandableTreeNode } from './tree-expansion';
25
+
26
+ describe('Selectable Tree', () => {
27
+ let model: TreeModel;
28
+ function assertNodeRetrieval(method: () => TreeNode | undefined, sequence: string[]): void {
29
+ for (const expectedNodeId of sequence) {
30
+ const actualNode = method();
31
+ const expectedNode = retrieveNode<SelectableTreeNode>(expectedNodeId);
32
+ expect(actualNode?.id).to.be.equal(expectedNode.id);
33
+ model.addSelection(expectedNode);
34
+ }
35
+ }
36
+ function assertNodeSelection(method: () => void, sequence: string[]): void {
37
+ for (const expectedNodeId of sequence) {
38
+ method();
39
+ const node = retrieveNode<SelectableTreeNode>(expectedNodeId);
40
+ expect(node.selected).to.be.true;
41
+ }
42
+ }
43
+ describe('Get and Set Next Nodes Methods', () => {
44
+ const uncollapsedSelectionOrder = ['1.1', '1.1.1', '1.1.2', '1.2', '1.2.1', '1.2.1.1', '1.2.1.2', '1.2.2', '1.2.3', '1.3'];
45
+ const collapsedSelectionOrder = ['1.1', '1.2', '1.2.1', '1.2.2', '1.2.3', '1.3'];
46
+ beforeEach(() => {
47
+ model = createTreeModel();
48
+ model.root = MockSelectableTreeModel.HIERARCHICAL_MOCK_ROOT();
49
+ model.addSelection(retrieveNode<SelectableTreeNode>('1'));
50
+
51
+ });
52
+ it('`getNextNode()` should select each node in sequence (uncollapsed)', done => {
53
+ assertNodeRetrieval(model.getNextNode.bind(model), uncollapsedSelectionOrder);
54
+ done();
55
+ });
56
+ it('`getNextNode()` should select each node in sequence (collapsed)', done => {
57
+ collapseNode('1.1', '1.2.1');
58
+ assertNodeRetrieval(model.getNextNode.bind(model), uncollapsedSelectionOrder);
59
+ done();
60
+ });
61
+ it('`getNextSelectableNode()` should select each node in sequence (uncollapsed)', done => {
62
+ assertNodeRetrieval(model.getNextSelectableNode.bind(model), uncollapsedSelectionOrder);
63
+ done();
64
+ });
65
+ it('`getNextSelectableNode()` should select each node in sequence (collapsed)', done => {
66
+ collapseNode('1.1', '1.2.1');
67
+ assertNodeRetrieval(model.getNextSelectableNode.bind(model), collapsedSelectionOrder);
68
+ done();
69
+ });
70
+ it('`selectNext()` should select each node in sequence (uncollapsed)', done => {
71
+ assertNodeSelection(model.selectNext.bind(model), uncollapsedSelectionOrder);
72
+ done();
73
+ });
74
+ it('`selectNext()` should select each node in sequence (collapsed)', done => {
75
+ collapseNode('1.1', '1.2.1');
76
+ assertNodeSelection(model.selectNext.bind(model), uncollapsedSelectionOrder);
77
+ done();
78
+ });
79
+ it('`selectNextNode()` should select each node in sequence (uncollapsed)', done => {
80
+ assertNodeSelection(model.selectNextNode.bind(model), uncollapsedSelectionOrder);
81
+ done();
82
+ });
83
+ it('`selectNextNode()` should select each node in sequence (collapsed)', done => {
84
+ collapseNode('1.1', '1.2.1');
85
+ assertNodeSelection(model.selectNextNode.bind(model), collapsedSelectionOrder);
86
+ done();
87
+ });
88
+ });
89
+
90
+ describe('Get and Set Previous Nodes Methods', () => {
91
+ const uncollapsedSelectionOrder = ['1.2.3', '1.2.2', '1.2.1.2', '1.2.1.1', '1.2.1', '1.2', '1.1.2', '1.1.1', '1.1'];
92
+ const collapsedSelectionOrder = ['1.2.3', '1.2.2', '1.2.1', '1.2', '1.1'];
93
+ beforeEach(() => {
94
+ model = createTreeModel();
95
+ model.root = MockSelectableTreeModel.HIERARCHICAL_MOCK_ROOT();
96
+ model.addSelection(retrieveNode<SelectableTreeNode>('1.3'));
97
+ });
98
+ it('`getPrevNode()` should select each node in reverse sequence (uncollapsed)', done => {
99
+ assertNodeRetrieval(model.getPrevNode.bind(model), uncollapsedSelectionOrder);
100
+ done();
101
+ });
102
+ it('`getPrevNode()` should select each node in reverse sequence (collapsed)', done => {
103
+ collapseNode('1.1', '1.2.1');
104
+ assertNodeRetrieval(model.getPrevNode.bind(model), uncollapsedSelectionOrder);
105
+ done();
106
+ });
107
+ it('`getPrevSelectableNode()` should select each node in reverse sequence (uncollapsed)', done => {
108
+ assertNodeRetrieval(model.getPrevSelectableNode.bind(model), uncollapsedSelectionOrder);
109
+ done();
110
+ });
111
+ it('`getPrevSelectableNode()` should select each node in reverse sequence (collapsed)', done => {
112
+ collapseNode('1.1', '1.2.1');
113
+ assertNodeRetrieval(model.getPrevSelectableNode.bind(model), collapsedSelectionOrder);
114
+ done();
115
+ });
116
+ it('`selectPrev()` should select each node in reverse sequence (uncollapsed)', done => {
117
+ assertNodeSelection(model.selectPrev.bind(model), uncollapsedSelectionOrder);
118
+ done();
119
+ });
120
+ it('`selectPrev()` should select each node in reverse sequence (collapsed)', done => {
121
+ collapseNode('1.1', '1.2.1');
122
+ assertNodeSelection(model.selectPrev.bind(model), uncollapsedSelectionOrder);
123
+ done();
124
+ });
125
+ it('`selectPrevNode()` should select each node in reverse sequence (uncollapsed)', done => {
126
+ assertNodeSelection(model.selectPrevNode.bind(model), uncollapsedSelectionOrder);
127
+ done();
128
+ });
129
+ it('`selectPrevNode()` should select each node in reverse sequence (collapsed)', done => {
130
+ collapseNode('1.1', '1.2.1');
131
+ assertNodeSelection(model.selectPrevNode.bind(model), collapsedSelectionOrder);
132
+ done();
133
+ });
134
+ });
135
+
136
+ const findNode = (id: string) => model.getNode(id);
137
+ function createTreeModel(): TreeModel {
138
+ const container = createTreeTestContainer();
139
+ return container.get(TreeModel);
140
+ }
141
+ function retrieveNode<T extends TreeNode>(id: string): Readonly<T> {
142
+ const readonlyNode: Readonly<T> = model.getNode(id) as T;
143
+ return readonlyNode;
144
+ }
145
+ function collapseNode(...ids: string[]): void {
146
+ ids.map(findNode).filter(notEmpty).filter(ExpandableTreeNode.is).forEach(node => {
147
+ model.collapseNode(node);
148
+ expect(node).to.have.property('expanded', false);
149
+ });
150
+ }
151
+
152
+ });
@@ -43,6 +43,8 @@ import { LabelProvider } from '../label-provider';
43
43
  import { CorePreferences } from '../core-preferences';
44
44
  import { TreeFocusService } from './tree-focus-service';
45
45
  import { useEffect } from 'react';
46
+ import { PreferenceService, PreferenceChange } from '../preferences';
47
+ import { PREFERENCE_NAME_TREE_INDENT } from './tree-preference';
46
48
 
47
49
  const debounce = require('lodash.debounce');
48
50
 
@@ -73,8 +75,7 @@ export interface TreeProps {
73
75
  readonly contextMenuPath?: MenuPath;
74
76
 
75
77
  /**
76
- * The size of the padding (in pixels) per hierarchy depth. The root element won't have left padding but
77
- * the padding for the children will be calculated as `leftPadding * hierarchyDepth` and so on.
78
+ * The size of the padding (in pixels) for the root node of the tree.
78
79
  */
79
80
  readonly leftPadding: number;
80
81
 
@@ -174,6 +175,9 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
174
175
  @inject(SelectionService)
175
176
  protected readonly selectionService: SelectionService;
176
177
 
178
+ @inject(PreferenceService)
179
+ protected readonly preferenceService: PreferenceService;
180
+
177
181
  @inject(LabelProvider)
178
182
  protected readonly labelProvider: LabelProvider;
179
183
 
@@ -182,6 +186,8 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
182
186
 
183
187
  protected shouldScrollToRow = true;
184
188
 
189
+ protected treeIndent: number = 8;
190
+
185
191
  constructor(
186
192
  @inject(TreeProps) readonly props: TreeProps,
187
193
  @inject(TreeModel) readonly model: TreeModel,
@@ -198,6 +204,7 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
198
204
 
199
205
  @postConstruct()
200
206
  protected init(): void {
207
+ this.treeIndent = this.preferenceService.get(PREFERENCE_NAME_TREE_INDENT, this.treeIndent);
201
208
  if (this.props.search) {
202
209
  this.searchBox = this.searchBoxFactory({ ...SearchBoxProps.DEFAULT, showButtons: true, showFilter: true });
203
210
  this.searchBox.node.addEventListener('focus', () => {
@@ -264,6 +271,12 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
264
271
  return;
265
272
  }
266
273
  }
274
+ }),
275
+ this.preferenceService.onPreferenceChanged((event: PreferenceChange) => {
276
+ if (event.preferenceName === PREFERENCE_NAME_TREE_INDENT) {
277
+ this.treeIndent = event.newValue;
278
+ this.update();
279
+ }
267
280
  })
268
281
  ]);
269
282
  setTimeout(() => {
@@ -1227,12 +1240,15 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
1227
1240
 
1228
1241
  /**
1229
1242
  * Handle the `space key` keyboard event.
1230
- * - By default should be similar to a single-click action.
1243
+ * - If the element has a checkbox, it will be toggled.
1244
+ * - Otherwise, it should be similar to a single-click action.
1231
1245
  * @param event the `space key` keyboard event.
1232
1246
  */
1233
1247
  protected handleSpace(event: KeyboardEvent): void {
1234
1248
  const { focusedNode } = this.focusService;
1235
- if (!this.props.multiSelect || (!event.ctrlKey && !event.metaKey && !event.shiftKey)) {
1249
+ if (focusedNode && focusedNode.checkboxInfo) {
1250
+ this.model.markAsChecked(focusedNode, !focusedNode.checkboxInfo.checked);
1251
+ } else if (!this.props.multiSelect || (!event.ctrlKey && !event.metaKey && !event.shiftKey)) {
1236
1252
  this.tapNode(focusedNode);
1237
1253
  }
1238
1254
  }
@@ -1497,7 +1513,10 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
1497
1513
  return this.labelProvider.getLongName(node);
1498
1514
  }
1499
1515
  protected getDepthPadding(depth: number): number {
1500
- return depth * this.props.leftPadding;
1516
+ if (depth === 1) {
1517
+ return this.props.leftPadding;
1518
+ }
1519
+ return depth * this.treeIndent;
1501
1520
  }
1502
1521
  }
1503
1522
  export namespace TreeWidget {
@@ -397,9 +397,10 @@ export class TreeImpl implements Tree {
397
397
 
398
398
  protected async doMarkAsBusy(node: Mutable<TreeNode>, ms: number, token: CancellationToken): Promise<void> {
399
399
  try {
400
+ token.onCancellationRequested(() => this.doResetBusy(node));
400
401
  await timeout(ms, token);
402
+ if (token.isCancellationRequested) { return; }
401
403
  this.doSetBusy(node);
402
- token.onCancellationRequested(() => this.doResetBusy(node));
403
404
  } catch {
404
405
  /* no-op */
405
406
  }
@@ -194,6 +194,31 @@ export class WidgetManager {
194
194
  return widget;
195
195
  }
196
196
 
197
+ /**
198
+ * Finds a widget that matches the given test predicate.
199
+ * @param factoryId The widget factory id.
200
+ * @param predicate The test predicate.
201
+ *
202
+ * @returns a promise resolving to the widget if available, else `undefined`.
203
+ */
204
+ async findWidget<T extends Widget>(factoryId: string, predicate: (options?: any) => boolean): Promise<T | undefined> {
205
+ for (const [key, widget] of this.widgets.entries()) {
206
+ if (this.testPredicate(key, factoryId, predicate)) {
207
+ return widget as T;
208
+ }
209
+ }
210
+ for (const [key, widget] of this.pendingWidgetPromises.entries()) {
211
+ if (this.testPredicate(key, factoryId, predicate)) {
212
+ return widget as T;
213
+ }
214
+ }
215
+ }
216
+
217
+ protected testPredicate(key: string, factoryId: string, predicate: (options?: any) => boolean): boolean {
218
+ const constructionOptions = this.fromKey(key);
219
+ return constructionOptions.factoryId === factoryId && predicate(constructionOptions.options);
220
+ }
221
+
197
222
  protected doGetWidget<T extends Widget>(key: string): MaybePromise<T> | undefined {
198
223
  const pendingWidget = this.widgets.get(key) ?? this.pendingWidgetPromises.get(key);
199
224
  if (pendingWidget) {
@@ -77,6 +77,7 @@ export class SelectComponent extends React.Component<SelectComponentProps, Selec
77
77
  if (!list) {
78
78
  list = document.createElement('div');
79
79
  list.id = SELECT_COMPONENT_CONTAINER;
80
+ list.className = 'theia-select-component-container';
80
81
  document.body.appendChild(list);
81
82
  }
82
83
  this.dropdownElement = list;
@@ -381,12 +381,20 @@ export function pin(title: Title<Widget>): void {
381
381
  }
382
382
  }
383
383
 
384
+ export function isLocked(title: Title<Widget>): boolean {
385
+ return title.className.includes(LOCKED_CLASS);
386
+ }
387
+
384
388
  export function lock(title: Title<Widget>): void {
385
389
  if (!title.className.includes(LOCKED_CLASS)) {
386
390
  title.className += ` ${LOCKED_CLASS}`;
387
391
  }
388
392
  }
389
393
 
394
+ export function unlock(title: Title<Widget>): void {
395
+ title.className = title.className.replace(LOCKED_CLASS, '').trim();
396
+ }
397
+
390
398
  export function togglePinned(title?: Title<Widget>): void {
391
399
  if (title) {
392
400
  if (isPinned(title)) {
@@ -82,37 +82,14 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
82
82
  }
83
83
 
84
84
  createSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): Window | undefined {
85
- const win = this.doCreateSecondaryWindow(widget, shell);
86
- if (win) {
87
- this.secondaryWindows.push(win);
88
- win.addEventListener('close', () => {
89
- const extIndex = this.secondaryWindows.indexOf(win);
90
- if (extIndex > -1) {
91
- this.secondaryWindows.splice(extIndex, 1);
92
- };
93
- });
94
- }
95
- return win;
96
- }
97
-
98
- protected findWindow<T>(windowName: string): Window | undefined {
99
- for (const w of this.secondaryWindows) {
100
- if (w.name === windowName) {
101
- return w;
102
- }
103
- }
104
- return undefined;
105
- }
106
-
107
- protected doCreateSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): Window | undefined {
108
- let options;
109
85
  const [height, width, left, top] = this.findSecondaryWindowCoordinates(widget);
110
- options = `popup=1,width=${width},height=${height},left=${left},top=${top}`;
86
+ let options = `popup=1,width=${width},height=${height},left=${left},top=${top}`;
111
87
  if (this.preferenceService.get('window.secondaryWindowAlwaysOnTop')) {
112
88
  options += ',alwaysOnTop=true';
113
89
  }
114
90
  const newWindow = window.open(DefaultSecondaryWindowService.SECONDARY_WINDOW_URL, this.nextWindowId(), options) ?? undefined;
115
91
  if (newWindow) {
92
+ this.secondaryWindows.push(newWindow);
116
93
  newWindow.addEventListener('DOMContentLoaded', () => {
117
94
  newWindow.addEventListener('beforeunload', evt => {
118
95
  const saveable = Saveable.get(widget);
@@ -124,17 +101,38 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
124
101
  }
125
102
  }, { capture: true });
126
103
 
127
- newWindow.addEventListener('close', () => {
104
+ newWindow.addEventListener('unload', () => {
128
105
  const saveable = Saveable.get(widget);
129
106
  shell.closeWidget(widget.id, {
130
107
  save: !!saveable && saveable.dirty && saveable.autoSave !== 'off'
131
108
  });
109
+
110
+ const extIndex = this.secondaryWindows.indexOf(newWindow);
111
+ if (extIndex > -1) {
112
+ this.secondaryWindows.splice(extIndex, 1);
113
+ };
132
114
  });
115
+ this.windowCreated(newWindow, widget, shell);
133
116
  });
134
117
  }
135
118
  return newWindow;
136
119
  }
137
120
 
121
+ protected windowCreated(newWindow: Window, widget: ExtractableWidget, shell: ApplicationShell): void {
122
+ newWindow.addEventListener('unload', () => {
123
+ shell.closeWidget(widget.id);
124
+ });
125
+ }
126
+
127
+ protected findWindow<T>(windowName: string): Window | undefined {
128
+ for (const w of this.secondaryWindows) {
129
+ if (w.name === windowName) {
130
+ return w;
131
+ }
132
+ }
133
+ return undefined;
134
+ }
135
+
138
136
  protected findSecondaryWindowCoordinates(widget: ExtractableWidget): (number | undefined)[] {
139
137
  const clientBounds = widget.node.getBoundingClientRect();
140
138
  const preference = this.preferenceService.get('window.secondaryWindowPlacement');
@@ -57,6 +57,10 @@ export class DefaultWindowService implements WindowService, FrontendApplicationC
57
57
  this.openNewWindow(`#${DEFAULT_WINDOW_HASH}`);
58
58
  }
59
59
 
60
+ focus(): void {
61
+ window.focus();
62
+ }
63
+
60
64
  /**
61
65
  * Returns a list of actions that {@link FrontendApplicationContribution}s would like to take before shutdown
62
66
  * It is expected that this will succeed - i.e. return an empty array - at most once per session. If no vetoes are received
@@ -21,6 +21,7 @@ import { WindowService } from '../window-service';
21
21
  export class MockWindowService implements WindowService {
22
22
  openNewWindow(): undefined { return undefined; }
23
23
  openNewDefaultWindow(): void { }
24
+ focus(): void { }
24
25
  reload(): void { }
25
26
  isSafeToShutDown(): Promise<boolean> { return Promise.resolve(true); }
26
27
  setSafeToShutDown(): void { }
@@ -18,6 +18,11 @@ import { StopReason } from '../../common/frontend-application-state';
18
18
  import { Event } from '../../common/event';
19
19
  import { NewWindowOptions, WindowSearchParams } from '../../common/window';
20
20
 
21
+ export interface WindowReloadOptions {
22
+ search?: WindowSearchParams,
23
+ hash?: string
24
+ }
25
+
21
26
  /**
22
27
  * Service for opening new browser windows.
23
28
  */
@@ -35,7 +40,12 @@ export interface WindowService {
35
40
  * Opens a new default window.
36
41
  * - In electron and in the browser it will open the default window without a pre-defined content.
37
42
  */
38
- openNewDefaultWindow(params?: WindowSearchParams): void;
43
+ openNewDefaultWindow(params?: WindowReloadOptions): void;
44
+
45
+ /**
46
+ * Reveal and focuses the current window
47
+ */
48
+ focus(): void;
39
49
 
40
50
  /**
41
51
  * Fires when the `window` unloads. The unload event is inevitable. On this event, the frontend application can save its state and release resource.
@@ -64,5 +74,5 @@ export interface WindowService {
64
74
  /**
65
75
  * Reloads the window according to platform.
66
76
  */
67
- reload(params?: WindowSearchParams): void;
77
+ reload(params?: WindowReloadOptions): void;
68
78
  }