@theia/core 1.65.0-next.6 → 1.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/i18n/nls.cs.json +117 -15
- package/i18n/nls.de.json +117 -15
- package/i18n/nls.es.json +117 -15
- package/i18n/nls.fr.json +117 -15
- package/i18n/nls.hu.json +117 -15
- package/i18n/nls.it.json +117 -15
- package/i18n/nls.ja.json +117 -15
- package/i18n/nls.json +121 -19
- package/i18n/nls.ko.json +117 -15
- package/i18n/nls.pl.json +117 -15
- package/i18n/nls.pt-br.json +117 -15
- package/i18n/nls.ru.json +117 -15
- package/i18n/nls.tr.json +117 -15
- package/i18n/nls.zh-cn.json +117 -15
- package/i18n/nls.zh-tw.json +117 -15
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
- package/lib/browser/catalog.json +202 -30
- package/lib/browser/common-frontend-contribution.d.ts +2 -3
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +3 -4
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/dialogs/react-dialog.d.ts.map +1 -1
- package/lib/browser/dialogs/react-dialog.js +1 -0
- package/lib/browser/dialogs/react-dialog.js.map +1 -1
- package/lib/browser/encoding-registry.d.ts +1 -1
- package/lib/browser/encoding-registry.d.ts.map +1 -1
- package/lib/browser/encoding-registry.js +1 -1
- package/lib/browser/encoding-registry.js.map +1 -1
- package/lib/browser/frontend-application-bindings.d.ts.map +1 -1
- package/lib/browser/frontend-application-bindings.js +10 -17
- package/lib/browser/frontend-application-bindings.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +10 -6
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/frontend-application.d.ts +1 -1
- package/lib/browser/frontend-application.d.ts.map +1 -1
- package/lib/browser/frontend-application.js +1 -1
- package/lib/browser/frontend-application.js.map +1 -1
- package/lib/browser/hover-service.d.ts +1 -2
- package/lib/browser/hover-service.d.ts.map +1 -1
- package/lib/browser/hover-service.js +1 -2
- package/lib/browser/hover-service.js.map +1 -1
- package/lib/browser/icon-theme-service.d.ts +3 -2
- package/lib/browser/icon-theme-service.d.ts.map +1 -1
- package/lib/browser/icon-theme-service.js +4 -3
- package/lib/browser/icon-theme-service.js.map +1 -1
- package/lib/browser/index.d.ts +0 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +0 -1
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/json-schema-store.d.ts +2 -0
- package/lib/browser/json-schema-store.d.ts.map +1 -1
- package/lib/browser/json-schema-store.js +10 -3
- package/lib/browser/json-schema-store.js.map +1 -1
- package/lib/browser/keybinding.d.ts +1 -1
- package/lib/browser/keybinding.d.ts.map +1 -1
- package/lib/browser/keybinding.js +1 -1
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/keybinding.spec.js +1 -1
- package/lib/browser/keybinding.spec.js.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.d.ts +3 -3
- package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +4 -5
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/open-with-service.d.ts +1 -1
- package/lib/browser/open-with-service.d.ts.map +1 -1
- package/lib/browser/open-with-service.js +3 -3
- package/lib/browser/open-with-service.js.map +1 -1
- package/lib/browser/opener-service.d.ts +1 -2
- package/lib/browser/opener-service.d.ts.map +1 -1
- package/lib/browser/opener-service.js.map +1 -1
- package/lib/browser/preferences/frontend-config-preference-contributions.d.ts +6 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.d.ts.map +1 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.js +60 -0
- package/lib/browser/preferences/frontend-config-preference-contributions.js.map +1 -0
- package/lib/browser/preferences/index.d.ts +0 -5
- package/lib/browser/preferences/index.d.ts.map +1 -1
- package/lib/browser/preferences/index.js +0 -5
- package/lib/browser/preferences/index.js.map +1 -1
- package/lib/browser/preferences/preference-contribution.d.ts +0 -96
- package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
- package/lib/browser/preferences/preference-contribution.js +14 -355
- package/lib/browser/preferences/preference-contribution.js.map +1 -1
- package/lib/browser/preferences/preference-proxy.spec.js +25 -17
- package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
- package/lib/browser/preferences/preference-schema-provider.spec.js +21 -34
- package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
- package/lib/browser/preferences/preference-service.spec.js +57 -80
- package/lib/browser/preferences/preference-service.spec.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.d.ts +24 -26
- package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
- package/lib/browser/preferences/preference-validation-service.js +40 -20
- package/lib/browser/preferences/preference-validation-service.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.spec.js +10 -6
- package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-provider.d.ts +2 -3
- package/lib/browser/preferences/test/mock-preference-provider.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-provider.js +5 -7
- package/lib/browser/preferences/test/mock-preference-provider.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-proxy.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-proxy.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-service.d.ts +1 -4
- package/lib/browser/preferences/test/mock-preference-service.d.ts.map +1 -1
- package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
- package/lib/browser/quick-input/quick-command-service.d.ts +1 -1
- package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-command-service.js +1 -1
- package/lib/browser/quick-input/quick-command-service.js.map +1 -1
- package/lib/browser/request/browser-request-service.d.ts +1 -1
- package/lib/browser/request/browser-request-service.d.ts.map +1 -1
- package/lib/browser/request/browser-request-service.js +2 -2
- package/lib/browser/request/browser-request-service.js.map +1 -1
- package/lib/browser/saveable.d.ts +9 -0
- package/lib/browser/saveable.d.ts.map +1 -1
- package/lib/browser/saveable.js.map +1 -1
- package/lib/browser/secondary-window-handler.d.ts +21 -9
- package/lib/browser/secondary-window-handler.d.ts.map +1 -1
- package/lib/browser/secondary-window-handler.js +162 -21
- package/lib/browser/secondary-window-handler.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +7 -2
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +27 -10
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.d.ts +13 -0
- package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.js +8 -1
- package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +30 -16
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +116 -33
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +8 -3
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts +2 -2
- package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts +1 -1
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/theia-dock-panel.d.ts +19 -2
- package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
- package/lib/browser/shell/theia-dock-panel.js +82 -0
- package/lib/browser/shell/theia-dock-panel.js.map +1 -1
- package/lib/browser/status-bar/status-bar.d.ts +1 -1
- package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
- package/lib/browser/status-bar/status-bar.js +3 -2
- package/lib/browser/status-bar/status-bar.js.map +1 -1
- package/lib/browser/theming.d.ts +5 -4
- package/lib/browser/theming.d.ts.map +1 -1
- package/lib/browser/theming.js +7 -6
- package/lib/browser/theming.js.map +1 -1
- package/lib/browser/tooltip-service.d.ts +1 -1
- package/lib/browser/tooltip-service.d.ts.map +1 -1
- package/lib/browser/tooltip-service.js +1 -1
- package/lib/browser/tooltip-service.js.map +1 -1
- package/lib/browser/tree/index.d.ts +0 -1
- package/lib/browser/tree/index.d.ts.map +1 -1
- package/lib/browser/tree/index.js +0 -1
- package/lib/browser/tree/index.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +2 -2
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +5 -4
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js +2 -2
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widgets/extractable-widget.d.ts +3 -0
- package/lib/browser/widgets/extractable-widget.d.ts.map +1 -1
- package/lib/browser/widgets/extractable-widget.js.map +1 -1
- package/lib/browser/widgets/widget.js +4 -4
- package/lib/browser/widgets/widget.js.map +1 -1
- package/lib/browser/window/default-secondary-window-service.d.ts +10 -5
- package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-secondary-window-service.js +53 -13
- package/lib/browser/window/default-secondary-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.d.ts +1 -1
- package/lib/browser/window/default-window-service.d.ts.map +1 -1
- package/lib/browser/window/default-window-service.js +1 -1
- package/lib/browser/window/default-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.spec.js +1 -1
- package/lib/browser/window/default-window-service.spec.js.map +1 -1
- package/lib/browser/window/secondary-window-service.d.ts +15 -2
- package/lib/browser/window/secondary-window-service.d.ts.map +1 -1
- package/lib/browser/window/secondary-window-service.js +12 -1
- package/lib/browser/window/secondary-window-service.js.map +1 -1
- package/lib/browser/window/window-title-service.d.ts +1 -1
- package/lib/browser/window/window-title-service.d.ts.map +1 -1
- package/lib/browser/window/window-title-service.js +1 -1
- package/lib/browser/window/window-title-service.js.map +1 -1
- package/lib/{browser → common}/core-preferences.d.ts +2 -1
- package/lib/common/core-preferences.d.ts.map +1 -0
- package/lib/{browser → common}/core-preferences.js +17 -18
- package/lib/common/core-preferences.js.map +1 -0
- package/lib/common/index.d.ts +4 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +4 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/inversify-utils.d.ts +31 -0
- package/lib/common/inversify-utils.d.ts.map +1 -0
- package/lib/common/inversify-utils.js +60 -0
- package/lib/common/inversify-utils.js.map +1 -0
- package/lib/common/json-schema.d.ts +1 -0
- package/lib/common/json-schema.d.ts.map +1 -1
- package/lib/common/menu/menu-types.d.ts +1 -0
- package/lib/common/menu/menu-types.d.ts.map +1 -1
- package/lib/common/menu/menu-types.js.map +1 -1
- package/lib/common/preferences/defaults-preference-provider.d.ts +21 -0
- package/lib/common/preferences/defaults-preference-provider.d.ts.map +1 -0
- package/lib/common/preferences/defaults-preference-provider.js +99 -0
- package/lib/common/preferences/defaults-preference-provider.js.map +1 -0
- package/lib/common/preferences/index.d.ts +12 -0
- package/lib/common/preferences/index.d.ts.map +1 -0
- package/lib/common/preferences/index.js +30 -0
- package/lib/common/preferences/index.js.map +1 -0
- package/lib/{browser → common}/preferences/injectable-preference-proxy.d.ts +1 -1
- package/lib/common/preferences/injectable-preference-proxy.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/injectable-preference-proxy.js +2 -2
- package/lib/common/preferences/injectable-preference-proxy.js.map +1 -0
- package/lib/common/preferences/preference-configurations.d.ts.map +1 -0
- package/lib/common/preferences/preference-configurations.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-language-override-service.d.ts +4 -13
- package/lib/common/preferences/preference-language-override-service.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-language-override-service.js +14 -30
- package/lib/common/preferences/preference-language-override-service.js.map +1 -0
- package/lib/common/preferences/preference-provider-impl.d.ts +52 -0
- package/lib/common/preferences/preference-provider-impl.d.ts.map +1 -0
- package/lib/{browser/preferences/preference-provider.js → common/preferences/preference-provider-impl.js} +23 -95
- package/lib/common/preferences/preference-provider-impl.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-provider.d.ts +34 -59
- package/lib/common/preferences/preference-provider.d.ts.map +1 -0
- package/lib/common/preferences/preference-provider.js +71 -0
- package/lib/common/preferences/preference-provider.js.map +1 -0
- package/lib/common/preferences/preference-provider.spec.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-provider.spec.js +4 -4
- package/lib/common/preferences/preference-provider.spec.js.map +1 -0
- package/lib/{browser → common}/preferences/preference-proxy.d.ts +2 -2
- package/lib/common/preferences/preference-proxy.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-proxy.js +10 -10
- package/lib/common/preferences/preference-proxy.js.map +1 -0
- package/lib/common/preferences/preference-schema-service.d.ts +55 -0
- package/lib/common/preferences/preference-schema-service.d.ts.map +1 -0
- package/lib/common/preferences/preference-schema-service.js +402 -0
- package/lib/common/preferences/preference-schema-service.js.map +1 -0
- package/lib/common/preferences/preference-schema.d.ts +145 -43
- package/lib/common/preferences/preference-schema.d.ts.map +1 -1
- package/lib/common/preferences/preference-schema.js +3 -41
- package/lib/common/preferences/preference-schema.js.map +1 -1
- package/lib/common/preferences/preference-scope.d.ts +4 -1
- package/lib/common/preferences/preference-scope.d.ts.map +1 -1
- package/lib/common/preferences/preference-scope.js +5 -14
- package/lib/common/preferences/preference-scope.js.map +1 -1
- package/lib/{browser → common}/preferences/preference-service.d.ts +9 -10
- package/lib/common/preferences/preference-service.d.ts.map +1 -0
- package/lib/{browser → common}/preferences/preference-service.js +65 -60
- package/lib/common/preferences/preference-service.js.map +1 -0
- package/lib/common/stream.d.ts +9 -0
- package/lib/common/stream.d.ts.map +1 -1
- package/lib/common/stream.js +93 -2
- package/lib/common/stream.js.map +1 -1
- package/lib/common/supported-encodings.d.ts.map +1 -0
- package/lib/common/supported-encodings.js.map +1 -0
- package/lib/{browser/tree → common}/tree-preference.d.ts +1 -1
- package/lib/common/tree-preference.d.ts.map +1 -0
- package/lib/{browser/tree → common}/tree-preference.js +3 -5
- package/lib/common/tree-preference.js.map +1 -0
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts +2 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js +2 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -2
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +11 -10
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts +2 -2
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +6 -6
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/preload.d.ts.map +1 -1
- package/lib/electron-browser/preload.js +3 -0
- package/lib/electron-browser/preload.js.map +1 -1
- package/lib/electron-browser/window/electron-secondary-window-service.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-secondary-window-service.js +5 -4
- package/lib/electron-browser/window/electron-secondary-window-service.js.map +1 -1
- package/lib/electron-browser/window/electron-window-module.js +1 -1
- package/lib/electron-browser/window/electron-window-module.js.map +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-service.js +1 -1
- package/lib/electron-browser/window/electron-window-service.js.map +1 -1
- package/lib/electron-common/electron-api.d.ts +2 -0
- package/lib/electron-common/electron-api.d.ts.map +1 -1
- package/lib/electron-common/electron-api.js +2 -1
- package/lib/electron-common/electron-api.js.map +1 -1
- package/lib/{electron-browser/window → electron-common}/electron-window-preferences.d.ts +2 -1
- package/lib/electron-common/electron-window-preferences.d.ts.map +1 -0
- package/lib/{electron-browser/window → electron-common}/electron-window-preferences.js +7 -7
- package/lib/electron-common/electron-window-preferences.js.map +1 -0
- package/lib/electron-main/electron-api-main.d.ts.map +1 -1
- package/lib/electron-main/electron-api-main.js +9 -0
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-node/window/electron-window-module.d.ts +4 -0
- package/lib/electron-node/window/electron-window-module.d.ts.map +1 -0
- package/lib/{browser/preferences/preference-scope.js → electron-node/window/electron-window-module.js} +7 -5
- package/lib/electron-node/window/electron-window-module.js.map +1 -0
- package/lib/node/backend-application-module.d.ts.map +1 -1
- package/lib/node/backend-application-module.js +13 -0
- package/lib/node/backend-application-module.js.map +1 -1
- package/lib/node/backend-application.js +1 -1
- package/lib/node/logger-cli-contribution.d.ts +7 -1
- package/lib/node/logger-cli-contribution.d.ts.map +1 -1
- package/lib/node/logger-cli-contribution.js +22 -10
- package/lib/node/logger-cli-contribution.js.map +1 -1
- package/lib/node/logger-cli-contribution.spec.js +13 -2
- package/lib/node/logger-cli-contribution.spec.js.map +1 -1
- package/package.json +8 -7
- package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +1 -1
- package/src/browser/common-frontend-contribution.ts +2 -3
- package/src/browser/dialogs/react-dialog.tsx +1 -0
- package/src/browser/encoding-registry.ts +1 -1
- package/src/browser/frontend-application-bindings.ts +8 -13
- package/src/browser/frontend-application-module.ts +13 -6
- package/src/browser/frontend-application.ts +1 -1
- package/src/browser/hover-service.ts +1 -2
- package/src/browser/icon-theme-service.ts +3 -2
- package/src/browser/index.ts +0 -1
- package/src/browser/json-schema-store.ts +9 -1
- package/src/browser/keybinding.spec.ts +1 -1
- package/src/browser/keybinding.ts +1 -1
- package/src/browser/menu/browser-menu-plugin.ts +7 -7
- package/src/browser/open-with-service.ts +1 -1
- package/src/browser/opener-service.ts +1 -2
- package/src/browser/preferences/frontend-config-preference-contributions.ts +52 -0
- package/src/browser/preferences/index.ts +0 -5
- package/src/browser/preferences/preference-contribution.ts +16 -398
- package/src/browser/preferences/preference-proxy.spec.ts +27 -17
- package/src/browser/preferences/preference-schema-provider.spec.ts +25 -37
- package/src/browser/preferences/preference-service.spec.ts +32 -56
- package/src/browser/preferences/preference-validation-service.spec.ts +27 -19
- package/src/browser/preferences/preference-validation-service.ts +60 -41
- package/src/browser/preferences/test/mock-preference-provider.ts +2 -5
- package/src/browser/preferences/test/mock-preference-proxy.ts +1 -2
- package/src/browser/preferences/test/mock-preference-service.ts +1 -4
- package/src/browser/quick-input/quick-command-service.ts +1 -1
- package/src/browser/request/browser-request-service.ts +4 -4
- package/src/browser/saveable.ts +8 -0
- package/src/browser/secondary-window-handler.ts +189 -29
- package/src/browser/shell/application-shell.ts +36 -13
- package/src/browser/shell/shell-layout-restorer.ts +15 -0
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.tsx +139 -40
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +12 -6
- package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +2 -2
- package/src/browser/shell/tab-bar-toolbar/tab-toolbar-item.tsx +2 -2
- package/src/browser/shell/tab-bars.ts +1 -1
- package/src/browser/shell/theia-dock-panel.ts +101 -2
- package/src/browser/status-bar/status-bar.tsx +3 -2
- package/src/browser/style/dockpanel.css +7 -0
- package/src/browser/theming.ts +7 -6
- package/src/browser/tooltip-service.tsx +1 -1
- package/src/browser/tree/index.ts +0 -1
- package/src/browser/tree/tree-widget.tsx +6 -5
- package/src/browser/view-container.ts +5 -5
- package/src/browser/widgets/extractable-widget.ts +3 -0
- package/src/browser/widgets/widget.ts +4 -4
- package/src/browser/window/default-secondary-window-service.ts +54 -17
- package/src/browser/window/default-window-service.spec.ts +1 -1
- package/src/browser/window/default-window-service.ts +1 -1
- package/src/browser/window/secondary-window-service.ts +23 -2
- package/src/browser/window/window-title-service.ts +1 -1
- package/src/{browser → common}/core-preferences.ts +16 -17
- package/src/common/index.ts +4 -0
- package/src/common/inversify-utils.ts +63 -0
- package/src/common/json-schema.ts +1 -0
- package/src/common/menu/menu-types.ts +2 -0
- package/src/common/preferences/defaults-preference-provider.ts +91 -0
- package/src/common/preferences/index.ts +27 -0
- package/src/{browser → common}/preferences/injectable-preference-proxy.ts +3 -3
- package/src/{browser → common}/preferences/preference-language-override-service.ts +12 -29
- package/src/common/preferences/preference-provider-impl.ts +165 -0
- package/src/{browser → common}/preferences/preference-provider.spec.ts +6 -5
- package/src/common/preferences/preference-provider.ts +164 -0
- package/src/{browser → common}/preferences/preference-proxy.ts +15 -14
- package/src/common/preferences/preference-schema-service.ts +434 -0
- package/src/common/preferences/preference-schema.ts +156 -64
- package/src/common/preferences/preference-scope.ts +5 -13
- package/src/{browser → common}/preferences/preference-service.ts +71 -65
- package/src/common/stream.ts +102 -1
- package/src/{browser/tree → common}/tree-preference.ts +2 -4
- package/src/electron-browser/menu/electron-context-menu-renderer.ts +2 -1
- package/src/electron-browser/menu/electron-main-menu-factory.ts +13 -11
- package/src/electron-browser/menu/electron-menu-contribution.ts +9 -6
- package/src/electron-browser/preload.ts +4 -1
- package/src/electron-browser/window/electron-secondary-window-service.ts +7 -4
- package/src/electron-browser/window/electron-window-module.ts +1 -1
- package/src/electron-browser/window/electron-window-service.ts +1 -1
- package/src/electron-common/electron-api.ts +2 -0
- package/src/{electron-browser/window → electron-common}/electron-window-preferences.ts +6 -6
- package/src/electron-main/electron-api-main.ts +11 -1
- package/src/{browser/preferences/preference-scope.ts → electron-node/window/electron-window-module.ts} +7 -3
- package/src/node/backend-application-module.ts +28 -1
- package/src/node/backend-application.ts +1 -1
- package/src/node/logger-cli-contribution.spec.ts +17 -2
- package/src/node/logger-cli-contribution.ts +18 -3
- package/lib/browser/core-preferences.d.ts.map +0 -1
- package/lib/browser/core-preferences.js.map +0 -1
- package/lib/browser/preferences/injectable-preference-proxy.d.ts.map +0 -1
- package/lib/browser/preferences/injectable-preference-proxy.js.map +0 -1
- package/lib/browser/preferences/preference-configurations.d.ts.map +0 -1
- package/lib/browser/preferences/preference-configurations.js.map +0 -1
- package/lib/browser/preferences/preference-language-override-service.d.ts.map +0 -1
- package/lib/browser/preferences/preference-language-override-service.js.map +0 -1
- package/lib/browser/preferences/preference-provider.d.ts.map +0 -1
- package/lib/browser/preferences/preference-provider.js.map +0 -1
- package/lib/browser/preferences/preference-provider.spec.d.ts.map +0 -1
- package/lib/browser/preferences/preference-provider.spec.js.map +0 -1
- package/lib/browser/preferences/preference-proxy.d.ts.map +0 -1
- package/lib/browser/preferences/preference-proxy.js.map +0 -1
- package/lib/browser/preferences/preference-scope.d.ts +0 -3
- package/lib/browser/preferences/preference-scope.d.ts.map +0 -1
- package/lib/browser/preferences/preference-scope.js.map +0 -1
- package/lib/browser/preferences/preference-service.d.ts.map +0 -1
- package/lib/browser/preferences/preference-service.js.map +0 -1
- package/lib/browser/supported-encodings.d.ts.map +0 -1
- package/lib/browser/supported-encodings.js.map +0 -1
- package/lib/browser/tree/tree-preference.d.ts.map +0 -1
- package/lib/browser/tree/tree-preference.js.map +0 -1
- package/lib/electron-browser/window/electron-window-preferences.d.ts.map +0 -1
- package/lib/electron-browser/window/electron-window-preferences.js.map +0 -1
- package/src/browser/preferences/preference-provider.ts +0 -277
- /package/lib/{browser → common}/preferences/preference-configurations.d.ts +0 -0
- /package/lib/{browser → common}/preferences/preference-configurations.js +0 -0
- /package/lib/{browser → common}/preferences/preference-provider.spec.d.ts +0 -0
- /package/lib/{browser → common}/supported-encodings.d.ts +0 -0
- /package/lib/{browser → common}/supported-encodings.js +0 -0
- /package/src/{browser → common}/preferences/preference-configurations.ts +0 -0
- /package/src/{browser → common}/supported-encodings.ts +0 -0
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
import { Event as CommonEvent, Emitter } from '../common/event';
|
|
24
24
|
import { Disposable, DisposableCollection } from '../common/disposable';
|
|
25
25
|
import { CommandRegistry } from '../common/command';
|
|
26
|
-
import { MenuModelRegistry, MenuPath, MenuAction, SubmenuImpl, ActionMenuNode,
|
|
26
|
+
import { MenuModelRegistry, MenuPath, MenuAction, SubmenuImpl, ActionMenuNode, Submenu } from '../common/menu';
|
|
27
27
|
import { ApplicationShell, StatefulWidget, SplitPositionHandler, SplitPositionOptions, SIDE_PANEL_TOOLBAR_CONTEXT_MENU } from './shell';
|
|
28
28
|
import { MAIN_AREA_ID, BOTTOM_AREA_ID } from './shell/theia-dock-panel';
|
|
29
29
|
import { FrontendApplicationStateService } from './frontend-application-state';
|
|
@@ -40,7 +40,7 @@ import { ElementExt } from '@lumino/domutils';
|
|
|
40
40
|
import { TabBarDecoratorService } from './shell/tab-bar-decorator';
|
|
41
41
|
import { ContextKeyService } from './context-key-service';
|
|
42
42
|
import { KeybindingRegistry } from './keybinding';
|
|
43
|
-
import {
|
|
43
|
+
import { SubmenuAsToolbarItemWrapper } from './shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters';
|
|
44
44
|
import { TheiaSplitPanel } from './shell/theia-split-panel';
|
|
45
45
|
|
|
46
46
|
export interface ViewContainerTitleOptions {
|
|
@@ -94,7 +94,7 @@ export namespace DynamicToolbarWidget {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
class PartsMenuToolbarItem extends
|
|
97
|
+
class PartsMenuToolbarItem extends SubmenuAsToolbarItemWrapper {
|
|
98
98
|
constructor(
|
|
99
99
|
protected readonly target: () => Widget | undefined,
|
|
100
100
|
effectiveMenuPath: MenuPath,
|
|
@@ -102,11 +102,11 @@ class PartsMenuToolbarItem extends ToolbarMenuNodeWrapper {
|
|
|
102
102
|
menuRegistry: MenuModelRegistry,
|
|
103
103
|
contextKeyService: ContextKeyService,
|
|
104
104
|
contextMenuRenderer: ContextMenuRenderer,
|
|
105
|
-
menuNode:
|
|
105
|
+
menuNode: Submenu,
|
|
106
106
|
group: string | undefined,
|
|
107
107
|
menuPath?: MenuPath,
|
|
108
108
|
) {
|
|
109
|
-
super(effectiveMenuPath, commandRegistry, menuRegistry, contextKeyService, contextMenuRenderer, menuNode, group
|
|
109
|
+
super(effectiveMenuPath, commandRegistry, menuRegistry, contextKeyService, contextMenuRenderer, menuNode, group);
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
override isVisible(widget: Widget): boolean {
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
+
import { ApplicationShell } from '../shell';
|
|
17
18
|
import { Widget } from './widget';
|
|
18
19
|
|
|
19
20
|
/**
|
|
@@ -24,6 +25,8 @@ export interface ExtractableWidget extends Widget {
|
|
|
24
25
|
isExtractable: boolean;
|
|
25
26
|
/** The secondary window that the window was extracted to or `undefined` if it is not yet extracted. */
|
|
26
27
|
secondaryWindow: Window | undefined;
|
|
28
|
+
/** Stores the area which contained the widget before being extracted. This is undefined if the widget wasn't extracted or if the area could not be determined */
|
|
29
|
+
previousArea?: ApplicationShell.Area;
|
|
27
30
|
}
|
|
28
31
|
|
|
29
32
|
export namespace ExtractableWidget {
|
|
@@ -360,17 +360,17 @@ function waitForVisible(widget: Widget, visible: boolean, attached?: boolean): P
|
|
|
360
360
|
if ((typeof attached !== 'boolean' || widget.isAttached === attached) &&
|
|
361
361
|
(widget.isVisible === visible || (widget.node.style.visibility !== 'hidden') === visible)
|
|
362
362
|
) {
|
|
363
|
-
return new Promise(resolve =>
|
|
363
|
+
return new Promise(resolve => setTimeout(() => resolve(), 0));
|
|
364
364
|
}
|
|
365
365
|
return new Promise(resolve => {
|
|
366
|
-
const waitFor = () =>
|
|
366
|
+
const waitFor = () => setTimeout(() => {
|
|
367
367
|
if ((typeof attached !== 'boolean' || widget.isAttached === attached) &&
|
|
368
368
|
(widget.isVisible === visible || (widget.node.style.visibility !== 'hidden') === visible)) {
|
|
369
|
-
|
|
369
|
+
setTimeout(() => resolve(), 0);
|
|
370
370
|
} else {
|
|
371
371
|
waitFor();
|
|
372
372
|
}
|
|
373
|
-
});
|
|
373
|
+
}, 0);
|
|
374
374
|
waitFor();
|
|
375
375
|
});
|
|
376
376
|
}
|
|
@@ -14,14 +14,14 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
import { inject, injectable, postConstruct } from 'inversify';
|
|
17
|
-
import { SecondaryWindowService } from './secondary-window-service';
|
|
17
|
+
import { SecondaryWindow, SecondaryWindowService } from './secondary-window-service';
|
|
18
18
|
import { WindowService } from './window-service';
|
|
19
|
-
import { ExtractableWidget } from '../widgets';
|
|
19
|
+
import { ExtractableWidget, Widget } from '../widgets';
|
|
20
20
|
import { ApplicationShell } from '../shell';
|
|
21
21
|
import { Saveable } from '../saveable';
|
|
22
|
-
import { PreferenceService } from '
|
|
23
|
-
import { Emitter, environment, Event } from '../../common';
|
|
22
|
+
import { Emitter, environment, Event, PreferenceService } from '../../common';
|
|
24
23
|
import { SaveableService } from '../saveable-service';
|
|
24
|
+
import { getAllWidgetsFromSecondaryWindow, getDefaultRestoreArea } from '../secondary-window-handler';
|
|
25
25
|
|
|
26
26
|
@injectable()
|
|
27
27
|
export class DefaultSecondaryWindowService implements SecondaryWindowService {
|
|
@@ -29,6 +29,8 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
|
|
|
29
29
|
readonly onWindowOpened: Event<Window> = this.onWindowOpenedEmitter.event;
|
|
30
30
|
protected readonly onWindowClosedEmitter = new Emitter<Window>;
|
|
31
31
|
readonly onWindowClosed: Event<Window> = this.onWindowClosedEmitter.event;
|
|
32
|
+
protected readonly beforeWidgetRestoreEmitter = new Emitter<[Widget, Window]>;
|
|
33
|
+
readonly beforeWidgetRestore: Event<[Widget, Window]> = this.beforeWidgetRestoreEmitter.event;
|
|
32
34
|
// secondary-window.html is part of Theia's generated code. It is generated by dev-packages/application-manager/src/generator/frontend-generator.ts
|
|
33
35
|
protected static SECONDARY_WINDOW_URL = 'secondary-window.html';
|
|
34
36
|
|
|
@@ -93,7 +95,7 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
|
|
|
93
95
|
});
|
|
94
96
|
}
|
|
95
97
|
|
|
96
|
-
createSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): Window | undefined {
|
|
98
|
+
createSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): Window | SecondaryWindow | undefined {
|
|
97
99
|
const [height, width, left, top] = this.findSecondaryWindowCoordinates(widget);
|
|
98
100
|
let options = `popup=1,width=${width},height=${height},left=${left},top=${top}`;
|
|
99
101
|
if (this.preferenceService.get('window.secondaryWindowAlwaysOnTop')) {
|
|
@@ -105,21 +107,19 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
|
|
|
105
107
|
this.onWindowOpenedEmitter.fire(newWindow);
|
|
106
108
|
newWindow.addEventListener('DOMContentLoaded', () => {
|
|
107
109
|
newWindow.addEventListener('beforeunload', evt => {
|
|
108
|
-
const
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
const widgets = getAllWidgetsFromSecondaryWindow(newWindow) ?? [widget];
|
|
111
|
+
for (const w of widgets) {
|
|
112
|
+
const saveable = Saveable.get(w);
|
|
113
|
+
const wouldLoseState = !!saveable && saveable.dirty && this.saveResourceService.autoSave === 'off';
|
|
114
|
+
if (wouldLoseState) {
|
|
115
|
+
evt.returnValue = '';
|
|
116
|
+
evt.preventDefault();
|
|
117
|
+
return 'non-empty';
|
|
118
|
+
}
|
|
114
119
|
}
|
|
115
120
|
}, { capture: true });
|
|
116
121
|
|
|
117
122
|
newWindow.addEventListener('unload', () => {
|
|
118
|
-
const saveable = Saveable.get(widget);
|
|
119
|
-
shell.closeWidget(widget.id, {
|
|
120
|
-
save: !!saveable && saveable.dirty && this.saveResourceService.autoSave !== 'off'
|
|
121
|
-
});
|
|
122
|
-
|
|
123
123
|
const extIndex = this.secondaryWindows.indexOf(newWindow);
|
|
124
124
|
if (extIndex > -1) {
|
|
125
125
|
this.onWindowClosedEmitter.fire(newWindow);
|
|
@@ -129,12 +129,13 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
|
|
|
129
129
|
this.windowCreated(newWindow, widget, shell);
|
|
130
130
|
});
|
|
131
131
|
}
|
|
132
|
+
(newWindow as SecondaryWindow).rootWidget = undefined;
|
|
132
133
|
return newWindow;
|
|
133
134
|
}
|
|
134
135
|
|
|
135
136
|
protected windowCreated(newWindow: Window, widget: ExtractableWidget, shell: ApplicationShell): void {
|
|
136
137
|
newWindow.addEventListener('unload', () => {
|
|
137
|
-
|
|
138
|
+
this.restoreWidgets(newWindow, widget, shell);
|
|
138
139
|
});
|
|
139
140
|
}
|
|
140
141
|
|
|
@@ -200,4 +201,40 @@ export class DefaultSecondaryWindowService implements SecondaryWindowService {
|
|
|
200
201
|
protected nextWindowId(): string {
|
|
201
202
|
return `${this.prefix}-secondaryWindow-${this.nextId++}`;
|
|
202
203
|
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Restore the widgets back to the main window. SecondaryWindowHandler needs to get informated about this.
|
|
207
|
+
*/
|
|
208
|
+
protected async restoreWidgets(newWindow: Window, extractableWidget: ExtractableWidget, shell: ApplicationShell): Promise<boolean> {
|
|
209
|
+
const widgets = getAllWidgetsFromSecondaryWindow(newWindow) ?? new Set([extractableWidget]);
|
|
210
|
+
const defaultRestoreArea = getDefaultRestoreArea(newWindow);
|
|
211
|
+
|
|
212
|
+
let allMovedOrDisposed = true;
|
|
213
|
+
for (const widget of widgets) {
|
|
214
|
+
if (widget.isDisposed) {
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
const preferredRestoreArea = ExtractableWidget.is(widget) ? widget.previousArea : defaultRestoreArea;
|
|
219
|
+
const area = (preferredRestoreArea === undefined || preferredRestoreArea === 'top' || preferredRestoreArea === 'secondaryWindow') ? 'main' : preferredRestoreArea;
|
|
220
|
+
// fire removed event before adding it to shell
|
|
221
|
+
this.beforeWidgetRestoreEmitter.fire([widget, newWindow]);
|
|
222
|
+
// reset ExtractableWidget properties before moving back so that handler evaluation is correct immediately
|
|
223
|
+
if (ExtractableWidget.is(widget)) {
|
|
224
|
+
widget.secondaryWindow = undefined;
|
|
225
|
+
widget.previousArea = undefined;
|
|
226
|
+
}
|
|
227
|
+
await shell.addWidget(widget, { area });
|
|
228
|
+
await shell.activateWidget(widget.id);
|
|
229
|
+
} catch (e) {
|
|
230
|
+
// we can't move back, close instead
|
|
231
|
+
// otherwise the window will just stay open with no way to close it
|
|
232
|
+
await shell.closeWidget(widget.id);
|
|
233
|
+
if (!widget.isDisposed) {
|
|
234
|
+
allMovedOrDisposed = false;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return allMovedOrDisposed;
|
|
239
|
+
}
|
|
203
240
|
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { Container } from 'inversify';
|
|
18
18
|
import { ContributionProvider } from '../../common';
|
|
19
|
-
import { CorePreferences } from '
|
|
19
|
+
import { CorePreferences } from '../../common/core-preferences';
|
|
20
20
|
import { FrontendApplicationContribution } from '../frontend-application-contribution';
|
|
21
21
|
import { DefaultWindowService } from './default-window-service';
|
|
22
22
|
import assert = require('assert');
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { inject, injectable, named } from 'inversify';
|
|
18
18
|
import { Event, Emitter } from '../../common';
|
|
19
|
-
import { CorePreferences } from '
|
|
19
|
+
import { CorePreferences } from '../../common/core-preferences';
|
|
20
20
|
import { ContributionProvider } from '../../common/contribution-provider';
|
|
21
21
|
import { FrontendApplicationContribution, OnWillStopAction } from '../frontend-application-contribution';
|
|
22
22
|
import { WindowService } from './window-service';
|
|
@@ -16,7 +16,27 @@
|
|
|
16
16
|
|
|
17
17
|
import { Event } from '../../common';
|
|
18
18
|
import { ApplicationShell } from '../shell';
|
|
19
|
-
import {
|
|
19
|
+
import { TheiaDockPanel } from '../shell/theia-dock-panel';
|
|
20
|
+
import { ExtractableWidget, TabBar, Widget } from '../widgets';
|
|
21
|
+
|
|
22
|
+
export abstract class SecondaryWindowRootWidget extends Widget {
|
|
23
|
+
secondaryWindow: Window | SecondaryWindow;
|
|
24
|
+
defaultRestoreArea?: ApplicationShell.Area;
|
|
25
|
+
abstract widgets: ReadonlyArray<Widget>;
|
|
26
|
+
abstract addWidget(widget: Widget, disposeCallback: () => void, options?: TheiaDockPanel.AddOptions): void;
|
|
27
|
+
getTabBar?(widget: Widget): TabBar<Widget> | undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface SecondaryWindow extends Window {
|
|
31
|
+
rootWidget: SecondaryWindowRootWidget | undefined;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function isSecondaryWindow(window: unknown): window is SecondaryWindow {
|
|
35
|
+
if (!window) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return typeof window === 'object' && 'rootWidget' in window;
|
|
39
|
+
}
|
|
20
40
|
|
|
21
41
|
export const SecondaryWindowService = Symbol('SecondaryWindowService');
|
|
22
42
|
|
|
@@ -33,9 +53,10 @@ export interface SecondaryWindowService {
|
|
|
33
53
|
* @param onClose optional callback that is invoked when the secondary window is closed
|
|
34
54
|
* @returns the created window or `undefined` if it could not be created
|
|
35
55
|
*/
|
|
36
|
-
createSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): Window | undefined;
|
|
56
|
+
createSecondaryWindow(widget: ExtractableWidget, shell: ApplicationShell): SecondaryWindow | Window | undefined;
|
|
37
57
|
readonly onWindowOpened: Event<Window>;
|
|
38
58
|
readonly onWindowClosed: Event<Window>;
|
|
59
|
+
readonly beforeWidgetRestore: Event<[Widget, Window]>;
|
|
39
60
|
|
|
40
61
|
/** Handles focussing the given secondary window in the browser and on Electron. */
|
|
41
62
|
focus(win: Window): void;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { inject, injectable, named, postConstruct } from 'inversify';
|
|
18
18
|
import { escapeRegExpCharacters } from '../../common/strings';
|
|
19
19
|
import { Emitter, Event } from '../../common/event';
|
|
20
|
-
import { CorePreferences } from '
|
|
20
|
+
import { CorePreferences } from '../../common/core-preferences';
|
|
21
21
|
import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
|
|
22
22
|
import { ContributionProvider } from '../../common';
|
|
23
23
|
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
import { interfaces } from 'inversify';
|
|
18
18
|
import { environment } from '@theia/application-package/lib/environment';
|
|
19
|
-
import { createPreferenceProxy, PreferenceProxy, PreferenceService, PreferenceContribution, PreferenceSchema } from './preferences';
|
|
20
19
|
import { SUPPORTED_ENCODINGS } from './supported-encodings';
|
|
21
|
-
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
22
20
|
import { isOSX } from '../common/os';
|
|
23
21
|
import { nls } from '../common/nls';
|
|
24
|
-
import {
|
|
22
|
+
import { PreferenceContribution, PreferenceSchema } from '../common/preferences/preference-schema';
|
|
23
|
+
import { createPreferenceProxy, PreferenceProxy, PreferenceService } from '../common/preferences';
|
|
24
|
+
import { PreferenceScope } from '../common/preferences/preference-scope';
|
|
25
25
|
|
|
26
26
|
/* eslint-disable max-len */
|
|
27
27
|
const windowTitleDescription = [
|
|
@@ -43,7 +43,6 @@ const windowTitleDescription = [
|
|
|
43
43
|
].join('\n- ');
|
|
44
44
|
|
|
45
45
|
export const corePreferenceSchema: PreferenceSchema = {
|
|
46
|
-
'type': 'object',
|
|
47
46
|
properties: {
|
|
48
47
|
'application.confirmExit': {
|
|
49
48
|
type: 'string',
|
|
@@ -59,7 +58,7 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
59
58
|
'type': 'boolean',
|
|
60
59
|
'default': true,
|
|
61
60
|
'description': nls.localizeByDefault('Enable/disable navigation breadcrumbs.'),
|
|
62
|
-
'scope':
|
|
61
|
+
'scope': PreferenceScope.User
|
|
63
62
|
},
|
|
64
63
|
'files.encoding': {
|
|
65
64
|
'type': 'string',
|
|
@@ -67,7 +66,7 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
67
66
|
'default': 'utf8',
|
|
68
67
|
'description': nls.localizeByDefault(
|
|
69
68
|
'The default character set encoding to use when reading and writing files. This setting can also be configured per language.'),
|
|
70
|
-
'scope':
|
|
69
|
+
'scope': PreferenceScope.Folder,
|
|
71
70
|
'enumDescriptions': Object.keys(SUPPORTED_ENCODINGS).map(key => SUPPORTED_ENCODINGS[key].labelLong),
|
|
72
71
|
'included': Object.keys(SUPPORTED_ENCODINGS).length > 1
|
|
73
72
|
},
|
|
@@ -103,7 +102,7 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
103
102
|
: nls.localizeByDefault('Menu is displayed as a compact button in the side bar.')
|
|
104
103
|
],
|
|
105
104
|
default: 'classic',
|
|
106
|
-
scope:
|
|
105
|
+
scope: PreferenceScope.User,
|
|
107
106
|
markdownDescription: nls.localizeByDefault("Control the visibility of the menu bar. A setting of 'toggle' means that the menu bar is hidden and a single press of the Alt key will show it. A setting of 'compact' will move the menu into the side bar."),
|
|
108
107
|
included: !(isOSX && environment.electron.is())
|
|
109
108
|
},
|
|
@@ -112,13 +111,13 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
112
111
|
default: isOSX
|
|
113
112
|
? '${activeEditorShort}${separator}${rootName}'
|
|
114
113
|
: '${dirty} ${activeEditorShort}${separator}${rootName}${separator}${appName}',
|
|
115
|
-
scope:
|
|
114
|
+
scope: PreferenceScope.User,
|
|
116
115
|
markdownDescription: windowTitleDescription
|
|
117
116
|
},
|
|
118
117
|
'window.titleSeparator': {
|
|
119
118
|
type: 'string',
|
|
120
119
|
default: ' - ',
|
|
121
|
-
scope:
|
|
120
|
+
scope: PreferenceScope.User,
|
|
122
121
|
markdownDescription: nls.localizeByDefault('Separator used by {0}.', '`#window.title#`')
|
|
123
122
|
},
|
|
124
123
|
'window.tabCloseIconPlacement': {
|
|
@@ -129,7 +128,7 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
129
128
|
nls.localize('theia/core/window/tabCloseIconPlacement/start', 'Place the close icon at the start of the label. In left-to-right languages, this is the left side of the tab.'),
|
|
130
129
|
],
|
|
131
130
|
default: 'end',
|
|
132
|
-
scope:
|
|
131
|
+
scope: PreferenceScope.User,
|
|
133
132
|
description: nls.localize('theia/core/window/tabCloseIconPlacement/description', 'Place the close icons on tab titles at the start or end of the tab. The default is end on all platforms.'),
|
|
134
133
|
included: isOSX
|
|
135
134
|
},
|
|
@@ -153,18 +152,18 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
153
152
|
type: 'string',
|
|
154
153
|
pattern: '^https?://([^:]*(:[^@]*)?@)?([^:]+|\\[[:0-9a-fA-F]+\\])(:\\d+)?/?$|^$',
|
|
155
154
|
markdownDescription: nls.localizeByDefault('The proxy setting to use. If not set, will be inherited from the `http_proxy` and `https_proxy` environment variables. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
|
|
156
|
-
scope:
|
|
155
|
+
scope: PreferenceScope.User
|
|
157
156
|
},
|
|
158
157
|
'http.proxyStrictSSL': {
|
|
159
158
|
type: 'boolean',
|
|
160
159
|
default: true,
|
|
161
160
|
description: nls.localizeByDefault('Controls whether the proxy server certificate should be verified against the list of supplied CAs. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
|
|
162
|
-
scope:
|
|
161
|
+
scope: PreferenceScope.User
|
|
163
162
|
},
|
|
164
163
|
'http.proxyAuthorization': {
|
|
165
164
|
type: 'string',
|
|
166
165
|
markdownDescription: nls.localizeByDefault('The value to send as the `Proxy-Authorization` header for every network request. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
|
|
167
|
-
scope:
|
|
166
|
+
scope: PreferenceScope.User
|
|
168
167
|
},
|
|
169
168
|
'http.proxySupport': {
|
|
170
169
|
type: 'string',
|
|
@@ -177,13 +176,13 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
177
176
|
],
|
|
178
177
|
default: 'override',
|
|
179
178
|
description: nls.localizeByDefault('Use the proxy support for extensions. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
|
|
180
|
-
scope:
|
|
179
|
+
scope: PreferenceScope.User
|
|
181
180
|
},
|
|
182
181
|
'http.systemCertificates': {
|
|
183
182
|
type: 'boolean',
|
|
184
183
|
default: true,
|
|
185
184
|
description: nls.localizeByDefault('Controls whether CA certificates should be loaded from the OS. On Windows and macOS, a reload of the window is required after turning this off. When during [remote development](https://aka.ms/vscode-remote) the {0} setting is disabled this setting can be configured in the local and the remote settings separately.'),
|
|
186
|
-
scope:
|
|
185
|
+
scope: PreferenceScope.User
|
|
187
186
|
},
|
|
188
187
|
'workbench.list.openMode': {
|
|
189
188
|
type: 'string',
|
|
@@ -229,14 +228,14 @@ export const corePreferenceSchema: PreferenceSchema = {
|
|
|
229
228
|
type: 'string',
|
|
230
229
|
enum: ['dark', 'light', 'hc-theia'],
|
|
231
230
|
enumItemLabels: ['Dark (Theia)', 'Light (Theia)', 'High Contrast (Theia)'],
|
|
232
|
-
default:
|
|
231
|
+
default: 'light',
|
|
233
232
|
description: nls.localizeByDefault('Specifies the color theme used in the workbench when {0} is not enabled.', '`#window.autoDetectColorScheme#`')
|
|
234
233
|
},
|
|
235
234
|
'workbench.iconTheme': {
|
|
236
235
|
type: ['string'],
|
|
237
236
|
enum: ['none', 'theia-file-icons'],
|
|
238
237
|
enumItemLabels: [nls.localizeByDefault('None'), 'File Icons (Theia)'],
|
|
239
|
-
default:
|
|
238
|
+
default: 'none',
|
|
240
239
|
description: nls.localizeByDefault("Specifies the file icon theme used in the workbench or 'null' to not show any file icons.")
|
|
241
240
|
},
|
|
242
241
|
'workbench.silentNotifications': {
|
package/src/common/index.ts
CHANGED
|
@@ -20,8 +20,10 @@ export * from './cancellation';
|
|
|
20
20
|
export * from './command';
|
|
21
21
|
export * from './contribution-filter';
|
|
22
22
|
export * from './contribution-provider';
|
|
23
|
+
export * from './core-preferences';
|
|
23
24
|
export * from './disposable';
|
|
24
25
|
export * from './event';
|
|
26
|
+
export * from './inversify-utils';
|
|
25
27
|
export * from './listener';
|
|
26
28
|
export * from './logger';
|
|
27
29
|
export * from './lsp-types';
|
|
@@ -36,6 +38,7 @@ export * from './objects';
|
|
|
36
38
|
export * from './os';
|
|
37
39
|
export * from './path';
|
|
38
40
|
export * from './performance';
|
|
41
|
+
export * from './preferences';
|
|
39
42
|
export * from './progress-service';
|
|
40
43
|
export * from './progress-service-protocol';
|
|
41
44
|
export * from './quick-pick-service';
|
|
@@ -45,6 +48,7 @@ export * from './selection';
|
|
|
45
48
|
export * from './selection-service';
|
|
46
49
|
export * from './strings';
|
|
47
50
|
export * from './telemetry';
|
|
51
|
+
export * from './tree-preference';
|
|
48
52
|
export * from './types';
|
|
49
53
|
export { default as URI } from './uri';
|
|
50
54
|
export * from './uuid';
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2025 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { interfaces, Container } from 'inversify';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* This utility creates a factory function that accepts runtime arguments which are bound as constant
|
|
21
|
+
* values in a child container, allowing for dependency injection of both static dependencies
|
|
22
|
+
* (resolved as usual from the factory's container) and dynamic parameters (provided at factory invocation time).
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // Factory interface
|
|
27
|
+
* interface UserPreferenceProviderFactory {
|
|
28
|
+
* (uri: URI, section: string): UserPreferenceProvider;
|
|
29
|
+
* }
|
|
30
|
+
* // Factory symbol
|
|
31
|
+
* const UserPreferenceProviderFactory = Symbol('UserPreferenceProviderFactory');
|
|
32
|
+
*
|
|
33
|
+
* // Bind the factory
|
|
34
|
+
* bindFactory(
|
|
35
|
+
* bind,
|
|
36
|
+
* UserPreferenceProviderFactory, // Service identifier of the factory
|
|
37
|
+
* UserPreferenceProvider, // Service identifier of the entity to be constructed
|
|
38
|
+
* SectionPreferenceProviderUri, // The first factory argument will be bound to this identifier (uri)
|
|
39
|
+
* SectionPreferenceProviderSection // The second factory argument will be bound to this identifier (section)
|
|
40
|
+
* );
|
|
41
|
+
*
|
|
42
|
+
* // Usage: factory(uri, section) creates UserPreferenceProvider with injected dependencies
|
|
43
|
+
* const factory = container.get(UserPreferenceProviderFactory);
|
|
44
|
+
* const provider = factory(myUri, 'settings');
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
export function bindFactory<F, C>(bind: interfaces.Bind,
|
|
49
|
+
factoryId: interfaces.ServiceIdentifier<F>,
|
|
50
|
+
constructor: interfaces.Newable<C>,
|
|
51
|
+
...parameterBindings: interfaces.ServiceIdentifier<unknown>[]): void {
|
|
52
|
+
bind(factoryId).toFactory(ctx =>
|
|
53
|
+
(...args: unknown[]) => {
|
|
54
|
+
const child = new Container({ defaultScope: 'Singleton' });
|
|
55
|
+
child.parent = ctx.container;
|
|
56
|
+
for (let i = 0; i < parameterBindings.length; i++) {
|
|
57
|
+
child.bind(parameterBindings[i]).toConstantValue(args[i]);
|
|
58
|
+
}
|
|
59
|
+
child.bind(constructor).to(constructor);
|
|
60
|
+
return child.get(constructor);
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
@@ -87,6 +87,7 @@ export interface IJSONSchema {
|
|
|
87
87
|
errorMessage?: string; // VSCode extension
|
|
88
88
|
patternErrorMessage?: string; // VSCode extension
|
|
89
89
|
deprecationMessage?: string; // VSCode extension
|
|
90
|
+
markdownDeprecationMessage?: string; // VS code extension
|
|
90
91
|
enumItemLabels?: string[]; // VSCode extension
|
|
91
92
|
enumDescriptions?: string[]; // VSCode extension
|
|
92
93
|
markdownEnumDescriptions?: string[]; // VSCode extension
|
|
@@ -39,6 +39,8 @@ export interface MenuNode {
|
|
|
39
39
|
* Menu nodes are sorted in ascending order based on their `sortString`.
|
|
40
40
|
*/
|
|
41
41
|
readonly sortString: string;
|
|
42
|
+
|
|
43
|
+
readonly effectiveMenuPath?: string[]; // override the path to be passed as the effectiveMenuPath
|
|
42
44
|
isVisible<T>(effectiveMenuPath: MenuPath, contextMatcher: ContextExpressionMatcher<T>, context: T | undefined, ...args: unknown[]): boolean;
|
|
43
45
|
onDidChange?: Event<void>;
|
|
44
46
|
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2025 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
|
|
16
|
+
import { JSONObject, JSONValue } from '@lumino/coreutils';
|
|
17
|
+
import { PreferenceScope } from './preference-scope';
|
|
18
|
+
import { PreferenceProvider, PreferenceProviderDataChange, PreferenceProviderDataChanges, PreferenceResolveResult } from './preference-provider';
|
|
19
|
+
import { inject, injectable, postConstruct } from 'inversify';
|
|
20
|
+
import { PreferenceSchemaService } from './preference-schema';
|
|
21
|
+
import { Deferred } from '../promise-util';
|
|
22
|
+
import { PreferenceLanguageOverrideService } from './preference-language-override-service';
|
|
23
|
+
import { PreferenceProviderBase } from './preference-provider-impl';
|
|
24
|
+
|
|
25
|
+
// *****************************************************************************
|
|
26
|
+
|
|
27
|
+
@injectable()
|
|
28
|
+
export class DefaultsPreferenceProvider extends PreferenceProviderBase implements PreferenceProvider {
|
|
29
|
+
|
|
30
|
+
@inject(PreferenceSchemaService)
|
|
31
|
+
protected readonly preferenceSchemaService: PreferenceSchemaService;
|
|
32
|
+
|
|
33
|
+
@inject(PreferenceLanguageOverrideService)
|
|
34
|
+
protected readonly preferenceOverrideService: PreferenceLanguageOverrideService;
|
|
35
|
+
|
|
36
|
+
protected readonly _ready = new Deferred<void>();
|
|
37
|
+
ready: Promise<void> = this._ready.promise;
|
|
38
|
+
|
|
39
|
+
@postConstruct()
|
|
40
|
+
init(): void {
|
|
41
|
+
this.toDispose.push(this.preferenceSchemaService.onDidChangeDefaultValue(e => {
|
|
42
|
+
const changes: PreferenceProviderDataChanges = {};
|
|
43
|
+
if (e.overrideIdentifier) {
|
|
44
|
+
changes[e.key] = this.changeFor(e.key, e.overrideIdentifier, e.oldValue, e.newValue);
|
|
45
|
+
} else {
|
|
46
|
+
changes[e.key] = this.changeFor(e.key, undefined, e.oldValue, e.newValue);
|
|
47
|
+
for (const override of e.otherAffectedOverrides) {
|
|
48
|
+
const change = this.changeFor(e.key, override, e.oldValue, e.newValue);
|
|
49
|
+
changes[change.preferenceName] = change;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
this.emitPreferencesChangedEvent(changes);
|
|
53
|
+
}));
|
|
54
|
+
this._ready.resolve();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
protected changeFor(key: string, overrideIdentifier: string | undefined, oldValue: JSONValue | undefined, newValue: JSONValue | undefined): PreferenceProviderDataChange {
|
|
58
|
+
const preferenceName = overrideIdentifier ? this.preferenceOverrideService.overridePreferenceName({ preferenceName: key, overrideIdentifier }) : key;
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
preferenceName: preferenceName,
|
|
62
|
+
newValue: newValue,
|
|
63
|
+
oldValue: oldValue,
|
|
64
|
+
scope: PreferenceScope.Default
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
canHandleScope(scope: PreferenceScope): boolean {
|
|
69
|
+
return scope === PreferenceScope.Default;
|
|
70
|
+
}
|
|
71
|
+
get<T>(preferenceName: string, resourceUri?: string): T | undefined {
|
|
72
|
+
const overrideInfo = this.preferenceOverrideService.overriddenPreferenceName(preferenceName);
|
|
73
|
+
return this.preferenceSchemaService.getDefaultValue(overrideInfo?.preferenceName ?? preferenceName, overrideInfo?.overrideIdentifier) as T;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
setPreference(key: string, value: JSONValue, resourceUri?: string): Promise<boolean> {
|
|
77
|
+
return Promise.resolve(false);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
resolve<T>(preferenceName: string, resourceUri?: string): PreferenceResolveResult<T> {
|
|
81
|
+
const overrideInfo = this.preferenceOverrideService.overriddenPreferenceName(preferenceName);
|
|
82
|
+
return {
|
|
83
|
+
value: this.preferenceSchemaService.inspectDefaultValue(overrideInfo?.preferenceName ?? preferenceName, overrideInfo?.overrideIdentifier) as T,
|
|
84
|
+
configUri: undefined
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
getPreferences(): JSONObject {
|
|
89
|
+
return this.preferenceSchemaService.getDefaultValues();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2025 STMicroelectronics and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
export * from './defaults-preference-provider';
|
|
18
|
+
export * from './preference-language-override-service';
|
|
19
|
+
export * from './preference-provider-impl';
|
|
20
|
+
export * from './preference-provider';
|
|
21
|
+
export * from './preference-schema-service';
|
|
22
|
+
export * from './preference-schema';
|
|
23
|
+
export * from './preference-scope';
|
|
24
|
+
export * from './preference-service';
|
|
25
|
+
export * from './injectable-preference-proxy';
|
|
26
|
+
export * from './preference-proxy';
|
|
27
|
+
export * from './preference-configurations';
|