@theia/core 1.65.0-next.6 → 1.65.0

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 (440) hide show
  1. package/README.md +6 -6
  2. package/i18n/nls.cs.json +117 -15
  3. package/i18n/nls.de.json +117 -15
  4. package/i18n/nls.es.json +117 -15
  5. package/i18n/nls.fr.json +117 -15
  6. package/i18n/nls.hu.json +117 -15
  7. package/i18n/nls.it.json +117 -15
  8. package/i18n/nls.ja.json +117 -15
  9. package/i18n/nls.json +121 -19
  10. package/i18n/nls.ko.json +117 -15
  11. package/i18n/nls.pl.json +117 -15
  12. package/i18n/nls.pt-br.json +117 -15
  13. package/i18n/nls.ru.json +117 -15
  14. package/i18n/nls.tr.json +117 -15
  15. package/i18n/nls.zh-cn.json +117 -15
  16. package/i18n/nls.zh-tw.json +117 -15
  17. package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts +1 -1
  18. package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts.map +1 -1
  19. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +1 -1
  20. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
  21. package/lib/browser/catalog.json +202 -30
  22. package/lib/browser/common-frontend-contribution.d.ts +2 -3
  23. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  24. package/lib/browser/common-frontend-contribution.js +3 -4
  25. package/lib/browser/common-frontend-contribution.js.map +1 -1
  26. package/lib/browser/dialogs/react-dialog.d.ts.map +1 -1
  27. package/lib/browser/dialogs/react-dialog.js +1 -0
  28. package/lib/browser/dialogs/react-dialog.js.map +1 -1
  29. package/lib/browser/encoding-registry.d.ts +1 -1
  30. package/lib/browser/encoding-registry.d.ts.map +1 -1
  31. package/lib/browser/encoding-registry.js +1 -1
  32. package/lib/browser/encoding-registry.js.map +1 -1
  33. package/lib/browser/frontend-application-bindings.d.ts.map +1 -1
  34. package/lib/browser/frontend-application-bindings.js +10 -17
  35. package/lib/browser/frontend-application-bindings.js.map +1 -1
  36. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  37. package/lib/browser/frontend-application-module.js +10 -6
  38. package/lib/browser/frontend-application-module.js.map +1 -1
  39. package/lib/browser/frontend-application.d.ts +1 -1
  40. package/lib/browser/frontend-application.d.ts.map +1 -1
  41. package/lib/browser/frontend-application.js +1 -1
  42. package/lib/browser/frontend-application.js.map +1 -1
  43. package/lib/browser/hover-service.d.ts +1 -2
  44. package/lib/browser/hover-service.d.ts.map +1 -1
  45. package/lib/browser/hover-service.js +1 -2
  46. package/lib/browser/hover-service.js.map +1 -1
  47. package/lib/browser/icon-theme-service.d.ts +3 -2
  48. package/lib/browser/icon-theme-service.d.ts.map +1 -1
  49. package/lib/browser/icon-theme-service.js +4 -3
  50. package/lib/browser/icon-theme-service.js.map +1 -1
  51. package/lib/browser/index.d.ts +0 -1
  52. package/lib/browser/index.d.ts.map +1 -1
  53. package/lib/browser/index.js +0 -1
  54. package/lib/browser/index.js.map +1 -1
  55. package/lib/browser/json-schema-store.d.ts +2 -0
  56. package/lib/browser/json-schema-store.d.ts.map +1 -1
  57. package/lib/browser/json-schema-store.js +10 -3
  58. package/lib/browser/json-schema-store.js.map +1 -1
  59. package/lib/browser/keybinding.d.ts +1 -1
  60. package/lib/browser/keybinding.d.ts.map +1 -1
  61. package/lib/browser/keybinding.js +1 -1
  62. package/lib/browser/keybinding.js.map +1 -1
  63. package/lib/browser/keybinding.spec.js +1 -1
  64. package/lib/browser/keybinding.spec.js.map +1 -1
  65. package/lib/browser/menu/browser-menu-plugin.d.ts +3 -3
  66. package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
  67. package/lib/browser/menu/browser-menu-plugin.js +4 -5
  68. package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
  69. package/lib/browser/open-with-service.d.ts +1 -1
  70. package/lib/browser/open-with-service.d.ts.map +1 -1
  71. package/lib/browser/open-with-service.js +3 -3
  72. package/lib/browser/open-with-service.js.map +1 -1
  73. package/lib/browser/opener-service.d.ts +1 -2
  74. package/lib/browser/opener-service.d.ts.map +1 -1
  75. package/lib/browser/opener-service.js.map +1 -1
  76. package/lib/browser/preferences/frontend-config-preference-contributions.d.ts +6 -0
  77. package/lib/browser/preferences/frontend-config-preference-contributions.d.ts.map +1 -0
  78. package/lib/browser/preferences/frontend-config-preference-contributions.js +60 -0
  79. package/lib/browser/preferences/frontend-config-preference-contributions.js.map +1 -0
  80. package/lib/browser/preferences/index.d.ts +0 -5
  81. package/lib/browser/preferences/index.d.ts.map +1 -1
  82. package/lib/browser/preferences/index.js +0 -5
  83. package/lib/browser/preferences/index.js.map +1 -1
  84. package/lib/browser/preferences/preference-contribution.d.ts +0 -96
  85. package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
  86. package/lib/browser/preferences/preference-contribution.js +14 -355
  87. package/lib/browser/preferences/preference-contribution.js.map +1 -1
  88. package/lib/browser/preferences/preference-proxy.spec.js +25 -17
  89. package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
  90. package/lib/browser/preferences/preference-schema-provider.spec.js +21 -34
  91. package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
  92. package/lib/browser/preferences/preference-service.spec.js +57 -80
  93. package/lib/browser/preferences/preference-service.spec.js.map +1 -1
  94. package/lib/browser/preferences/preference-validation-service.d.ts +24 -26
  95. package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
  96. package/lib/browser/preferences/preference-validation-service.js +40 -20
  97. package/lib/browser/preferences/preference-validation-service.js.map +1 -1
  98. package/lib/browser/preferences/preference-validation-service.spec.js +10 -6
  99. package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
  100. package/lib/browser/preferences/test/mock-preference-provider.d.ts +2 -3
  101. package/lib/browser/preferences/test/mock-preference-provider.d.ts.map +1 -1
  102. package/lib/browser/preferences/test/mock-preference-provider.js +5 -7
  103. package/lib/browser/preferences/test/mock-preference-provider.js.map +1 -1
  104. package/lib/browser/preferences/test/mock-preference-proxy.d.ts.map +1 -1
  105. package/lib/browser/preferences/test/mock-preference-proxy.js.map +1 -1
  106. package/lib/browser/preferences/test/mock-preference-service.d.ts +1 -4
  107. package/lib/browser/preferences/test/mock-preference-service.d.ts.map +1 -1
  108. package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
  109. package/lib/browser/quick-input/quick-command-service.d.ts +1 -1
  110. package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
  111. package/lib/browser/quick-input/quick-command-service.js +1 -1
  112. package/lib/browser/quick-input/quick-command-service.js.map +1 -1
  113. package/lib/browser/request/browser-request-service.d.ts +1 -1
  114. package/lib/browser/request/browser-request-service.d.ts.map +1 -1
  115. package/lib/browser/request/browser-request-service.js +2 -2
  116. package/lib/browser/request/browser-request-service.js.map +1 -1
  117. package/lib/browser/saveable.d.ts +9 -0
  118. package/lib/browser/saveable.d.ts.map +1 -1
  119. package/lib/browser/saveable.js.map +1 -1
  120. package/lib/browser/secondary-window-handler.d.ts +21 -9
  121. package/lib/browser/secondary-window-handler.d.ts.map +1 -1
  122. package/lib/browser/secondary-window-handler.js +162 -21
  123. package/lib/browser/secondary-window-handler.js.map +1 -1
  124. package/lib/browser/shell/application-shell.d.ts +7 -2
  125. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  126. package/lib/browser/shell/application-shell.js +27 -10
  127. package/lib/browser/shell/application-shell.js.map +1 -1
  128. package/lib/browser/shell/shell-layout-restorer.d.ts +13 -0
  129. package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
  130. package/lib/browser/shell/shell-layout-restorer.js +8 -1
  131. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  132. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +30 -16
  133. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -1
  134. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +116 -33
  135. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
  136. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
  137. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +8 -3
  138. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
  139. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +1 -1
  140. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
  141. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts +2 -2
  142. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts.map +1 -1
  143. package/lib/browser/shell/tab-bars.d.ts +1 -1
  144. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  145. package/lib/browser/shell/theia-dock-panel.d.ts +19 -2
  146. package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
  147. package/lib/browser/shell/theia-dock-panel.js +82 -0
  148. package/lib/browser/shell/theia-dock-panel.js.map +1 -1
  149. package/lib/browser/status-bar/status-bar.d.ts +1 -1
  150. package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
  151. package/lib/browser/status-bar/status-bar.js +3 -2
  152. package/lib/browser/status-bar/status-bar.js.map +1 -1
  153. package/lib/browser/theming.d.ts +5 -4
  154. package/lib/browser/theming.d.ts.map +1 -1
  155. package/lib/browser/theming.js +7 -6
  156. package/lib/browser/theming.js.map +1 -1
  157. package/lib/browser/tooltip-service.d.ts +1 -1
  158. package/lib/browser/tooltip-service.d.ts.map +1 -1
  159. package/lib/browser/tooltip-service.js +1 -1
  160. package/lib/browser/tooltip-service.js.map +1 -1
  161. package/lib/browser/tree/index.d.ts +0 -1
  162. package/lib/browser/tree/index.d.ts.map +1 -1
  163. package/lib/browser/tree/index.js +0 -1
  164. package/lib/browser/tree/index.js.map +1 -1
  165. package/lib/browser/tree/tree-widget.d.ts +2 -2
  166. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  167. package/lib/browser/tree/tree-widget.js +5 -4
  168. package/lib/browser/tree/tree-widget.js.map +1 -1
  169. package/lib/browser/view-container.d.ts.map +1 -1
  170. package/lib/browser/view-container.js +2 -2
  171. package/lib/browser/view-container.js.map +1 -1
  172. package/lib/browser/widgets/extractable-widget.d.ts +3 -0
  173. package/lib/browser/widgets/extractable-widget.d.ts.map +1 -1
  174. package/lib/browser/widgets/extractable-widget.js.map +1 -1
  175. package/lib/browser/widgets/widget.js +4 -4
  176. package/lib/browser/widgets/widget.js.map +1 -1
  177. package/lib/browser/window/default-secondary-window-service.d.ts +10 -5
  178. package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
  179. package/lib/browser/window/default-secondary-window-service.js +53 -13
  180. package/lib/browser/window/default-secondary-window-service.js.map +1 -1
  181. package/lib/browser/window/default-window-service.d.ts +1 -1
  182. package/lib/browser/window/default-window-service.d.ts.map +1 -1
  183. package/lib/browser/window/default-window-service.js +1 -1
  184. package/lib/browser/window/default-window-service.js.map +1 -1
  185. package/lib/browser/window/default-window-service.spec.js +1 -1
  186. package/lib/browser/window/default-window-service.spec.js.map +1 -1
  187. package/lib/browser/window/secondary-window-service.d.ts +15 -2
  188. package/lib/browser/window/secondary-window-service.d.ts.map +1 -1
  189. package/lib/browser/window/secondary-window-service.js +12 -1
  190. package/lib/browser/window/secondary-window-service.js.map +1 -1
  191. package/lib/browser/window/window-title-service.d.ts +1 -1
  192. package/lib/browser/window/window-title-service.d.ts.map +1 -1
  193. package/lib/browser/window/window-title-service.js +1 -1
  194. package/lib/browser/window/window-title-service.js.map +1 -1
  195. package/lib/{browser → common}/core-preferences.d.ts +2 -1
  196. package/lib/common/core-preferences.d.ts.map +1 -0
  197. package/lib/{browser → common}/core-preferences.js +17 -18
  198. package/lib/common/core-preferences.js.map +1 -0
  199. package/lib/common/index.d.ts +4 -0
  200. package/lib/common/index.d.ts.map +1 -1
  201. package/lib/common/index.js +4 -0
  202. package/lib/common/index.js.map +1 -1
  203. package/lib/common/inversify-utils.d.ts +31 -0
  204. package/lib/common/inversify-utils.d.ts.map +1 -0
  205. package/lib/common/inversify-utils.js +60 -0
  206. package/lib/common/inversify-utils.js.map +1 -0
  207. package/lib/common/json-schema.d.ts +1 -0
  208. package/lib/common/json-schema.d.ts.map +1 -1
  209. package/lib/common/menu/menu-types.d.ts +1 -0
  210. package/lib/common/menu/menu-types.d.ts.map +1 -1
  211. package/lib/common/menu/menu-types.js.map +1 -1
  212. package/lib/common/preferences/defaults-preference-provider.d.ts +21 -0
  213. package/lib/common/preferences/defaults-preference-provider.d.ts.map +1 -0
  214. package/lib/common/preferences/defaults-preference-provider.js +99 -0
  215. package/lib/common/preferences/defaults-preference-provider.js.map +1 -0
  216. package/lib/common/preferences/index.d.ts +12 -0
  217. package/lib/common/preferences/index.d.ts.map +1 -0
  218. package/lib/common/preferences/index.js +30 -0
  219. package/lib/common/preferences/index.js.map +1 -0
  220. package/lib/{browser → common}/preferences/injectable-preference-proxy.d.ts +1 -1
  221. package/lib/common/preferences/injectable-preference-proxy.d.ts.map +1 -0
  222. package/lib/{browser → common}/preferences/injectable-preference-proxy.js +2 -2
  223. package/lib/common/preferences/injectable-preference-proxy.js.map +1 -0
  224. package/lib/common/preferences/preference-configurations.d.ts.map +1 -0
  225. package/lib/common/preferences/preference-configurations.js.map +1 -0
  226. package/lib/{browser → common}/preferences/preference-language-override-service.d.ts +4 -13
  227. package/lib/common/preferences/preference-language-override-service.d.ts.map +1 -0
  228. package/lib/{browser → common}/preferences/preference-language-override-service.js +14 -30
  229. package/lib/common/preferences/preference-language-override-service.js.map +1 -0
  230. package/lib/common/preferences/preference-provider-impl.d.ts +52 -0
  231. package/lib/common/preferences/preference-provider-impl.d.ts.map +1 -0
  232. package/lib/{browser/preferences/preference-provider.js → common/preferences/preference-provider-impl.js} +23 -95
  233. package/lib/common/preferences/preference-provider-impl.js.map +1 -0
  234. package/lib/{browser → common}/preferences/preference-provider.d.ts +34 -59
  235. package/lib/common/preferences/preference-provider.d.ts.map +1 -0
  236. package/lib/common/preferences/preference-provider.js +71 -0
  237. package/lib/common/preferences/preference-provider.js.map +1 -0
  238. package/lib/common/preferences/preference-provider.spec.d.ts.map +1 -0
  239. package/lib/{browser → common}/preferences/preference-provider.spec.js +4 -4
  240. package/lib/common/preferences/preference-provider.spec.js.map +1 -0
  241. package/lib/{browser → common}/preferences/preference-proxy.d.ts +2 -2
  242. package/lib/common/preferences/preference-proxy.d.ts.map +1 -0
  243. package/lib/{browser → common}/preferences/preference-proxy.js +10 -10
  244. package/lib/common/preferences/preference-proxy.js.map +1 -0
  245. package/lib/common/preferences/preference-schema-service.d.ts +55 -0
  246. package/lib/common/preferences/preference-schema-service.d.ts.map +1 -0
  247. package/lib/common/preferences/preference-schema-service.js +402 -0
  248. package/lib/common/preferences/preference-schema-service.js.map +1 -0
  249. package/lib/common/preferences/preference-schema.d.ts +145 -43
  250. package/lib/common/preferences/preference-schema.d.ts.map +1 -1
  251. package/lib/common/preferences/preference-schema.js +3 -41
  252. package/lib/common/preferences/preference-schema.js.map +1 -1
  253. package/lib/common/preferences/preference-scope.d.ts +4 -1
  254. package/lib/common/preferences/preference-scope.d.ts.map +1 -1
  255. package/lib/common/preferences/preference-scope.js +5 -14
  256. package/lib/common/preferences/preference-scope.js.map +1 -1
  257. package/lib/{browser → common}/preferences/preference-service.d.ts +9 -10
  258. package/lib/common/preferences/preference-service.d.ts.map +1 -0
  259. package/lib/{browser → common}/preferences/preference-service.js +65 -60
  260. package/lib/common/preferences/preference-service.js.map +1 -0
  261. package/lib/common/stream.d.ts +9 -0
  262. package/lib/common/stream.d.ts.map +1 -1
  263. package/lib/common/stream.js +93 -2
  264. package/lib/common/stream.js.map +1 -1
  265. package/lib/common/supported-encodings.d.ts.map +1 -0
  266. package/lib/common/supported-encodings.js.map +1 -0
  267. package/lib/{browser/tree → common}/tree-preference.d.ts +1 -1
  268. package/lib/common/tree-preference.d.ts.map +1 -0
  269. package/lib/{browser/tree → common}/tree-preference.js +3 -5
  270. package/lib/common/tree-preference.js.map +1 -0
  271. package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts +2 -1
  272. package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
  273. package/lib/electron-browser/menu/electron-context-menu-renderer.js +2 -1
  274. package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
  275. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -2
  276. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
  277. package/lib/electron-browser/menu/electron-main-menu-factory.js +11 -10
  278. package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
  279. package/lib/electron-browser/menu/electron-menu-contribution.d.ts +2 -2
  280. package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
  281. package/lib/electron-browser/menu/electron-menu-contribution.js +6 -6
  282. package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
  283. package/lib/electron-browser/preload.d.ts.map +1 -1
  284. package/lib/electron-browser/preload.js +3 -0
  285. package/lib/electron-browser/preload.js.map +1 -1
  286. package/lib/electron-browser/window/electron-secondary-window-service.d.ts.map +1 -1
  287. package/lib/electron-browser/window/electron-secondary-window-service.js +5 -4
  288. package/lib/electron-browser/window/electron-secondary-window-service.js.map +1 -1
  289. package/lib/electron-browser/window/electron-window-module.js +1 -1
  290. package/lib/electron-browser/window/electron-window-module.js.map +1 -1
  291. package/lib/electron-browser/window/electron-window-service.d.ts +1 -1
  292. package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
  293. package/lib/electron-browser/window/electron-window-service.js +1 -1
  294. package/lib/electron-browser/window/electron-window-service.js.map +1 -1
  295. package/lib/electron-common/electron-api.d.ts +2 -0
  296. package/lib/electron-common/electron-api.d.ts.map +1 -1
  297. package/lib/electron-common/electron-api.js +2 -1
  298. package/lib/electron-common/electron-api.js.map +1 -1
  299. package/lib/{electron-browser/window → electron-common}/electron-window-preferences.d.ts +2 -1
  300. package/lib/electron-common/electron-window-preferences.d.ts.map +1 -0
  301. package/lib/{electron-browser/window → electron-common}/electron-window-preferences.js +7 -7
  302. package/lib/electron-common/electron-window-preferences.js.map +1 -0
  303. package/lib/electron-main/electron-api-main.d.ts.map +1 -1
  304. package/lib/electron-main/electron-api-main.js +9 -0
  305. package/lib/electron-main/electron-api-main.js.map +1 -1
  306. package/lib/electron-node/window/electron-window-module.d.ts +4 -0
  307. package/lib/electron-node/window/electron-window-module.d.ts.map +1 -0
  308. package/lib/{browser/preferences/preference-scope.js → electron-node/window/electron-window-module.js} +7 -5
  309. package/lib/electron-node/window/electron-window-module.js.map +1 -0
  310. package/lib/node/backend-application-module.d.ts.map +1 -1
  311. package/lib/node/backend-application-module.js +13 -0
  312. package/lib/node/backend-application-module.js.map +1 -1
  313. package/lib/node/backend-application.js +1 -1
  314. package/lib/node/logger-cli-contribution.d.ts +7 -1
  315. package/lib/node/logger-cli-contribution.d.ts.map +1 -1
  316. package/lib/node/logger-cli-contribution.js +22 -10
  317. package/lib/node/logger-cli-contribution.js.map +1 -1
  318. package/lib/node/logger-cli-contribution.spec.js +13 -2
  319. package/lib/node/logger-cli-contribution.spec.js.map +1 -1
  320. package/package.json +8 -7
  321. package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +1 -1
  322. package/src/browser/common-frontend-contribution.ts +2 -3
  323. package/src/browser/dialogs/react-dialog.tsx +1 -0
  324. package/src/browser/encoding-registry.ts +1 -1
  325. package/src/browser/frontend-application-bindings.ts +8 -13
  326. package/src/browser/frontend-application-module.ts +13 -6
  327. package/src/browser/frontend-application.ts +1 -1
  328. package/src/browser/hover-service.ts +1 -2
  329. package/src/browser/icon-theme-service.ts +3 -2
  330. package/src/browser/index.ts +0 -1
  331. package/src/browser/json-schema-store.ts +9 -1
  332. package/src/browser/keybinding.spec.ts +1 -1
  333. package/src/browser/keybinding.ts +1 -1
  334. package/src/browser/menu/browser-menu-plugin.ts +7 -7
  335. package/src/browser/open-with-service.ts +1 -1
  336. package/src/browser/opener-service.ts +1 -2
  337. package/src/browser/preferences/frontend-config-preference-contributions.ts +52 -0
  338. package/src/browser/preferences/index.ts +0 -5
  339. package/src/browser/preferences/preference-contribution.ts +16 -398
  340. package/src/browser/preferences/preference-proxy.spec.ts +27 -17
  341. package/src/browser/preferences/preference-schema-provider.spec.ts +25 -37
  342. package/src/browser/preferences/preference-service.spec.ts +32 -56
  343. package/src/browser/preferences/preference-validation-service.spec.ts +27 -19
  344. package/src/browser/preferences/preference-validation-service.ts +60 -41
  345. package/src/browser/preferences/test/mock-preference-provider.ts +2 -5
  346. package/src/browser/preferences/test/mock-preference-proxy.ts +1 -2
  347. package/src/browser/preferences/test/mock-preference-service.ts +1 -4
  348. package/src/browser/quick-input/quick-command-service.ts +1 -1
  349. package/src/browser/request/browser-request-service.ts +4 -4
  350. package/src/browser/saveable.ts +8 -0
  351. package/src/browser/secondary-window-handler.ts +189 -29
  352. package/src/browser/shell/application-shell.ts +36 -13
  353. package/src/browser/shell/shell-layout-restorer.ts +15 -0
  354. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.tsx +139 -40
  355. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +12 -6
  356. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +2 -2
  357. package/src/browser/shell/tab-bar-toolbar/tab-toolbar-item.tsx +2 -2
  358. package/src/browser/shell/tab-bars.ts +1 -1
  359. package/src/browser/shell/theia-dock-panel.ts +101 -2
  360. package/src/browser/status-bar/status-bar.tsx +3 -2
  361. package/src/browser/style/dockpanel.css +7 -0
  362. package/src/browser/theming.ts +7 -6
  363. package/src/browser/tooltip-service.tsx +1 -1
  364. package/src/browser/tree/index.ts +0 -1
  365. package/src/browser/tree/tree-widget.tsx +6 -5
  366. package/src/browser/view-container.ts +5 -5
  367. package/src/browser/widgets/extractable-widget.ts +3 -0
  368. package/src/browser/widgets/widget.ts +4 -4
  369. package/src/browser/window/default-secondary-window-service.ts +54 -17
  370. package/src/browser/window/default-window-service.spec.ts +1 -1
  371. package/src/browser/window/default-window-service.ts +1 -1
  372. package/src/browser/window/secondary-window-service.ts +23 -2
  373. package/src/browser/window/window-title-service.ts +1 -1
  374. package/src/{browser → common}/core-preferences.ts +16 -17
  375. package/src/common/index.ts +4 -0
  376. package/src/common/inversify-utils.ts +63 -0
  377. package/src/common/json-schema.ts +1 -0
  378. package/src/common/menu/menu-types.ts +2 -0
  379. package/src/common/preferences/defaults-preference-provider.ts +91 -0
  380. package/src/common/preferences/index.ts +27 -0
  381. package/src/{browser → common}/preferences/injectable-preference-proxy.ts +3 -3
  382. package/src/{browser → common}/preferences/preference-language-override-service.ts +12 -29
  383. package/src/common/preferences/preference-provider-impl.ts +165 -0
  384. package/src/{browser → common}/preferences/preference-provider.spec.ts +6 -5
  385. package/src/common/preferences/preference-provider.ts +164 -0
  386. package/src/{browser → common}/preferences/preference-proxy.ts +15 -14
  387. package/src/common/preferences/preference-schema-service.ts +434 -0
  388. package/src/common/preferences/preference-schema.ts +156 -64
  389. package/src/common/preferences/preference-scope.ts +5 -13
  390. package/src/{browser → common}/preferences/preference-service.ts +71 -65
  391. package/src/common/stream.ts +102 -1
  392. package/src/{browser/tree → common}/tree-preference.ts +2 -4
  393. package/src/electron-browser/menu/electron-context-menu-renderer.ts +2 -1
  394. package/src/electron-browser/menu/electron-main-menu-factory.ts +13 -11
  395. package/src/electron-browser/menu/electron-menu-contribution.ts +9 -6
  396. package/src/electron-browser/preload.ts +4 -1
  397. package/src/electron-browser/window/electron-secondary-window-service.ts +7 -4
  398. package/src/electron-browser/window/electron-window-module.ts +1 -1
  399. package/src/electron-browser/window/electron-window-service.ts +1 -1
  400. package/src/electron-common/electron-api.ts +2 -0
  401. package/src/{electron-browser/window → electron-common}/electron-window-preferences.ts +6 -6
  402. package/src/electron-main/electron-api-main.ts +11 -1
  403. package/src/{browser/preferences/preference-scope.ts → electron-node/window/electron-window-module.ts} +7 -3
  404. package/src/node/backend-application-module.ts +28 -1
  405. package/src/node/backend-application.ts +1 -1
  406. package/src/node/logger-cli-contribution.spec.ts +17 -2
  407. package/src/node/logger-cli-contribution.ts +18 -3
  408. package/lib/browser/core-preferences.d.ts.map +0 -1
  409. package/lib/browser/core-preferences.js.map +0 -1
  410. package/lib/browser/preferences/injectable-preference-proxy.d.ts.map +0 -1
  411. package/lib/browser/preferences/injectable-preference-proxy.js.map +0 -1
  412. package/lib/browser/preferences/preference-configurations.d.ts.map +0 -1
  413. package/lib/browser/preferences/preference-configurations.js.map +0 -1
  414. package/lib/browser/preferences/preference-language-override-service.d.ts.map +0 -1
  415. package/lib/browser/preferences/preference-language-override-service.js.map +0 -1
  416. package/lib/browser/preferences/preference-provider.d.ts.map +0 -1
  417. package/lib/browser/preferences/preference-provider.js.map +0 -1
  418. package/lib/browser/preferences/preference-provider.spec.d.ts.map +0 -1
  419. package/lib/browser/preferences/preference-provider.spec.js.map +0 -1
  420. package/lib/browser/preferences/preference-proxy.d.ts.map +0 -1
  421. package/lib/browser/preferences/preference-proxy.js.map +0 -1
  422. package/lib/browser/preferences/preference-scope.d.ts +0 -3
  423. package/lib/browser/preferences/preference-scope.d.ts.map +0 -1
  424. package/lib/browser/preferences/preference-scope.js.map +0 -1
  425. package/lib/browser/preferences/preference-service.d.ts.map +0 -1
  426. package/lib/browser/preferences/preference-service.js.map +0 -1
  427. package/lib/browser/supported-encodings.d.ts.map +0 -1
  428. package/lib/browser/supported-encodings.js.map +0 -1
  429. package/lib/browser/tree/tree-preference.d.ts.map +0 -1
  430. package/lib/browser/tree/tree-preference.js.map +0 -1
  431. package/lib/electron-browser/window/electron-window-preferences.d.ts.map +0 -1
  432. package/lib/electron-browser/window/electron-window-preferences.js.map +0 -1
  433. package/src/browser/preferences/preference-provider.ts +0 -277
  434. /package/lib/{browser → common}/preferences/preference-configurations.d.ts +0 -0
  435. /package/lib/{browser → common}/preferences/preference-configurations.js +0 -0
  436. /package/lib/{browser → common}/preferences/preference-provider.spec.d.ts +0 -0
  437. /package/lib/{browser → common}/supported-encodings.d.ts +0 -0
  438. /package/lib/{browser → common}/supported-encodings.js +0 -0
  439. /package/src/{browser → common}/preferences/preference-configurations.ts +0 -0
  440. /package/src/{browser → common}/supported-encodings.ts +0 -0
