@theia/core 1.43.1 → 1.45.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 (320) hide show
  1. package/README.md +6 -6
  2. package/i18n/nls.cs.json +10 -3
  3. package/i18n/nls.de.json +10 -3
  4. package/i18n/nls.es.json +10 -3
  5. package/i18n/nls.fr.json +10 -3
  6. package/i18n/nls.hu.json +10 -3
  7. package/i18n/nls.it.json +10 -3
  8. package/i18n/nls.ja.json +10 -3
  9. package/i18n/nls.json +10 -3
  10. package/i18n/nls.pl.json +10 -3
  11. package/i18n/nls.pt-br.json +10 -3
  12. package/i18n/nls.pt-pt.json +10 -3
  13. package/i18n/nls.ru.json +10 -3
  14. package/i18n/nls.zh-cn.json +10 -3
  15. package/lib/browser/common-frontend-contribution.d.ts +10 -0
  16. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  17. package/lib/browser/common-frontend-contribution.js +68 -10
  18. package/lib/browser/common-frontend-contribution.js.map +1 -1
  19. package/lib/browser/connection-status-service.d.ts +2 -2
  20. package/lib/browser/connection-status-service.d.ts.map +1 -1
  21. package/lib/browser/connection-status-service.js +3 -3
  22. package/lib/browser/connection-status-service.js.map +1 -1
  23. package/lib/browser/connection-status-service.spec.js +6 -6
  24. package/lib/browser/connection-status-service.spec.js.map +1 -1
  25. package/lib/browser/core-preferences.d.ts.map +1 -1
  26. package/lib/browser/core-preferences.js +16 -0
  27. package/lib/browser/core-preferences.js.map +1 -1
  28. package/lib/browser/dialogs.d.ts +0 -1
  29. package/lib/browser/dialogs.d.ts.map +1 -1
  30. package/lib/browser/dialogs.js +1 -34
  31. package/lib/browser/dialogs.js.map +1 -1
  32. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  33. package/lib/browser/frontend-application-module.js +4 -0
  34. package/lib/browser/frontend-application-module.js.map +1 -1
  35. package/lib/browser/icon-theme-contribution.d.ts +1 -0
  36. package/lib/browser/icon-theme-contribution.d.ts.map +1 -1
  37. package/lib/browser/icon-theme-contribution.js +1 -0
  38. package/lib/browser/icon-theme-contribution.js.map +1 -1
  39. package/lib/browser/icon-theme-service.d.ts +1 -0
  40. package/lib/browser/icon-theme-service.d.ts.map +1 -1
  41. package/lib/browser/icon-theme-service.js.map +1 -1
  42. package/lib/browser/language-icon-provider.d.ts +15 -0
  43. package/lib/browser/language-icon-provider.d.ts.map +1 -0
  44. package/lib/browser/language-icon-provider.js +74 -0
  45. package/lib/browser/language-icon-provider.js.map +1 -0
  46. package/lib/browser/language-service.d.ts +22 -0
  47. package/lib/browser/language-service.d.ts.map +1 -1
  48. package/lib/browser/language-service.js +28 -0
  49. package/lib/browser/language-service.js.map +1 -1
  50. package/lib/browser/messaging/connection-source.d.ts +9 -0
  51. package/lib/browser/messaging/connection-source.d.ts.map +1 -0
  52. package/lib/browser/messaging/connection-source.js +20 -0
  53. package/lib/browser/messaging/connection-source.js.map +1 -0
  54. package/lib/browser/messaging/frontend-id-provider.d.ts +13 -0
  55. package/lib/browser/messaging/frontend-id-provider.d.ts.map +1 -0
  56. package/lib/browser/messaging/frontend-id-provider.js +40 -0
  57. package/lib/browser/messaging/frontend-id-provider.js.map +1 -0
  58. package/lib/browser/messaging/messaging-frontend-module.d.ts.map +1 -1
  59. package/lib/browser/messaging/messaging-frontend-module.js +18 -1
  60. package/lib/browser/messaging/messaging-frontend-module.js.map +1 -1
  61. package/lib/browser/messaging/service-connection-provider.d.ts +48 -0
  62. package/lib/browser/messaging/service-connection-provider.d.ts.map +1 -0
  63. package/lib/browser/messaging/service-connection-provider.js +115 -0
  64. package/lib/browser/messaging/service-connection-provider.js.map +1 -0
  65. package/lib/browser/messaging/ws-connection-provider.d.ts +7 -38
  66. package/lib/browser/messaging/ws-connection-provider.d.ts.map +1 -1
  67. package/lib/browser/messaging/ws-connection-provider.js +17 -121
  68. package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
  69. package/lib/browser/messaging/ws-connection-source.d.ts +41 -0
  70. package/lib/browser/messaging/ws-connection-source.d.ts.map +1 -0
  71. package/lib/browser/messaging/ws-connection-source.js +210 -0
  72. package/lib/browser/messaging/ws-connection-source.js.map +1 -0
  73. package/lib/browser/preload/i18n-preload-contribution.js +1 -1
  74. package/lib/browser/preload/i18n-preload-contribution.js.map +1 -1
  75. package/lib/browser/shell/application-shell.js +1 -1
  76. package/lib/browser/shell/application-shell.js.map +1 -1
  77. package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts +1 -0
  78. package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts.map +1 -1
  79. package/lib/browser/tree/tree-compression/compressed-tree-widget.js +5 -0
  80. package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
  81. package/lib/browser/tree/tree-widget.d.ts +6 -0
  82. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  83. package/lib/browser/tree/tree-widget.js +21 -11
  84. package/lib/browser/tree/tree-widget.js.map +1 -1
  85. package/lib/browser/user-working-directory-provider.d.ts +8 -1
  86. package/lib/browser/user-working-directory-provider.d.ts.map +1 -1
  87. package/lib/browser/user-working-directory-provider.js +22 -1
  88. package/lib/browser/user-working-directory-provider.js.map +1 -1
  89. package/lib/browser/window/default-secondary-window-service.d.ts +3 -0
  90. package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
  91. package/lib/browser/window/default-secondary-window-service.js +55 -1
  92. package/lib/browser/window/default-secondary-window-service.js.map +1 -1
  93. package/lib/common/contribution-filter/contribution-filter.d.ts +9 -0
  94. package/lib/common/contribution-filter/contribution-filter.d.ts.map +1 -1
  95. package/lib/common/event.js +1 -1
  96. package/lib/common/event.js.map +1 -1
  97. package/lib/common/message-rpc/channel.d.ts.map +1 -1
  98. package/lib/common/message-rpc/channel.js +7 -1
  99. package/lib/common/message-rpc/channel.js.map +1 -1
  100. package/lib/common/message-rpc/message-buffer.d.ts +2 -0
  101. package/lib/common/message-rpc/message-buffer.d.ts.map +1 -1
  102. package/lib/common/message-rpc/message-buffer.js +4 -0
  103. package/lib/common/message-rpc/message-buffer.js.map +1 -1
  104. package/lib/common/message-rpc/uint8-array-message-buffer.d.ts +1 -0
  105. package/lib/common/message-rpc/uint8-array-message-buffer.d.ts.map +1 -1
  106. package/lib/common/message-rpc/uint8-array-message-buffer.js +6 -0
  107. package/lib/common/message-rpc/uint8-array-message-buffer.js.map +1 -1
  108. package/lib/common/messaging/connection-management.d.ts +25 -0
  109. package/lib/common/messaging/connection-management.d.ts.map +1 -0
  110. package/lib/common/messaging/connection-management.js +38 -0
  111. package/lib/common/messaging/connection-management.js.map +1 -0
  112. package/lib/common/messaging/handler.d.ts +1 -0
  113. package/lib/common/messaging/handler.d.ts.map +1 -1
  114. package/lib/common/messaging/handler.js +2 -1
  115. package/lib/common/messaging/handler.js.map +1 -1
  116. package/lib/common/messaging/socket-write-buffer.d.ts +11 -0
  117. package/lib/common/messaging/socket-write-buffer.d.ts.map +1 -0
  118. package/lib/common/messaging/socket-write-buffer.js +50 -0
  119. package/lib/common/messaging/socket-write-buffer.js.map +1 -0
  120. package/lib/common/messaging/web-socket-channel.d.ts +7 -35
  121. package/lib/common/messaging/web-socket-channel.d.ts.map +1 -1
  122. package/lib/common/messaging/web-socket-channel.js +20 -9
  123. package/lib/common/messaging/web-socket-channel.js.map +1 -1
  124. package/lib/common/nls.js +12 -1
  125. package/lib/common/nls.js.map +1 -1
  126. package/lib/electron-browser/messaging/electron-frontend-id-provider.d.ts +5 -0
  127. package/lib/electron-browser/messaging/electron-frontend-id-provider.d.ts.map +1 -0
  128. package/lib/{electron-node/token/electron-token-messaging-contribution.js → electron-browser/messaging/electron-frontend-id-provider.js} +9 -28
  129. package/lib/electron-browser/messaging/electron-frontend-id-provider.js.map +1 -0
  130. package/lib/electron-browser/messaging/electron-ipc-connection-source.d.ts +24 -0
  131. package/lib/electron-browser/messaging/electron-ipc-connection-source.d.ts.map +1 -0
  132. package/lib/electron-browser/messaging/{electron-ipc-connection-provider.js → electron-ipc-connection-source.js} +19 -19
  133. package/lib/electron-browser/messaging/electron-ipc-connection-source.js.map +1 -0
  134. package/lib/electron-browser/messaging/electron-local-ws-connection-source.d.ts +7 -0
  135. package/lib/electron-browser/messaging/electron-local-ws-connection-source.d.ts.map +1 -0
  136. package/lib/electron-browser/messaging/{electron-local-ws-connection-provider.js → electron-local-ws-connection-source.js} +7 -7
  137. package/lib/electron-browser/messaging/electron-local-ws-connection-source.js.map +1 -0
  138. package/lib/electron-browser/messaging/electron-messaging-frontend-module.d.ts.map +1 -1
  139. package/lib/electron-browser/messaging/electron-messaging-frontend-module.js +45 -13
  140. package/lib/electron-browser/messaging/electron-messaging-frontend-module.js.map +1 -1
  141. package/lib/electron-browser/messaging/electron-ws-connection-source.d.ts +12 -0
  142. package/lib/electron-browser/messaging/electron-ws-connection-source.d.ts.map +1 -0
  143. package/lib/electron-browser/messaging/{electron-ws-connection-provider.js → electron-ws-connection-source.js} +14 -21
  144. package/lib/electron-browser/messaging/electron-ws-connection-source.js.map +1 -0
  145. package/lib/electron-browser/preload.d.ts.map +1 -1
  146. package/lib/electron-browser/preload.js +11 -0
  147. package/lib/electron-browser/preload.js.map +1 -1
  148. package/lib/electron-browser/window/electron-secondary-window-service.d.ts +1 -1
  149. package/lib/electron-browser/window/electron-secondary-window-service.d.ts.map +1 -1
  150. package/lib/electron-browser/window/electron-window-module.js +2 -2
  151. package/lib/electron-browser/window/electron-window-module.js.map +1 -1
  152. package/lib/electron-browser/window/electron-window-preferences.js +1 -1
  153. package/lib/electron-browser/window/electron-window-preferences.js.map +1 -1
  154. package/lib/electron-browser/window/electron-window-service.d.ts +4 -0
  155. package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
  156. package/lib/electron-browser/window/electron-window-service.js +13 -0
  157. package/lib/electron-browser/window/electron-window-service.js.map +1 -1
  158. package/lib/electron-common/electron-api.d.ts +7 -0
  159. package/lib/electron-common/electron-api.d.ts.map +1 -1
  160. package/lib/electron-common/electron-api.js +3 -1
  161. package/lib/electron-common/electron-api.js.map +1 -1
  162. package/lib/electron-main/electron-api-main.d.ts +1 -0
  163. package/lib/electron-main/electron-api-main.d.ts.map +1 -1
  164. package/lib/electron-main/electron-api-main.js +15 -0
  165. package/lib/electron-main/electron-api-main.js.map +1 -1
  166. package/lib/electron-main/electron-main-application-module.js +5 -5
  167. package/lib/electron-main/electron-main-application-module.js.map +1 -1
  168. package/lib/electron-main/electron-main-application.d.ts +9 -13
  169. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  170. package/lib/electron-main/electron-main-application.js +60 -28
  171. package/lib/electron-main/electron-main-application.js.map +1 -1
  172. package/lib/electron-main/messaging/electron-connection-handler.d.ts.map +1 -0
  173. package/lib/electron-main/messaging/electron-connection-handler.js.map +1 -0
  174. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +13 -22
  175. package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
  176. package/lib/electron-main/messaging/electron-messaging-contribution.js +39 -39
  177. package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
  178. package/lib/electron-main/messaging/electron-messaging-service.d.ts.map +1 -1
  179. package/lib/electron-main/messaging/electron-messaging-service.js.map +1 -1
  180. package/lib/electron-main/theia-electron-window.d.ts +2 -2
  181. package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
  182. package/lib/electron-main/theia-electron-window.js +3 -2
  183. package/lib/electron-main/theia-electron-window.js.map +1 -1
  184. package/lib/node/backend-application.d.ts +2 -0
  185. package/lib/node/backend-application.d.ts.map +1 -1
  186. package/lib/node/backend-application.js +11 -9
  187. package/lib/node/backend-application.js.map +1 -1
  188. package/lib/node/cli.d.ts +1 -1
  189. package/lib/node/cli.d.ts.map +1 -1
  190. package/lib/node/cli.js +9 -5
  191. package/lib/node/cli.js.map +1 -1
  192. package/lib/node/cli.spec.js +3 -3
  193. package/lib/node/cli.spec.js.map +1 -1
  194. package/lib/node/env-variables/env-variables-server.d.ts +3 -0
  195. package/lib/node/env-variables/env-variables-server.d.ts.map +1 -1
  196. package/lib/node/env-variables/env-variables-server.js +25 -1
  197. package/lib/node/env-variables/env-variables-server.js.map +1 -1
  198. package/lib/node/i18n/localization-server.d.ts +1 -1
  199. package/lib/node/i18n/localization-server.d.ts.map +1 -1
  200. package/lib/node/messaging/default-messaging-service.d.ts +29 -0
  201. package/lib/node/messaging/default-messaging-service.d.ts.map +1 -0
  202. package/lib/node/messaging/default-messaging-service.js +140 -0
  203. package/lib/node/messaging/default-messaging-service.js.map +1 -0
  204. package/lib/node/messaging/frontend-connection-service.d.ts +7 -0
  205. package/lib/node/messaging/frontend-connection-service.d.ts.map +1 -0
  206. package/lib/node/messaging/frontend-connection-service.js +19 -0
  207. package/lib/node/messaging/frontend-connection-service.js.map +1 -0
  208. package/lib/node/messaging/ipc-protocol.js +1 -1
  209. package/lib/node/messaging/ipc-protocol.js.map +1 -1
  210. package/lib/node/messaging/messaging-backend-module.d.ts.map +1 -1
  211. package/lib/node/messaging/messaging-backend-module.js +23 -9
  212. package/lib/node/messaging/messaging-backend-module.js.map +1 -1
  213. package/lib/node/messaging/messaging-service.d.ts +2 -3
  214. package/lib/node/messaging/messaging-service.d.ts.map +1 -1
  215. package/lib/node/messaging/test/test-web-socket-channel.d.ts +3 -3
  216. package/lib/node/messaging/test/test-web-socket-channel.d.ts.map +1 -1
  217. package/lib/node/messaging/test/test-web-socket-channel.js +38 -24
  218. package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
  219. package/lib/node/messaging/websocket-endpoint.d.ts +21 -0
  220. package/lib/node/messaging/websocket-endpoint.d.ts.map +1 -0
  221. package/lib/node/messaging/websocket-endpoint.js +89 -0
  222. package/lib/node/messaging/websocket-endpoint.js.map +1 -0
  223. package/lib/node/messaging/websocket-frontend-connection-service.d.ts +30 -0
  224. package/lib/node/messaging/websocket-frontend-connection-service.d.ts.map +1 -0
  225. package/lib/node/messaging/websocket-frontend-connection-service.js +173 -0
  226. package/lib/node/messaging/websocket-frontend-connection-service.js.map +1 -0
  227. package/package.json +6 -6
  228. package/src/browser/common-frontend-contribution.ts +70 -9
  229. package/src/browser/connection-status-service.spec.ts +6 -6
  230. package/src/browser/connection-status-service.ts +2 -2
  231. package/src/browser/core-preferences.ts +16 -0
  232. package/src/browser/dialogs.ts +0 -34
  233. package/src/browser/frontend-application-module.ts +4 -0
  234. package/src/browser/icon-theme-contribution.ts +1 -0
  235. package/src/browser/icon-theme-service.ts +1 -0
  236. package/src/browser/language-icon-provider.ts +55 -0
  237. package/src/browser/language-service.ts +34 -0
  238. package/src/browser/messaging/connection-source.ts +26 -0
  239. package/src/browser/messaging/frontend-id-provider.ts +37 -0
  240. package/src/browser/messaging/messaging-frontend-module.ts +20 -2
  241. package/src/browser/messaging/service-connection-provider.ts +126 -0
  242. package/src/browser/messaging/ws-connection-provider.ts +16 -141
  243. package/src/browser/messaging/ws-connection-source.ts +210 -0
  244. package/src/browser/preload/i18n-preload-contribution.ts +1 -1
  245. package/src/browser/shell/application-shell.ts +1 -1
  246. package/src/browser/style/index.css +1 -0
  247. package/src/browser/style/os.css +87 -0
  248. package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +27 -7
  249. package/src/browser/tree/tree-widget.tsx +21 -10
  250. package/src/browser/user-working-directory-provider.ts +32 -3
  251. package/src/browser/window/default-secondary-window-service.ts +54 -1
  252. package/src/common/contribution-filter/contribution-filter.ts +9 -0
  253. package/src/common/event.ts +1 -1
  254. package/src/common/i18n/nls.metadata.json +7695 -7220
  255. package/src/common/message-rpc/channel.ts +5 -1
  256. package/src/common/message-rpc/message-buffer.ts +6 -0
  257. package/src/common/message-rpc/uint8-array-message-buffer.ts +7 -0
  258. package/src/common/messaging/connection-management.ts +43 -0
  259. package/src/common/messaging/handler.ts +2 -0
  260. package/src/common/messaging/socket-write-buffer.ts +52 -0
  261. package/src/common/messaging/web-socket-channel.ts +28 -45
  262. package/src/common/nls.ts +12 -1
  263. package/src/electron-browser/messaging/electron-frontend-id-provider.ts +25 -0
  264. package/src/electron-browser/messaging/{electron-ipc-connection-provider.ts → electron-ipc-connection-source.ts} +17 -13
  265. package/src/electron-browser/messaging/{electron-local-ws-connection-provider.ts → electron-local-ws-connection-source.ts} +2 -2
  266. package/src/electron-browser/messaging/electron-messaging-frontend-module.ts +49 -12
  267. package/src/electron-browser/messaging/{electron-ws-connection-provider.ts → electron-ws-connection-source.ts} +6 -17
  268. package/src/electron-browser/preload.ts +16 -1
  269. package/src/electron-browser/window/electron-secondary-window-service.ts +1 -1
  270. package/src/electron-browser/window/electron-window-module.ts +1 -1
  271. package/src/electron-browser/window/electron-window-preferences.ts +1 -1
  272. package/src/electron-browser/window/electron-window-service.ts +11 -0
  273. package/src/electron-common/electron-api.ts +8 -0
  274. package/src/electron-main/electron-api-main.ts +20 -1
  275. package/src/electron-main/electron-main-application-module.ts +5 -5
  276. package/src/electron-main/electron-main-application.ts +72 -44
  277. package/src/electron-main/messaging/electron-messaging-contribution.ts +45 -43
  278. package/src/electron-main/messaging/electron-messaging-service.ts +1 -0
  279. package/src/electron-main/theia-electron-window.ts +4 -3
  280. package/src/node/backend-application.ts +14 -11
  281. package/src/node/cli.spec.ts +3 -3
  282. package/src/node/cli.ts +9 -5
  283. package/src/node/env-variables/env-variables-server.ts +21 -1
  284. package/src/node/i18n/localization-server.ts +1 -1
  285. package/src/node/messaging/default-messaging-service.ts +129 -0
  286. package/src/node/messaging/frontend-connection-service.ts +24 -0
  287. package/src/node/messaging/ipc-protocol.ts +1 -1
  288. package/src/node/messaging/messaging-backend-module.ts +25 -10
  289. package/src/node/messaging/messaging-service.ts +3 -3
  290. package/src/node/messaging/test/test-web-socket-channel.ts +32 -27
  291. package/src/node/messaging/websocket-endpoint.ts +79 -0
  292. package/src/node/messaging/websocket-frontend-connection-service.ts +171 -0
  293. package/lib/common/messaging/abstract-connection-provider.d.ts +0 -45
  294. package/lib/common/messaging/abstract-connection-provider.d.ts.map +0 -1
  295. package/lib/common/messaging/abstract-connection-provider.js +0 -93
  296. package/lib/common/messaging/abstract-connection-provider.js.map +0 -1
  297. package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts +0 -19
  298. package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts.map +0 -1
  299. package/lib/electron-browser/messaging/electron-ipc-connection-provider.js.map +0 -1
  300. package/lib/electron-browser/messaging/electron-local-ws-connection-provider.d.ts +0 -7
  301. package/lib/electron-browser/messaging/electron-local-ws-connection-provider.d.ts.map +0 -1
  302. package/lib/electron-browser/messaging/electron-local-ws-connection-provider.js.map +0 -1
  303. package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts +0 -17
  304. package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts.map +0 -1
  305. package/lib/electron-browser/messaging/electron-ws-connection-provider.js.map +0 -1
  306. package/lib/electron-common/messaging/electron-connection-handler.d.ts.map +0 -1
  307. package/lib/electron-common/messaging/electron-connection-handler.js.map +0 -1
  308. package/lib/electron-node/token/electron-token-messaging-contribution.d.ts +0 -16
  309. package/lib/electron-node/token/electron-token-messaging-contribution.d.ts.map +0 -1
  310. package/lib/electron-node/token/electron-token-messaging-contribution.js.map +0 -1
  311. package/lib/node/messaging/messaging-contribution.d.ts +0 -44
  312. package/lib/node/messaging/messaging-contribution.d.ts.map +0 -1
  313. package/lib/node/messaging/messaging-contribution.js +0 -210
  314. package/lib/node/messaging/messaging-contribution.js.map +0 -1
  315. package/src/common/messaging/abstract-connection-provider.ts +0 -115
  316. package/src/electron-node/token/electron-token-messaging-contribution.ts +0 -41
  317. package/src/node/messaging/messaging-contribution.ts +0 -197
  318. /package/lib/{electron-common → electron-main}/messaging/electron-connection-handler.d.ts +0 -0
  319. /package/lib/{electron-common → electron-main}/messaging/electron-connection-handler.js +0 -0
  320. /package/src/{electron-common → electron-main}/messaging/electron-connection-handler.ts +0 -0
