@theia/core 1.45.1 → 1.46.0-next.106
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 +20 -3
- package/i18n/nls.de.json +20 -3
- package/i18n/nls.es.json +20 -3
- package/i18n/nls.fr.json +20 -3
- package/i18n/nls.hu.json +20 -3
- package/i18n/nls.it.json +20 -3
- package/i18n/nls.ja.json +20 -3
- package/i18n/nls.json +20 -3
- package/i18n/nls.pl.json +20 -3
- package/i18n/nls.pt-br.json +20 -3
- package/i18n/nls.pt-pt.json +20 -3
- package/i18n/nls.ru.json +20 -3
- package/i18n/nls.zh-cn.json +20 -3
- package/lib/browser/about-dialog.js +13 -24
- package/lib/browser/about-dialog.js.map +1 -1
- package/lib/browser/authentication-service.js +12 -20
- package/lib/browser/authentication-service.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.js +12 -20
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumb-renderer.js +2 -7
- package/lib/browser/breadcrumbs/breadcrumb-renderer.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +14 -22
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
- package/lib/browser/breadcrumbs/breadcrumbs-service.js +10 -18
- package/lib/browser/breadcrumbs/breadcrumbs-service.js.map +1 -1
- package/lib/browser/breadcrumbs/index.js +6 -15
- package/lib/browser/breadcrumbs/index.js.map +1 -1
- package/lib/browser/browser-clipboard-service.js +6 -14
- package/lib/browser/browser-clipboard-service.js.map +1 -1
- package/lib/browser/browser.d.ts +3 -0
- package/lib/browser/browser.d.ts.map +1 -1
- package/lib/browser/browser.js +5 -1
- package/lib/browser/browser.js.map +1 -1
- package/lib/browser/color-application-contribution.js +8 -16
- package/lib/browser/color-application-contribution.js.map +1 -1
- package/lib/browser/color-registry.js +2 -7
- package/lib/browser/color-registry.js.map +1 -1
- package/lib/browser/command-open-handler.js +4 -12
- package/lib/browser/command-open-handler.js.map +1 -1
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +49 -60
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/common-styling-participants.js +9 -14
- package/lib/browser/common-styling-participants.js.map +1 -1
- package/lib/browser/connection-status-service.js +22 -33
- package/lib/browser/connection-status-service.js.map +1 -1
- package/lib/browser/context-key-service.d.ts +1 -2
- package/lib/browser/context-key-service.d.ts.map +1 -1
- package/lib/browser/context-key-service.js +2 -7
- package/lib/browser/context-key-service.js.map +1 -1
- package/lib/browser/context-menu-renderer.d.ts +0 -1
- package/lib/browser/context-menu-renderer.d.ts.map +1 -1
- package/lib/browser/context-menu-renderer.js +3 -12
- package/lib/browser/context-menu-renderer.js.map +1 -1
- package/lib/browser/core-preferences.d.ts +1 -0
- package/lib/browser/core-preferences.d.ts.map +1 -1
- package/lib/browser/core-preferences.js +5 -0
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/credentials-service.js +4 -15
- package/lib/browser/credentials-service.js.map +1 -1
- package/lib/browser/decorations-service.js +6 -12
- package/lib/browser/decorations-service.js.map +1 -1
- package/lib/browser/dialogs/react-dialog.js +4 -15
- package/lib/browser/dialogs/react-dialog.js.map +1 -1
- package/lib/browser/dialogs.js +18 -29
- package/lib/browser/dialogs.js.map +1 -1
- package/lib/browser/diff-uris.js +4 -15
- package/lib/browser/diff-uris.js.map +1 -1
- package/lib/browser/encoding-registry.js +6 -14
- package/lib/browser/encoding-registry.js.map +1 -1
- package/lib/browser/external-uri-service.js +2 -7
- package/lib/browser/external-uri-service.js.map +1 -1
- package/lib/browser/frontend-application-contribution.js +2 -7
- package/lib/browser/frontend-application-contribution.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +4 -2
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/frontend-application-state.js +4 -12
- package/lib/browser/frontend-application-state.js.map +1 -1
- package/lib/browser/frontend-application.js +21 -32
- package/lib/browser/frontend-application.js.map +1 -1
- package/lib/browser/hover-service.js +6 -14
- package/lib/browser/hover-service.js.map +1 -1
- package/lib/browser/http-open-handler.js +6 -14
- package/lib/browser/http-open-handler.js.map +1 -1
- package/lib/browser/i18n/language-quick-pick-service.js +8 -16
- package/lib/browser/i18n/language-quick-pick-service.js.map +1 -1
- package/lib/browser/icon-registry.d.ts +1 -7
- package/lib/browser/icon-registry.d.ts.map +1 -1
- package/lib/browser/icon-registry.js.map +1 -1
- package/lib/browser/icon-theme-contribution.js +7 -15
- package/lib/browser/icon-theme-contribution.js.map +1 -1
- package/lib/browser/icon-theme-service.js +13 -21
- package/lib/browser/icon-theme-service.js.map +1 -1
- package/lib/browser/index.js +32 -41
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/json-schema-store.js +7 -15
- package/lib/browser/json-schema-store.js.map +1 -1
- package/lib/browser/keybinding.d.ts.map +1 -1
- package/lib/browser/keybinding.js +21 -26
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/keybinding.spec.js +4 -9
- package/lib/browser/keybinding.spec.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js +6 -14
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.js +10 -18
- package/lib/browser/keyboard/browser-keyboard-layout-provider.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js +2 -7
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js.map +1 -1
- package/lib/browser/keyboard/index.js +5 -14
- package/lib/browser/keyboard/index.js.map +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.js +8 -16
- package/lib/browser/keyboard/keyboard-layout-service.js.map +1 -1
- package/lib/browser/keyboard/keyboard-layout-service.spec.js +2 -7
- package/lib/browser/keyboard/keyboard-layout-service.spec.js.map +1 -1
- package/lib/browser/keyboard/keys.js +2 -11
- package/lib/browser/keyboard/keys.js.map +1 -1
- package/lib/browser/label-parser.js +2 -7
- package/lib/browser/label-parser.js.map +1 -1
- package/lib/browser/label-provider.js +11 -19
- package/lib/browser/label-provider.js.map +1 -1
- package/lib/browser/language-icon-provider.js +10 -18
- package/lib/browser/language-icon-provider.js.map +1 -1
- package/lib/browser/language-service.js +2 -7
- package/lib/browser/language-service.js.map +1 -1
- package/lib/browser/markdown-rendering/markdown-renderer.d.ts +1 -1
- package/lib/browser/markdown-rendering/markdown-renderer.d.ts.map +1 -1
- package/lib/browser/markdown-rendering/markdown-renderer.js +8 -16
- package/lib/browser/markdown-rendering/markdown-renderer.js.map +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.js +4 -15
- package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +23 -34
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/menu/context-menu-context.js +3 -11
- package/lib/browser/menu/context-menu-context.js.map +1 -1
- package/lib/browser/messaging/frontend-id-provider.js +2 -7
- package/lib/browser/messaging/frontend-id-provider.js.map +1 -1
- package/lib/browser/messaging/index.js +2 -11
- package/lib/browser/messaging/index.js.map +1 -1
- package/lib/browser/messaging/service-connection-provider.js +8 -16
- package/lib/browser/messaging/service-connection-provider.js.map +1 -1
- package/lib/browser/messaging/ws-connection-provider.js +4 -12
- package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
- package/lib/browser/messaging/ws-connection-source.js +9 -17
- package/lib/browser/messaging/ws-connection-source.js.map +1 -1
- package/lib/browser/mime-service.js +2 -7
- package/lib/browser/mime-service.js.map +1 -1
- package/lib/browser/navigatable.js +2 -11
- package/lib/browser/navigatable.js.map +1 -1
- package/lib/browser/opener-service.js +5 -16
- package/lib/browser/opener-service.js.map +1 -1
- package/lib/browser/performance/frontend-stopwatch.js +3 -11
- package/lib/browser/performance/frontend-stopwatch.js.map +1 -1
- package/lib/browser/performance/index.js +3 -12
- package/lib/browser/performance/index.js.map +1 -1
- package/lib/browser/preferences/index.js +8 -17
- package/lib/browser/preferences/index.js.map +1 -1
- package/lib/browser/preferences/injectable-preference-proxy.js +14 -22
- package/lib/browser/preferences/injectable-preference-proxy.js.map +1 -1
- package/lib/browser/preferences/preference-configurations.js +4 -12
- package/lib/browser/preferences/preference-configurations.js.map +1 -1
- package/lib/browser/preferences/preference-contribution.js +10 -18
- package/lib/browser/preferences/preference-contribution.js.map +1 -1
- package/lib/browser/preferences/preference-language-override-service.js +2 -7
- package/lib/browser/preferences/preference-language-override-service.js.map +1 -1
- package/lib/browser/preferences/preference-provider.js +5 -13
- package/lib/browser/preferences/preference-provider.js.map +1 -1
- package/lib/browser/preferences/preference-service.js +14 -22
- package/lib/browser/preferences/preference-service.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.js +6 -14
- package/lib/browser/preferences/preference-validation-service.js.map +1 -1
- package/lib/browser/preferences/test/index.js +4 -13
- package/lib/browser/preferences/test/index.js.map +1 -1
- package/lib/browser/preferences/test/mock-preference-service.js +3 -11
- package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
- package/lib/browser/preload/i18n-preload-contribution.js +4 -12
- package/lib/browser/preload/i18n-preload-contribution.js.map +1 -1
- package/lib/browser/preload/os-preload-contribution.js +4 -12
- package/lib/browser/preload/os-preload-contribution.js.map +1 -1
- package/lib/browser/preload/preloader.js +4 -12
- package/lib/browser/preload/preloader.js.map +1 -1
- package/lib/browser/preload/theme-preload-contribution.js +2 -7
- package/lib/browser/preload/theme-preload-contribution.js.map +1 -1
- package/lib/browser/progress-bar.js +11 -19
- package/lib/browser/progress-bar.js.map +1 -1
- package/lib/browser/progress-client.js +6 -14
- package/lib/browser/progress-client.js.map +1 -1
- package/lib/browser/progress-location-service.js +2 -7
- package/lib/browser/progress-location-service.js.map +1 -1
- package/lib/browser/progress-status-bar-item.js +4 -12
- package/lib/browser/progress-status-bar-item.js.map +1 -1
- package/lib/browser/quick-input/index.js +9 -18
- package/lib/browser/quick-input/index.js.map +1 -1
- package/lib/browser/quick-input/quick-command-frontend-contribution.js +6 -14
- package/lib/browser/quick-input/quick-command-frontend-contribution.js.map +1 -1
- package/lib/browser/quick-input/quick-command-service.js +12 -20
- package/lib/browser/quick-input/quick-command-service.js.map +1 -1
- package/lib/browser/quick-input/quick-help-service.js +6 -14
- package/lib/browser/quick-input/quick-help-service.js.map +1 -1
- package/lib/browser/quick-input/quick-input-frontend-contribution.js +4 -12
- package/lib/browser/quick-input/quick-input-frontend-contribution.js.map +1 -1
- package/lib/browser/quick-input/quick-input-service.js +2 -11
- package/lib/browser/quick-input/quick-input-service.js.map +1 -1
- package/lib/browser/quick-input/quick-pick-service-impl.js +4 -12
- package/lib/browser/quick-input/quick-pick-service-impl.js.map +1 -1
- package/lib/browser/quick-input/quick-view-service.js +6 -14
- package/lib/browser/quick-input/quick-view-service.js.map +1 -1
- package/lib/browser/request/browser-request-service.js +12 -20
- package/lib/browser/request/browser-request-service.js.map +1 -1
- package/lib/browser/resource-context-key.js +10 -18
- package/lib/browser/resource-context-key.js.map +1 -1
- package/lib/browser/save-resource-service.d.ts +3 -3
- package/lib/browser/save-resource-service.d.ts.map +1 -1
- package/lib/browser/save-resource-service.js +6 -13
- package/lib/browser/save-resource-service.js.map +1 -1
- package/lib/browser/secondary-window-handler.js +12 -20
- package/lib/browser/secondary-window-handler.js.map +1 -1
- package/lib/browser/shell/additional-views-menu-widget.js +6 -14
- package/lib/browser/shell/additional-views-menu-widget.js.map +1 -1
- package/lib/browser/shell/application-shell-mouse-tracker.js +4 -12
- package/lib/browser/shell/application-shell-mouse-tracker.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +40 -46
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/index.js +8 -17
- package/lib/browser/shell/index.js.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.js +12 -23
- package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
- package/lib/browser/shell/side-panel-handler.js +22 -30
- package/lib/browser/shell/side-panel-handler.js.map +1 -1
- package/lib/browser/shell/sidebar-bottom-menu-widget.js +2 -7
- package/lib/browser/shell/sidebar-bottom-menu-widget.js.map +1 -1
- package/lib/browser/shell/sidebar-menu-widget.js +7 -15
- package/lib/browser/shell/sidebar-menu-widget.js.map +1 -1
- package/lib/browser/shell/sidebar-top-menu-widget.js +2 -7
- package/lib/browser/shell/sidebar-top-menu-widget.js.map +1 -1
- package/lib/browser/shell/split-panels.js +2 -7
- package/lib/browser/shell/split-panels.js.map +1 -1
- package/lib/browser/shell/tab-bar-decorator.d.ts +7 -2
- package/lib/browser/shell/tab-bar-decorator.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-decorator.js +39 -16
- package/lib/browser/shell/tab-bar-decorator.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/index.js +4 -13
- package/lib/browser/shell/tab-bar-toolbar/index.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +10 -18
- 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 +23 -31
- package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts +4 -1
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/tab-bars.js +39 -4
- package/lib/browser/shell/tab-bars.js.map +1 -1
- package/lib/browser/shell/view-contribution.js +9 -17
- package/lib/browser/shell/view-contribution.js.map +1 -1
- package/lib/browser/source-tree/index.js +4 -13
- package/lib/browser/source-tree/index.js.map +1 -1
- package/lib/browser/source-tree/source-tree-widget.js +6 -14
- package/lib/browser/source-tree/source-tree-widget.js.map +1 -1
- package/lib/browser/source-tree/source-tree.js +2 -7
- package/lib/browser/source-tree/source-tree.js.map +1 -1
- package/lib/browser/source-tree/tree-source.js +4 -15
- package/lib/browser/source-tree/tree-source.js.map +1 -1
- package/lib/browser/status-bar/index.js +4 -13
- package/lib/browser/status-bar/index.js.map +1 -1
- package/lib/browser/status-bar/status-bar-view-model.js +2 -7
- package/lib/browser/status-bar/status-bar-view-model.js.map +1 -1
- package/lib/browser/status-bar/status-bar.js +9 -20
- package/lib/browser/status-bar/status-bar.js.map +1 -1
- package/lib/browser/storage-service.js +12 -20
- package/lib/browser/storage-service.js.map +1 -1
- package/lib/browser/styling-service.js +8 -16
- package/lib/browser/styling-service.js.map +1 -1
- package/lib/browser/test/mock-opener-service.js +2 -7
- package/lib/browser/test/mock-opener-service.js.map +1 -1
- package/lib/browser/test/mock-storage-service.js +2 -7
- package/lib/browser/test/mock-storage-service.js.map +1 -1
- package/lib/browser/theming.js +10 -18
- package/lib/browser/theming.js.map +1 -1
- package/lib/browser/tooltip-service.js +13 -24
- package/lib/browser/tooltip-service.js.map +1 -1
- package/lib/browser/tree/fuzzy-search.js +2 -7
- package/lib/browser/tree/fuzzy-search.js.map +1 -1
- package/lib/browser/tree/index.d.ts +1 -0
- package/lib/browser/tree/index.d.ts.map +1 -1
- package/lib/browser/tree/index.js +14 -22
- package/lib/browser/tree/index.js.map +1 -1
- package/lib/browser/tree/test/mock-selectable-tree-model.d.ts +15 -0
- package/lib/browser/tree/test/mock-selectable-tree-model.d.ts.map +1 -0
- package/lib/browser/tree/test/mock-selectable-tree-model.js +103 -0
- package/lib/browser/tree/test/mock-selectable-tree-model.js.map +1 -0
- package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js +6 -14
- package/lib/browser/tree/tree-compression/compressed-tree-expansion-service.js.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-model.js +6 -14
- package/lib/browser/tree/tree-compression/compressed-tree-model.js.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js +10 -21
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
- package/lib/browser/tree/tree-compression/index.js +5 -14
- package/lib/browser/tree/tree-compression/index.js.map +1 -1
- package/lib/browser/tree/tree-compression/tree-compression-service.js +2 -7
- package/lib/browser/tree/tree-compression/tree-compression-service.js.map +1 -1
- package/lib/browser/tree/tree-consistency.spec.js +2 -7
- package/lib/browser/tree/tree-consistency.spec.js.map +1 -1
- package/lib/browser/tree/tree-decorator.js +4 -12
- package/lib/browser/tree/tree-decorator.js.map +1 -1
- package/lib/browser/tree/tree-expansion.js +8 -16
- package/lib/browser/tree/tree-expansion.js.map +1 -1
- package/lib/browser/tree/tree-focus-service.js +4 -12
- package/lib/browser/tree/tree-focus-service.js.map +1 -1
- package/lib/browser/tree/tree-label-provider.js +2 -7
- package/lib/browser/tree/tree-label-provider.js.map +1 -1
- package/lib/browser/tree/tree-model.d.ts +24 -0
- package/lib/browser/tree/tree-model.d.ts.map +1 -1
- package/lib/browser/tree/tree-model.js +66 -28
- package/lib/browser/tree/tree-model.js.map +1 -1
- package/lib/browser/tree/tree-navigation.js +2 -7
- package/lib/browser/tree/tree-navigation.js.map +1 -1
- package/lib/browser/tree/tree-preference.d.ts +11 -0
- package/lib/browser/tree/tree-preference.d.ts.map +1 -0
- package/lib/browser/tree/tree-preference.js +47 -0
- package/lib/browser/tree/tree-preference.js.map +1 -0
- package/lib/browser/tree/tree-search.js +12 -20
- package/lib/browser/tree/tree-search.js.map +1 -1
- package/lib/browser/tree/tree-selectable.spec.d.ts +2 -0
- package/lib/browser/tree/tree-selectable.spec.d.ts.map +1 -0
- package/lib/browser/tree/tree-selectable.spec.js +147 -0
- package/lib/browser/tree/tree-selectable.spec.js.map +1 -0
- package/lib/browser/tree/tree-selection-impl.js +10 -18
- package/lib/browser/tree/tree-selection-impl.js.map +1 -1
- package/lib/browser/tree/tree-view-welcome-widget.js +8 -16
- package/lib/browser/tree/tree-view-welcome-widget.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +6 -3
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +48 -38
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/tree/tree.d.ts.map +1 -1
- package/lib/browser/tree/tree.js +7 -12
- package/lib/browser/tree/tree.js.map +1 -1
- package/lib/browser/user-working-directory-provider.js +6 -14
- package/lib/browser/user-working-directory-provider.js.map +1 -1
- package/lib/browser/view-container.js +31 -39
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widget-manager.d.ts +9 -0
- package/lib/browser/widget-manager.d.ts.map +1 -1
- package/lib/browser/widget-manager.js +29 -14
- package/lib/browser/widget-manager.js.map +1 -1
- package/lib/browser/widget-open-handler.js +10 -18
- package/lib/browser/widget-open-handler.js.map +1 -1
- package/lib/browser/widgets/index.js +5 -14
- package/lib/browser/widgets/index.js.map +1 -1
- package/lib/browser/widgets/react-renderer.js +5 -16
- package/lib/browser/widgets/react-renderer.js.map +1 -1
- package/lib/browser/widgets/react-widget.js +4 -15
- package/lib/browser/widgets/react-widget.js.map +1 -1
- package/lib/browser/widgets/select-component.d.ts.map +1 -1
- package/lib/browser/widgets/select-component.js +1 -0
- package/lib/browser/widgets/select-component.js.map +1 -1
- package/lib/browser/widgets/widget.d.ts +2 -0
- package/lib/browser/widgets/widget.d.ts.map +1 -1
- package/lib/browser/widgets/widget.js +14 -24
- package/lib/browser/widgets/widget.js.map +1 -1
- package/lib/browser/window/default-secondary-window-service.js +10 -18
- package/lib/browser/window/default-secondary-window-service.js.map +1 -1
- package/lib/browser/window/default-window-service.js +6 -14
- package/lib/browser/window/default-window-service.js.map +1 -1
- package/lib/browser/window/test/mock-window-service.js +2 -7
- package/lib/browser/window/test/mock-window-service.js.map +1 -1
- package/lib/browser/window/window-service.d.ts +6 -2
- package/lib/browser/window/window-service.d.ts.map +1 -1
- package/lib/browser/window/window-service.js.map +1 -1
- package/lib/browser/window/window-title-service.js +8 -16
- package/lib/browser/window/window-title-service.js.map +1 -1
- package/lib/browser/window/window-title-updater.js +6 -14
- package/lib/browser/window/window-title-updater.js.map +1 -1
- package/lib/browser/window-contribution.js +4 -12
- package/lib/browser/window-contribution.js.map +1 -1
- package/lib/browser-only/frontend-only-application-module.d.ts +5 -0
- package/lib/browser-only/frontend-only-application-module.d.ts.map +1 -0
- package/lib/browser-only/frontend-only-application-module.js +115 -0
- package/lib/browser-only/frontend-only-application-module.js.map +1 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.d.ts +4 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.d.ts.map +1 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.js +35 -0
- package/lib/browser-only/i18n/i18n-frontend-only-module.js.map +1 -0
- package/lib/browser-only/logger-frontend-only-module.d.ts +3 -0
- package/lib/browser-only/logger-frontend-only-module.d.ts.map +1 -0
- package/lib/browser-only/logger-frontend-only-module.js +61 -0
- package/lib/browser-only/logger-frontend-only-module.js.map +1 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts +14 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts.map +1 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.js +52 -0
- package/lib/browser-only/messaging/frontend-only-service-connection-provider.js.map +1 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.d.ts +3 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.d.ts.map +1 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.js +48 -0
- package/lib/browser-only/messaging/messaging-frontend-only-module.js.map +1 -0
- package/lib/browser-only/preload/frontend-only-preload-module.d.ts +4 -0
- package/lib/browser-only/preload/frontend-only-preload-module.d.ts.map +1 -0
- package/lib/browser-only/preload/frontend-only-preload-module.js +52 -0
- package/lib/browser-only/preload/frontend-only-preload-module.js.map +1 -0
- package/lib/common/application-protocol.d.ts +1 -0
- package/lib/common/application-protocol.d.ts.map +1 -1
- package/lib/common/command.js +5 -16
- package/lib/common/command.js.map +1 -1
- package/lib/common/contribution-filter/contribution-filter-registry.js +5 -16
- package/lib/common/contribution-filter/contribution-filter-registry.js.map +1 -1
- package/lib/common/contribution-filter/index.js +4 -13
- package/lib/common/contribution-filter/index.js.map +1 -1
- package/lib/common/disposable.d.ts +37 -0
- package/lib/common/disposable.d.ts.map +1 -1
- package/lib/common/disposable.js +54 -1
- package/lib/common/disposable.js.map +1 -1
- package/lib/common/disposable.spec.js +51 -0
- package/lib/common/disposable.spec.js.map +1 -1
- package/lib/common/encoding-service.js +2 -7
- package/lib/common/encoding-service.js.map +1 -1
- package/lib/common/env-variables/index.js +2 -11
- package/lib/common/env-variables/index.js.map +1 -1
- package/lib/{node → common}/file-uri.d.ts +1 -1
- package/lib/common/file-uri.d.ts.map +1 -0
- package/lib/{node → common}/file-uri.js +2 -2
- package/lib/common/file-uri.js.map +1 -0
- package/lib/common/index.d.ts +1 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +34 -42
- package/lib/common/index.js.map +1 -1
- package/lib/common/logger-protocol.js +2 -7
- package/lib/common/logger-protocol.js.map +1 -1
- package/lib/common/logger-watcher.js +2 -7
- package/lib/common/logger-watcher.js.map +1 -1
- package/lib/common/logger.js +14 -22
- package/lib/common/logger.js.map +1 -1
- package/lib/common/markdown-rendering/index.js +3 -12
- package/lib/common/markdown-rendering/index.js.map +1 -1
- package/lib/common/markdown-rendering/markdown-string.d.ts +5 -2
- package/lib/common/markdown-rendering/markdown-string.d.ts.map +1 -1
- package/lib/common/markdown-rendering/markdown-string.js.map +1 -1
- package/lib/common/menu/composite-menu-node.js +5 -5
- package/lib/common/menu/composite-menu-node.js.map +1 -1
- package/lib/common/menu/composite-menu-node.spec.d.ts +2 -0
- package/lib/common/menu/composite-menu-node.spec.d.ts.map +1 -0
- package/lib/common/menu/composite-menu-node.spec.js +68 -0
- package/lib/common/menu/composite-menu-node.spec.js.map +1 -0
- package/lib/common/menu/index.js +6 -15
- package/lib/common/menu/index.js.map +1 -1
- package/lib/common/menu/menu-adapter.js +7 -15
- package/lib/common/menu/menu-adapter.js.map +1 -1
- package/lib/common/menu/menu-model-registry.d.ts +2 -2
- package/lib/common/menu/menu-model-registry.d.ts.map +1 -1
- package/lib/common/menu/menu-model-registry.js +22 -19
- package/lib/common/menu/menu-model-registry.js.map +1 -1
- package/lib/common/menu/menu.spec.js +28 -1
- package/lib/common/menu/menu.spec.js.map +1 -1
- package/lib/common/message-rpc/msg-pack-extension-manager.d.ts +1 -1
- package/lib/common/message-rpc/msg-pack-extension-manager.js +1 -1
- package/lib/common/message-rpc/rpc-protocol.d.ts +3 -1
- package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -1
- package/lib/common/message-rpc/rpc-protocol.js +19 -1
- package/lib/common/message-rpc/rpc-protocol.js.map +1 -1
- package/lib/common/message-service-protocol.js +2 -7
- package/lib/common/message-service-protocol.js.map +1 -1
- package/lib/common/message-service.js +4 -15
- package/lib/common/message-service.js.map +1 -1
- package/lib/common/messaging/index.js +4 -13
- package/lib/common/messaging/index.js.map +1 -1
- package/lib/common/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/common/messaging/proxy-factory.js +1 -8
- package/lib/common/messaging/proxy-factory.js.map +1 -1
- package/lib/common/nls.js +3 -1
- package/lib/common/nls.js.map +1 -1
- package/lib/common/performance/index.js +4 -13
- package/lib/common/performance/index.js.map +1 -1
- package/lib/common/performance/measurement-protocol.js +5 -13
- package/lib/common/performance/measurement-protocol.js.map +1 -1
- package/lib/common/performance/stopwatch.js +5 -13
- package/lib/common/performance/stopwatch.js.map +1 -1
- package/lib/common/progress-service.js +6 -14
- package/lib/common/progress-service.js.map +1 -1
- package/lib/common/promise-util.spec.js +31 -6
- package/lib/common/promise-util.spec.js.map +1 -1
- package/lib/common/quick-pick-service.d.ts +16 -26
- package/lib/common/quick-pick-service.d.ts.map +1 -1
- package/lib/common/quick-pick-service.js +1 -26
- package/lib/common/quick-pick-service.js.map +1 -1
- package/lib/common/reference.d.ts +55 -0
- package/lib/common/reference.d.ts.map +1 -1
- package/lib/common/reference.js +55 -0
- package/lib/common/reference.js.map +1 -1
- package/lib/common/resource.d.ts +3 -1
- package/lib/common/resource.d.ts.map +1 -1
- package/lib/common/resource.js +8 -19
- package/lib/common/resource.js.map +1 -1
- package/lib/common/selection-service.js +2 -7
- package/lib/common/selection-service.js.map +1 -1
- package/lib/common/test/mock-logger.js +2 -7
- package/lib/common/test/mock-logger.js.map +1 -1
- package/lib/common/test/mock-resource-provider.js +3 -11
- package/lib/common/test/mock-resource-provider.js.map +1 -1
- package/lib/common/theme.d.ts +25 -0
- package/lib/common/theme.d.ts.map +1 -1
- package/lib/common/theme.js.map +1 -1
- package/lib/common/uri.d.ts +1 -0
- package/lib/common/uri.d.ts.map +1 -1
- package/lib/common/uri.js +1 -1
- package/lib/common/uri.js.map +1 -1
- package/lib/common/uuid.d.ts +7 -1
- package/lib/common/uuid.d.ts.map +1 -1
- package/lib/common/uuid.js +17 -58
- package/lib/common/uuid.js.map +1 -1
- package/lib/electron-browser/electron-clipboard-service.js +2 -7
- package/lib/electron-browser/electron-clipboard-service.js.map +1 -1
- package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js +6 -14
- package/lib/electron-browser/keyboard/electron-keyboard-layout-change-notifier.js.map +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js +15 -26
- package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +8 -16
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts +2 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +33 -35
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/messaging/electron-frontend-id-provider.js +2 -7
- package/lib/electron-browser/messaging/electron-frontend-id-provider.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-source.js +2 -7
- package/lib/electron-browser/messaging/electron-ipc-connection-source.js.map +1 -1
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.js +2 -7
- package/lib/electron-browser/messaging/electron-local-ws-connection-source.js.map +1 -1
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.js +3 -3
- package/lib/electron-browser/messaging/electron-messaging-frontend-module.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-source.js +3 -11
- package/lib/electron-browser/messaging/electron-ws-connection-source.js.map +1 -1
- package/lib/electron-browser/window/electron-frontend-application-state.js +2 -7
- package/lib/electron-browser/window/electron-frontend-application-state.js.map +1 -1
- package/lib/electron-browser/window/electron-secondary-window-service.js +2 -7
- package/lib/electron-browser/window/electron-secondary-window-service.js.map +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts +2 -1
- package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-service.js +23 -24
- package/lib/electron-browser/window/electron-window-service.js.map +1 -1
- package/lib/electron-main/electron-api-main.js +4 -12
- package/lib/electron-main/electron-api-main.js.map +1 -1
- package/lib/electron-main/electron-main-application-module.js +2 -2
- package/lib/electron-main/electron-main-application-module.js.map +1 -1
- package/lib/electron-main/electron-main-application.js +16 -24
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/electron-main-window-service-impl.js +4 -12
- package/lib/electron-main/electron-main-window-service-impl.js.map +1 -1
- package/lib/electron-main/electron-security-token-service.js +4 -12
- package/lib/electron-main/electron-security-token-service.js.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.js +10 -18
- package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
- package/lib/electron-main/theia-electron-window.js +13 -21
- package/lib/electron-main/theia-electron-window.js.map +1 -1
- package/lib/electron-node/hosting/electron-ws-origin-validator.js +4 -12
- package/lib/electron-node/hosting/electron-ws-origin-validator.js.map +1 -1
- package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js +2 -7
- package/lib/electron-node/keyboard/electron-keyboard-layout-provider.js.map +1 -1
- package/lib/electron-node/request/electron-backend-request-service.js +2 -7
- package/lib/electron-node/request/electron-backend-request-service.js.map +1 -1
- package/lib/electron-node/token/electron-token-backend-contribution.js +4 -12
- package/lib/electron-node/token/electron-token-backend-contribution.js.map +1 -1
- package/lib/electron-node/token/electron-token-validator.js +6 -14
- package/lib/electron-node/token/electron-token-validator.js.map +1 -1
- package/lib/node/application-server.d.ts +1 -0
- package/lib/node/application-server.d.ts.map +1 -1
- package/lib/node/application-server.js +11 -13
- package/lib/node/application-server.js.map +1 -1
- package/lib/node/backend-application.js +17 -28
- package/lib/node/backend-application.js.map +1 -1
- package/lib/node/backend-remote-service.js +2 -7
- package/lib/node/backend-remote-service.js.map +1 -1
- package/lib/node/cli.js +5 -16
- package/lib/node/cli.js.map +1 -1
- package/lib/node/console-logger-server.js +10 -18
- package/lib/node/console-logger-server.js.map +1 -1
- package/lib/node/console-logger-server.spec.js +6 -14
- package/lib/node/console-logger-server.spec.js.map +1 -1
- package/lib/node/env-variables/env-variables-server.js +4 -12
- package/lib/node/env-variables/env-variables-server.js.map +1 -1
- package/lib/node/env-variables/index.js +2 -11
- package/lib/node/env-variables/index.js.map +1 -1
- package/lib/node/environment-utils.js +2 -7
- package/lib/node/environment-utils.js.map +1 -1
- package/lib/node/file-uri.spec.js +1 -1
- package/lib/node/file-uri.spec.js.map +1 -1
- package/lib/node/filesystem-locking.js +2 -7
- package/lib/node/filesystem-locking.js.map +1 -1
- package/lib/node/hosting/backend-application-hosts.js +6 -14
- package/lib/node/hosting/backend-application-hosts.js.map +1 -1
- package/lib/node/hosting/ws-origin-validator.js +4 -12
- package/lib/node/hosting/ws-origin-validator.js.map +1 -1
- package/lib/node/i18n/localization-contribution.js +6 -14
- package/lib/node/i18n/localization-contribution.js.map +1 -1
- package/lib/node/i18n/localization-provider.js +2 -7
- package/lib/node/i18n/localization-provider.js.map +1 -1
- package/lib/node/i18n/localization-server.js +6 -14
- package/lib/node/i18n/localization-server.js.map +1 -1
- package/lib/node/i18n/theia-localization-contribution.js +2 -7
- package/lib/node/i18n/theia-localization-contribution.js.map +1 -1
- package/lib/node/index.d.ts +1 -1
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +6 -15
- package/lib/node/index.js.map +1 -1
- package/lib/node/key-store-server.js +2 -7
- package/lib/node/key-store-server.js.map +1 -1
- package/lib/node/logger-cli-contribution.js +2 -7
- package/lib/node/logger-cli-contribution.js.map +1 -1
- package/lib/node/messaging/default-messaging-service.js +10 -18
- package/lib/node/messaging/default-messaging-service.js.map +1 -1
- package/lib/node/messaging/index.js +4 -13
- package/lib/node/messaging/index.js.map +1 -1
- package/lib/node/messaging/ipc-connection-provider.js +4 -12
- package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
- package/lib/node/messaging/messaging-listeners.js +4 -12
- package/lib/node/messaging/messaging-listeners.js.map +1 -1
- package/lib/node/messaging/test/test-web-socket-channel.js +3 -11
- package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
- package/lib/node/messaging/websocket-endpoint.js +6 -14
- package/lib/node/messaging/websocket-endpoint.js.map +1 -1
- package/lib/node/messaging/websocket-frontend-connection-service.js +4 -12
- package/lib/node/messaging/websocket-frontend-connection-service.js.map +1 -1
- package/lib/node/os-backend-provider.js +2 -7
- package/lib/node/os-backend-provider.js.map +1 -1
- package/lib/node/performance/index.js +3 -12
- package/lib/node/performance/index.js.map +1 -1
- package/lib/node/performance/node-stopwatch.js +3 -11
- package/lib/node/performance/node-stopwatch.js.map +1 -1
- package/lib/node/process-utils.js +2 -7
- package/lib/node/process-utils.js.map +1 -1
- package/lib/node/request/backend-request-facade.js +4 -12
- package/lib/node/request/backend-request-facade.js.map +1 -1
- package/lib/node/request/proxy-cli-contribution.js +4 -12
- package/lib/node/request/proxy-cli-contribution.js.map +1 -1
- package/lib/node/ws-request-validators.js +4 -12
- package/lib/node/ws-request-validators.js.map +1 -1
- package/package.json +14 -8
- package/src/browser/browser.ts +6 -1
- package/src/browser/common-frontend-contribution.ts +3 -3
- package/src/browser/context-key-service.ts +1 -2
- package/src/browser/context-menu-renderer.ts +0 -4
- package/src/browser/core-preferences.ts +6 -0
- package/src/browser/decorations-service.ts +4 -4
- package/src/browser/frontend-application-module.ts +5 -2
- package/src/browser/icon-registry.ts +1 -10
- package/src/browser/keybinding.ts +3 -0
- package/src/browser/markdown-rendering/markdown-renderer.ts +1 -1
- package/src/browser/save-resource-service.ts +5 -4
- package/src/browser/shell/application-shell.ts +8 -3
- package/src/browser/shell/tab-bar-decorator.ts +36 -6
- package/src/browser/shell/tab-bars.ts +41 -5
- package/src/browser/style/index.css +153 -148
- package/src/browser/style/select-component.css +12 -13
- package/src/browser/style/tabs.css +6 -0
- package/src/browser/tooltip-service.tsx +2 -2
- package/src/browser/tree/index.ts +1 -0
- package/src/browser/tree/test/mock-selectable-tree-model.ts +109 -0
- package/src/browser/tree/tree-model.ts +74 -0
- package/src/browser/tree/tree-preference.ts +50 -0
- package/src/browser/tree/tree-selectable.spec.ts +152 -0
- package/src/browser/tree/tree-widget.tsx +24 -5
- package/src/browser/tree/tree.ts +2 -1
- package/src/browser/widget-manager.ts +25 -0
- package/src/browser/widgets/select-component.tsx +1 -0
- package/src/browser/widgets/widget.ts +8 -0
- package/src/browser/window/window-service.ts +7 -2
- package/src/browser-only/frontend-only-application-module.ts +115 -0
- package/src/browser-only/i18n/i18n-frontend-only-module.ts +37 -0
- package/src/browser-only/logger-frontend-only-module.ts +63 -0
- package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +39 -0
- package/src/browser-only/messaging/messaging-frontend-only-module.ts +42 -0
- package/src/browser-only/preload/frontend-only-preload-module.ts +49 -0
- package/src/common/application-protocol.ts +1 -0
- package/src/common/disposable.spec.ts +66 -1
- package/src/common/disposable.ts +53 -0
- package/src/{node → common}/file-uri.ts +2 -2
- package/src/common/index.ts +1 -0
- package/src/common/markdown-rendering/markdown-string.ts +6 -3
- package/src/common/menu/composite-menu-node.spec.ts +67 -0
- package/src/common/menu/composite-menu-node.ts +5 -5
- package/src/common/menu/menu-model-registry.ts +22 -5
- package/src/common/menu/menu.spec.ts +30 -2
- package/src/common/message-rpc/msg-pack-extension-manager.ts +1 -1
- package/src/common/message-rpc/rpc-protocol.ts +22 -2
- package/src/common/messaging/proxy-factory.ts +1 -8
- package/src/common/nls.ts +3 -1
- package/src/common/promise-util.spec.ts +48 -18
- package/src/common/quick-pick-service.ts +13 -34
- package/src/common/reference.ts +55 -0
- package/src/common/resource.ts +5 -1
- package/src/common/theme.ts +32 -0
- package/src/common/uri.ts +4 -2
- package/src/common/uuid.ts +15 -69
- package/src/electron-browser/menu/electron-menu-contribution.ts +9 -1
- package/src/electron-browser/messaging/electron-messaging-frontend-module.ts +1 -1
- package/src/electron-browser/window/electron-window-service.ts +12 -3
- package/src/electron-main/electron-main-application-module.ts +2 -2
- package/src/electron-main/electron-main-application.ts +1 -1
- package/src/electron-main/theia-electron-window.ts +1 -1
- package/src/node/application-server.ts +8 -1
- package/src/node/env-variables/env-variables-server.ts +1 -1
- package/src/node/file-uri.spec.ts +1 -1
- package/src/node/index.ts +1 -1
- package/lib/node/file-uri.d.ts.map +0 -1
- package/lib/node/file-uri.js.map +0 -1
|
@@ -99,21 +99,41 @@ export interface TreeModel extends Tree, TreeSelectionService, TreeExpansionServ
|
|
|
99
99
|
*/
|
|
100
100
|
navigateBackward(): Promise<void>;
|
|
101
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Selects the previous tree node, regardless of its selection or visibility state.
|
|
104
|
+
*/
|
|
105
|
+
selectPrev(): void;
|
|
106
|
+
|
|
102
107
|
/**
|
|
103
108
|
* Selects the previous node relatively to the currently selected one. This method takes the expansion state of the tree into consideration.
|
|
104
109
|
*/
|
|
105
110
|
selectPrevNode(type?: TreeSelection.SelectionType): void;
|
|
106
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Returns the previous tree node, regardless of its selection or visibility state.
|
|
114
|
+
*/
|
|
115
|
+
getPrevNode(node?: TreeNode): TreeNode | undefined;
|
|
116
|
+
|
|
107
117
|
/**
|
|
108
118
|
* Returns the previous selectable tree node.
|
|
109
119
|
*/
|
|
110
120
|
getPrevSelectableNode(node?: TreeNode): SelectableTreeNode | undefined;
|
|
111
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Selects the next tree node, regardless of its selection or visibility state.
|
|
124
|
+
*/
|
|
125
|
+
selectNext(): void;
|
|
126
|
+
|
|
112
127
|
/**
|
|
113
128
|
* Selects the next node relatively to the currently selected one. This method takes the expansion state of the tree into consideration.
|
|
114
129
|
*/
|
|
115
130
|
selectNextNode(type?: TreeSelection.SelectionType): void;
|
|
116
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Returns the next tree node, regardless of its selection or visibility state.
|
|
134
|
+
*/
|
|
135
|
+
getNextNode(node?: TreeNode): TreeNode | undefined;
|
|
136
|
+
|
|
117
137
|
/**
|
|
118
138
|
* Returns the next selectable tree node.
|
|
119
139
|
*/
|
|
@@ -294,6 +314,11 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
|
|
|
294
314
|
}
|
|
295
315
|
}
|
|
296
316
|
|
|
317
|
+
selectPrev(): void {
|
|
318
|
+
const node = this.getPrevNode();
|
|
319
|
+
this.selectNodeIfSelectable(node);
|
|
320
|
+
}
|
|
321
|
+
|
|
297
322
|
selectPrevNode(type: TreeSelection.SelectionType = TreeSelection.SelectionType.DEFAULT): void {
|
|
298
323
|
const node = this.getPrevSelectableNode();
|
|
299
324
|
if (node) {
|
|
@@ -301,6 +326,11 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
|
|
|
301
326
|
}
|
|
302
327
|
}
|
|
303
328
|
|
|
329
|
+
getPrevNode(node: TreeNode | undefined = this.getFocusedNode()): TreeNode | undefined {
|
|
330
|
+
const iterator = this.createBackwardTreeIterator(node);
|
|
331
|
+
return iterator && this.doGetNode(iterator);
|
|
332
|
+
}
|
|
333
|
+
|
|
304
334
|
getPrevSelectableNode(node: TreeNode | undefined = this.getFocusedNode()): SelectableTreeNode | undefined {
|
|
305
335
|
if (!node) {
|
|
306
336
|
return this.getNextSelectableNode(this.root);
|
|
@@ -309,6 +339,11 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
|
|
|
309
339
|
return iterator && this.doGetNextNode(iterator, this.isVisibleSelectableNode.bind(this));
|
|
310
340
|
}
|
|
311
341
|
|
|
342
|
+
selectNext(): void {
|
|
343
|
+
const node = this.getNextNode();
|
|
344
|
+
this.selectNodeIfSelectable(node);
|
|
345
|
+
}
|
|
346
|
+
|
|
312
347
|
selectNextNode(type: TreeSelection.SelectionType = TreeSelection.SelectionType.DEFAULT): void {
|
|
313
348
|
const node = this.getNextSelectableNode();
|
|
314
349
|
if (node) {
|
|
@@ -316,11 +351,28 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
|
|
|
316
351
|
}
|
|
317
352
|
}
|
|
318
353
|
|
|
354
|
+
getNextNode(node: TreeNode | undefined = this.getFocusedNode()): TreeNode | undefined {
|
|
355
|
+
const iterator = this.createTreeIterator(node);
|
|
356
|
+
return iterator && this.doGetNode(iterator);
|
|
357
|
+
}
|
|
358
|
+
|
|
319
359
|
getNextSelectableNode(node: TreeNode | undefined = this.getFocusedNode() ?? this.root): SelectableTreeNode | undefined {
|
|
320
360
|
const iterator = this.createIterator(node);
|
|
321
361
|
return iterator && this.doGetNextNode(iterator, this.isVisibleSelectableNode.bind(this));
|
|
322
362
|
}
|
|
323
363
|
|
|
364
|
+
protected selectNodeIfSelectable(node: TreeNode | undefined): void {
|
|
365
|
+
if (SelectableTreeNode.is(node)) {
|
|
366
|
+
this.addSelection(node);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
protected doGetNode(iterator: TreeIterator): TreeNode | undefined {
|
|
371
|
+
iterator.next();
|
|
372
|
+
const result = iterator.next();
|
|
373
|
+
return result.done ? undefined : result.value;
|
|
374
|
+
}
|
|
375
|
+
|
|
324
376
|
protected doGetNextNode<T extends TreeNode>(iterator: TreeIterator, criterion: (node: TreeNode) => node is T): T | undefined {
|
|
325
377
|
// Skip the first item. // TODO: clean this up, and skip the first item in a different way without loading everything.
|
|
326
378
|
iterator.next();
|
|
@@ -338,6 +390,17 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
|
|
|
338
390
|
return SelectableTreeNode.isVisible(node);
|
|
339
391
|
}
|
|
340
392
|
|
|
393
|
+
protected createBackwardTreeIterator(node: TreeNode | undefined): TreeIterator | undefined {
|
|
394
|
+
const { filteredNodes } = this.treeSearch;
|
|
395
|
+
if (filteredNodes.length === 0) {
|
|
396
|
+
return node ? new BottomUpTreeIterator(node!, { pruneCollapsed: false }) : undefined;
|
|
397
|
+
}
|
|
398
|
+
if (node && filteredNodes.indexOf(node) === -1) {
|
|
399
|
+
return undefined;
|
|
400
|
+
}
|
|
401
|
+
return Iterators.cycle(filteredNodes.slice().reverse(), node);
|
|
402
|
+
}
|
|
403
|
+
|
|
341
404
|
protected createBackwardIterator(node: TreeNode | undefined): TreeIterator | undefined {
|
|
342
405
|
const { filteredNodes } = this.treeSearch;
|
|
343
406
|
if (filteredNodes.length === 0) {
|
|
@@ -349,6 +412,17 @@ export class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray
|
|
|
349
412
|
return Iterators.cycle(filteredNodes.slice().reverse(), node);
|
|
350
413
|
}
|
|
351
414
|
|
|
415
|
+
protected createTreeIterator(node: TreeNode | undefined): TreeIterator | undefined {
|
|
416
|
+
const { filteredNodes } = this.treeSearch;
|
|
417
|
+
if (filteredNodes.length === 0) {
|
|
418
|
+
return node && new TopDownTreeIterator(node, { pruneCollapsed: false });
|
|
419
|
+
}
|
|
420
|
+
if (node && filteredNodes.indexOf(node) === -1) {
|
|
421
|
+
return undefined;
|
|
422
|
+
}
|
|
423
|
+
return Iterators.cycle(filteredNodes, node);
|
|
424
|
+
}
|
|
425
|
+
|
|
352
426
|
protected createIterator(node: TreeNode | undefined): TreeIterator | undefined {
|
|
353
427
|
const { filteredNodes } = this.treeSearch;
|
|
354
428
|
if (filteredNodes.length === 0) {
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2024 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 } from 'inversify';
|
|
18
|
+
import { PreferenceProxy, PreferenceContribution, PreferenceSchema } from '../preferences';
|
|
19
|
+
import { PreferenceProxyFactory } from '../preferences/injectable-preference-proxy';
|
|
20
|
+
import { nls } from '../../common/nls';
|
|
21
|
+
|
|
22
|
+
export const PREFERENCE_NAME_TREE_INDENT = 'workbench.tree.indent';
|
|
23
|
+
|
|
24
|
+
export const treePreferencesSchema: PreferenceSchema = {
|
|
25
|
+
type: 'object',
|
|
26
|
+
properties: {
|
|
27
|
+
[PREFERENCE_NAME_TREE_INDENT]: {
|
|
28
|
+
description: nls.localizeByDefault('Controls tree indentation in pixels.'),
|
|
29
|
+
type: 'number',
|
|
30
|
+
default: 8,
|
|
31
|
+
minimum: 4,
|
|
32
|
+
maximum: 40
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export class TreeConfiguration {
|
|
38
|
+
[PREFERENCE_NAME_TREE_INDENT]: number;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const TreePreferences = Symbol('treePreferences');
|
|
42
|
+
export type TreePreferences = PreferenceProxy<TreeConfiguration>;
|
|
43
|
+
|
|
44
|
+
export function bindTreePreferences(bind: interfaces.Bind): void {
|
|
45
|
+
bind(TreePreferences).toDynamicValue(ctx => {
|
|
46
|
+
const factory = ctx.container.get<PreferenceProxyFactory>(PreferenceProxyFactory);
|
|
47
|
+
return factory(treePreferencesSchema);
|
|
48
|
+
}).inSingletonScope();
|
|
49
|
+
bind(PreferenceContribution).toConstantValue({ schema: treePreferencesSchema });
|
|
50
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2018 TypeFox and others.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { TreeNode } from './tree';
|
|
18
|
+
import { TreeModel } from './tree-model';
|
|
19
|
+
import { notEmpty } from '../../common/objects';
|
|
20
|
+
import { expect } from 'chai';
|
|
21
|
+
import { createTreeTestContainer } from './test/tree-test-container';
|
|
22
|
+
import { SelectableTreeNode } from './tree-selection';
|
|
23
|
+
import { MockSelectableTreeModel } from './test/mock-selectable-tree-model';
|
|
24
|
+
import { ExpandableTreeNode } from './tree-expansion';
|
|
25
|
+
|
|
26
|
+
describe('Selectable Tree', () => {
|
|
27
|
+
let model: TreeModel;
|
|
28
|
+
function assertNodeRetrieval(method: () => TreeNode | undefined, sequence: string[]): void {
|
|
29
|
+
for (const expectedNodeId of sequence) {
|
|
30
|
+
const actualNode = method();
|
|
31
|
+
const expectedNode = retrieveNode<SelectableTreeNode>(expectedNodeId);
|
|
32
|
+
expect(actualNode?.id).to.be.equal(expectedNode.id);
|
|
33
|
+
model.addSelection(expectedNode);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function assertNodeSelection(method: () => void, sequence: string[]): void {
|
|
37
|
+
for (const expectedNodeId of sequence) {
|
|
38
|
+
method();
|
|
39
|
+
const node = retrieveNode<SelectableTreeNode>(expectedNodeId);
|
|
40
|
+
expect(node.selected).to.be.true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
describe('Get and Set Next Nodes Methods', () => {
|
|
44
|
+
const uncollapsedSelectionOrder = ['1.1', '1.1.1', '1.1.2', '1.2', '1.2.1', '1.2.1.1', '1.2.1.2', '1.2.2', '1.2.3', '1.3'];
|
|
45
|
+
const collapsedSelectionOrder = ['1.1', '1.2', '1.2.1', '1.2.2', '1.2.3', '1.3'];
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
model = createTreeModel();
|
|
48
|
+
model.root = MockSelectableTreeModel.HIERARCHICAL_MOCK_ROOT();
|
|
49
|
+
model.addSelection(retrieveNode<SelectableTreeNode>('1'));
|
|
50
|
+
|
|
51
|
+
});
|
|
52
|
+
it('`getNextNode()` should select each node in sequence (uncollapsed)', done => {
|
|
53
|
+
assertNodeRetrieval(model.getNextNode.bind(model), uncollapsedSelectionOrder);
|
|
54
|
+
done();
|
|
55
|
+
});
|
|
56
|
+
it('`getNextNode()` should select each node in sequence (collapsed)', done => {
|
|
57
|
+
collapseNode('1.1', '1.2.1');
|
|
58
|
+
assertNodeRetrieval(model.getNextNode.bind(model), uncollapsedSelectionOrder);
|
|
59
|
+
done();
|
|
60
|
+
});
|
|
61
|
+
it('`getNextSelectableNode()` should select each node in sequence (uncollapsed)', done => {
|
|
62
|
+
assertNodeRetrieval(model.getNextSelectableNode.bind(model), uncollapsedSelectionOrder);
|
|
63
|
+
done();
|
|
64
|
+
});
|
|
65
|
+
it('`getNextSelectableNode()` should select each node in sequence (collapsed)', done => {
|
|
66
|
+
collapseNode('1.1', '1.2.1');
|
|
67
|
+
assertNodeRetrieval(model.getNextSelectableNode.bind(model), collapsedSelectionOrder);
|
|
68
|
+
done();
|
|
69
|
+
});
|
|
70
|
+
it('`selectNext()` should select each node in sequence (uncollapsed)', done => {
|
|
71
|
+
assertNodeSelection(model.selectNext.bind(model), uncollapsedSelectionOrder);
|
|
72
|
+
done();
|
|
73
|
+
});
|
|
74
|
+
it('`selectNext()` should select each node in sequence (collapsed)', done => {
|
|
75
|
+
collapseNode('1.1', '1.2.1');
|
|
76
|
+
assertNodeSelection(model.selectNext.bind(model), uncollapsedSelectionOrder);
|
|
77
|
+
done();
|
|
78
|
+
});
|
|
79
|
+
it('`selectNextNode()` should select each node in sequence (uncollapsed)', done => {
|
|
80
|
+
assertNodeSelection(model.selectNextNode.bind(model), uncollapsedSelectionOrder);
|
|
81
|
+
done();
|
|
82
|
+
});
|
|
83
|
+
it('`selectNextNode()` should select each node in sequence (collapsed)', done => {
|
|
84
|
+
collapseNode('1.1', '1.2.1');
|
|
85
|
+
assertNodeSelection(model.selectNextNode.bind(model), collapsedSelectionOrder);
|
|
86
|
+
done();
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
describe('Get and Set Previous Nodes Methods', () => {
|
|
91
|
+
const uncollapsedSelectionOrder = ['1.2.3', '1.2.2', '1.2.1.2', '1.2.1.1', '1.2.1', '1.2', '1.1.2', '1.1.1', '1.1'];
|
|
92
|
+
const collapsedSelectionOrder = ['1.2.3', '1.2.2', '1.2.1', '1.2', '1.1'];
|
|
93
|
+
beforeEach(() => {
|
|
94
|
+
model = createTreeModel();
|
|
95
|
+
model.root = MockSelectableTreeModel.HIERARCHICAL_MOCK_ROOT();
|
|
96
|
+
model.addSelection(retrieveNode<SelectableTreeNode>('1.3'));
|
|
97
|
+
});
|
|
98
|
+
it('`getPrevNode()` should select each node in reverse sequence (uncollapsed)', done => {
|
|
99
|
+
assertNodeRetrieval(model.getPrevNode.bind(model), uncollapsedSelectionOrder);
|
|
100
|
+
done();
|
|
101
|
+
});
|
|
102
|
+
it('`getPrevNode()` should select each node in reverse sequence (collapsed)', done => {
|
|
103
|
+
collapseNode('1.1', '1.2.1');
|
|
104
|
+
assertNodeRetrieval(model.getPrevNode.bind(model), uncollapsedSelectionOrder);
|
|
105
|
+
done();
|
|
106
|
+
});
|
|
107
|
+
it('`getPrevSelectableNode()` should select each node in reverse sequence (uncollapsed)', done => {
|
|
108
|
+
assertNodeRetrieval(model.getPrevSelectableNode.bind(model), uncollapsedSelectionOrder);
|
|
109
|
+
done();
|
|
110
|
+
});
|
|
111
|
+
it('`getPrevSelectableNode()` should select each node in reverse sequence (collapsed)', done => {
|
|
112
|
+
collapseNode('1.1', '1.2.1');
|
|
113
|
+
assertNodeRetrieval(model.getPrevSelectableNode.bind(model), collapsedSelectionOrder);
|
|
114
|
+
done();
|
|
115
|
+
});
|
|
116
|
+
it('`selectPrev()` should select each node in reverse sequence (uncollapsed)', done => {
|
|
117
|
+
assertNodeSelection(model.selectPrev.bind(model), uncollapsedSelectionOrder);
|
|
118
|
+
done();
|
|
119
|
+
});
|
|
120
|
+
it('`selectPrev()` should select each node in reverse sequence (collapsed)', done => {
|
|
121
|
+
collapseNode('1.1', '1.2.1');
|
|
122
|
+
assertNodeSelection(model.selectPrev.bind(model), uncollapsedSelectionOrder);
|
|
123
|
+
done();
|
|
124
|
+
});
|
|
125
|
+
it('`selectPrevNode()` should select each node in reverse sequence (uncollapsed)', done => {
|
|
126
|
+
assertNodeSelection(model.selectPrevNode.bind(model), uncollapsedSelectionOrder);
|
|
127
|
+
done();
|
|
128
|
+
});
|
|
129
|
+
it('`selectPrevNode()` should select each node in reverse sequence (collapsed)', done => {
|
|
130
|
+
collapseNode('1.1', '1.2.1');
|
|
131
|
+
assertNodeSelection(model.selectPrevNode.bind(model), collapsedSelectionOrder);
|
|
132
|
+
done();
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
const findNode = (id: string) => model.getNode(id);
|
|
137
|
+
function createTreeModel(): TreeModel {
|
|
138
|
+
const container = createTreeTestContainer();
|
|
139
|
+
return container.get(TreeModel);
|
|
140
|
+
}
|
|
141
|
+
function retrieveNode<T extends TreeNode>(id: string): Readonly<T> {
|
|
142
|
+
const readonlyNode: Readonly<T> = model.getNode(id) as T;
|
|
143
|
+
return readonlyNode;
|
|
144
|
+
}
|
|
145
|
+
function collapseNode(...ids: string[]): void {
|
|
146
|
+
ids.map(findNode).filter(notEmpty).filter(ExpandableTreeNode.is).forEach(node => {
|
|
147
|
+
model.collapseNode(node);
|
|
148
|
+
expect(node).to.have.property('expanded', false);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
});
|
|
@@ -43,6 +43,8 @@ import { LabelProvider } from '../label-provider';
|
|
|
43
43
|
import { CorePreferences } from '../core-preferences';
|
|
44
44
|
import { TreeFocusService } from './tree-focus-service';
|
|
45
45
|
import { useEffect } from 'react';
|
|
46
|
+
import { PreferenceService, PreferenceChange } from '../preferences';
|
|
47
|
+
import { PREFERENCE_NAME_TREE_INDENT } from './tree-preference';
|
|
46
48
|
|
|
47
49
|
const debounce = require('lodash.debounce');
|
|
48
50
|
|
|
@@ -73,8 +75,7 @@ export interface TreeProps {
|
|
|
73
75
|
readonly contextMenuPath?: MenuPath;
|
|
74
76
|
|
|
75
77
|
/**
|
|
76
|
-
* The size of the padding (in pixels)
|
|
77
|
-
* the padding for the children will be calculated as `leftPadding * hierarchyDepth` and so on.
|
|
78
|
+
* The size of the padding (in pixels) for the root node of the tree.
|
|
78
79
|
*/
|
|
79
80
|
readonly leftPadding: number;
|
|
80
81
|
|
|
@@ -174,6 +175,9 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
|
|
|
174
175
|
@inject(SelectionService)
|
|
175
176
|
protected readonly selectionService: SelectionService;
|
|
176
177
|
|
|
178
|
+
@inject(PreferenceService)
|
|
179
|
+
protected readonly preferenceService: PreferenceService;
|
|
180
|
+
|
|
177
181
|
@inject(LabelProvider)
|
|
178
182
|
protected readonly labelProvider: LabelProvider;
|
|
179
183
|
|
|
@@ -182,6 +186,8 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
|
|
|
182
186
|
|
|
183
187
|
protected shouldScrollToRow = true;
|
|
184
188
|
|
|
189
|
+
protected treeIndent: number = 8;
|
|
190
|
+
|
|
185
191
|
constructor(
|
|
186
192
|
@inject(TreeProps) readonly props: TreeProps,
|
|
187
193
|
@inject(TreeModel) readonly model: TreeModel,
|
|
@@ -198,6 +204,7 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
|
|
|
198
204
|
|
|
199
205
|
@postConstruct()
|
|
200
206
|
protected init(): void {
|
|
207
|
+
this.treeIndent = this.preferenceService.get(PREFERENCE_NAME_TREE_INDENT, this.treeIndent);
|
|
201
208
|
if (this.props.search) {
|
|
202
209
|
this.searchBox = this.searchBoxFactory({ ...SearchBoxProps.DEFAULT, showButtons: true, showFilter: true });
|
|
203
210
|
this.searchBox.node.addEventListener('focus', () => {
|
|
@@ -264,6 +271,12 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
|
|
|
264
271
|
return;
|
|
265
272
|
}
|
|
266
273
|
}
|
|
274
|
+
}),
|
|
275
|
+
this.preferenceService.onPreferenceChanged((event: PreferenceChange) => {
|
|
276
|
+
if (event.preferenceName === PREFERENCE_NAME_TREE_INDENT) {
|
|
277
|
+
this.treeIndent = event.newValue;
|
|
278
|
+
this.update();
|
|
279
|
+
}
|
|
267
280
|
})
|
|
268
281
|
]);
|
|
269
282
|
setTimeout(() => {
|
|
@@ -1227,12 +1240,15 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
|
|
|
1227
1240
|
|
|
1228
1241
|
/**
|
|
1229
1242
|
* Handle the `space key` keyboard event.
|
|
1230
|
-
* -
|
|
1243
|
+
* - If the element has a checkbox, it will be toggled.
|
|
1244
|
+
* - Otherwise, it should be similar to a single-click action.
|
|
1231
1245
|
* @param event the `space key` keyboard event.
|
|
1232
1246
|
*/
|
|
1233
1247
|
protected handleSpace(event: KeyboardEvent): void {
|
|
1234
1248
|
const { focusedNode } = this.focusService;
|
|
1235
|
-
if (
|
|
1249
|
+
if (focusedNode && focusedNode.checkboxInfo) {
|
|
1250
|
+
this.model.markAsChecked(focusedNode, !focusedNode.checkboxInfo.checked);
|
|
1251
|
+
} else if (!this.props.multiSelect || (!event.ctrlKey && !event.metaKey && !event.shiftKey)) {
|
|
1236
1252
|
this.tapNode(focusedNode);
|
|
1237
1253
|
}
|
|
1238
1254
|
}
|
|
@@ -1497,7 +1513,10 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
|
|
|
1497
1513
|
return this.labelProvider.getLongName(node);
|
|
1498
1514
|
}
|
|
1499
1515
|
protected getDepthPadding(depth: number): number {
|
|
1500
|
-
|
|
1516
|
+
if (depth === 1) {
|
|
1517
|
+
return this.props.leftPadding;
|
|
1518
|
+
}
|
|
1519
|
+
return depth * this.treeIndent;
|
|
1501
1520
|
}
|
|
1502
1521
|
}
|
|
1503
1522
|
export namespace TreeWidget {
|
package/src/browser/tree/tree.ts
CHANGED
|
@@ -397,9 +397,10 @@ export class TreeImpl implements Tree {
|
|
|
397
397
|
|
|
398
398
|
protected async doMarkAsBusy(node: Mutable<TreeNode>, ms: number, token: CancellationToken): Promise<void> {
|
|
399
399
|
try {
|
|
400
|
+
token.onCancellationRequested(() => this.doResetBusy(node));
|
|
400
401
|
await timeout(ms, token);
|
|
402
|
+
if (token.isCancellationRequested) { return; }
|
|
401
403
|
this.doSetBusy(node);
|
|
402
|
-
token.onCancellationRequested(() => this.doResetBusy(node));
|
|
403
404
|
} catch {
|
|
404
405
|
/* no-op */
|
|
405
406
|
}
|
|
@@ -194,6 +194,31 @@ export class WidgetManager {
|
|
|
194
194
|
return widget;
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
+
/**
|
|
198
|
+
* Finds a widget that matches the given test predicate.
|
|
199
|
+
* @param factoryId The widget factory id.
|
|
200
|
+
* @param predicate The test predicate.
|
|
201
|
+
*
|
|
202
|
+
* @returns a promise resolving to the widget if available, else `undefined`.
|
|
203
|
+
*/
|
|
204
|
+
async findWidget<T extends Widget>(factoryId: string, predicate: (options?: any) => boolean): Promise<T | undefined> {
|
|
205
|
+
for (const [key, widget] of this.widgets.entries()) {
|
|
206
|
+
if (this.testPredicate(key, factoryId, predicate)) {
|
|
207
|
+
return widget as T;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
for (const [key, widget] of this.pendingWidgetPromises.entries()) {
|
|
211
|
+
if (this.testPredicate(key, factoryId, predicate)) {
|
|
212
|
+
return widget as T;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
protected testPredicate(key: string, factoryId: string, predicate: (options?: any) => boolean): boolean {
|
|
218
|
+
const constructionOptions = this.fromKey(key);
|
|
219
|
+
return constructionOptions.factoryId === factoryId && predicate(constructionOptions.options);
|
|
220
|
+
}
|
|
221
|
+
|
|
197
222
|
protected doGetWidget<T extends Widget>(key: string): MaybePromise<T> | undefined {
|
|
198
223
|
const pendingWidget = this.widgets.get(key) ?? this.pendingWidgetPromises.get(key);
|
|
199
224
|
if (pendingWidget) {
|
|
@@ -77,6 +77,7 @@ export class SelectComponent extends React.Component<SelectComponentProps, Selec
|
|
|
77
77
|
if (!list) {
|
|
78
78
|
list = document.createElement('div');
|
|
79
79
|
list.id = SELECT_COMPONENT_CONTAINER;
|
|
80
|
+
list.className = 'theia-select-component-container';
|
|
80
81
|
document.body.appendChild(list);
|
|
81
82
|
}
|
|
82
83
|
this.dropdownElement = list;
|
|
@@ -381,12 +381,20 @@ export function pin(title: Title<Widget>): void {
|
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
383
|
|
|
384
|
+
export function isLocked(title: Title<Widget>): boolean {
|
|
385
|
+
return title.className.includes(LOCKED_CLASS);
|
|
386
|
+
}
|
|
387
|
+
|
|
384
388
|
export function lock(title: Title<Widget>): void {
|
|
385
389
|
if (!title.className.includes(LOCKED_CLASS)) {
|
|
386
390
|
title.className += ` ${LOCKED_CLASS}`;
|
|
387
391
|
}
|
|
388
392
|
}
|
|
389
393
|
|
|
394
|
+
export function unlock(title: Title<Widget>): void {
|
|
395
|
+
title.className = title.className.replace(LOCKED_CLASS, '').trim();
|
|
396
|
+
}
|
|
397
|
+
|
|
390
398
|
export function togglePinned(title?: Title<Widget>): void {
|
|
391
399
|
if (title) {
|
|
392
400
|
if (isPinned(title)) {
|
|
@@ -18,6 +18,11 @@ import { StopReason } from '../../common/frontend-application-state';
|
|
|
18
18
|
import { Event } from '../../common/event';
|
|
19
19
|
import { NewWindowOptions, WindowSearchParams } from '../../common/window';
|
|
20
20
|
|
|
21
|
+
export interface WindowReloadOptions {
|
|
22
|
+
search?: WindowSearchParams,
|
|
23
|
+
hash?: string
|
|
24
|
+
}
|
|
25
|
+
|
|
21
26
|
/**
|
|
22
27
|
* Service for opening new browser windows.
|
|
23
28
|
*/
|
|
@@ -35,7 +40,7 @@ export interface WindowService {
|
|
|
35
40
|
* Opens a new default window.
|
|
36
41
|
* - In electron and in the browser it will open the default window without a pre-defined content.
|
|
37
42
|
*/
|
|
38
|
-
openNewDefaultWindow(params?:
|
|
43
|
+
openNewDefaultWindow(params?: WindowReloadOptions): void;
|
|
39
44
|
|
|
40
45
|
/**
|
|
41
46
|
* Fires when the `window` unloads. The unload event is inevitable. On this event, the frontend application can save its state and release resource.
|
|
@@ -64,5 +69,5 @@ export interface WindowService {
|
|
|
64
69
|
/**
|
|
65
70
|
* Reloads the window according to platform.
|
|
66
71
|
*/
|
|
67
|
-
reload(params?:
|
|
72
|
+
reload(params?: WindowReloadOptions): void;
|
|
68
73
|
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2023 EclipseSource 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 { ContainerModule } from 'inversify';
|
|
18
|
+
import { BackendStopwatch, CommandRegistry, Emitter, MeasurementOptions, OS } from '../common';
|
|
19
|
+
import { ApplicationInfo, ApplicationServer, ExtensionInfo } from '../common/application-protocol';
|
|
20
|
+
import { EnvVariable, EnvVariablesServer } from './../common/env-variables';
|
|
21
|
+
import { bindMessageService } from '../browser/frontend-application-bindings';
|
|
22
|
+
import { KeyStoreService } from '../common/key-store';
|
|
23
|
+
import { QuickPickService } from '../common/quick-pick-service';
|
|
24
|
+
import { QuickPickServiceImpl } from '../browser/quick-input';
|
|
25
|
+
import { BackendRequestService, RequestService } from '@theia/request';
|
|
26
|
+
import { ConnectionStatus, ConnectionStatusService } from '../browser/connection-status-service';
|
|
27
|
+
|
|
28
|
+
export { bindMessageService };
|
|
29
|
+
|
|
30
|
+
// is loaded directly after the regular frontend module
|
|
31
|
+
export const frontendOnlyApplicationModule = new ContainerModule((bind, unbind, isBound, rebind) => {
|
|
32
|
+
|
|
33
|
+
if (isBound(CommandRegistry)) {
|
|
34
|
+
rebind(CommandRegistry).toSelf().inSingletonScope();
|
|
35
|
+
} else {
|
|
36
|
+
bind(CommandRegistry).toSelf().inSingletonScope();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const stopwatch: BackendStopwatch = {
|
|
40
|
+
start: async (_name: string, _options?: MeasurementOptions | undefined): Promise<number> => -1,
|
|
41
|
+
stop: async (_measurement: number, _message: string, _messageArgs: unknown[]): Promise<void> => { }
|
|
42
|
+
};
|
|
43
|
+
if (isBound(BackendStopwatch)) {
|
|
44
|
+
rebind(BackendStopwatch).toConstantValue(stopwatch);
|
|
45
|
+
} else {
|
|
46
|
+
bind(BackendStopwatch).toConstantValue(stopwatch);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (isBound(CommandRegistry)) {
|
|
50
|
+
rebind(QuickPickService).to(QuickPickServiceImpl).inSingletonScope();
|
|
51
|
+
} else {
|
|
52
|
+
bind(QuickPickService).to(QuickPickServiceImpl).inSingletonScope();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const mockedApplicationServer: ApplicationServer = {
|
|
56
|
+
getExtensionsInfos: async (): Promise<ExtensionInfo[]> => [],
|
|
57
|
+
getApplicationInfo: async (): Promise<ApplicationInfo | undefined> => undefined,
|
|
58
|
+
getApplicationRoot: async (): Promise<string> => '',
|
|
59
|
+
getBackendOS: async (): Promise<OS.Type> => OS.Type.Linux
|
|
60
|
+
};
|
|
61
|
+
if (isBound(ApplicationServer)) {
|
|
62
|
+
rebind(ApplicationServer).toConstantValue(mockedApplicationServer);
|
|
63
|
+
} else {
|
|
64
|
+
bind(ApplicationServer).toConstantValue(mockedApplicationServer);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const varServer: EnvVariablesServer = {
|
|
68
|
+
getExecPath: async (): Promise<string> => '',
|
|
69
|
+
getVariables: async (): Promise<EnvVariable[]> => [],
|
|
70
|
+
getValue: async (_key: string): Promise<EnvVariable | undefined> => undefined,
|
|
71
|
+
getConfigDirUri: async (): Promise<string> => '',
|
|
72
|
+
getHomeDirUri: async (): Promise<string> => '',
|
|
73
|
+
getDrives: async (): Promise<string[]> => []
|
|
74
|
+
};
|
|
75
|
+
if (isBound(EnvVariablesServer)) {
|
|
76
|
+
rebind(EnvVariablesServer).toConstantValue(varServer);
|
|
77
|
+
} else {
|
|
78
|
+
bind(EnvVariablesServer).toConstantValue(varServer);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const keyStoreService: KeyStoreService = {
|
|
82
|
+
deletePassword: () => Promise.resolve(false),
|
|
83
|
+
findCredentials: () => Promise.resolve([]),
|
|
84
|
+
findPassword: () => Promise.resolve(undefined),
|
|
85
|
+
setPassword: () => Promise.resolve(),
|
|
86
|
+
getPassword: () => Promise.resolve(undefined)
|
|
87
|
+
};
|
|
88
|
+
if (isBound(KeyStoreService)) {
|
|
89
|
+
rebind<KeyStoreService>(KeyStoreService).toConstantValue(keyStoreService);
|
|
90
|
+
} else {
|
|
91
|
+
bind<KeyStoreService>(KeyStoreService).toConstantValue(keyStoreService);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const requestService: RequestService = {
|
|
95
|
+
configure: () => Promise.resolve(),
|
|
96
|
+
request: () => Promise.reject(),
|
|
97
|
+
resolveProxy: () => Promise.resolve(undefined)
|
|
98
|
+
};
|
|
99
|
+
if (isBound(BackendRequestService)) {
|
|
100
|
+
rebind<RequestService>(BackendRequestService).toConstantValue(requestService);
|
|
101
|
+
} else {
|
|
102
|
+
bind<RequestService>(BackendRequestService).toConstantValue(requestService);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const connectionStatusService: ConnectionStatusService = {
|
|
106
|
+
currentStatus: ConnectionStatus.ONLINE,
|
|
107
|
+
onStatusChange: new Emitter<ConnectionStatus>().event
|
|
108
|
+
};
|
|
109
|
+
if (isBound(ConnectionStatusService)) {
|
|
110
|
+
rebind<ConnectionStatusService>(ConnectionStatusService).toConstantValue(connectionStatusService);
|
|
111
|
+
} else {
|
|
112
|
+
bind<ConnectionStatusService>(ConnectionStatusService).toConstantValue(connectionStatusService);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
});
|