@@ -23,7 +23,7 @@ import {
23
23
  import { Event as CommonEvent, Emitter } from '../common/event';
24
24
  import { Disposable, DisposableCollection } from '../common/disposable';
25
25
  import { CommandRegistry } from '../common/command';
26
- import { MenuModelRegistry, MenuPath, MenuAction, SubmenuImpl, ActionMenuNode, MenuNode, RenderedMenuNode } from '../common/menu';
26
+ import { MenuModelRegistry, MenuPath, MenuAction, SubmenuImpl, ActionMenuNode, Submenu } from '../common/menu';
27
27
  import { ApplicationShell, StatefulWidget, SplitPositionHandler, SplitPositionOptions, SIDE_PANEL_TOOLBAR_CONTEXT_MENU } from './shell';
28
28
  import { MAIN_AREA_ID, BOTTOM_AREA_ID } from './shell/theia-dock-panel';
29
29
  import { FrontendApplicationStateService } from './frontend-application-state';
@@ -40,7 +40,7 @@ import { ElementExt } from '@lumino/domutils';
40
40
  import { TabBarDecoratorService } from './shell/tab-bar-decorator';
41
41
  import { ContextKeyService } from './context-key-service';
42
42
  import { KeybindingRegistry } from './keybinding';
43
- import { ToolbarMenuNodeWrapper } from './shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters';
43
+ import { SubmenuAsToolbarItemWrapper } from './shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters';
44
44
  import { TheiaSplitPanel } from './shell/theia-split-panel';
45
45
 
46
46
  export interface ViewContainerTitleOptions {
@@ -94,7 +94,7 @@ export namespace DynamicToolbarWidget {
94
94
  }
95
95
  }
96
96
 
97
- class PartsMenuToolbarItem extends ToolbarMenuNodeWrapper {
97
+ class PartsMenuToolbarItem extends SubmenuAsToolbarItemWrapper {
98
98
  constructor(
99
99
  protected readonly target: () => Widget | undefined,
100
100
  effectiveMenuPath: MenuPath,
@@ -102,11 +102,11 @@ class PartsMenuToolbarItem extends ToolbarMenuNodeWrapper {
102
102
  menuRegistry: MenuModelRegistry,
103
103
  contextKeyService: ContextKeyService,
104
104
  contextMenuRenderer: ContextMenuRenderer,
105
- menuNode: MenuNode & RenderedMenuNode,
105
+ menuNode: Submenu,
106
106
  group: string | undefined,
107
107
  menuPath?: MenuPath,
108
108
  ) {
109
- super(effectiveMenuPath, commandRegistry, menuRegistry, contextKeyService, contextMenuRenderer, menuNode, group, menuPath);
109
+ super(effectiveMenuPath, commandRegistry, menuRegistry, contextKeyService, contextMenuRenderer, menuNode, group);
110
110
  }
111
111
 
112
112
  override isVisible(widget: Widget): boolean {
@@ -14,6 +14,7 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
+ import { ApplicationShell } from '../shell';
17
18
  import { Widget } from './widget';
18
19
 
19
20
  /**
@@ -24,6 +25,8 @@ export interface ExtractableWidget extends Widget {
24
25
  isExtractable: boolean;
25
26
  /** The secondary window that the window was extracted to or `undefined` if it is not yet extracted. */
26
27
  secondaryWindow: Window | undefined;
28
+ /** Stores the area which contained the widget before being extracted. This is undefined if the widget wasn't extracted or if the area could not be determined */
29
+ previousArea?: ApplicationShell.Area;
27
30
  }
28
31
 
29
32
  export namespace ExtractableWidget {
@@ -360,17 +360,17 @@ function waitForVisible(widget: Widget, visible: boolean, attached?: boolean): P
360
360
  if ((typeof attached !== 'boolean' || widget.isAttached === attached) &&
361
361
  (widget.isVisible === visible || (widget.node.style.visibility !== 'hidden') === visible)
362
362
  ) {
363
- return new Promise(resolve => window.requestAnimationFrame(() => resolve()));
363
+ return new Promise(resolve => setTimeout(() => resolve(), 0));
364
364
  }
365
365
  return new Promise(resolve => {
366
- const waitFor = () => window.requestAnimationFrame(() => {
366
+ const waitFor = () => setTimeout(() => {
367
367
  if ((typeof attached !== 'boolean' || widget.isAttached === attached) &&
368
368
  (widget.isVisible === visible || (widget.node.style.visibility !== 'hidden') === visible)) {
369
- window.requestAnimationFrame(() => resolve());
369
+ setTimeout(() => resolve(), 0);
370
370
  } else {
371
371
  waitFor();
372
372
  }
373
- });
373
+ }, 0);
374
374
  waitFor();
375
375
  });
376
376
  }
@@ -14,14 +14,14 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
  import { inject, injectable, postConstruct } from 'inversify';
17
- import { SecondaryWindowService } from './secondary-window-service';
17
+ import { SecondaryWindow, SecondaryWindowService } from './secondary-window-service';
18
18
  import { WindowService } from './window-service';
19
- import { ExtractableWidget } from '../widgets';
19
+ import { ExtractableWidget, Widget } from '../widgets';
20
20
  import { ApplicationShell } from '../shell';
21
21
  import { Saveable } from '../saveable';
22
- import { PreferenceService } from '../preferences';
23
- import { Emitter, environment, Event } from '../../common';
22
+ import { Emitter, environment, Event, PreferenceService } from '../../common';
24
23
  import { SaveableService } from '../saveable-service';
24
+ import { getAllWidgetsFromSecondaryWindow, getDefaultRestoreArea } from '../secondary-window-handler';
25
25
 
26
26
  @injectable()
27
27
  export class DefaultSecondaryWindowService implements SecondaryWindowService {
@@ -29,6 +29,8 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
29
29
  readonly onWindowOpened: Event<Window> = this.onWindowOpenedEmitter.event;
30
30
  protected readonly onWindowClosedEmitter = new Emitter<Window>;
31
31
  readonly onWindowClosed: Event<Window> = this.onWindowClosedEmitter.event;
32
+ protected readonly beforeWidgetRestoreEmitter = new Emitter<[Widget, Window]>;
33
+ readonly beforeWidgetRestore: Event<[Widget, Window]> = this.beforeWidgetRestoreEmitter.event;
32
34
  // secondary-window.html is part of Theia's generated code. It is generated by dev-packages/application-manager/src/generator/frontend-generator.ts
33
35
  protected static SECONDARY_WINDOW_URL = 'secondary-window.html';
34
36
 
@@ -93,7 +95,7 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
93
95
  });
94
96
  }
95
97
 
96
- createSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): Window | undefined {
98
+ createSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): Window | SecondaryWindow | undefined {
97
99
  const [height, width, left, top] = this.findSecondaryWindowCoordinates(widget);
98
100
  let options = `popup=1,width=${width},height=${height},left=${left},top=${top}`;
99
101
  if (this.preferenceService.get('window.secondaryWindowAlwaysOnTop')) {
@@ -105,21 +107,19 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
105
107
  this.onWindowOpenedEmitter.fire(newWindow);
106
108
  newWindow.addEventListener('DOMContentLoaded', () => {
107
109
  newWindow.addEventListener('beforeunload', evt => {
108
- const saveable = Saveable.get(widget);
109
- const wouldLoseState = !!saveable && saveable.dirty && this.saveResourceService.autoSave === 'off';
110
- if (wouldLoseState) {
111
- evt.returnValue = '';
112
- evt.preventDefault();
113
- return 'non-empty';
110
+ const widgets = getAllWidgetsFromSecondaryWindow(newWindow) ?? [widget];
111
+ for (const w of widgets) {
112
+ const saveable = Saveable.get(w);
113
+ const wouldLoseState = !!saveable && saveable.dirty && this.saveResourceService.autoSave === 'off';
114
+ if (wouldLoseState) {
115
+ evt.returnValue = '';
116
+ evt.preventDefault();
117
+ return 'non-empty';
118
+ }
114
119
  }
115
120
  }, { capture: true });
116
121
 
117
122
  newWindow.addEventListener('unload', () => {
118
- const saveable = Saveable.get(widget);
119
- shell.closeWidget(widget.id, {
120
- save: !!saveable && saveable.dirty && this.saveResourceService.autoSave !== 'off'
121
- });
122
-
123
123
  const extIndex = this.secondaryWindows.indexOf(newWindow);
124
124
  if (extIndex > -1) {
125
125
  this.onWindowClosedEmitter.fire(newWindow);
@@ -129,12 +129,13 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
129
129
  this.windowCreated(newWindow, widget, shell);
130
130
  });
131
131
  }
132
+ (newWindow as SecondaryWindow).rootWidget = undefined;
132
133
  return newWindow;
133
134
  }
134
135
 
135
136
  protected windowCreated(newWindow: Window, widget: ExtractableWidget, shell: ApplicationShell): void {
136
137
  newWindow.addEventListener('unload', () => {
137
- shell.closeWidget(widget.id);
138
+ this.restoreWidgets(newWindow, widget, shell);
138
139
  });
139
140
  }
140
141
 
@@ -200,4 +201,40 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
200
201
  protected nextWindowId(): string {
201
202
  return `${this.prefix}-secondaryWindow-${this.nextId++}`;
202
203
  }
204
+
205
+ /**
206
+ * Restore the widgets back to the main window. SecondaryWindowHandler needs to get informated about this.
207
+ */
208
+ protected async restoreWidgets(newWindow: Window, extractableWidget: ExtractableWidget, shell: ApplicationShell): Promise<boolean> {
209
+ const widgets = getAllWidgetsFromSecondaryWindow(newWindow) ?? new Set([extractableWidget]);
210
+ const defaultRestoreArea = getDefaultRestoreArea(newWindow);
211
+
212
+ let allMovedOrDisposed = true;
213
+ for (const widget of widgets) {
214
+ if (widget.isDisposed) {
215
+ continue;
216
+ }
217
+ try {
218
+ const preferredRestoreArea = ExtractableWidget.is(widget) ? widget.previousArea : defaultRestoreArea;
219
+ const area = (preferredRestoreArea === undefined || preferredRestoreArea === 'top' || preferredRestoreArea === 'secondaryWindow') ? 'main' : preferredRestoreArea;
220
+ // fire removed event before adding it to shell
221
+ this.beforeWidgetRestoreEmitter.fire([widget, newWindow]);
222
+ // reset ExtractableWidget properties before moving back so that handler evaluation is correct immediately
223
+ if (ExtractableWidget.is(widget)) {
224
+ widget.secondaryWindow = undefined;
225
+ widget.previousArea = undefined;
226
+ }
227
+ await shell.addWidget(widget, { area });
228
+ await shell.activateWidget(widget.id);
229
+ } catch (e) {
230
+ // we can't move back, close instead
231
+ // otherwise the window will just stay open with no way to close it
232
+ await shell.closeWidget(widget.id);
233
+ if (!widget.isDisposed) {
234
+ allMovedOrDisposed = false;
235
+ }
236
+ }
237
+ }
238
+ return allMovedOrDisposed;
239
+ }
203
240
  }
@@ -16,7 +16,7 @@
16
16
 
17
17
  import { Container } from 'inversify';
18
18
  import { ContributionProvider } from '../../common';
19
- import { CorePreferences } from '../core-preferences';
19
+ import { CorePreferences } from '../../common/core-preferences';
20
20
  import { FrontendApplicationContribution } from '../frontend-application-contribution';
21
21
  import { DefaultWindowService } from './default-window-service';
22
22
  import assert = require('assert');
@@ -16,7 +16,7 @@
16
16
 
17
17
  import { inject, injectable, named } from 'inversify';
18
18
  import { Event, Emitter } from '../../common';
19
- import { CorePreferences } from '../core-preferences';
19
+ import { CorePreferences } from '../../common/core-preferences';
20
20
  import { ContributionProvider } from '../../common/contribution-provider';
21
21
  import { FrontendApplicationContribution, OnWillStopAction } from '../frontend-application-contribution';
22
22
  import { WindowService } from './window-service';
@@ -16,7 +16,27 @@
16
16
 
17
17
  import { Event } from '../../common';
18
18
  import { ApplicationShell } from '../shell';
19
- import { ExtractableWidget } from '../widgets';
19
+ import { TheiaDockPanel } from '../shell/theia-dock-panel';
20
+ import { ExtractableWidget, TabBar, Widget } from '../widgets';
21
+
22
+ export abstract class SecondaryWindowRootWidget extends Widget {
23
+ secondaryWindow: Window | SecondaryWindow;
24
+ defaultRestoreArea?: ApplicationShell.Area;
25
+ abstract widgets: ReadonlyArray<Widget>;
26
+ abstract addWidget(widget: Widget, disposeCallback: () => void, options?: TheiaDockPanel.AddOptions): void;
27
+ getTabBar?(widget: Widget): TabBar<Widget> | undefined;
28
+ }
29
+
30
+ export interface SecondaryWindow extends Window {
31
+ rootWidget: SecondaryWindowRootWidget | undefined;
32
+ }
33
+
34
+ export function isSecondaryWindow(window: unknown): window is SecondaryWindow {
35
+ if (!window) {
36
+ return false;
37
+ }
38
+ return typeof window === 'object' && 'rootWidget' in window;
39
+ }
20
40
 
21
41
  export const SecondaryWindowService = Symbol('SecondaryWindowService');
22
42
 
@@ -33,9 +53,10 @@ export interface SecondaryWindowService {
33
53
  * @param onClose optional callback that is invoked when the secondary window is closed
34
54
  * @returns the created window or `undefined` if it could not be created
35
55
  */
36
- createSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): Window | undefined;
56
+ createSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): SecondaryWindow | Window | undefined;
37
57
  readonly onWindowOpened: Event<Window>;
38
58
  readonly onWindowClosed: Event<Window>;
59
+ readonly beforeWidgetRestore: Event<[Widget, Window]>;
39
60
 
40
61
  /** Handles focussing the given secondary window in the browser and on Electron. */
41
62
  focus(win: Window): void;
@@ -17,7 +17,7 @@
17
17
  import { inject, injectable, named, postConstruct } from 'inversify';
18
18
  import { escapeRegExpCharacters } from '../../common/strings';
19
19
  import { Emitter, Event } from '../../common/event';
20
- import { CorePreferences } from '../core-preferences';
20
+ import { CorePreferences } from '../../common/core-preferences';
21
21
  import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
22
22
  import { ContributionProvider } from '../../common';
23
23
 
@@ -16,12 +16,12 @@
16
16
 
17
17
  import { interfaces } from 'inversify';
18
18
  import { environment } from '@theia/application-package/lib/environment';
19
- import { createPreferenceProxy, PreferenceProxy, PreferenceService, PreferenceContribution, PreferenceSchema } from './preferences';
20
19
  import { SUPPORTED_ENCODINGS } from './supported-encodings';
21
- import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
22
20
  import { isOSX } from '../common/os';
23
21
  import { nls } from '../common/nls';
24
- import { DefaultTheme } from '@theia/application-package/lib/application-props';
22
+ import { PreferenceContribution, PreferenceSchema } from '../common/preferences/preference-schema';
23
+ import { createPreferenceProxy, PreferenceProxy, PreferenceService } from '../common/preferences';
24
+ import { PreferenceScope } from '../common/preferences/preference-scope';
25
25
 
26
26
  /* eslint-disable max-len */
27
27
  const windowTitleDescription = [
@@ -43,7 +43,6 @@ const windowTitleDescription = [
43
43
  ].join('\n- ');
44
44
 
45
45
  export const corePreferenceSchema: PreferenceSchema = {
46
- 'type': 'object',
47
46
  properties: {
48
47
  'application.confirmExit': {
49
48
  type: 'string',
@@ -59,7 +58,7 @@ export const corePreferenceSchema: PreferenceSchema = {
59
58
  'type': 'boolean',
60
59
  'default': true,
61
60
  'description': nls.localizeByDefault('Enable/disable navigation breadcrumbs.'),
62
- 'scope': 'application'
61
+ 'scope': PreferenceScope.User
63
62
  },
64
63
  'files.encoding': {
65
64
  'type': 'string',
@@ -67,7 +66,7 @@ export const corePreferenceSchema: PreferenceSchema = {
67
66
  'default': 'utf8',
68
67
  'description': nls.localizeByDefault(
69
68
  'The default character set encoding to use when reading and writing files. This setting can also be configured per language.'),
70
- 'scope': 'language-overridable',
69
+ 'scope': PreferenceScope.Folder,
71
70
  'enumDescriptions': Object.keys(SUPPORTED_ENCODINGS).map(key => SUPPORTED_ENCODINGS[key].labelLong),
72
71
  'included': Object.keys(SUPPORTED_ENCODINGS).length > 1
73
72
  },
@@ -103,7 +102,7 @@ export const corePreferenceSchema: PreferenceSchema = {
103
102
  : nls.localizeByDefault('Menu is displayed as a compact button in the side bar.')
104
103
  ],
105
104
  default: 'classic',
106
- scope: 'application',
105
+ scope: PreferenceScope.User,
107
106
  markdownDescription: nls.localizeByDefault("Control the visibility of the menu bar. A setting of 'toggle' means that the menu bar is hidden and a single press of the Alt key will show it. A setting of 'compact' will move the menu into the side bar."),
108
107
  included: !(isOSX && environment.electron.is())
109
108
  },
@@ -112,13 +111,13 @@ export const corePreferenceSchema: PreferenceSchema = {
112
111
  default: isOSX
113
112
  ? '${activeEditorShort}${separator}${rootName}'
114
113
  : '${dirty} ${activeEditorShort}${separator}${rootName}${separator}${appName}',
115
- scope: 'application',
114
+ scope: PreferenceScope.User,
116
115
  markdownDescription: windowTitleDescription
117
116
  },
118
117
  'window.titleSeparator': {
119
118
  type: 'string',
120
119
  default: ' - ',
121
- scope: 'application',
120
+ scope: PreferenceScope.User,
122
121
  markdownDescription: nls.localizeByDefault('Separator used by {0}.', '`#window.title#`')
123
122
  },
124
123
  'window.tabCloseIconPlacement': {
@@ -129,7 +128,7 @@ export const corePreferenceSchema: PreferenceSchema = {
129
128
  nls.localize('theia/core/window/tabCloseIconPlacement/start', 'Place the close icon at the start of the label. In left-to-right languages, this is the left side of the tab.'),
130
129
  ],
131
130
  default: 'end',
132
- scope: 'application',
131
+ scope: PreferenceScope.User,
133
132
  description: nls.localize('theia/core/window/tabCloseIconPlacement/description', 'Place the close icons on tab titles at the start or end of the tab. The default is end on all platforms.'),
134
133
  included: isOSX
135
134
  },
@@ -153,18 +152,18 @@ export const corePreferenceSchema: PreferenceSchema = {
153
152
  type: 'string',
154
153
  pattern: '^https?://([^:]*(:[^@]*)?@)?([^:]+|\\[[:0-9a-fA-F]+\\])(:\\d+)?/?$|^$',
155
154
  markdownDescription: nls.localizeByDefault('The proxy setting to use. If not set, will be inherited from the `http_proxy` and `https_proxy` environment variables. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
156
- scope: 'application'
155
+ scope: PreferenceScope.User
157
156
  },
158
157
  'http.proxyStrictSSL': {
159
158
  type: 'boolean',
160
159
  default: true,
161
160
  description: nls.localizeByDefault('Controls whether the proxy server certificate should be verified against the list of supplied CAs. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
162
- scope: 'application'
161
+ scope: PreferenceScope.User
163
162
  },
164
163
  'http.proxyAuthorization': {
165
164
  type: 'string',
166
165
  markdownDescription: nls.localizeByDefault('The value to send as the `Proxy-Authorization` header for every network request. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
167
- scope: 'application'
166
+ scope: PreferenceScope.User
168
167
  },
169
168
  'http.proxySupport': {
170
169
  type: 'string',
@@ -177,13 +176,13 @@ export const corePreferenceSchema: PreferenceSchema = {
177
176
  ],
178
177
  default: 'override',
179
178
  description: nls.localizeByDefault('Use the proxy support for extensions. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
180
- scope: 'application'
179
+ scope: PreferenceScope.User
181
180
  },
182
181
  'http.systemCertificates': {
183
182
  type: 'boolean',
184
183
  default: true,
185
184
  description: nls.localizeByDefault('Controls whether CA certificates should be loaded from the OS. On Windows and macOS, a reload of the window is required after turning this off. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
186
- scope: 'application'
185
+ scope: PreferenceScope.User
187
186
  },
188
187
  'workbench.list.openMode': {
189
188
  type: 'string',
@@ -229,14 +228,14 @@ export const corePreferenceSchema: PreferenceSchema = {
229
228
  type: 'string',
230
229
  enum: ['dark', 'light', 'hc-theia'],
231
230
  enumItemLabels: ['Dark (Theia)', 'Light (Theia)', 'High Contrast (Theia)'],
232
- default: DefaultTheme.defaultForOSTheme(FrontendApplicationConfigProvider.get().defaultTheme),
231
+ default: 'light',
233
232
  description: nls.localizeByDefault('Specifies the color theme used in the workbench when {0} is not enabled.', '`#window.autoDetectColorScheme#`')
234
233
  },
235
234
  'workbench.iconTheme': {
236
235
  type: ['string'],
237
236
  enum: ['none', 'theia-file-icons'],
238
237
  enumItemLabels: [nls.localizeByDefault('None'), 'File Icons (Theia)'],
239
- default: FrontendApplicationConfigProvider.get().defaultIconTheme,
238
+ default: 'none',
240
239
  description: nls.localizeByDefault("Specifies the file icon theme used in the workbench or 'null' to not show any file icons.")
241
240
  },
242
241
  'workbench.silentNotifications': {
@@ -20,8 +20,10 @@ export * from './cancellation';
20
20
  export * from './command';
21
21
  export * from './contribution-filter';
22
22
  export * from './contribution-provider';
23
+ export * from './core-preferences';
23
24
  export * from './disposable';
24
25
  export * from './event';
26
+ export * from './inversify-utils';
25
27
  export * from './listener';
26
28
  export * from './logger';
27
29
  export * from './lsp-types';
@@ -36,6 +38,7 @@ export * from './objects';
36
38
  export * from './os';
37
39
  export * from './path';
38
40
  export * from './performance';
41
+ export * from './preferences';
39
42
  export * from './progress-service';
40
43
  export * from './progress-service-protocol';
41
44
  export * from './quick-pick-service';
@@ -45,6 +48,7 @@ export * from './selection';
45
48
  export * from './selection-service';
46
49
  export * from './strings';
47
50
  export * from './telemetry';
51
+ export * from './tree-preference';
48
52
  export * from './types';
49
53
  export { default as URI } from './uri';
50
54
  export * from './uuid';
@@ -0,0 +1,63 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2025 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, Container } from 'inversify';
18
+
19
+ /**
20
+ * This utility creates a factory function that accepts runtime arguments which are bound as constant
21
+ * values in a child container, allowing for dependency injection of both static dependencies
22
+ * (resolved as usual from the factory's container) and dynamic parameters (provided at factory invocation time).
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // Factory interface
27
+ * interface UserPreferenceProviderFactory {
28
+ * (uri: URI, section: string): UserPreferenceProvider;
29
+ * }
30
+ * // Factory symbol
31
+ * const UserPreferenceProviderFactory = Symbol('UserPreferenceProviderFactory');
32
+ *
33
+ * // Bind the factory
34
+ * bindFactory(
35
+ * bind,
36
+ * UserPreferenceProviderFactory, // Service identifier of the factory
37
+ * UserPreferenceProvider, // Service identifier of the entity to be constructed
38
+ * SectionPreferenceProviderUri, // The first factory argument will be bound to this identifier (uri)
39
+ * SectionPreferenceProviderSection // The second factory argument will be bound to this identifier (section)
40
+ * );
41
+ *
42
+ * // Usage: factory(uri, section) creates UserPreferenceProvider with injected dependencies
43
+ * const factory = container.get(UserPreferenceProviderFactory);
44
+ * const provider = factory(myUri, 'settings');
45
+ * ```
46
+ */
47
+
48
+ export function bindFactory<F, C>(bind: interfaces.Bind,
49
+ factoryId: interfaces.ServiceIdentifier<F>,
50
+ constructor: interfaces.Newable<C>,
51
+ ...parameterBindings: interfaces.ServiceIdentifier<unknown>[]): void {
52
+ bind(factoryId).toFactory(ctx =>
53
+ (...args: unknown[]) => {
54
+ const child = new Container({ defaultScope: 'Singleton' });
55
+ child.parent = ctx.container;
56
+ for (let i = 0; i < parameterBindings.length; i++) {
57
+ child.bind(parameterBindings[i]).toConstantValue(args[i]);
58
+ }
59
+ child.bind(constructor).to(constructor);
60
+ return child.get(constructor);
61
+ }
62
+ );
63
+ }
@@ -87,6 +87,7 @@ export interface IJSONSchema {
87
87
  errorMessage?: string; // VSCode extension
88
88
  patternErrorMessage?: string; // VSCode extension
89
89
  deprecationMessage?: string; // VSCode extension
90
+ markdownDeprecationMessage?: string; // VS code extension
90
91
  enumItemLabels?: string[]; // VSCode extension
91
92
  enumDescriptions?: string[]; // VSCode extension
92
93
  markdownEnumDescriptions?: string[]; // VSCode extension
@@ -39,6 +39,8 @@ export interface MenuNode {
39
39
  * Menu nodes are sorted in ascending order based on their `sortString`.
40
40
  */
41
41
  readonly sortString: string;
42
+
43
+ readonly effectiveMenuPath?: string[]; // override the path to be passed as the effectiveMenuPath
42
44
  isVisible<T>(effectiveMenuPath: MenuPath, contextMatcher: ContextExpressionMatcher<T>, context: T | undefined, ...args: unknown[]): boolean;
43
45
  onDidChange?: Event<void>;
44
46
  }
@@ -0,0 +1,91 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2025 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
+ import { JSONObject, JSONValue } from '@lumino/coreutils';
17
+ import { PreferenceScope } from './preference-scope';
18
+ import { PreferenceProvider, PreferenceProviderDataChange, PreferenceProviderDataChanges, PreferenceResolveResult } from './preference-provider';
19
+ import { inject, injectable, postConstruct } from 'inversify';
20
+ import { PreferenceSchemaService } from './preference-schema';
21
+ import { Deferred } from '../promise-util';
22
+ import { PreferenceLanguageOverrideService } from './preference-language-override-service';
23
+ import { PreferenceProviderBase } from './preference-provider-impl';
24
+
25
+ // *****************************************************************************
26
+
27
+ @injectable()
28
+ export class DefaultsPreferenceProvider extends PreferenceProviderBase implements PreferenceProvider {
29
+
30
+ @inject(PreferenceSchemaService)
31
+ protected readonly preferenceSchemaService: PreferenceSchemaService;
32
+
33
+ @inject(PreferenceLanguageOverrideService)
34
+ protected readonly preferenceOverrideService: PreferenceLanguageOverrideService;
35
+
36
+ protected readonly _ready = new Deferred<void>();
37
+ ready: Promise<void> = this._ready.promise;
38
+
39
+ @postConstruct()
40
+ init(): void {
41
+ this.toDispose.push(this.preferenceSchemaService.onDidChangeDefaultValue(e => {
42
+ const changes: PreferenceProviderDataChanges = {};
43
+ if (e.overrideIdentifier) {
44
+ changes[e.key] = this.changeFor(e.key, e.overrideIdentifier, e.oldValue, e.newValue);
45
+ } else {
46
+ changes[e.key] = this.changeFor(e.key, undefined, e.oldValue, e.newValue);
47
+ for (const override of e.otherAffectedOverrides) {
48
+ const change = this.changeFor(e.key, override, e.oldValue, e.newValue);
49
+ changes[change.preferenceName] = change;
50
+ }
51
+ }
52
+ this.emitPreferencesChangedEvent(changes);
53
+ }));
54
+ this._ready.resolve();
55
+ }
56
+
57
+ protected changeFor(key: string, overrideIdentifier: string | undefined, oldValue: JSONValue | undefined, newValue: JSONValue | undefined): PreferenceProviderDataChange {
58
+ const preferenceName = overrideIdentifier ? this.preferenceOverrideService.overridePreferenceName({ preferenceName: key, overrideIdentifier }) : key;
59
+
60
+ return {
61
+ preferenceName: preferenceName,
62
+ newValue: newValue,
63
+ oldValue: oldValue,
64
+ scope: PreferenceScope.Default
65
+ };
66
+ }
67
+
68
+ canHandleScope(scope: PreferenceScope): boolean {
69
+ return scope === PreferenceScope.Default;
70
+ }
71
+ get<T>(preferenceName: string, resourceUri?: string): T | undefined {
72
+ const overrideInfo = this.preferenceOverrideService.overriddenPreferenceName(preferenceName);
73
+ return this.preferenceSchemaService.getDefaultValue(overrideInfo?.preferenceName ?? preferenceName, overrideInfo?.overrideIdentifier) as T;
74
+ }
75
+
76
+ setPreference(key: string, value: JSONValue, resourceUri?: string): Promise<boolean> {
77
+ return Promise.resolve(false);
78
+ }
79
+
80
+ resolve<T>(preferenceName: string, resourceUri?: string): PreferenceResolveResult<T> {
81
+ const overrideInfo = this.preferenceOverrideService.overriddenPreferenceName(preferenceName);
82
+ return {
83
+ value: this.preferenceSchemaService.inspectDefaultValue(overrideInfo?.preferenceName ?? preferenceName, overrideInfo?.overrideIdentifier) as T,
84
+ configUri: undefined
85
+ };
86
+ }
87
+
88
+ getPreferences(): JSONObject {
89
+ return this.preferenceSchemaService.getDefaultValues();
90
+ }
91
+ }
@@ -0,0 +1,27 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2025 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
+ export * from './defaults-preference-provider';
18
+ export * from './preference-language-override-service';
19
+ export * from './preference-provider-impl';
20
+ export * from './preference-provider';
21
+ export * from './preference-schema-service';
22
+ export * from './preference-schema';
23
+ export * from './preference-scope';
24
+ export * from './preference-service';
25
+ export * from './injectable-preference-proxy';
26
+ export * from './preference-proxy';
27
+ export * from './preference-configurations';