@@ -2101,7 +2101,7 @@ export namespace ApplicationShell {
2101
2101
 
2102
2102
  export const areaLabels: Record<Area, string> = {
2103
2103
  main: nls.localizeByDefault('Main'),
2104
- top: nls.localize('theia/shell-area/top', 'Top'),
2104
+ top: nls.localizeByDefault('Top'),
2105
2105
  left: nls.localizeByDefault('Left'),
2106
2106
  right: nls.localizeByDefault('Right'),
2107
2107
  bottom: nls.localizeByDefault('Bottom'),
@@ -322,6 +322,7 @@ button.secondary[disabled],
322
322
  | Import children style files
323
323
  |----------------------------------------------------------------------------*/
324
324
 
325
+ @import "./os.css";
325
326
  @import "./dockpanel.css";
326
327
  @import "./dialog.css";
327
328
  @import "./menus.css";
@@ -0,0 +1,87 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2019 TypeFox and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ .mac {
18
+ --theia-ui-font-family: -apple-system,BlinkMacSystemFont,sans-serif
19
+ }
20
+
21
+ .mac:lang(zh-Hans) {
22
+ --theia-ui-font-family: -apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,sans-serif
23
+ }
24
+
25
+ .mac:lang(zh-Hant) {
26
+ --theia-ui-font-family: -apple-system,BlinkMacSystemFont,PingFang TC,sans-serif
27
+ }
28
+
29
+ .mac:lang(ja) {
30
+ --theia-ui-font-family: -apple-system,BlinkMacSystemFont,Hiragino Kaku Gothic Pro,sans-serif
31
+ }
32
+
33
+ .mac:lang(ko) {
34
+ --theia-ui-font-family: -apple-system,BlinkMacSystemFont,Nanum Gothic,Apple SD Gothic Neo,AppleGothic,sans-serif
35
+ }
36
+
37
+ .windows {
38
+ --theia-ui-font-family: Segoe WPC,Segoe UI,sans-serif
39
+ }
40
+
41
+ .windows:lang(zh-Hans) {
42
+ --theia-ui-font-family: Segoe WPC,Segoe UI,Microsoft YaHei,sans-serif
43
+ }
44
+
45
+ .windows:lang(zh-Hant) {
46
+ --theia-ui-font-family: Segoe WPC,Segoe UI,Microsoft Jhenghei,sans-serif
47
+ }
48
+
49
+ .windows:lang(ja) {
50
+ --theia-ui-font-family: Segoe WPC,Segoe UI,Yu Gothic UI,Meiryo UI,sans-serif
51
+ }
52
+
53
+ .windows:lang(ko) {
54
+ --theia-ui-font-family: Segoe WPC,Segoe UI,Malgun Gothic,Dotom,sans-serif
55
+ }
56
+
57
+ .linux {
58
+ --theia-ui-font-family: system-ui,Ubuntu,Droid Sans,sans-serif
59
+ }
60
+
61
+ .linux:lang(zh-Hans) {
62
+ --theia-ui-font-family: system-ui,Ubuntu,Droid Sans,Source Han Sans SC,Source Han Sans CN,Source Han Sans,sans-serif
63
+ }
64
+
65
+ .linux:lang(zh-Hant) {
66
+ --theia-ui-font-family: system-ui,Ubuntu,Droid Sans,Source Han Sans TC,Source Han Sans TW,Source Han Sans,sans-serif
67
+ }
68
+
69
+ .linux:lang(ja) {
70
+ --theia-ui-font-family: system-ui,Ubuntu,Droid Sans,Source Han Sans J,Source Han Sans JP,Source Han Sans,sans-serif
71
+ }
72
+
73
+ .linux:lang(ko) {
74
+ --theia-ui-font-family: system-ui,Ubuntu,Droid Sans,Source Han Sans K,Source Han Sans JR,Source Han Sans,UnDotum,FBaekmuk Gulim,sans-serif
75
+ }
76
+
77
+ .mac {
78
+ --monaco-monospace-font: "SF Mono",Monaco,Menlo,Courier,monospace
79
+ }
80
+
81
+ .windows {
82
+ --monaco-monospace-font: Consolas,"Courier New",monospace
83
+ }
84
+
85
+ .linux {
86
+ --monaco-monospace-font: "Ubuntu Mono","Liberation Mono","DejaVu Sans Mono","Courier New",monospace
87
+ }
@@ -58,6 +58,12 @@ export class CompressedTreeWidget extends TreeViewWelcomeWidget {
58
58
  }
59
59
  }
60
60
 
61
+ protected override shouldRenderIndent(node: TreeNode): boolean {
62
+ return !this.compressionToggle.compress
63
+ || !this.compressionService.isCompressionParticipant(node)
64
+ || this.compressionService.getCompressionHead(node) === node;
65
+ }
66
+
61
67
  protected override shouldDisplayNode(node: TreeNode): boolean {
62
68
  if (this.compressionToggle.compress && this.compressionService.isCompressionParticipant(node) && !this.compressionService.isCompressionHead(node)) {
63
69
  return false;
@@ -66,14 +72,18 @@ export class CompressedTreeWidget extends TreeViewWelcomeWidget {
66
72
  }
67
73
 
68
74
  protected override getDepthForNode(node: TreeNode, depths: Map<CompositeTreeNode | undefined, number>): number {
69
- if (!this.compressionToggle.compress) { return super.getDepthForNode(node, depths); }
75
+ if (!this.compressionToggle.compress) {
76
+ return super.getDepthForNode(node, depths);
77
+ }
70
78
  const parent = this.compressionService.getCompressionHead(node.parent) ?? node.parent;
71
79
  const parentDepth = depths.get(parent);
72
80
  return parentDepth === undefined ? 0 : TreeNode.isVisible(node.parent) ? parentDepth + 1 : parentDepth;
73
81
  }
74
82
 
75
83
  protected override toNodeRow(node: TreeNode, index: number, depth: number): CompressedNodeRow {
76
- if (!this.compressionToggle.compress) { return super.toNodeRow(node, index, depth); }
84
+ if (!this.compressionToggle.compress) {
85
+ return super.toNodeRow(node, index, depth);
86
+ }
77
87
  const row: CompressedNodeRow = { node, index, depth };
78
88
  if (this.compressionService.isCompressionHead(node)) {
79
89
  row.compressionChain = this.compressionService.getCompressionChain(node);
@@ -102,7 +112,9 @@ export class CompressedTreeWidget extends TreeViewWelcomeWidget {
102
112
  }
103
113
 
104
114
  protected override getCaptionChildren(node: TreeNode, props: CompressedNodeProps): React.ReactNode {
105
- if (!this.compressionToggle.compress || !props.compressionChain) { return super.getCaptionChildren(node, props); }
115
+ if (!this.compressionToggle.compress || !props.compressionChain) {
116
+ return super.getCaptionChildren(node, props);
117
+ }
106
118
  return props.compressionChain.map((subNode, index, self) => {
107
119
  const classes = ['theia-tree-compressed-label-part'];
108
120
  if (SelectableTreeNode.isSelected(subNode)) {
@@ -129,21 +141,27 @@ export class CompressedTreeWidget extends TreeViewWelcomeWidget {
129
141
  }
130
142
 
131
143
  protected override handleUp(event: KeyboardEvent): void {
132
- if (!this.compressionToggle.compress) { return super.handleUp(event); }
144
+ if (!this.compressionToggle.compress) {
145
+ return super.handleUp(event);
146
+ }
133
147
  const type = this.props.multiSelect && this.hasShiftMask(event) ? TreeSelection.SelectionType.RANGE : undefined;
134
148
  this.model.selectPrevRow(type);
135
149
  this.node.focus();
136
150
  }
137
151
 
138
152
  protected override handleDown(event: KeyboardEvent): void {
139
- if (!this.compressionToggle.compress) { return super.handleDown(event); }
153
+ if (!this.compressionToggle.compress) {
154
+ return super.handleDown(event);
155
+ }
140
156
  const type = this.props.multiSelect && this.hasShiftMask(event) ? TreeSelection.SelectionType.RANGE : undefined;
141
157
  this.model.selectNextRow(type);
142
158
  this.node.focus();
143
159
  }
144
160
 
145
161
  protected override async handleLeft(event: KeyboardEvent): Promise<void> {
146
- if (!this.compressionToggle.compress) { return super.handleLeft(event); }
162
+ if (!this.compressionToggle.compress) {
163
+ return super.handleLeft(event);
164
+ }
147
165
  if (Boolean(this.props.multiSelect) && (this.hasCtrlCmdMask(event) || this.hasShiftMask(event))) {
148
166
  return;
149
167
  }
@@ -160,7 +178,9 @@ export class CompressedTreeWidget extends TreeViewWelcomeWidget {
160
178
  }
161
179
 
162
180
  protected override async handleRight(event: KeyboardEvent): Promise<void> {
163
- if (!this.compressionToggle.compress) { return super.handleRight(event); }
181
+ if (!this.compressionToggle.compress) {
182
+ return super.handleRight(event);
183
+ }
164
184
  if (Boolean(this.props.multiSelect) && (this.hasCtrlCmdMask(event) || this.hasShiftMask(event))) {
165
185
  return;
166
186
  }
@@ -894,22 +894,33 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
894
894
  let current: TreeNode | undefined = node;
895
895
  let depth = props.depth;
896
896
  while (current && depth) {
897
- const classNames: string[] = [TREE_NODE_INDENT_GUIDE_CLASS];
898
- if (this.needsActiveIndentGuideline(current)) {
899
- classNames.push('active');
900
- } else {
901
- classNames.push(renderIndentGuides === 'onHover' ? 'hover' : 'always');
897
+ if (this.shouldRenderIndent(current)) {
898
+ const classNames: string[] = [TREE_NODE_INDENT_GUIDE_CLASS];
899
+ if (this.needsActiveIndentGuideline(current)) {
900
+ classNames.push('active');
901
+ } else {
902
+ classNames.push(renderIndentGuides === 'onHover' ? 'hover' : 'always');
903
+ }
904
+ const paddingLeft = this.getDepthPadding(depth);
905
+ indentDivs.unshift(<div key={depth} className={classNames.join(' ')} style={{
906
+ paddingLeft: `${paddingLeft}px`
907
+ }} />);
908
+ depth--;
902
909
  }
903
- const paddingLeft = this.getDepthPadding(depth);
904
- indentDivs.unshift(<div key={depth} className={classNames.join(' ')} style={{
905
- paddingLeft: `${paddingLeft}px`
906
- }} />);
907
910
  current = current.parent;
908
- depth--;
909
911
  }
910
912
  return indentDivs;
911
913
  }
912
914
 
915
+ /**
916
+ * Determines whether an indentation div should be rendered for the specified tree node.
917
+ * If there are multiple tree nodes inside of a single rendered row,
918
+ * this method should only return true for the first node.
919
+ */
920
+ protected shouldRenderIndent(node: TreeNode): boolean {
921
+ return true;
922
+ }
923
+
913
924
  protected needsActiveIndentGuideline(node: TreeNode): boolean {
914
925
  const parent = node.parent;
915
926
  if (!parent || !this.isExpandable(parent)) {
@@ -16,14 +16,34 @@
16
16
 
17
17
  import { inject, injectable } from 'inversify';
18
18
  import URI from '../common/uri';
19
- import { MaybePromise, SelectionService, UriSelection } from '../common';
19
+ import { MaybePromise, SelectionService, UNTITLED_SCHEME, UriSelection } from '../common';
20
20
  import { EnvVariablesServer } from '../common/env-variables';
21
+ import { FrontendApplication } from './frontend-application';
22
+ import { FrontendApplicationContribution } from './frontend-application-contribution';
23
+ import { Widget } from './widgets';
24
+ import { Navigatable } from './navigatable-types';
21
25
 
22
26
  @injectable()
23
- export class UserWorkingDirectoryProvider {
27
+ export class UserWorkingDirectoryProvider implements FrontendApplicationContribution {
24
28
  @inject(SelectionService) protected readonly selectionService: SelectionService;
25
29
  @inject(EnvVariablesServer) protected readonly envVariables: EnvVariablesServer;
26
30
 
31
+ protected lastOpenResource: URI | undefined;
32
+
33
+ configure(app: FrontendApplication): void {
34
+ app.shell.onDidChangeCurrentWidget(e => this.setLastOpenResource(e.newValue ?? undefined));
35
+ this.setLastOpenResource(app.shell.currentWidget);
36
+ }
37
+
38
+ protected setLastOpenResource(widget?: Widget): void {
39
+ if (Navigatable.is(widget)) {
40
+ const uri = widget.getResourceUri();
41
+ if (uri && uri.scheme !== UNTITLED_SCHEME) {
42
+ this.lastOpenResource = uri;
43
+ }
44
+ }
45
+ }
46
+
27
47
  /**
28
48
  * @returns A {@link URI} that represents a good guess about the directory in which the user is currently operating.
29
49
  *
@@ -35,7 +55,16 @@ export class UserWorkingDirectoryProvider {
35
55
  }
36
56
 
37
57
  protected getFromSelection(): MaybePromise<URI | undefined> {
38
- return this.ensureIsDirectory(UriSelection.getUri(this.selectionService.selection));
58
+ const uri = UriSelection.getUri(this.selectionService.selection);
59
+ if (uri?.scheme === UNTITLED_SCHEME) {
60
+ // An untitled file is not a valid working directory context.
61
+ return undefined;
62
+ }
63
+ return this.ensureIsDirectory(uri);
64
+ }
65
+
66
+ protected getFromLastOpenResource(): MaybePromise<URI | undefined> {
67
+ return this.ensureIsDirectory(this.lastOpenResource);
39
68
  }
40
69
 
41
70
  protected getFromUserHome(): MaybePromise<URI> {
@@ -19,6 +19,8 @@ import { WindowService } from './window-service';
19
19
  import { ExtractableWidget } from '../widgets';
20
20
  import { ApplicationShell } from '../shell';
21
21
  import { Saveable } from '../saveable';
22
+ import { PreferenceService } from '../preferences';
23
+ import { environment } from '../../common';
22
24
 
23
25
  @injectable()
24
26
  export class DefaultSecondaryWindowService implements SecondaryWindowService {
@@ -38,6 +40,9 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
38
40
  @inject(WindowService)
39
41
  protected readonly windowService: WindowService;
40
42
 
43
+ @inject(PreferenceService)
44
+ protected readonly preferenceService: PreferenceService;
45
+
41
46
  @postConstruct()
42
47
  init(): void {
43
48
  // Set up messaging with secondary windows
@@ -100,7 +105,13 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
100
105
  }
101
106
 
102
107
  protected doCreateSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): Window | undefined {
103
- const newWindow = window.open(DefaultSecondaryWindowService.SECONDARY_WINDOW_URL, this.nextWindowId(), 'popup') ?? undefined;
108
+ let options;
109
+ const [height, width, left, top] = this.findSecondaryWindowCoordinates(widget);
110
+ options = `popup=1,width=${width},height=${height},left=${left},top=${top}`;
111
+ if (this.preferenceService.get('window.secondaryWindowAlwaysOnTop')) {
112
+ options += ',alwaysOnTop=true';
113
+ }
114
+ const newWindow = window.open(DefaultSecondaryWindowService.SECONDARY_WINDOW_URL, this.nextWindowId(), options) ?? undefined;
104
115
  if (newWindow) {
105
116
  newWindow.addEventListener('DOMContentLoaded', () => {
106
117
  newWindow.addEventListener('beforeunload', evt => {
@@ -124,6 +135,48 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
124
135
  return newWindow;
125
136
  }
126
137
 
138
+ protected findSecondaryWindowCoordinates(widget: ExtractableWidget): (number | undefined)[] {
139
+ const clientBounds = widget.node.getBoundingClientRect();
140
+ const preference = this.preferenceService.get('window.secondaryWindowPlacement');
141
+
142
+ let height; let width; let left; let top;
143
+ const offsetY = 20; // Offset to avoid the window title bar
144
+
145
+ switch (preference) {
146
+ case 'originalSize': {
147
+ height = widget.node.clientHeight;
148
+ width = widget.node.clientWidth;
149
+ left = window.screenLeft + clientBounds.x;
150
+ top = window.screenTop + (window.outerHeight - window.innerHeight) + offsetY;
151
+ if (environment.electron.is()) {
152
+ top = window.screenTop + clientBounds.y;
153
+ }
154
+ break;
155
+ }
156
+ case 'halfWidth': {
157
+ height = window.innerHeight - (window.outerHeight - window.innerHeight);
158
+ width = window.innerWidth / 2;
159
+ left = window.screenLeft;
160
+ top = window.screenTop;
161
+ if (!environment.electron.is()) {
162
+ height = window.innerHeight + clientBounds.y - offsetY;
163
+ }
164
+ break;
165
+ }
166
+ case 'fullSize': {
167
+ height = window.innerHeight - (window.outerHeight - window.innerHeight);
168
+ width = window.innerWidth;
169
+ left = window.screenLeft;
170
+ top = window.screenTop;
171
+ if (!environment.electron.is()) {
172
+ height = window.innerHeight + clientBounds.y - offsetY;
173
+ }
174
+ break;
175
+ }
176
+ }
177
+ return [height, width, left, top];
178
+ }
179
+
127
180
  focus(win: Window): void {
128
181
  win.focus();
129
182
  }
@@ -50,6 +50,15 @@ export const FilterContribution = Symbol('FilterContribution');
50
50
  export interface FilterContribution {
51
51
  /**
52
52
  * Use the registry to register your contribution filters.
53
+ * * Note that filtering contributions based on their class (constructor) name is discouraged.
54
+ * Class names are minified in production builds and therefore not reliable.
55
+ * Use instance of checks or direct constructor comparison instead:
56
+ *
57
+ * ```ts
58
+ * registry.addFilters('*', [
59
+ * contrib => !(contrib instanceof SampleFilteredCommandContribution)
60
+ * ]);
61
+ * ```
53
62
  */
54
63
  registerContributionFilters(registry: ContributionFilterRegistry): void;
55
64
  }
@@ -456,7 +456,7 @@ export class AsyncEmitter<T extends WaitUntilEvent> extends Emitter<T> {
456
456
  delete (asyncEvent as any)['waitUntil'];
457
457
  }
458
458
  if (!waitables.length) {
459
- return;
459
+ continue;
460
460
  }
461
461
  try {
462
462
  await Promise.all(waitables);