@theia/core 1.65.0-next.6 → 1.65.1

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 +227 -32
  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 +68 -58
  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 +76 -63
  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
@@ -14,6 +14,11 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
+ /**
18
+ * An array of preference scopes that are valid in a given context, sorted from more general to more specific
19
+ */
20
+ export const ValidPreferenceScopes = Symbol('ValidPreferenceScopes');
21
+
17
22
  export enum PreferenceScope {
18
23
  Default,
19
24
  User,
@@ -52,17 +57,4 @@ export namespace PreferenceScope {
52
57
  }
53
58
  return names;
54
59
  }
55
-
56
- export function fromString(strScope: string): PreferenceScope | undefined {
57
- switch (strScope) {
58
- case 'application':
59
- return PreferenceScope.User;
60
- case 'window':
61
- return PreferenceScope.Folder;
62
- case 'resource':
63
- return PreferenceScope.Folder;
64
- case 'language-overridable':
65
- return PreferenceScope.Folder;
66
- }
67
- }
68
60
  }
@@ -16,18 +16,16 @@
16
16
 
17
17
  /* eslint-disable @typescript-eslint/no-explicit-any */
18
18
 
19
- import { injectable, inject, postConstruct } from 'inversify';
20
- import { Event, Emitter, DisposableCollection, Disposable, deepFreeze, unreachable } from '../../common';
19
+ import { JSONExt, JSONValue } from '@lumino/coreutils';
20
+ import { inject, injectable, postConstruct } from 'inversify';
21
+ import { Disposable, DisposableCollection, Emitter, Event, deepFreeze, unreachable } from '../../common';
21
22
  import { Deferred } from '../../common/promise-util';
22
- import { PreferenceProvider, PreferenceProviderDataChange, PreferenceProviderDataChanges, PreferenceResolveResult } from './preference-provider';
23
- import { PreferenceSchemaProvider } from './preference-contribution';
24
23
  import URI from '../../common/uri';
24
+ import { OverridePreferenceName, PreferenceLanguageOverrideService } from './preference-language-override-service';
25
+ import { PreferenceProvider, PreferenceProviderDataChange, PreferenceProviderDataChanges, PreferenceResolveResult, PreferenceUtils } from './preference-provider';
26
+ import { PreferenceSchemaService } from './preference-schema';
25
27
  import { PreferenceScope } from './preference-scope';
26
28
  import { PreferenceConfigurations } from './preference-configurations';
27
- import { JSONExt, JSONValue } from '@lumino/coreutils';
28
- import { OverridePreferenceName, PreferenceLanguageOverrideService } from './preference-language-override-service';
29
-
30
- export { PreferenceScope };
31
29
 
32
30
  /**
33
31
  * Representation of a preference change. A preference value can be set to `undefined` for a specific scope.
@@ -50,10 +48,10 @@ export class PreferenceChangeImpl implements PreferenceChange {
50
48
  get preferenceName(): string {
51
49
  return this.change.preferenceName;
52
50
  }
53
- get newValue(): string {
51
+ get newValue(): JSONValue | undefined {
54
52
  return this.change.newValue;
55
53
  }
56
- get oldValue(): string {
54
+ get oldValue(): JSONValue | undefined {
57
55
  return this.change.oldValue;
58
56
  }
59
57
  get scope(): PreferenceScope {
@@ -272,7 +270,7 @@ export type PreferenceInspectionScope = keyof Omit<PreferenceInspection<unknown>
272
270
  * It allows to load them lazily after DI is configured.
273
271
  */
274
272
  export const PreferenceProviderProvider = Symbol('PreferenceProviderProvider');
275
- export type PreferenceProviderProvider = (scope: PreferenceScope, uri?: URI) => PreferenceProvider;
273
+ export type PreferenceProviderProvider = (scope: PreferenceScope, uri?: URI) => PreferenceProvider | undefined;
276
274
 
277
275
  @injectable()
