@theia/core 1.65.0-next.6 → 1.66.0-next.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,37 +23,36 @@ import { ACTION_ITEM, codicon } from '../../widgets';
|
|
|
23
23
|
import { ContextMenuRenderer } from '../../context-menu-renderer';
|
|
24
24
|
import { TabBarToolbarItem } from './tab-toolbar-item';
|
|
25
25
|
import { ContextKeyService, ContextMatcher } from '../../context-key-service';
|
|
26
|
-
import { CommandMenu, CompoundMenuNode, MenuModelRegistry, MenuNode, MenuPath, RenderedMenuNode } from '../../../common/menu';
|
|
26
|
+
import { CommandMenu, CompoundMenuNode, ContextExpressionMatcher, Group, MenuModelRegistry, MenuNode, MenuPath, RenderedMenuNode, Submenu } from '../../../common/menu';
|
|
27
27
|
|
|
28
28
|
export const TOOLBAR_WRAPPER_ID_SUFFIX = '-as-tabbar-toolbar-item';
|
|
29
29
|
|
|
30
30
|
abstract class AbstractToolbarMenuWrapper {
|
|
31
31
|
|
|
32
32
|
constructor(
|
|
33
|
-
|
|
33
|
+
readonly effectiveMenuPath: MenuPath,
|
|
34
34
|
protected readonly commandRegistry: CommandRegistry,
|
|
35
35
|
protected readonly menuRegistry: MenuModelRegistry,
|
|
36
36
|
protected readonly contextKeyService: ContextKeyService,
|
|
37
37
|
protected readonly contextMenuRenderer: ContextMenuRenderer) {
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
protected abstract
|
|
41
|
-
protected abstract menuNode?: MenuNode;
|
|
40
|
+
protected abstract menuNode: MenuNode | undefined;
|
|
42
41
|
protected abstract id: string;
|
|
43
42
|
protected abstract icon: string | undefined;
|
|
44
43
|
protected abstract tooltip: string | undefined;
|
|
45
44
|
protected abstract text: string | undefined;
|
|
46
|
-
protected abstract executeCommand(e: React.MouseEvent<HTMLDivElement, MouseEvent>): void;
|
|
45
|
+
protected abstract executeCommand(widget: Widget, e: React.MouseEvent<HTMLDivElement, MouseEvent>): void;
|
|
47
46
|
|
|
48
|
-
isEnabled(): boolean {
|
|
47
|
+
isEnabled(widget: Widget): boolean {
|
|
49
48
|
if (CommandMenu.is(this.menuNode)) {
|
|
50
|
-
return this.menuNode.isEnabled(this.effectiveMenuPath);
|
|
49
|
+
return this.menuNode.isEnabled(this.effectiveMenuPath, widget);
|
|
51
50
|
}
|
|
52
51
|
return true;
|
|
53
52
|
}
|
|
54
|
-
isToggled(): boolean {
|
|
53
|
+
isToggled(widget: Widget): boolean {
|
|
55
54
|
if (CommandMenu.is(this.menuNode) && this.menuNode.isToggled) {
|
|
56
|
-
return !!this.menuNode.isToggled(this.effectiveMenuPath);
|
|
55
|
+
return !!this.menuNode.isToggled(this.effectiveMenuPath, widget);
|
|
57
56
|
}
|
|
58
57
|
return false;
|
|
59
58
|
}
|
|
@@ -61,9 +60,7 @@ abstract class AbstractToolbarMenuWrapper {
|
|
|
61
60
|
return this.renderMenuItem(widget);
|
|
62
61
|
}
|
|
63
62
|
|
|
64
|
-
toMenuNode
|
|
65
|
-
return this.menuNode;
|
|
66
|
-
}
|
|
63
|
+
abstract toMenuNode(): MenuNode | undefined;
|
|
67
64
|
|
|
68
65
|
/**
|
|
69
66
|
* Presents the menu to popup on the `event` that is the clicking of
|
|
@@ -78,7 +75,7 @@ abstract class AbstractToolbarMenuWrapper {
|
|
|
78
75
|
const anchor = toAnchor(event);
|
|
79
76
|
|
|
80
77
|
this.contextMenuRenderer.render({
|
|
81
|
-
menuPath:
|
|
78
|
+
menuPath: this.effectiveMenuPath,
|
|
82
79
|
menu: this.menuNode as CompoundMenuNode,
|
|
83
80
|
args: [widget],
|
|
84
81
|
anchor,
|
|
@@ -97,56 +94,47 @@ abstract class AbstractToolbarMenuWrapper {
|
|
|
97
94
|
protected renderMenuItem(widget: Widget): React.ReactNode {
|
|
98
95
|
const icon = this.icon || 'ellipsis';
|
|
99
96
|
const contextMatcher: ContextMatcher = this.contextKeyService;
|
|
97
|
+
const className = `${icon} ${ACTION_ITEM}`;
|
|
100
98
|
if (CompoundMenuNode.is(this.menuNode) && !this.menuNode.isEmpty(this.effectiveMenuPath, this.contextKeyService, widget.node)) {
|
|
101
|
-
|
|
102
99
|
return <div key={this.id} className={TabBarToolbar.Styles.TAB_BAR_TOOLBAR_ITEM + ' enabled menu'}>
|
|
103
|
-
<div className={
|
|
104
|
-
title={this.text}
|
|
105
|
-
onClick={e => this.executeCommand(e)}
|
|
100
|
+
<div className={className}
|
|
101
|
+
title={this.tooltip || this.text}
|
|
102
|
+
onClick={e => this.executeCommand(widget, e)}
|
|
106
103
|
/>
|
|
107
|
-
<div className={ACTION_ITEM} onClick={event => this.showPopupMenu(widget, this.
|
|
104
|
+
<div className={ACTION_ITEM} onClick={event => this.showPopupMenu(widget, this.effectiveMenuPath!, event, contextMatcher)} >
|
|
108
105
|
<div className={codicon('chevron-down') + ' chevron'} />
|
|
109
106
|
</div>
|
|
110
107
|
</div>;
|
|
111
108
|
} else {
|
|
112
109
|
return <div key={this.id} className={TabBarToolbar.Styles.TAB_BAR_TOOLBAR_ITEM + ' enabled menu'}>
|
|
113
|
-
<div className={
|
|
114
|
-
title={this.text}
|
|
115
|
-
onClick={e => this.executeCommand(e)}
|
|
110
|
+
<div className={className}
|
|
111
|
+
title={this.tooltip || this.text}
|
|
112
|
+
onClick={e => this.executeCommand(widget, e)}
|
|
116
113
|
/>
|
|
117
114
|
</div>;
|
|
118
115
|
}
|
|
119
116
|
}
|
|
120
117
|
}
|
|
121
118
|
|
|
122
|
-
export class
|
|
119
|
+
export class SubmenuAsToolbarItemWrapper extends AbstractToolbarMenuWrapper implements TabBarToolbarItem {
|
|
123
120
|
constructor(
|
|
124
121
|
effectiveMenuPath: MenuPath,
|
|
125
122
|
commandRegistry: CommandRegistry,
|
|
126
123
|
menuRegistry: MenuModelRegistry,
|
|
127
124
|
contextKeyService: ContextKeyService,
|
|
128
125
|
contextMenuRenderer: ContextMenuRenderer,
|
|
129
|
-
protected readonly menuNode:
|
|
130
|
-
readonly group: string | undefined
|
|
131
|
-
readonly menuPath?: MenuPath) {
|
|
126
|
+
protected readonly menuNode: Submenu,
|
|
127
|
+
readonly group: string | undefined) {
|
|
132
128
|
super(effectiveMenuPath, commandRegistry, menuRegistry, contextKeyService, contextMenuRenderer);
|
|
133
129
|
}
|
|
130
|
+
priority?: number | undefined;
|
|
134
131
|
|
|
135
|
-
executeCommand(e: React.MouseEvent<HTMLDivElement, MouseEvent>): void {
|
|
136
|
-
if (CommandMenu.is(this.menuNode)) {
|
|
137
|
-
this.menuNode.run(this.effectiveMenuPath);
|
|
138
|
-
}
|
|
132
|
+
executeCommand(widget: Widget, e: React.MouseEvent<HTMLDivElement, MouseEvent>): void {
|
|
139
133
|
}
|
|
140
134
|
|
|
141
135
|
isVisible(widget: Widget): boolean {
|
|
142
|
-
const menuNodeVisible = this.menuNode.isVisible(this.effectiveMenuPath, this.contextKeyService, widget.node);
|
|
143
|
-
|
|
144
|
-
return menuNodeVisible;
|
|
145
|
-
} else if (CompoundMenuNode.is(this.menuNode)) {
|
|
146
|
-
return menuNodeVisible && !MenuModelRegistry.isEmpty(this.menuNode);
|
|
147
|
-
} else {
|
|
148
|
-
return menuNodeVisible;
|
|
149
|
-
}
|
|
136
|
+
const menuNodeVisible = this.menuNode.isVisible(this.effectiveMenuPath, this.contextKeyService, widget.node, widget);
|
|
137
|
+
return menuNodeVisible && !MenuModelRegistry.isEmpty(this.menuNode);
|
|
150
138
|
}
|
|
151
139
|
|
|
152
140
|
get id(): string { return this.menuNode.id + TOOLBAR_WRAPPER_ID_SUFFIX; }
|
|
@@ -158,9 +146,48 @@ export class ToolbarMenuNodeWrapper extends AbstractToolbarMenuWrapper implement
|
|
|
158
146
|
get onDidChange(): Event<void> | undefined {
|
|
159
147
|
return this.menuNode.onDidChange;
|
|
160
148
|
}
|
|
149
|
+
|
|
150
|
+
override toMenuNode(): Group | undefined {
|
|
151
|
+
return new ToolbarItemAsSubmenuWrapper(this.menuNode!, this.effectiveMenuPath);
|
|
152
|
+
};
|
|
161
153
|
}
|
|
162
154
|
|
|
163
|
-
export class
|
|
155
|
+
export class CommandMenuAsToolbarItemWrapper extends AbstractToolbarMenuWrapper implements TabBarToolbarItem {
|
|
156
|
+
constructor(
|
|
157
|
+
effectiveMenuPath: MenuPath,
|
|
158
|
+
commandRegistry: CommandRegistry,
|
|
159
|
+
menuRegistry: MenuModelRegistry,
|
|
160
|
+
contextKeyService: ContextKeyService,
|
|
161
|
+
contextMenuRenderer: ContextMenuRenderer,
|
|
162
|
+
protected readonly menuNode: CommandMenu,
|
|
163
|
+
readonly group: string | undefined) {
|
|
164
|
+
super(effectiveMenuPath, commandRegistry, menuRegistry, contextKeyService, contextMenuRenderer);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
isVisible(widget: Widget): boolean {
|
|
168
|
+
return this.menuNode.isVisible(this.effectiveMenuPath, this.contextKeyService, widget.node, widget);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
executeCommand(widget: Widget, e: React.MouseEvent<HTMLDivElement, MouseEvent>): void {
|
|
172
|
+
this.menuNode.run(this.effectiveMenuPath, widget);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
get id(): string { return this.menuNode.id + TOOLBAR_WRAPPER_ID_SUFFIX; }
|
|
176
|
+
get icon(): string | undefined { return this.menuNode.icon; }
|
|
177
|
+
get tooltip(): string | undefined { return this.menuNode.label; }
|
|
178
|
+
get text(): string | undefined {
|
|
179
|
+
return (this.group === NAVIGATION || this.group === undefined) ? undefined : this.menuNode.label;
|
|
180
|
+
}
|
|
181
|
+
get onDidChange(): Event<void> | undefined {
|
|
182
|
+
return this.menuNode.onDidChange;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
override toMenuNode(): MenuNode | undefined {
|
|
186
|
+
return new ToolbarItemAsCommandMenuWrapper(this.menuNode, this.effectiveMenuPath);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export class ToolbarActionWrapper extends AbstractToolbarMenuWrapper implements TabBarToolbarItem {
|
|
164
191
|
constructor(
|
|
165
192
|
effectiveMenuPath: MenuPath,
|
|
166
193
|
commandRegistry: CommandRegistry,
|
|
@@ -176,7 +203,7 @@ export class ToolbarSubmenuWrapper extends AbstractToolbarMenuWrapper implements
|
|
|
176
203
|
return this.toolbarItem.command ? this.commandRegistry.isEnabled(this.toolbarItem.command, widget) : !!this.toolbarItem.menuPath;
|
|
177
204
|
}
|
|
178
205
|
|
|
179
|
-
protected executeCommand(e: React.MouseEvent<HTMLElement
|
|
206
|
+
protected executeCommand(widget: Widget, e: React.MouseEvent<HTMLElement>): void {
|
|
180
207
|
e.preventDefault();
|
|
181
208
|
e.stopPropagation();
|
|
182
209
|
|
|
@@ -232,8 +259,80 @@ export class ToolbarSubmenuWrapper extends AbstractToolbarMenuWrapper implements
|
|
|
232
259
|
return this.toolbarItem.menuPath!;
|
|
233
260
|
}
|
|
234
261
|
|
|
235
|
-
get menuNode():
|
|
262
|
+
get menuNode(): CompoundMenuNode | undefined {
|
|
236
263
|
return this.menuRegistry.getMenu(this.menuPath);
|
|
237
264
|
}
|
|
265
|
+
|
|
266
|
+
override toMenuNode(): MenuNode | undefined {
|
|
267
|
+
return new ToolbarItemAsSubmenuWrapper(this.menuNode!, this.effectiveMenuPath);
|
|
268
|
+
}
|
|
238
269
|
}
|
|
239
270
|
|
|
271
|
+
/**
|
|
272
|
+
* This class wraps a menu node, but replaces the effective menu path. Command parameters need to be mapped
|
|
273
|
+
* for commands contributed by extension and this mapping is keyed by the menu path
|
|
274
|
+
*/
|
|
275
|
+
abstract class AbstractMenuNodeAsToolbarItemWrapper<T extends MenuNode> {
|
|
276
|
+
constructor(protected readonly menuNode: T, readonly effectiveMenuPath: MenuPath) { }
|
|
277
|
+
|
|
278
|
+
get label(): string | undefined {
|
|
279
|
+
if (RenderedMenuNode.is(this.menuNode)) {
|
|
280
|
+
return this.menuNode.label;
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
/**
|
|
284
|
+
* Icon classes for the menu node. If present, these will produce an icon to the left of the label in browser-style menus.
|
|
285
|
+
*/
|
|
286
|
+
get icon(): string | undefined {
|
|
287
|
+
if (RenderedMenuNode.is(this.menuNode)) {
|
|
288
|
+
return this.menuNode.label;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
get id(): string {
|
|
292
|
+
return this.menuNode.id;
|
|
293
|
+
}
|
|
294
|
+
get sortString(): string {
|
|
295
|
+
return this.menuNode.sortString;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
isVisible<K>(effectiveMenuPath: MenuPath, contextMatcher: ContextExpressionMatcher<K>, context: K | undefined, ...args: unknown[]): boolean {
|
|
299
|
+
return this.menuNode!.isVisible(this.effectiveMenuPath, contextMatcher, context, args);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Wrapper form submenu nodes
|
|
305
|
+
*/
|
|
306
|
+
class ToolbarItemAsSubmenuWrapper extends AbstractMenuNodeAsToolbarItemWrapper<CompoundMenuNode> implements Group {
|
|
307
|
+
|
|
308
|
+
get contextKeyOverlays(): Record<string, string> | undefined {
|
|
309
|
+
return this.menuNode.contextKeyOverlays;
|
|
310
|
+
}
|
|
311
|
+
isEmpty<T>(effectiveMenuPath: MenuPath, contextMatcher: ContextExpressionMatcher<T>, context: T | undefined, ...args: unknown[]): boolean {
|
|
312
|
+
return this.menuNode.isEmpty(this.effectiveMenuPath, contextMatcher, context, args);
|
|
313
|
+
}
|
|
314
|
+
get children(): MenuNode[] {
|
|
315
|
+
return this.menuNode.children;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Wrapper for command menus
|
|
321
|
+
*/
|
|
322
|
+
class ToolbarItemAsCommandMenuWrapper extends AbstractMenuNodeAsToolbarItemWrapper<CommandMenu> implements CommandMenu {
|
|
323
|
+
|
|
324
|
+
isEnabled(effectiveMenuPath: MenuPath, ...args: unknown[]): boolean {
|
|
325
|
+
return this.menuNode.isEnabled(this.effectiveMenuPath, ...args);
|
|
326
|
+
}
|
|
327
|
+
isToggled(effectiveMenuPath: MenuPath, ...args: unknown[]): boolean {
|
|
328
|
+
return this.menuNode.isToggled(this.effectiveMenuPath, ...args);
|
|
329
|
+
}
|
|
330
|
+
run(effectiveMenuPath: MenuPath, ...args: unknown[]): Promise<void> {
|
|
331
|
+
return this.menuNode.run(this.effectiveMenuPath, args);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
override get label(): string {
|
|
335
|
+
return super.label!;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
}
|
|
@@ -22,7 +22,7 @@ import { ContextKeyService } from '../../context-key-service';
|
|
|
22
22
|
import { FrontendApplicationContribution } from '../../frontend-application-contribution';
|
|
23
23
|
import { Widget } from '../../widgets';
|
|
24
24
|
import { ReactTabBarToolbarAction, RenderedToolbarAction } from './tab-bar-toolbar-types';
|
|
25
|
-
import {
|
|
25
|
+
import { CommandMenuAsToolbarItemWrapper, SubmenuAsToolbarItemWrapper, ToolbarActionWrapper } from './tab-bar-toolbar-menu-adapters';
|
|
26
26
|
import { KeybindingRegistry } from '../../keybinding';
|
|
27
27
|
import { LabelParser } from '../../label-parser';
|
|
28
28
|
import { ContextMenuRenderer } from '../../context-menu-renderer';
|
|
@@ -90,7 +90,7 @@ export class TabBarToolbarRegistry implements FrontendApplicationContribution {
|
|
|
90
90
|
return this.doRegisterItem(new ReactToolbarItemImpl(this.commandRegistry, this.contextKeyService, item));
|
|
91
91
|
} else {
|
|
92
92
|
if (item.menuPath) {
|
|
93
|
-
return this.doRegisterItem(new
|
|
93
|
+
return this.doRegisterItem(new ToolbarActionWrapper(item.menuPath,
|
|
94
94
|
this.commandRegistry, this.menuRegistry, this.contextKeyService, this.contextMenuRenderer, item));
|
|
95
95
|
} else {
|
|
96
96
|
const wrapper = new RenderedToolbarItemImpl(this.commandRegistry, this.contextKeyService, this.keybindingRegistry, this.labelParser, item);
|
|
@@ -146,13 +146,19 @@ export class TabBarToolbarRegistry implements FrontendApplicationContribution {
|
|
|
146
146
|
for (const grandchild of child.children) {
|
|
147
147
|
if (grandchild.isVisible([...delegate.menuPath, child.id, grandchild.id],
|
|
148
148
|
this.contextKeyService, widget.node) && RenderedMenuNode.is(grandchild)) {
|
|
149
|
-
|
|
150
|
-
|
|
149
|
+
if (CommandMenu.is(grandchild)) {
|
|
150
|
+
result.push(new CommandMenuAsToolbarItemWrapper([...delegate.menuPath, child.id, grandchild.id], this.commandRegistry,
|
|
151
|
+
this.menuRegistry, this.contextKeyService, this.contextMenuRenderer, grandchild, child.id));
|
|
152
|
+
} else if (CompoundMenuNode.is(grandchild)) {
|
|
153
|
+
result.push(new SubmenuAsToolbarItemWrapper([...delegate.menuPath, child.id, grandchild.id], this.commandRegistry, this.menuRegistry,
|
|
154
|
+
this.contextKeyService, this.contextMenuRenderer, grandchild, child.id));
|
|
155
|
+
}
|
|
156
|
+
|
|
151
157
|
}
|
|
152
158
|
}
|
|
153
159
|
} else if (CommandMenu.is(child)) {
|
|
154
|
-
result.push(new
|
|
155
|
-
this.contextKeyService, this.contextMenuRenderer, child, undefined
|
|
160
|
+
result.push(new CommandMenuAsToolbarItemWrapper([...delegate.menuPath, child.id], this.commandRegistry, this.menuRegistry,
|
|
161
|
+
this.contextKeyService, this.contextMenuRenderer, child, undefined));
|
|
156
162
|
}
|
|
157
163
|
}
|
|
158
164
|
}
|
|
@@ -22,7 +22,7 @@ import { Anchor, ContextMenuAccess, ContextMenuRenderer } from '../../context-me
|
|
|
22
22
|
import { LabelParser } from '../../label-parser';
|
|
23
23
|
import { codicon, ReactWidget, Widget } from '../../widgets';
|
|
24
24
|
import { TabBarToolbarRegistry } from './tab-bar-toolbar-registry';
|
|
25
|
-
import { TabBarDelegator, TabBarToolbarAction } from './tab-bar-toolbar-types';
|
|
25
|
+
import { TAB_BAR_TOOLBAR_CONTEXT_MENU, TabBarDelegator, TabBarToolbarAction } from './tab-bar-toolbar-types';
|
|
26
26
|
import { KeybindingRegistry } from '../..//keybinding';
|
|
27
27
|
import { TabBarToolbarItem } from './tab-toolbar-item';
|
|
28
28
|
import { GroupImpl, MenuModelRegistry } from '../../../common/menu';
|
|
@@ -173,7 +173,7 @@ export class TabBarToolbar extends ReactWidget {
|
|
|
173
173
|
}
|
|
174
174
|
return this.contextMenuRenderer.render({
|
|
175
175
|
menu: MenuModelRegistry.removeSingleRootNodes(menu),
|
|
176
|
-
menuPath:
|
|
176
|
+
menuPath: TAB_BAR_TOOLBAR_CONTEXT_MENU,
|
|
177
177
|
args: [this.current],
|
|
178
178
|
anchor,
|
|
179
179
|
context: this.current?.node || this.node,
|
|
@@ -28,8 +28,8 @@ import { ActionMenuNode, GroupImpl, MenuNode } from '../../../common/menu';
|
|
|
28
28
|
export interface TabBarToolbarItem {
|
|
29
29
|
id: string;
|
|
30
30
|
isVisible(widget: Widget): boolean;
|
|
31
|
-
isEnabled(widget
|
|
32
|
-
isToggled(): boolean;
|
|
31
|
+
isEnabled(widget: Widget): boolean;
|
|
32
|
+
isToggled(widget: Widget): boolean;
|
|
33
33
|
render(widget?: Widget): React.ReactNode;
|
|
34
34
|
onDidChange?: Event<void>;
|
|
35
35
|
group?: string;
|
|
@@ -32,7 +32,7 @@ import { BreadcrumbsRenderer, BreadcrumbsRendererFactory } from '../breadcrumbs/
|
|
|
32
32
|
import { NavigatableWidget } from '../navigatable-types';
|
|
33
33
|
import { Drag } from '@lumino/dragdrop';
|
|
34
34
|
import { LOCKED_CLASS, PINNED_CLASS } from '../widgets/widget';
|
|
35
|
-
import { CorePreferences } from '
|
|
35
|
+
import { CorePreferences } from '../../common/core-preferences';
|
|
36
36
|
import { HoverService } from '../hover-service';
|
|
37
37
|
import { Root, createRoot } from 'react-dom/client';
|
|
38
38
|
import { SelectComponent } from '../widgets/select-component';
|
|
@@ -18,7 +18,7 @@ import { find, toArray } from '@lumino/algorithm';
|
|
|
18
18
|
import { TabBar, Widget, DockPanel, Title } from '@lumino/widgets';
|
|
19
19
|
import { Signal } from '@lumino/signaling';
|
|
20
20
|
import { Disposable, DisposableCollection } from '../../common/disposable';
|
|
21
|
-
import { CorePreferences } from '
|
|
21
|
+
import { CorePreferences } from '../../common/core-preferences';
|
|
22
22
|
import { Emitter, Event, environment } from '../../common';
|
|
23
23
|
import { ToolbarAwareTabBar } from './tab-bars';
|
|
24
24
|
|
|
@@ -47,6 +47,8 @@ export class TheiaDockPanel extends DockPanel {
|
|
|
47
47
|
readonly widgetRemoved = new Signal<this, Widget>(this);
|
|
48
48
|
|
|
49
49
|
protected readonly onDidChangeCurrentEmitter = new Emitter<Title<Widget> | undefined>();
|
|
50
|
+
protected disableDND: boolean | undefined = false;
|
|
51
|
+
protected tabWithDNDDisabledStyling?: HTMLElement = undefined;
|
|
50
52
|
|
|
51
53
|
get onDidChangeCurrent(): Event<Title<Widget> | undefined> {
|
|
52
54
|
return this.onDidChangeCurrentEmitter.event;
|
|
@@ -57,6 +59,7 @@ export class TheiaDockPanel extends DockPanel {
|
|
|
57
59
|
protected readonly maximizeCallback?: (area: TheiaDockPanel) => void
|
|
58
60
|
) {
|
|
59
61
|
super(options);
|
|
62
|
+
this.disableDND = TheiaDockPanel.isTheiaDockPanelIOptions(options) && options.disableDragAndDrop;
|
|
60
63
|
this['_onCurrentChanged'] = (sender: TabBar<Widget>, args: TabBar.ICurrentChangedArgs<Widget>) => {
|
|
61
64
|
this.markAsCurrent(args.currentTitle || undefined);
|
|
62
65
|
super['_onCurrentChanged'](sender, args);
|
|
@@ -68,12 +71,72 @@ export class TheiaDockPanel extends DockPanel {
|
|
|
68
71
|
if (tabBar instanceof ToolbarAwareTabBar) {
|
|
69
72
|
tabBar.setDockPanel(this);
|
|
70
73
|
}
|
|
74
|
+
if (this.disableDND) {
|
|
75
|
+
tabBar['tabDetachRequested'].disconnect(this['_onTabDetachRequested'], this);
|
|
76
|
+
tabBar['tabDetachRequested'].connect(this.onTabDetachRequestedWithDisabledDND, this);
|
|
77
|
+
|
|
78
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, no-null/no-null
|
|
79
|
+
let dragDataValue: any = null;
|
|
80
|
+
Object.defineProperty(tabBar, '_dragData', {
|
|
81
|
+
get: () => dragDataValue,
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
83
|
+
set: (value: any) => {
|
|
84
|
+
dragDataValue = value;
|
|
85
|
+
// eslint-disable-next-line no-null/no-null
|
|
86
|
+
if (value === null) {
|
|
87
|
+
this.onNullTabDragDataWithDisabledDND();
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
configurable: true
|
|
91
|
+
});
|
|
92
|
+
}
|
|
71
93
|
return tabBar;
|
|
72
94
|
};
|
|
73
95
|
this['_onTabActivateRequested'] = (sender: TabBar<Widget>, args: TabBar.ITabActivateRequestedArgs<Widget>) => {
|
|
74
96
|
this.markAsCurrent(args.title);
|
|
75
97
|
super['_onTabActivateRequested'](sender, args);
|
|
76
98
|
};
|
|
99
|
+
this['_onTabCloseRequested'] = (sender: TabBar<Widget>, args: TabBar.ITabCloseRequestedArgs<Widget>) => {
|
|
100
|
+
if (TheiaDockPanel.isTheiaDockPanelIOptions(options) && options.closeHandler !== undefined) {
|
|
101
|
+
if (options.closeHandler(sender, args)) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
super['_onTabCloseRequested'](sender, args);
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
protected onTabDetachRequestedWithDisabledDND(sender: TabBar<Widget>, args: TabBar.ITabDetachRequestedArgs<Widget>): void {
|
|
110
|
+
// don't process the detach request at all. We still want to support other drag starts, e.g. tab reorder
|
|
111
|
+
// provide visual feedback that DnD is disabled by adding not-allowed class
|
|
112
|
+
const tab = sender.contentNode.children[args.index] as HTMLElement;
|
|
113
|
+
if (tab) {
|
|
114
|
+
tab.classList.add('theia-drag-not-allowed');
|
|
115
|
+
this.tabWithDNDDisabledStyling = tab;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
protected onNullTabDragDataWithDisabledDND(): void {
|
|
120
|
+
if (this.tabWithDNDDisabledStyling) {
|
|
121
|
+
this.tabWithDNDDisabledStyling.classList.remove('theia-drag-not-allowed');
|
|
122
|
+
this.tabWithDNDDisabledStyling = undefined;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
override handleEvent(event: globalThis.Event): void {
|
|
127
|
+
if (this.disableDND) {
|
|
128
|
+
switch (event.type) {
|
|
129
|
+
case 'lm-dragenter':
|
|
130
|
+
case 'lm-dragleave':
|
|
131
|
+
case 'lm-dragover':
|
|
132
|
+
case 'lm-drop':
|
|
133
|
+
/* no-op */
|
|
134
|
+
break;
|
|
135
|
+
default:
|
|
136
|
+
super.handleEvent(event);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
super.handleEvent(event);
|
|
77
140
|
}
|
|
78
141
|
|
|
79
142
|
toggleMaximized(): void {
|
|
@@ -178,11 +241,47 @@ export class TheiaDockPanel extends DockPanel {
|
|
|
178
241
|
}
|
|
179
242
|
return undefined;
|
|
180
243
|
}
|
|
244
|
+
|
|
245
|
+
override dispose(): void {
|
|
246
|
+
super.dispose();
|
|
247
|
+
this.onDidChangeCurrentEmitter.dispose();
|
|
248
|
+
this._currentTitle = undefined;
|
|
249
|
+
this.toDisposeOnMarkAsCurrent.dispose();
|
|
250
|
+
}
|
|
181
251
|
}
|
|
182
252
|
export namespace TheiaDockPanel {
|
|
183
253
|
export const Factory = Symbol('TheiaDockPanel#Factory');
|
|
184
254
|
export interface Factory {
|
|
185
|
-
(options?: DockPanel.IOptions, maximizeCallback?: (area: TheiaDockPanel) => void): TheiaDockPanel;
|
|
255
|
+
(options?: DockPanel.IOptions | TheiaDockPanel.IOptions, maximizeCallback?: (area: TheiaDockPanel) => void): TheiaDockPanel;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export interface IOptions extends DockPanel.IOptions {
|
|
259
|
+
/** whether drag and drop for tabs should be disabled */
|
|
260
|
+
disableDragAndDrop?: boolean;
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* @param sender the tab bar
|
|
264
|
+
* @param args the widget (title)
|
|
265
|
+
* @returns true if the request was handled by this handler, false if the tabbar should handle the request
|
|
266
|
+
*/
|
|
267
|
+
closeHandler?: (sender: TabBar<Widget>, args: TabBar.ITabCloseRequestedArgs<Widget>) => boolean;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export function isTheiaDockPanelIOptions(options: DockPanel.IOptions | undefined): options is IOptions {
|
|
271
|
+
if (options === undefined) {
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
if ('disableDragAndDrop' in options) {
|
|
275
|
+
if (options.disableDragAndDrop !== undefined && typeof options.disableDragAndDrop !== 'boolean') {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
if ('closeHandler' in options) {
|
|
280
|
+
if (options.closeHandler !== undefined && typeof options.closeHandler !== 'function') {
|
|
281
|
+
return false;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return true;
|
|
186
285
|
}
|
|
187
286
|
|
|
188
287
|
export interface AddOptions extends DockPanel.IAddOptions {
|
|
@@ -21,11 +21,12 @@ import { CommandService } from '../../common';
|
|
|
21
21
|
import { ReactWidget } from '../widgets/react-widget';
|
|
22
22
|
import { FrontendApplicationStateService } from '../frontend-application-state';
|
|
23
23
|
import { LabelParser, LabelIcon } from '../label-parser';
|
|
24
|
-
import { PreferenceService } from '../preferences';
|
|
25
24
|
import { StatusBar, StatusBarEntry, StatusBarAlignment, StatusBarViewEntry } from './status-bar-types';
|
|
26
25
|
import { StatusBarViewModel } from './status-bar-view-model';
|
|
27
26
|
import { HoverService } from '../hover-service';
|
|
28
27
|
import { codicon } from '../widgets';
|
|
28
|
+
import { PreferenceService } from '../../common/preferences';
|
|
29
|
+
import { MarkdownString } from '../../common/markdown-rendering';
|
|
29
30
|
export { StatusBar, StatusBarAlignment, StatusBarEntry };
|
|
30
31
|
|
|
31
32
|
@injectable()
|
|
@@ -122,7 +123,7 @@ export class StatusBarImpl extends ReactWidget implements StatusBar {
|
|
|
122
123
|
content: entry.tooltip!,
|
|
123
124
|
target: e.currentTarget,
|
|
124
125
|
position: 'top',
|
|
125
|
-
interactive: entry.tooltip instanceof HTMLElement,
|
|
126
|
+
interactive: entry.tooltip instanceof HTMLElement || MarkdownString.is(entry.tooltip),
|
|
126
127
|
});
|
|
127
128
|
}
|
|
128
129
|
|
|
@@ -84,3 +84,10 @@
|
|
|
84
84
|
.lm-DockPanel-overlay.lm-mod-root-bottom {
|
|
85
85
|
background: var(--theia-panel-dropBackground);
|
|
86
86
|
}
|
|
87
|
+
|
|
88
|
+
.lm-TabBar-tab.theia-drag-not-allowed {
|
|
89
|
+
cursor: not-allowed !important;
|
|
90
|
+
background-color: var(--theia-errorBackground) !important;
|
|
91
|
+
opacity: 0.8;
|
|
92
|
+
transition: background-color 0.3s ease;
|
|
93
|
+
}
|
package/src/browser/theming.ts
CHANGED
|
@@ -14,15 +14,16 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import { Emitter, Event } from '../common/event';
|
|
18
|
-
import { Disposable } from '../common/disposable';
|
|
19
|
-
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
20
17
|
import { ApplicationProps, DefaultTheme } from '@theia/application-package/lib/application-props';
|
|
21
|
-
import { Theme, ThemeChangeEvent } from '../common/theme';
|
|
22
18
|
import { inject, injectable, postConstruct } from 'inversify';
|
|
19
|
+
import { Disposable } from '../common/disposable';
|
|
20
|
+
import { Emitter, Event } from '../common/event';
|
|
21
|
+
import { PreferenceSchemaService } from '../common/preferences/preference-schema';
|
|
23
22
|
import { Deferred } from '../common/promise-util';
|
|
24
|
-
import {
|
|
23
|
+
import { Theme, ThemeChangeEvent } from '../common/theme';
|
|
24
|
+
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
25
25
|
import debounce = require('lodash.debounce');
|
|
26
|
+
import { PreferenceService } from '../common/preferences';
|
|
26
27
|
|
|
27
28
|
const COLOR_THEME_PREFERENCE_KEY = 'workbench.colorTheme';
|
|
28
29
|
const NO_THEME = { id: 'no-theme', label: 'Not a real theme.', type: 'dark' } as const;
|
|
@@ -32,7 +33,7 @@ export class ThemeService {
|
|
|
32
33
|
static readonly STORAGE_KEY = 'theme';
|
|
33
34
|
|
|
34
35
|
@inject(PreferenceService) protected readonly preferences: PreferenceService;
|
|
35
|
-
@inject(
|
|
36
|
+
@inject(PreferenceSchemaService) protected readonly schemaProvider: PreferenceSchemaService;
|
|
36
37
|
|
|
37
38
|
protected themes: { [id: string]: Theme } = {};
|
|
38
39
|
protected activeTheme: Theme = NO_THEME;
|
|
@@ -18,8 +18,8 @@ import { injectable, inject, optional, postConstruct } from 'inversify';
|
|
|
18
18
|
import * as React from 'react';
|
|
19
19
|
import ReactTooltip from 'react-tooltip';
|
|
20
20
|
import { ReactRenderer, RendererHost } from './widgets/react-renderer';
|
|
21
|
-
import { CorePreferences } from './core-preferences';
|
|
22
21
|
import { generateUuid } from '../common/uuid';
|
|
22
|
+
import { CorePreferences } from '../common/core-preferences';
|
|
23
23
|
|
|
24
24
|
export const TooltipService = Symbol('TooltipService');
|
|
25
25
|
|
|
@@ -41,11 +41,11 @@ import { ElementExt } from '@lumino/domutils';
|
|
|
41
41
|
import { TreeWidgetSelection } from './tree-widget-selection';
|
|
42
42
|
import { MaybePromise } from '../../common/types';
|
|
43
43
|
import { LabelProvider } from '../label-provider';
|
|
44
|
-
import { CorePreferences } from '
|
|
44
|
+
import { CorePreferences } from '../../common/core-preferences';
|
|
45
45
|
import { TreeFocusService } from './tree-focus-service';
|
|
46
46
|
import { useEffect } from 'react';
|
|
47
|
-
import {
|
|
48
|
-
import {
|
|
47
|
+
import { PREFERENCE_NAME_TREE_INDENT } from '../../common/tree-preference';
|
|
48
|
+
import { PreferenceService, PreferenceChange } from '../../common/preferences';
|
|
49
49
|
|
|
50
50
|
const debounce = require('lodash.debounce');
|
|
51
51
|
|
|
@@ -306,7 +306,7 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
|
|
|
306
306
|
}),
|
|
307
307
|
this.preferenceService.onPreferenceChanged((event: PreferenceChange) => {
|
|
308
308
|
if (event.preferenceName === PREFERENCE_NAME_TREE_INDENT) {
|
|
309
|
-
this.treeIndent = event.newValue;
|
|
309
|
+
this.treeIndent = event.newValue as number;
|
|
310
310
|
this.update();
|
|
311
311
|
}
|
|
312
312
|
})
|
|
@@ -1442,9 +1442,10 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
|
|
|
1442
1442
|
if (contextMenuPath) {
|
|
1443
1443
|
const { x, y } = event.nativeEvent;
|
|
1444
1444
|
const args = this.toContextMenuArgs(node);
|
|
1445
|
+
const target = event.currentTarget;
|
|
1445
1446
|
setTimeout(() => this.contextMenuRenderer.render({
|
|
1446
1447
|
menuPath: contextMenuPath,
|
|
1447
|
-
context:
|
|
1448
|
+
context: target,
|
|
1448
1449
|
anchor: { x, y },
|
|
1449
1450
|
args
|
|
1450
1451
|
}), 10);
|