278
276
  export class PreferenceServiceImpl implements PreferenceService {
@@ -285,8 +283,8 @@ export class PreferenceServiceImpl implements PreferenceService {
285
283
 
286
284
  protected readonly toDispose = new DisposableCollection(this.onPreferenceChangedEmitter, this.onPreferencesChangedEmitter);
287
285
 
288
- @inject(PreferenceSchemaProvider)
289
- protected readonly schema: PreferenceSchemaProvider;
286
+ @inject(PreferenceSchemaService)
287
+ protected readonly schemaService: PreferenceSchemaService;
290
288
 
291
289
  @inject(PreferenceProviderProvider)
292
290
  protected readonly providerProvider: PreferenceProviderProvider;
@@ -301,13 +299,17 @@ export class PreferenceServiceImpl implements PreferenceService {
301
299
 
302
300
  protected async initializeProviders(): Promise<void> {
303
301
  try {
304
- for (const scope of PreferenceScope.getScopes()) {
302
+ for (const scope of this.schemaService.validScopes) {
305
303
  const provider = this.providerProvider(scope);
306
- this.preferenceProviders.set(scope, provider);
307
- this.toDispose.push(provider.onDidPreferencesChanged(changes =>
308
- this.reconcilePreferences(changes)
309
- ));
310
- await provider.ready;
304
+ if (provider) {
305
+ this.preferenceProviders.set(scope, provider);
306
+ this.toDispose.push(provider.onDidPreferencesChanged(changes =>
307
+ this.reconcilePreferences(changes)
308
+ ));
309
+ await provider.ready;
310
+ } else {
311
+ console.warn(`No preference provider bound for ${PreferenceScope[scope]}`);
312
+ }
311
313
  }
312
314
  this._ready.resolve();
313
315
  this._isReady = true;
@@ -338,50 +340,51 @@ export class PreferenceServiceImpl implements PreferenceService {
338
340
 
339
341
  protected reconcilePreferences(changes: PreferenceProviderDataChanges): void {
340
342
  const changesToEmit: PreferenceChanges = {};
341
- const acceptChange = (change: PreferenceProviderDataChange) =>
343
+ const acceptChange = (change: PreferenceProviderDataChange) => {
342
344
  this.getAffectedPreferenceNames(change, preferenceName =>
343
- changesToEmit[preferenceName] = new PreferenceChangeImpl({ ...change, preferenceName })
344
- );
345
+ changesToEmit[preferenceName] = new PreferenceChangeImpl({ ...change, preferenceName }));
346
+ };
345
347
 
346
348
  for (const preferenceName of Object.keys(changes)) {
349
+
347
350
  let change = changes[preferenceName];
351
+ const overridden = this.overriddenPreferenceName(change.preferenceName);
348
352
  if (change.newValue === undefined) {
349
- const overridden = this.overriddenPreferenceName(change.preferenceName);
350
353
  if (overridden) {
351
354
  change = {
352
355
  ...change, newValue: this.doGet(overridden.preferenceName)
353
356
  };
354
357
  }
355
358
  }
356
- if (this.schema.isValidInScope(preferenceName, PreferenceScope.Folder)) {
357
- acceptChange(change);
358
- continue;
359
- }
360
- for (const scope of PreferenceScope.getReversedScopes()) {
361
- if (this.schema.isValidInScope(preferenceName, scope)) {
362
- const provider = this.getProvider(scope);
363
- if (provider) {
364
- const value = provider.get(preferenceName);
365
- if (scope > change.scope && value !== undefined) {
366
- // preference defined in a more specific scope
367
- break;
368
- } else if (scope === change.scope && change.newValue !== undefined) {
369
- // preference is changed into something other than `undefined`
370
- acceptChange(change);
371
- } else if (scope < change.scope && change.newValue === undefined && value !== undefined) {
372
- // preference is changed to `undefined`, use the value from a more general scope
373
- change = {
374
- ...change,
375
- newValue: value,
376
- scope
377
- };
359
+
360
+ for (const scope of [...this.schemaService.validScopes].reverse()) {
361
+ const provider = this.getProvider(scope);
362
+ if (provider) {
363
+ const scopeValue: JSONValue | undefined = provider.get(preferenceName);
364
+ // Skip if a more specific scope has this preference defined
365
+ if (scope > change.scope && scopeValue !== undefined) {
366
+ break;
367
+ }
368
+ // Handle changes in the same scope
369
+ if (scope === change.scope) {
370
+ const hasNewValue = change.newValue !== undefined || scope === PreferenceScope.Default;
371
+ const isResetToUndefined = change.newValue === undefined && scopeValue === undefined; // is reset to undefined (no default value)
372
+ if (hasNewValue || isResetToUndefined) {
378
373
  acceptChange(change);
374
+ break;
379
375
  }
380
376
  }
381
- } else if (change.newValue === undefined && change.scope === PreferenceScope.Default) {
382
- // preference is removed
383
- acceptChange(change);
384
- break;
377
+ // Handle fallback to more general scope when preference is reset
378
+ if (scope < change.scope && change.newValue === undefined && scopeValue !== undefined) {
379
+ // preference is changed to `undefined`, use the value from a more general scope
380
+ change = {
381
+ ...change,
382
+ newValue: scopeValue,
383
+ scope
384
+ };
385
+ acceptChange(change);
386
+ break;
387
+ }
385
388
  }
386
389
  }
387
390
  }
@@ -394,10 +397,22 @@ export class PreferenceServiceImpl implements PreferenceService {
394
397
  changedPreferenceNames.forEach(preferenceName => this.onPreferenceChangedEmitter.fire(changesToEmit[preferenceName]));
395
398
  }
396
399
  protected getAffectedPreferenceNames(change: PreferenceProviderDataChange, accept: (affectedPreferenceName: string) => void): void {
400
+ const overridden = this.preferenceOverrideService.overriddenPreferenceName(change.preferenceName);
397
401
  accept(change.preferenceName);
398
- for (const overridePreferenceName of this.schema.getOverridePreferenceNames(change.preferenceName)) {
399
- if (!this.doHas(overridePreferenceName)) {
400
- accept(overridePreferenceName);
402
+ if (!overridden?.overrideIdentifier) { // changes to overrides never affect other overrides
403
+ const preference = this.schemaService.getSchemaProperty(change.preferenceName);
404
+ if (preference && preference.overridable) {
405
+
406
+ for (const overrideId of this.schemaService.overrideIdentifiers) {
407
+ const overridePreferenceName = this.preferenceOverrideService.overridePreferenceName({
408
+ overrideIdentifier: overrideId,
409
+ preferenceName: change.preferenceName
410
+ });
411
+
412
+ if (!this.doHas(overridePreferenceName)) {
413
+ accept(overridePreferenceName);
414
+ }
415
+ }
401
416
  }
402
417
  }
403
418
  }
@@ -530,7 +545,7 @@ export class PreferenceServiceImpl implements PreferenceService {
530
545
  }
531
546
 
532
547
  // Scopes in ascending order of scope breadth.
533
- const allScopes = PreferenceScope.getReversedScopes();
548
+ const allScopes = [...this.schemaService.validScopes].reverse();
534
549
  // Get rid of Default scope. We can't set anything there.
535
550
  allScopes.pop();
536
551
 
@@ -562,15 +577,13 @@ export class PreferenceServiceImpl implements PreferenceService {
562
577
  }
563
578
  protected doResolve<T>(preferenceName: string, defaultValue?: T, resourceUri?: string): PreferenceResolveResult<T> {
564
579
  const result: PreferenceResolveResult<T> = {};
565
- for (const scope of PreferenceScope.getScopes()) {
566
- if (this.schema.isValidInScope(preferenceName, scope)) {
567
- const provider = this.getProvider(scope);
568
- if (provider?.canHandleScope(scope)) {
569
- const { configUri, value } = provider.resolve<T>(preferenceName, resourceUri);
570
- if (value !== undefined) {
571
- result.configUri = configUri;
572
- result.value = PreferenceProvider.merge(result.value as any, value as any) as any;
573
- }
580
+ for (const scope of this.schemaService.validScopes) {
581
+ const provider = this.getProvider(scope);
582
+ if (provider?.canHandleScope(scope)) {
583
+ const { configUri, value } = provider.resolve<T>(preferenceName, resourceUri);
584
+ if (value !== undefined) {
585
+ result.configUri = configUri;
586
+ result.value = PreferenceUtils.merge(result.value as any, value as any) as any;
574
587
  }
575
588
  }
576
589
  }
@@ -585,7 +598,7 @@ export class PreferenceServiceImpl implements PreferenceService {
585
598
  if (!provider || !this.configurations.isAnyConfig(sectionName)) {
586
599
  return undefined;
587
600
  }
588
- const configUri = provider.getConfigUri(resourceUri, sectionName);
601
+ const configUri = provider.getConfigUri && provider.getConfigUri(resourceUri, sectionName);
589
602
  if (configUri) {
590
603
  return configUri;
591
604
  }
@@ -26,6 +26,7 @@
26
26
  /* eslint-disable @typescript-eslint/no-explicit-any */
27
27
 
28
28
  import { DisposableCollection, Disposable } from './disposable';
29
+ import { BinaryBuffer } from './buffer';
29
30
 
30
31
  export interface ReadableStreamEvents<T> {
31
32
 
@@ -205,7 +206,7 @@ export interface ITransformer<Original, Transformed> {
205
206
  }
206
207
 
207
208
  export function newWriteableStream<T>(reducer: Reducer<T>, options?: WriteableStreamOptions): WriteableStream<T> {
208
- return new WriteableStreamImpl<T>(reducer);
209
+ return new WriteableStreamImpl<T>(reducer, options);
209
210
  }
210
211
 
211
212
  export interface WriteableStreamOptions {
@@ -716,3 +717,103 @@ export function transform<Original, Transformed>(stream: ReadableStreamEvents<Or
716
717
 
717
718
  return target;
718
719
  }
720
+
721
+ /**
722
+ * Convert File to ReadableStream<BinaryBuffer> for use in services which require ReadableStream
723
+ */
724
+ export function fileToStream(file: File): ReadableStream<BinaryBuffer> {
725
+ const ws = newWriteableStream<BinaryBuffer>(BinaryBuffer.concat, { highWaterMark: 0 });
726
+
727
+ (async () => {
728
+ const reader = file.stream().getReader();
729
+
730
+ try {
731
+ while (true) {
732
+ const { value, done } = await reader.read();
733
+ if (done) {break;}
734
+
735
+ if (value?.byteLength) {
736
+ await ws.write(BinaryBuffer.wrap(value));
737
+ }
738
+ }
739
+ ws.end();
740
+ } catch (e: unknown) {
741
+ try {
742
+ await reader.cancel();
743
+ } catch {}
744
+
745
+ ws.error(e instanceof Error ? e : new Error(String(e)));
746
+ }
747
+ })();
748
+
749
+ return ws as ReadableStream<BinaryBuffer>;
750
+ }
751
+
752
+ /**
753
+ * Convert BinaryBufferReadableStream to Web ReadableStream<Uint8Array>
754
+ */
755
+ export function binaryStreamToWebStream(
756
+ binaryStream: ReadableStream<BinaryBuffer>,
757
+ abortSignal?: AbortSignal
758
+ ): globalThis.ReadableStream<Uint8Array> {
759
+ return new globalThis.ReadableStream<Uint8Array>({
760
+ start(controller) {
761
+ const cleanup = () => {
762
+ // Remove all event listeners
763
+ binaryStream.removeListener('data', onData);
764
+ binaryStream.removeListener('end', onEnd);
765
+ binaryStream.removeListener('error', onError);
766
+ };
767
+
768
+ const onAbort = () => {
769
+ cleanup();
770
+ controller.error(new Error('Operation aborted'));
771
+ };
772
+
773
+ if (abortSignal?.aborted) {
774
+ onAbort();
775
+ return;
776
+ }
777
+
778
+ if (abortSignal) {
779
+ abortSignal.addEventListener('abort', onAbort, { once: true });
780
+ }
781
+
782
+ const onData = (chunk: BinaryBuffer) => {
783
+ if (abortSignal?.aborted) {
784
+ return;
785
+ }
786
+ try {
787
+ // Convert BinaryBuffer to Uint8Array efficiently
788
+ controller.enqueue(new Uint8Array(chunk.buffer));
789
+ } catch (error) {
790
+ cleanup();
791
+ if (abortSignal) {
792
+ abortSignal.removeEventListener('abort', onAbort);
793
+ }
794
+ controller.error(error);
795
+ }
796
+ };
797
+
798
+ const onEnd = () => {
799
+ cleanup();
800
+ if (abortSignal) {
801
+ abortSignal.removeEventListener('abort', onAbort);
802
+ }
803
+ controller.close();
804
+ };
805
+
806
+ const onError = (error: Error) => {
807
+ cleanup();
808
+ if (abortSignal) {
809
+ abortSignal.removeEventListener('abort', onAbort);
810
+ }
811
+ controller.error(error);
812
+ };
813
+
814
+ binaryStream.on('data', onData);
815
+ binaryStream.on('end', onEnd);
816
+ binaryStream.on('error', onError);
817
+ }
818
+ });
819
+ }
@@ -15,14 +15,12 @@
15
15
  // *****************************************************************************
16
16
 
17
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';
18
+ import { nls } from './nls';
19
+ import { PreferenceSchema, PreferenceProxy, PreferenceProxyFactory, PreferenceContribution } from './preferences';
21
20
 
22
21
  export const PREFERENCE_NAME_TREE_INDENT = 'workbench.tree.indent';
23
22
 
24
23
  export const treePreferencesSchema: PreferenceSchema = {
25
- type: 'object',
26
24
  properties: {
27
25
  [PREFERENCE_NAME_TREE_INDENT]: {
28
26
  description: nls.localizeByDefault('Controls tree indentation in pixels.'),
@@ -18,7 +18,7 @@
18
18
 
19
19
  import { inject, injectable, postConstruct } from 'inversify';
20
20
  import {
21
- ContextMenuRenderer, ContextMenuAccess, FrontendApplicationContribution, CommonCommands, coordinateFromAnchor, PreferenceService,
21
+ ContextMenuRenderer, ContextMenuAccess, FrontendApplicationContribution, CommonCommands, coordinateFromAnchor,
22
22
  Anchor
23
23
  } from '../../browser';
24
24
  import { ElectronMainMenuFactory } from './electron-main-menu-factory';
@@ -26,6 +26,7 @@ import { ContextMenuContext } from '../../browser/menu/context-menu-context';
26
26
  import { BrowserContextMenuAccess, BrowserContextMenuRenderer } from '../../browser/menu/browser-context-menu-renderer';
27
27
  import { MenuPath, MenuContribution, MenuModelRegistry, CompoundMenuNode } from '../../common/menu';
28
28
  import { ContextKeyService, ContextMatcher } from '../../browser/context-key-service';
29
+ import { PreferenceService } from '../../common/preferences';
29
30
 
30
31
  export class ElectronContextMenuAccess extends ContextMenuAccess {
31
32
  constructor(readonly menuHandle: Promise<number>) {
@@ -17,8 +17,8 @@
17
17
  /* eslint-disable @typescript-eslint/no-explicit-any */
18
18
 
19
19
  import { inject, injectable, postConstruct } from 'inversify';
20
- import { isOSX, MAIN_MENU_BAR, MenuNode, CompoundMenuNode, Group, RenderedMenuNode, CommandMenu, AcceleratorSource, MenuPath } from '../../common';
21
- import { PreferenceService, CommonCommands } from '../../browser';
20
+ import { isOSX, MAIN_MENU_BAR, MenuNode, CompoundMenuNode, Group, RenderedMenuNode, CommandMenu, AcceleratorSource, MenuPath, PreferenceService } from '../../common';
21
+ import { CommonCommands } from '../../browser';
22
22
  import debounce = require('lodash.debounce');
23
23
  import { BrowserMainMenuFactory } from '../../browser/menu/browser-menu-plugin';
24
24
  import { ContextMatcher } from '../../browser/context-key-service';
@@ -175,7 +175,9 @@ export class ElectronMainMenuFactory extends BrowserMainMenuFactory {
175
175
  const showDisabled = options?.showDisabled !== false;
176
176
  const honorDisabled = options?.honorDisabled !== false;
177
177
 
178
- if (CompoundMenuNode.is(menu) && menu.children.length && menu.isVisible(menuPath, contextMatcher, options.context, ...args)) {
178
+ const effectivePath = menu.effectiveMenuPath || menuPath;
179
+
180
+ if (CompoundMenuNode.is(menu) && menu.children.length && menu.isVisible(effectivePath, contextMatcher, options.context, ...args)) {
179
181
  if (Group.is(menu) && menu.id === 'inline') {
180
182
  return parentItems;
181
183
  }
@@ -186,7 +188,7 @@ export class ElectronMainMenuFactory extends BrowserMainMenuFactory {
186
188
  }
187
189
  const children = menu.children;
188
190
  const myItems: MenuDto[] = [];
189
- children.forEach(child => this.fillMenuTemplate(myItems, [...menuPath, child.id], child, args, contextMatcher, options, false));
191
+ children.forEach(child => this.fillMenuTemplate(myItems, [...effectivePath, child.id], child, args, contextMatcher, options, false));
190
192
  if (myItems.length === 0) {
191
193
  return parentItems;
192
194
  }
@@ -200,12 +202,12 @@ export class ElectronMainMenuFactory extends BrowserMainMenuFactory {
200
202
  parentItems.push({ type: 'separator' });
201
203
  }
202
204
  } else if (CommandMenu.is(menu)) {
203
- if (!menu.isVisible(menuPath, contextMatcher, options.context, ...args)) {
205
+ if (!menu.isVisible(effectivePath, contextMatcher, options.context, ...args)) {
204
206
  return parentItems;
205
207
  }
206
208
 
207
209
  // We should omit rendering context-menu items which are disabled.
208
- if (!showDisabled && !menu.isEnabled(menuPath, ...args)) {
210
+ if (!showDisabled && !menu.isEnabled(effectivePath, ...args)) {
209
211
  return parentItems;
210
212
  }
211
213
 
@@ -214,15 +216,15 @@ export class ElectronMainMenuFactory extends BrowserMainMenuFactory {
214
216
  const menuItem: MenuDto = {
215
217
  id: menu.id,
216
218
  label: menu.label,
217
- type: menu.isToggled(menuPath, ...args) ? 'checkbox' : 'normal',
218
- checked: menu.isToggled(menuPath, ...args),
219
- enabled: !honorDisabled || menu.isEnabled(menuPath, ...args), // see https://github.com/eclipse-theia/theia/issues/446
219
+ type: menu.isToggled(effectivePath, ...args) ? 'checkbox' : 'normal',
220
+ checked: menu.isToggled(effectivePath, ...args),
221
+ enabled: !honorDisabled || menu.isEnabled(effectivePath, ...args), // see https://github.com/eclipse-theia/theia/issues/446
220
222
  visible: true,
221
223
  accelerator,
222
224
  execute: async () => {
223
225
  const wasToggled = menuItem.checked;
224
- await menu.run(menuPath, ...args);
225
- const isToggled = menu.isToggled(menuPath, ...args);
226
+ await menu.run(effectivePath, ...args);
227
+ const isToggled = menu.isToggled(effectivePath, ...args);
226
228
  if (isToggled !== wasToggled) {
227
229
  menuItem.type = isToggled ? 'checkbox' : 'normal';
228
230
  menuItem.checked = isToggled;
@@ -15,15 +15,18 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { inject, injectable, postConstruct } from 'inversify';
18
- import { Command, CommandContribution, CommandRegistry, isOSX, isWindows, MenuModelRegistry, MenuContribution, Disposable, nls } from '../../common';
19
18
  import {
20
- codicon, ConfirmDialog, KeybindingContribution, KeybindingRegistry, PreferenceScope, Widget,
21
- FrontendApplication, FrontendApplicationContribution, CommonMenus, CommonCommands, Dialog, Message, ApplicationShell, PreferenceService, animationFrame,
19
+ Command, CommandContribution, CommandRegistry, isOSX, isWindows, MenuModelRegistry,
20
+ MenuContribution, Disposable, nls, PreferenceScope, PreferenceService
21
+ } from '../../common';
22
+ import {
23
+ codicon, ConfirmDialog, KeybindingContribution, KeybindingRegistry, Widget,
24
+ FrontendApplication, FrontendApplicationContribution, CommonMenus, CommonCommands, Dialog, Message, ApplicationShell, animationFrame,
22
25
  } from '../../browser';
23
26
  import { ElectronMainMenuFactory } from './electron-main-menu-factory';
24
27
  import { FrontendApplicationStateService, FrontendApplicationState } from '../../browser/frontend-application-state';
25
28
  import { FrontendApplicationConfigProvider } from '../../browser/frontend-application-config-provider';
26
- import { ZoomLevel } from '../window/electron-window-preferences';
29
+ import { ZoomLevel } from '../../electron-common/electron-window-preferences';
27
30
  import { BrowserMenuBarContribution } from '../../browser/menu/browser-menu-plugin';
28
31
  import { WindowService } from '../../browser/window/window-service';
29
32
  import { WindowTitleService } from '../../browser/window/window-title-service';
@@ -142,7 +145,7 @@ export class ElectronMenuContribution extends BrowserMenuBarContribution impleme
142
145
  protected attachMenuBarVisibilityListener(): void {
143
146
  this.preferenceService.onPreferenceChanged(e => {
144
147
  if (e.preferenceName === 'window.menuBarVisibility') {
145
- this.handleFullScreen(e.newValue);
148
+ this.handleFullScreen(e.newValue as string);
146
149
  }
147
150
  });
148
151
  }
@@ -164,7 +167,7 @@ export class ElectronMenuContribution extends BrowserMenuBarContribution impleme
164
167
  this.preferenceService.onPreferenceChanged(change => {
165
168
  if (change.preferenceName === 'window.titleBarStyle') {
166
169
  if (this.titleBarStyleChangeFlag && this.titleBarStyle !== change.newValue) {
167
- window.electronTheiaCore.setTitleBarStyle(change.newValue);
170
+ window.electronTheiaCore.setTitleBarStyle(change.newValue as string);
168
171
  this.handleRequiredRestart();
169
172
  }
170
173
  this.titleBarStyleChangeFlag = true;
@@ -27,7 +27,7 @@ import {
27
27
  CHANNEL_REQUEST_RELOAD, CHANNEL_APP_STATE_CHANGED, CHANNEL_SHOW_ITEM_IN_FOLDER, CHANNEL_READ_CLIPBOARD, CHANNEL_WRITE_CLIPBOARD,
28
28
  CHANNEL_KEYBOARD_LAYOUT_CHANGED, CHANNEL_IPC_CONNECTION, InternalMenuDto, CHANNEL_REQUEST_SECONDARY_CLOSE, CHANNEL_SET_BACKGROUND_COLOR,
29
29
  CHANNEL_WC_METADATA, CHANNEL_ABOUT_TO_CLOSE, CHANNEL_OPEN_WITH_SYSTEM_APP,
30
- CHANNEL_OPEN_URL, CHANNEL_SET_THEME
30
+ CHANNEL_OPEN_URL, CHANNEL_SET_THEME, CHANNEL_OPEN_DEVTOOLS_FOR_WINDOW
31
31
  } from '../electron-common/electron-api';
32
32
 
33
33
  // eslint-disable-next-line import/no-extraneous-dependencies
@@ -200,6 +200,9 @@ const api: TheiaCoreAPI = {
200
200
  toggleDevTools: function (): void {
201
201
  ipcRenderer.send(CHANNEL_TOGGLE_DEVTOOLS);
202
202
  },
203
+ openDevToolsForWindow: function (windowName: string): void {
204
+ ipcRenderer.send(CHANNEL_OPEN_DEVTOOLS_FOR_WINDOW, windowName);
205
+ },
203
206
  getZoomLevel: function (): Promise<number> {
204
207
  return ipcRenderer.invoke(CHANNEL_GET_ZOOM_LEVEL);
205
208
  },
@@ -48,10 +48,13 @@ export class ElectronSecondaryWindowService extends DefaultSecondaryWindowServic
48
48
 
49
49
  protected override windowCreated(newWindow: Window, widget: ExtractableWidget, shell: ApplicationShell): void {
50
50
  window.electronTheiaCore.setMenuBarVisible(false, newWindow.name);
51
- window.electronTheiaCore.setSecondaryWindowCloseRequestHandler(newWindow.name, () => this.canClose(widget, shell));
51
+ window.electronTheiaCore.setSecondaryWindowCloseRequestHandler(newWindow.name, () => this.canClose(widget, shell, newWindow));
52
+
53
+ // Below code may be used to debug contents of secondary window
54
+ // window.electronTheiaCore.openDevToolsForWindow(newWindow.name);
52
55
  }
53
- private async canClose(widget: ExtractableWidget, shell: ApplicationShell): Promise<boolean> {
54
- await shell.closeWidget(widget.id);
55
- return widget.isDisposed;
56
+ private async canClose(extractableWidget: ExtractableWidget, shell: ApplicationShell, newWindow: Window): Promise<boolean> {
57
+ return this.restoreWidgets(newWindow, extractableWidget, shell);
56
58
  }
59
+
57
60
  }
@@ -26,7 +26,7 @@ import { ElectronClipboardService } from '../electron-clipboard-service';
26
26
  import { ElectronIpcConnectionProvider } from '../messaging/electron-ipc-connection-source';
27
27
  import { ElectronFrontendApplicationStateService } from './electron-frontend-application-state';
28
28
  import { ElectronSecondaryWindowService } from './electron-secondary-window-service';
29
- import { bindWindowPreferences } from './electron-window-preferences';
29
+ import { bindWindowPreferences } from '../../electron-common/electron-window-preferences';
30
30
  import { ElectronWindowService } from './electron-window-service';
31
31
  import { ExternalAppOpenHandler } from './external-app-open-handler';
32
32
  import { ElectronUriHandlerContribution } from '../electron-uri-handler';
@@ -18,7 +18,7 @@ import { injectable, inject, postConstruct } from 'inversify';
18
18
  import { NewWindowOptions, WindowSearchParams } from '../../common/window';
19
19
  import { DefaultWindowService } from '../../browser/window/default-window-service';
20
20
  import { ElectronMainWindowService } from '../../electron-common/electron-main-window-service';
21
- import { ElectronWindowPreferences } from './electron-window-preferences';
21
+ import { ElectronWindowPreferences } from '../../electron-common/electron-window-preferences';
22
22
  import { ConnectionCloseService } from '../../common/messaging/connection-management';
23
23
  import { FrontendIdProvider } from '../../browser/messaging/frontend-id-provider';
24
24
  import { WindowReloadOptions } from '../../browser/window/window-service';
@@ -83,6 +83,7 @@ export interface TheiaCoreAPI {
83
83
  setSecondaryWindowCloseRequestHandler(windowName: string, handler: () => Promise<boolean>): void;
84
84
 
85
85
  toggleDevTools(): void;
86
+ openDevToolsForWindow(windowName: string): void;
86
87
  getZoomLevel(): Promise<number>;
87
88
  setZoomLevel(desired: number): void;
88
89
 
@@ -141,6 +142,7 @@ export const CHANNEL_OPEN_URL = 'OpenUrl';
141
142
  export const CHANNEL_UNMAXIMIZE = 'UnMaximize';
142
143
  export const CHANNEL_ON_WINDOW_EVENT = 'OnWindowEvent';
143
144
  export const CHANNEL_TOGGLE_DEVTOOLS = 'ToggleDevtools';
145
+ export const CHANNEL_OPEN_DEVTOOLS_FOR_WINDOW = 'OpenDevtoolsForWindow';
144
146
  export const CHANNEL_GET_ZOOM_LEVEL = 'GetZoomLevel';
145
147
  export const CHANNEL_SET_ZOOM_LEVEL = 'SetZoomLevel';
146
148
  export const CHANNEL_IS_FULL_SCREENABLE = 'IsFullScreenable';
@@ -15,9 +15,10 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { interfaces } from 'inversify';
18
- import { nls } from '../../common/nls';
19
- import { createPreferenceProxy, PreferenceContribution, PreferenceProxy, PreferenceSchema, PreferenceService } from '../../browser/preferences';
20
- import { isOSX, isWindows } from '../../common';
18
+ import { nls } from '../common/nls';
19
+ import { isOSX, isWindows } from '../common';
20
+ import { PreferenceContribution, PreferenceSchema } from '../common/preferences/preference-schema';
21
+ import { createPreferenceProxy, PreferenceProxy, PreferenceScope, PreferenceService } from '../common/preferences';
21
22
 
22
23
  export namespace ZoomLevel {
23
24
  export const DEFAULT = 0;
@@ -29,14 +30,13 @@ export namespace ZoomLevel {
29
30
  }
30
31
 
31
32
  export const electronWindowPreferencesSchema: PreferenceSchema = {
32
- type: 'object',
33
33
  properties: {
34
34
  'window.zoomLevel': {
35
35
  'type': 'number',
36
36
  'default': ZoomLevel.DEFAULT,
37
37
  'minimum': ZoomLevel.MIN,
38
38
  'maximum': ZoomLevel.MAX,
39
- 'scope': 'application',
39
+ 'scope': PreferenceScope.User,
40
40
  // eslint-disable-next-line max-len
41
41
  'description': nls.localizeByDefault("Adjust the default zoom level for all windows. Each increment above `0` (e.g. `1`) or below (e.g. `-1`) represents zooming `20%` larger or smaller. You can also enter decimals to adjust the zoom level with a finer granularity. See {0} for configuring if the 'Zoom In' and 'Zoom Out' commands apply the zoom level to all windows or only the active window.")
42
42
  },
@@ -44,7 +44,7 @@ export const electronWindowPreferencesSchema: PreferenceSchema = {
44
44
  type: 'string',
45
45
  enum: ['native', 'custom'],
46
46
  default: isWindows ? 'custom' : 'native',
47
- scope: 'application',
47
+ scope: PreferenceScope.User,
48
48
  // eslint-disable-next-line max-len
49
49
  description: nls.localizeByDefault('Adjust the appearance of the window title bar to be native by the OS or custom. On Linux and Windows, this setting also affects the application and context menu appearances. Changes require a full restart to apply.'),
50
50
  included: !isOSX