@theia/core 1.27.0-next.9 → 1.27.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 -7
- package/i18n/nls.cs.json +52 -6
- package/i18n/nls.de.json +52 -6
- package/i18n/nls.es.json +52 -6
- package/i18n/nls.fr.json +52 -6
- package/i18n/nls.hu.json +55 -9
- package/i18n/nls.it.json +52 -6
- package/i18n/nls.ja.json +52 -6
- package/i18n/nls.json +52 -6
- package/i18n/nls.pl.json +52 -6
- package/i18n/nls.pt-br.json +52 -6
- package/i18n/nls.pt-pt.json +52 -6
- package/i18n/nls.ru.json +52 -6
- package/i18n/nls.zh-cn.json +52 -6
- package/lib/browser/color-application-contribution.d.ts +2 -2
- package/lib/browser/color-application-contribution.d.ts.map +1 -1
- package/lib/browser/color-application-contribution.js +15 -16
- package/lib/browser/color-application-contribution.js.map +1 -1
- package/lib/browser/color-registry.d.ts +0 -4
- package/lib/browser/color-registry.d.ts.map +1 -1
- package/lib/browser/color-registry.js +0 -14
- package/lib/browser/color-registry.js.map +1 -1
- package/lib/browser/common-frontend-contribution.d.ts +4 -0
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +157 -163
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/common-styling-participants.d.ts +28 -0
- package/lib/browser/common-styling-participants.d.ts.map +1 -0
- package/lib/browser/common-styling-participants.js +319 -0
- package/lib/browser/common-styling-participants.js.map +1 -0
- package/lib/browser/connection-status-service.d.ts.map +1 -1
- package/lib/browser/connection-status-service.js +2 -2
- package/lib/browser/connection-status-service.js.map +1 -1
- package/lib/browser/connection-status-service.spec.js +1 -2
- package/lib/browser/connection-status-service.spec.js.map +1 -1
- package/lib/browser/context-menu-renderer.d.ts +1 -5
- package/lib/browser/context-menu-renderer.d.ts.map +1 -1
- package/lib/browser/context-menu-renderer.js +10 -30
- 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/decoration-style.d.ts +1 -0
- package/lib/browser/decoration-style.d.ts.map +1 -1
- package/lib/browser/decoration-style.js +6 -2
- package/lib/browser/decoration-style.js.map +1 -1
- package/lib/browser/frontend-application-bindings.d.ts.map +1 -1
- package/lib/browser/frontend-application-bindings.js +1 -3
- package/lib/browser/frontend-application-bindings.js.map +1 -1
- package/lib/browser/frontend-application-config-provider.d.ts +1 -0
- package/lib/browser/frontend-application-config-provider.d.ts.map +1 -1
- package/lib/browser/frontend-application-config-provider.js +2 -1
- package/lib/browser/frontend-application-config-provider.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +9 -3
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/i18n/i18n-frontend-module.d.ts.map +1 -1
- package/lib/browser/i18n/i18n-frontend-module.js +2 -0
- package/lib/browser/i18n/i18n-frontend-module.js.map +1 -1
- package/lib/browser/i18n/language-quick-pick-service.d.ts +17 -0
- package/lib/browser/i18n/language-quick-pick-service.d.ts.map +1 -0
- package/lib/browser/i18n/language-quick-pick-service.js +142 -0
- package/lib/browser/i18n/language-quick-pick-service.js.map +1 -0
- package/lib/browser/index.d.ts +1 -0
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +1 -0
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/keybinding.d.ts.map +1 -1
- package/lib/browser/keybinding.js +2 -1
- package/lib/browser/keybinding.js.map +1 -1
- package/lib/browser/keybinding.spec.js +18 -21
- package/lib/browser/keybinding.spec.js.map +1 -1
- package/lib/browser/label-provider.d.ts +0 -12
- package/lib/browser/label-provider.d.ts.map +1 -1
- package/lib/browser/label-provider.js +1 -13
- package/lib/browser/label-provider.js.map +1 -1
- package/lib/browser/logger-frontend-module.d.ts.map +1 -1
- package/lib/browser/logger-frontend-module.js +8 -1
- package/lib/browser/logger-frontend-module.js.map +1 -1
- package/lib/browser/messaging/ws-connection-provider.d.ts +5 -4
- package/lib/browser/messaging/ws-connection-provider.d.ts.map +1 -1
- package/lib/browser/messaging/ws-connection-provider.js +30 -23
- package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
- package/lib/browser/preferences/preference-contribution.d.ts +2 -19
- package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
- package/lib/browser/preferences/preference-contribution.js +1 -24
- package/lib/browser/preferences/preference-contribution.js.map +1 -1
- package/lib/browser/preferences/preference-proxy.d.ts +0 -4
- package/lib/browser/preferences/preference-proxy.d.ts.map +1 -1
- package/lib/browser/preferences/preference-proxy.js.map +1 -1
- package/lib/browser/preferences/preference-proxy.spec.js +3 -102
- package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
- package/lib/browser/preferences/preference-schema-provider.spec.js +4 -3
- package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
- package/lib/browser/preferences/preference-service.spec.js +1 -2
- package/lib/browser/preferences/preference-service.spec.js.map +1 -1
- package/lib/browser/preferences/preference-validation-service.d.ts +2 -2
- package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
- package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
- package/lib/browser/preloader.d.ts.map +1 -1
- package/lib/browser/preloader.js +7 -1
- package/lib/browser/preloader.js.map +1 -1
- package/lib/browser/progress-status-bar-item.d.ts +1 -1
- package/lib/browser/progress-status-bar-item.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-command-service.js +2 -2
- package/lib/browser/quick-input/quick-command-service.js.map +1 -1
- package/lib/browser/saveable.d.ts.map +1 -1
- package/lib/browser/saveable.js +5 -4
- package/lib/browser/saveable.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +4 -0
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +42 -36
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.d.ts +2 -0
- package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.js +5 -1
- package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
- package/lib/browser/shell/side-panel-handler.d.ts.map +1 -1
- package/lib/browser/shell/side-panel-handler.js +3 -2
- package/lib/browser/shell/side-panel-handler.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts +4 -2
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/tab-bars.js +12 -4
- package/lib/browser/shell/tab-bars.js.map +1 -1
- package/lib/browser/source-tree/source-tree-widget.js +1 -1
- package/lib/browser/source-tree/source-tree-widget.js.map +1 -1
- package/lib/browser/source-tree/tree-source.d.ts +2 -1
- package/lib/browser/source-tree/tree-source.d.ts.map +1 -1
- package/lib/browser/source-tree/tree-source.js.map +1 -1
- package/lib/browser/styling-service.d.ts +26 -0
- package/lib/browser/styling-service.d.ts.map +1 -0
- package/lib/browser/styling-service.js +76 -0
- package/lib/browser/styling-service.js.map +1 -0
- package/lib/browser/theming.d.ts +4 -8
- package/lib/browser/theming.d.ts.map +1 -1
- package/lib/browser/theming.js +38 -53
- package/lib/browser/theming.js.map +1 -1
- package/lib/browser/tree/search-box.d.ts.map +1 -1
- package/lib/browser/tree/search-box.js +5 -4
- package/lib/browser/tree/search-box.js.map +1 -1
- package/lib/browser/tree/test/tree-test-container.d.ts.map +1 -1
- package/lib/browser/tree/test/tree-test-container.js +2 -0
- package/lib/browser/tree/test/tree-test-container.js.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-model.d.ts.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-model.js +4 -2
- package/lib/browser/tree/tree-compression/compressed-tree-model.js.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js +4 -2
- package/lib/browser/tree/tree-compression/compressed-tree-widget.js.map +1 -1
- package/lib/browser/tree/tree-container.d.ts +2 -0
- package/lib/browser/tree/tree-container.d.ts.map +1 -1
- package/lib/browser/tree/tree-container.js +3 -0
- package/lib/browser/tree/tree-container.js.map +1 -1
- package/lib/browser/tree/tree-focus-service.d.ts +20 -0
- package/lib/browser/tree/tree-focus-service.d.ts.map +1 -0
- package/lib/browser/tree/tree-focus-service.js +62 -0
- package/lib/browser/tree/tree-focus-service.js.map +1 -0
- package/lib/browser/tree/tree-model.d.ts +11 -2
- package/lib/browser/tree/tree-model.d.ts.map +1 -1
- package/lib/browser/tree/tree-model.js +29 -8
- package/lib/browser/tree/tree-model.js.map +1 -1
- package/lib/browser/tree/tree-selection-impl.d.ts +4 -1
- package/lib/browser/tree/tree-selection-impl.d.ts.map +1 -1
- package/lib/browser/tree/tree-selection-impl.js +13 -2
- package/lib/browser/tree/tree-selection-impl.js.map +1 -1
- package/lib/browser/tree/tree-selection-state.d.ts +1 -0
- package/lib/browser/tree/tree-selection-state.d.ts.map +1 -1
- package/lib/browser/tree/tree-selection-state.js +8 -2
- package/lib/browser/tree/tree-selection-state.js.map +1 -1
- package/lib/browser/tree/tree-selection.d.ts +9 -0
- package/lib/browser/tree/tree-selection.d.ts.map +1 -1
- package/lib/browser/tree/tree-selection.js +3 -0
- package/lib/browser/tree/tree-selection.js.map +1 -1
- package/lib/browser/tree/tree-widget-selection.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget-selection.js +9 -1
- package/lib/browser/tree/tree-widget-selection.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts +14 -0
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +80 -40
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/tree/tree.d.ts +2 -1
- package/lib/browser/tree/tree.d.ts.map +1 -1
- package/lib/browser/tree/tree.js +12 -2
- package/lib/browser/tree/tree.js.map +1 -1
- package/lib/browser/view-container.d.ts +9 -4
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js +36 -6
- package/lib/browser/view-container.js.map +1 -1
- package/lib/common/cancellation.d.ts +1 -0
- package/lib/common/cancellation.d.ts.map +1 -1
- package/lib/common/cancellation.js +8 -0
- package/lib/common/cancellation.js.map +1 -1
- package/lib/common/command.d.ts +1 -1
- package/lib/common/command.d.ts.map +1 -1
- package/lib/common/command.js +13 -16
- package/lib/common/command.js.map +1 -1
- package/lib/common/index.d.ts +1 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +1 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/message-rpc/channel.d.ts +106 -0
- package/lib/common/message-rpc/channel.d.ts.map +1 -0
- package/lib/common/message-rpc/channel.js +195 -0
- package/lib/common/message-rpc/channel.js.map +1 -0
- package/lib/common/message-rpc/channel.spec.d.ts +9 -0
- package/lib/common/message-rpc/channel.spec.d.ts.map +1 -0
- package/lib/common/message-rpc/channel.spec.js +80 -0
- package/lib/common/message-rpc/channel.spec.js.map +1 -0
- package/lib/common/message-rpc/index.d.ts +4 -0
- package/lib/common/message-rpc/index.d.ts.map +1 -0
- package/lib/{node/messaging/logger.js → common/message-rpc/index.js} +6 -19
- package/lib/common/message-rpc/index.js.map +1 -0
- package/lib/common/message-rpc/message-buffer.d.ts +50 -0
- package/lib/common/message-rpc/message-buffer.d.ts.map +1 -0
- package/lib/common/message-rpc/message-buffer.js +56 -0
- package/lib/common/message-rpc/message-buffer.js.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.d.ts +171 -0
- package/lib/common/message-rpc/rpc-message-encoder.d.ts.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.js +409 -0
- package/lib/common/message-rpc/rpc-message-encoder.js.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts +2 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.d.ts.map +1 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.js +49 -0
- package/lib/common/message-rpc/rpc-message-encoder.spec.js.map +1 -0
- package/lib/common/message-rpc/rpc-protocol.d.ts +61 -0
- package/lib/common/message-rpc/rpc-protocol.d.ts.map +1 -0
- package/lib/common/message-rpc/rpc-protocol.js +183 -0
- package/lib/common/message-rpc/rpc-protocol.js.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.d.ts +52 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.d.ts.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.js +169 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.js.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts +2 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.d.ts.map +1 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.js +39 -0
- package/lib/common/message-rpc/uint8-array-message-buffer.spec.js.map +1 -0
- package/lib/common/messaging/abstract-connection-provider.d.ts +9 -8
- package/lib/common/messaging/abstract-connection-provider.d.ts.map +1 -1
- package/lib/common/messaging/abstract-connection-provider.js +20 -35
- package/lib/common/messaging/abstract-connection-provider.js.map +1 -1
- package/lib/common/messaging/connection-error-handler.d.ts +1 -2
- package/lib/common/messaging/connection-error-handler.d.ts.map +1 -1
- package/lib/common/messaging/connection-error-handler.js +1 -1
- package/lib/common/messaging/connection-error-handler.js.map +1 -1
- package/lib/common/messaging/handler.d.ts +2 -2
- package/lib/common/messaging/handler.d.ts.map +1 -1
- package/lib/common/messaging/proxy-factory.d.ts +13 -7
- package/lib/common/messaging/proxy-factory.d.ts.map +1 -1
- package/lib/common/messaging/proxy-factory.js +18 -13
- package/lib/common/messaging/proxy-factory.js.map +1 -1
- package/lib/common/messaging/proxy-factory.spec.js +4 -15
- package/lib/common/messaging/proxy-factory.spec.js.map +1 -1
- package/lib/common/messaging/web-socket-channel.d.ts +54 -48
- package/lib/common/messaging/web-socket-channel.d.ts.map +1 -1
- package/lib/common/messaging/web-socket-channel.js +41 -105
- package/lib/common/messaging/web-socket-channel.js.map +1 -1
- package/lib/common/nls.d.ts +2 -0
- package/lib/common/nls.d.ts.map +1 -1
- package/lib/common/nls.js +11 -0
- package/lib/common/nls.js.map +1 -1
- package/lib/common/preferences/preference-schema.d.ts +1 -5
- package/lib/common/preferences/preference-schema.d.ts.map +1 -1
- package/lib/common/preferences/preference-schema.js.map +1 -1
- package/lib/common/promise-util.d.ts +2 -1
- package/lib/common/promise-util.d.ts.map +1 -1
- package/lib/common/promise-util.js +8 -13
- package/lib/common/promise-util.js.map +1 -1
- package/lib/common/resource.d.ts +5 -0
- package/lib/common/resource.d.ts.map +1 -1
- package/lib/common/resource.js +28 -1
- package/lib/common/resource.js.map +1 -1
- package/lib/common/theme.d.ts +3 -2
- package/lib/common/theme.d.ts.map +1 -1
- package/lib/common/theme.js +5 -0
- package/lib/common/theme.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts +2 -2
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.d.ts.map +1 -1
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.js +18 -7
- package/lib/electron-browser/messaging/electron-ipc-connection-provider.js.map +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts +2 -2
- package/lib/electron-browser/messaging/electron-ws-connection-provider.d.ts.map +1 -1
- package/lib/electron-browser/messaging/electron-ws-connection-provider.js +5 -7
- package/lib/electron-browser/messaging/electron-ws-connection-provider.js.map +1 -1
- package/lib/electron-main/event-utils.d.ts +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +37 -9
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.js +83 -68
- package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-service.d.ts +2 -8
- package/lib/electron-main/messaging/electron-messaging-service.d.ts.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-service.js.map +1 -1
- package/lib/node/messaging/binary-message-pipe.d.ts +45 -0
- package/lib/node/messaging/binary-message-pipe.d.ts.map +1 -0
- package/lib/node/messaging/binary-message-pipe.js +152 -0
- package/lib/node/messaging/binary-message-pipe.js.map +1 -0
- package/lib/node/messaging/ipc-bootstrap.js +2 -11
- package/lib/node/messaging/ipc-bootstrap.js.map +1 -1
- package/lib/node/messaging/ipc-channel.d.ts +26 -0
- package/lib/node/messaging/ipc-channel.d.ts.map +1 -0
- package/lib/node/messaging/ipc-channel.js +86 -0
- package/lib/node/messaging/ipc-channel.js.map +1 -0
- package/lib/node/messaging/ipc-connection-provider.d.ts +3 -5
- package/lib/node/messaging/ipc-connection-provider.d.ts.map +1 -1
- package/lib/node/messaging/ipc-connection-provider.js +14 -31
- package/lib/node/messaging/ipc-connection-provider.js.map +1 -1
- package/lib/node/messaging/ipc-protocol.d.ts +2 -2
- package/lib/node/messaging/ipc-protocol.d.ts.map +1 -1
- package/lib/node/messaging/messaging-contribution.d.ts +6 -9
- package/lib/node/messaging/messaging-contribution.d.ts.map +1 -1
- package/lib/node/messaging/messaging-contribution.js +23 -68
- package/lib/node/messaging/messaging-contribution.js.map +1 -1
- package/lib/node/messaging/messaging-service.d.ts +4 -23
- package/lib/node/messaging/messaging-service.d.ts.map +1 -1
- package/lib/node/messaging/messaging-service.js +1 -15
- package/lib/node/messaging/messaging-service.js.map +1 -1
- package/lib/node/messaging/test/test-web-socket-channel.d.ts +4 -2
- package/lib/node/messaging/test/test-web-socket-channel.d.ts.map +1 -1
- package/lib/node/messaging/test/test-web-socket-channel.js +25 -12
- package/lib/node/messaging/test/test-web-socket-channel.js.map +1 -1
- package/lib/node/request/proxy-cli-contribution.js +1 -1
- package/lib/node/request/proxy-cli-contribution.js.map +1 -1
- package/package.json +7 -10
- package/src/browser/color-application-contribution.ts +10 -17
- package/src/browser/color-registry.ts +0 -5
- package/src/browser/common-frontend-contribution.ts +26 -33
- package/src/browser/common-styling-participants.ts +307 -0
- package/src/browser/connection-status-service.spec.ts +1 -4
- package/src/browser/connection-status-service.ts +3 -3
- package/src/browser/context-menu-renderer.ts +13 -29
- package/src/browser/core-preferences.ts +6 -0
- package/src/browser/decoration-style.ts +6 -2
- package/src/browser/frontend-application-bindings.ts +1 -3
- package/src/browser/frontend-application-config-provider.ts +2 -0
- package/src/browser/frontend-application-module.ts +11 -4
- package/src/browser/i18n/i18n-frontend-module.ts +2 -0
- package/src/browser/i18n/language-quick-pick-service.ts +128 -0
- package/src/browser/index.ts +1 -0
- package/src/browser/keybinding.spec.ts +22 -27
- package/src/browser/keybinding.ts +2 -1
- package/src/browser/label-provider.ts +0 -13
- package/src/browser/logger-frontend-module.ts +8 -1
- package/src/browser/messaging/ws-connection-provider.ts +34 -25
- package/src/browser/preferences/preference-contribution.ts +3 -28
- package/src/browser/preferences/preference-proxy.spec.ts +3 -113
- package/src/browser/preferences/preference-proxy.ts +0 -4
- package/src/browser/preferences/preference-schema-provider.spec.ts +1 -4
- package/src/browser/preferences/preference-service.spec.ts +1 -5
- package/src/browser/preferences/preference-validation-service.spec.ts +2 -2
- package/src/browser/preferences/preference-validation-service.ts +2 -2
- package/src/browser/preloader.ts +9 -2
- package/src/browser/progress-status-bar-item.ts +1 -1
- package/src/browser/quick-input/quick-command-service.ts +3 -3
- package/src/browser/saveable.ts +5 -4
- package/src/browser/shell/application-shell.ts +42 -35
- package/src/browser/shell/shell-layout-restorer.ts +4 -6
- package/src/browser/shell/side-panel-handler.ts +3 -2
- package/src/browser/shell/tab-bars.ts +14 -4
- package/src/browser/source-tree/source-tree-widget.tsx +1 -1
- package/src/browser/source-tree/tree-source.ts +2 -1
- package/src/browser/style/breadcrumbs.css +0 -1
- package/src/browser/style/index.css +66 -29
- package/src/browser/style/menus.css +4 -2
- package/src/browser/style/select-component.css +2 -0
- package/src/browser/style/sidepanel.css +11 -25
- package/src/browser/style/status-bar.css +8 -17
- package/src/browser/style/tabs.css +0 -16
- package/src/browser/style/tooltip.css +3 -3
- package/src/browser/style/tree.css +27 -11
- package/src/browser/style/view-container.css +4 -0
- package/src/browser/styling-service.ts +76 -0
- package/src/browser/theming.ts +18 -45
- package/src/browser/tree/search-box.ts +5 -4
- package/src/browser/tree/test/tree-test-container.ts +2 -0
- package/src/browser/tree/tree-compression/compressed-tree-model.ts +8 -2
- package/src/browser/tree/tree-compression/compressed-tree-widget.tsx +4 -2
- package/src/browser/tree/tree-container.ts +4 -0
- package/src/browser/tree/tree-focus-service.ts +55 -0
- package/src/browser/tree/tree-model.ts +32 -8
- package/src/browser/tree/tree-selection-impl.ts +13 -4
- package/src/browser/tree/tree-selection-state.ts +7 -2
- package/src/browser/tree/tree-selection.ts +10 -0
- package/src/browser/tree/tree-widget-selection.ts +10 -1
- package/src/browser/tree/tree-widget.tsx +83 -43
- package/src/browser/tree/tree.ts +8 -2
- package/src/browser/view-container.ts +41 -4
- package/src/common/cancellation.ts +8 -0
- package/src/common/command.ts +14 -16
- package/src/common/index.ts +1 -0
- package/src/common/message-rpc/channel.spec.ts +88 -0
- package/src/common/message-rpc/channel.ts +260 -0
- package/src/{node/messaging/logger.ts → common/message-rpc/index.ts} +4 -23
- package/src/common/message-rpc/message-buffer.ts +99 -0
- package/src/common/message-rpc/rpc-message-encoder.spec.ts +55 -0
- package/src/common/message-rpc/rpc-message-encoder.ts +552 -0
- package/src/common/message-rpc/rpc-protocol.ts +217 -0
- package/src/common/message-rpc/uint8-array-message-buffer.spec.ts +41 -0
- package/src/common/message-rpc/uint8-array-message-buffer.ts +206 -0
- package/src/common/messaging/abstract-connection-provider.ts +28 -37
- package/src/common/messaging/connection-error-handler.ts +1 -2
- package/src/common/messaging/handler.ts +2 -2
- package/src/common/messaging/proxy-factory.spec.ts +4 -17
- package/src/common/messaging/proxy-factory.ts +27 -16
- package/src/common/messaging/web-socket-channel.ts +79 -135
- package/src/common/nls.ts +11 -0
- package/src/common/preferences/preference-schema.ts +1 -6
- package/src/common/promise-util.ts +13 -14
- package/src/common/resource.ts +29 -2
- package/src/common/theme.ts +6 -2
- package/src/electron-browser/messaging/electron-ipc-connection-provider.ts +21 -7
- package/src/electron-browser/messaging/electron-ws-connection-provider.ts +5 -8
- package/src/electron-main/messaging/electron-messaging-contribution.ts +87 -65
- package/src/electron-main/messaging/electron-messaging-service.ts +2 -8
- package/src/node/messaging/binary-message-pipe.ts +168 -0
- package/src/node/messaging/ipc-bootstrap.ts +3 -11
- package/src/node/messaging/ipc-channel.ts +97 -0
- package/src/node/messaging/ipc-connection-provider.ts +18 -35
- package/src/node/messaging/ipc-protocol.ts +2 -2
- package/src/node/messaging/messaging-contribution.ts +29 -74
- package/src/node/messaging/messaging-service.ts +4 -31
- package/src/node/messaging/test/test-web-socket-channel.ts +26 -17
- package/src/node/request/proxy-cli-contribution.ts +1 -1
- package/lib/browser/preferences/validated-preference-proxy.d.ts +0 -21
- package/lib/browser/preferences/validated-preference-proxy.d.ts.map +0 -1
- package/lib/browser/preferences/validated-preference-proxy.js +0 -118
- package/lib/browser/preferences/validated-preference-proxy.js.map +0 -1
- package/lib/node/messaging/logger.d.ts +0 -8
- package/lib/node/messaging/logger.d.ts.map +0 -1
- package/lib/node/messaging/logger.js.map +0 -1
- package/shared/vscode-ws-jsonrpc/index.d.ts +0 -1
- package/shared/vscode-ws-jsonrpc/index.js +0 -1
- package/src/browser/preferences/validated-preference-proxy.ts +0 -111
- package/src/browser/style/variables-bright.useable.css +0 -93
- package/src/browser/style/variables-dark.useable.css +0 -93
|
@@ -31,7 +31,6 @@ import { PreferenceScope } from './preference-scope';
|
|
|
31
31
|
import { PreferenceProvider } from './preference-provider';
|
|
32
32
|
import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
|
|
33
33
|
import { PreferenceProxyOptions, PreferenceProxy, PreferenceChangeEvent, createPreferenceProxy } from './preference-proxy';
|
|
34
|
-
import { ApplicationProps } from '@theia/application-package/lib/application-props';
|
|
35
34
|
import { PreferenceProxyFactory } from './injectable-preference-proxy';
|
|
36
35
|
import { waitForEvent } from '../../common/promise-util';
|
|
37
36
|
|
|
@@ -43,8 +42,6 @@ process.on('unhandledRejection', (reason, promise) => {
|
|
|
43
42
|
});
|
|
44
43
|
|
|
45
44
|
import { expect } from 'chai';
|
|
46
|
-
import { PreferenceValidationService } from './preference-validation-service';
|
|
47
|
-
import { JSONValue } from '@phosphor/coreutils';
|
|
48
45
|
let testContainer: Container;
|
|
49
46
|
|
|
50
47
|
function createTestContainer(): Container {
|
|
@@ -57,14 +54,10 @@ function createTestContainer(): Container {
|
|
|
57
54
|
describe('Preference Proxy', () => {
|
|
58
55
|
let prefService: PreferenceServiceImpl;
|
|
59
56
|
let prefSchema: PreferenceSchemaProvider;
|
|
60
|
-
let validator: PreferenceValidationService;
|
|
61
57
|
|
|
62
58
|
before(() => {
|
|
63
59
|
disableJSDOM = enableJSDOM();
|
|
64
|
-
FrontendApplicationConfigProvider.set({
|
|
65
|
-
...ApplicationProps.DEFAULT.frontend.config,
|
|
66
|
-
'applicationName': 'test'
|
|
67
|
-
});
|
|
60
|
+
FrontendApplicationConfigProvider.set({});
|
|
68
61
|
});
|
|
69
62
|
|
|
70
63
|
after(() => {
|
|
@@ -75,7 +68,6 @@ describe('Preference Proxy', () => {
|
|
|
75
68
|
testContainer = createTestContainer();
|
|
76
69
|
prefSchema = testContainer.get(PreferenceSchemaProvider);
|
|
77
70
|
prefService = testContainer.get<PreferenceService>(PreferenceService) as PreferenceServiceImpl;
|
|
78
|
-
validator = testContainer.get(PreferenceValidationService);
|
|
79
71
|
getProvider(PreferenceScope.User).markReady();
|
|
80
72
|
getProvider(PreferenceScope.Workspace).markReady();
|
|
81
73
|
getProvider(PreferenceScope.Folder).markReady();
|
|
@@ -121,13 +113,13 @@ describe('Preference Proxy', () => {
|
|
|
121
113
|
prefSchema.setSchema(s);
|
|
122
114
|
resolve(s);
|
|
123
115
|
}, 1000));
|
|
124
|
-
const proxy =
|
|
116
|
+
const proxy = testOptions.useFactory
|
|
125
117
|
? testContainer.get<PreferenceProxyFactory>(PreferenceProxyFactory)(promisedSchema, options)
|
|
126
118
|
: createPreferenceProxy(prefService, promisedSchema, options);
|
|
127
119
|
return { proxy, promisedSchema };
|
|
128
120
|
} else {
|
|
129
121
|
prefSchema.setSchema(s);
|
|
130
|
-
const proxy =
|
|
122
|
+
const proxy = testOptions.useFactory
|
|
131
123
|
? testContainer.get<PreferenceProxyFactory>(PreferenceProxyFactory)(s, options)
|
|
132
124
|
: createPreferenceProxy(prefService, s, options);
|
|
133
125
|
return { proxy };
|
|
@@ -275,108 +267,6 @@ describe('Preference Proxy', () => {
|
|
|
275
267
|
expect(changesAffectingTypescript, 'One event should have been fired that does affect typescript.').to.equal(1);
|
|
276
268
|
});
|
|
277
269
|
|
|
278
|
-
if (testOptions.useFactory) {
|
|
279
|
-
async function prepareValidationTest(): Promise<{ proxy: PreferenceProxy<{ [key: string]: unknown }>, validationCallCounter: { calls: number } }> {
|
|
280
|
-
const validationCallCounter = { calls: 0 };
|
|
281
|
-
const originalValidateByName = validator.validateByName.bind(validator);
|
|
282
|
-
function newValidateByName(...args: unknown[]): JSONValue {
|
|
283
|
-
validationCallCounter.calls++;
|
|
284
|
-
return originalValidateByName(...args);
|
|
285
|
-
};
|
|
286
|
-
validator.validateByName = newValidateByName;
|
|
287
|
-
const { proxy, promisedSchema } = getProxy({
|
|
288
|
-
properties: {
|
|
289
|
-
'my.pref': {
|
|
290
|
-
type: 'string',
|
|
291
|
-
defaultValue: 'foo',
|
|
292
|
-
overridable: true,
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}, { style: 'both', validated: true });
|
|
296
|
-
await promisedSchema;
|
|
297
|
-
return { proxy, validationCallCounter };
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
it('Validated proxies always return good values.', async () => {
|
|
301
|
-
const { proxy, validationCallCounter } = await prepareValidationTest();
|
|
302
|
-
let event: PreferenceChangeEvent<{ [key: string]: unknown }> | undefined = undefined;
|
|
303
|
-
proxy.onPreferenceChanged(change => event = change);
|
|
304
|
-
expect(proxy['my.pref']).to.equal('foo', 'Should start with default value.');
|
|
305
|
-
expect(validationCallCounter.calls).to.equal(1, 'Should have validated preference retrieval.');
|
|
306
|
-
expect(proxy.get('my.pref')).to.equal('foo', 'Should have default value for `get`.');
|
|
307
|
-
expect(validationCallCounter.calls).to.equal(1, 'Should have cached first validation.');
|
|
308
|
-
const newValue = 'Also a string';
|
|
309
|
-
await prefService.set('my.pref', newValue, PreferenceScope.User);
|
|
310
|
-
expect(event !== undefined);
|
|
311
|
-
expect(event!.newValue).to.equal(newValue, 'Should accept good value');
|
|
312
|
-
expect(validationCallCounter.calls).to.equal(2, 'Should have validated event value');
|
|
313
|
-
expect(proxy['my.pref']).to.equal(newValue, 'Should return default value on access.');
|
|
314
|
-
expect(proxy.get('my.pref')).to.equal(newValue);
|
|
315
|
-
expect(validationCallCounter.calls).to.equal(2, 'Should have used cached value for retrievals');
|
|
316
|
-
await prefService.set('my.pref', { complete: 'garbage' }, PreferenceScope.User);
|
|
317
|
-
expect(event !== undefined);
|
|
318
|
-
expect(event!.newValue).to.equal('foo', 'Should have fallen back to default.');
|
|
319
|
-
expect(validationCallCounter.calls).to.equal(3, 'Should have validated event');
|
|
320
|
-
expect(proxy['my.pref']).to.equal('foo', 'Should return default value on access.');
|
|
321
|
-
expect(proxy.get('my.pref')).to.equal('foo');
|
|
322
|
-
expect(validationCallCounter.calls).to.equal(3, 'Should have used cached value for retrievals');
|
|
323
|
-
});
|
|
324
|
-
|
|
325
|
-
it('Validated proxies only validate one value if multiple language-override events are emitted for the same change', async () => {
|
|
326
|
-
const { proxy, validationCallCounter } = await prepareValidationTest();
|
|
327
|
-
prefSchema.registerOverrideIdentifier('swift');
|
|
328
|
-
prefSchema.registerOverrideIdentifier('typescript');
|
|
329
|
-
const events: Array<PreferenceChangeEvent<{ [key: string]: unknown }>> = [];
|
|
330
|
-
proxy.onPreferenceChanged(event => events.push(event));
|
|
331
|
-
await prefService.set('my.pref', { complete: 'garbage' }, PreferenceScope.User);
|
|
332
|
-
expect(validationCallCounter.calls, 'Validation should have been performed once.').to.equal(1);
|
|
333
|
-
expect(events).to.have.length(3, 'One event for base, one for each override');
|
|
334
|
-
expect(events.every(event => event.newValue === 'foo'), 'Should have returned the default in case of garbage.');
|
|
335
|
-
});
|
|
336
|
-
|
|
337
|
-
it("Validated proxies don't retain old values for overrides after a change (no emitter).", async () => {
|
|
338
|
-
const { proxy, validationCallCounter } = await prepareValidationTest();
|
|
339
|
-
prefSchema.registerOverrideIdentifier('swift');
|
|
340
|
-
const initialValue = proxy.get({ preferenceName: 'my.pref', overrideIdentifier: 'swift' });
|
|
341
|
-
expect(initialValue).to.equal('foo', 'Proxy should start with default value.');
|
|
342
|
-
expect(validationCallCounter.calls).to.equal(1, 'Retrieval should validate (1).');
|
|
343
|
-
await prefService.set('my.pref', 'bar', PreferenceScope.User);
|
|
344
|
-
expect(proxy.get('my.pref')).to.equal('bar', 'The base should have been updated.');
|
|
345
|
-
expect(validationCallCounter.calls).to.equal(2, 'Retrieval should validate (2).');
|
|
346
|
-
expect(proxy.get({ preferenceName: 'my.pref', overrideIdentifier: 'swift' })).to.equal('bar', 'Proxy should update empty overrides on change.');
|
|
347
|
-
expect(validationCallCounter.calls).to.equal(3, 'Retrieval should validate (3).');
|
|
348
|
-
});
|
|
349
|
-
|
|
350
|
-
// The scenario with a listener differs because the proxy will start caching known valid values when a listener is attached.
|
|
351
|
-
it("Validated proxies don't retain old values for overrides after a change (with emitter)", async () => {
|
|
352
|
-
const { proxy, validationCallCounter } = await prepareValidationTest();
|
|
353
|
-
prefSchema.registerOverrideIdentifier('swift');
|
|
354
|
-
const override = { preferenceName: 'my.pref', overrideIdentifier: 'swift' };
|
|
355
|
-
proxy.onPreferenceChanged; // Initialize the listeners.
|
|
356
|
-
const initialValue = proxy.get(override);
|
|
357
|
-
expect(initialValue).to.equal('foo', 'Proxy should start with default value.');
|
|
358
|
-
expect(validationCallCounter.calls).to.equal(1, 'Retrieval should validate.');
|
|
359
|
-
|
|
360
|
-
await prefService.set('my.pref', 'bar', PreferenceScope.User);
|
|
361
|
-
expect(validationCallCounter.calls).to.equal(2, 'Event should trigger validation (1).');
|
|
362
|
-
expect(proxy.get('my.pref')).to.equal('bar', 'The base should have been updated.');
|
|
363
|
-
expect(proxy.get(override)).to.equal('bar', 'Proxy should update empty overrides on change.');
|
|
364
|
-
expect(validationCallCounter.calls).to.equal(2, 'Subsequent retrievals should not trigger validation. (1)');
|
|
365
|
-
|
|
366
|
-
await prefService.set(prefService.overridePreferenceName(override), 'baz', PreferenceScope.User);
|
|
367
|
-
expect(validationCallCounter.calls).to.equal(3, 'Event should trigger validation (2).');
|
|
368
|
-
expect(proxy.get('my.pref')).to.equal('bar', 'Base should not have been updated.');
|
|
369
|
-
expect(proxy.get(override)).to.equal('baz', 'Override should have been updated');
|
|
370
|
-
expect(validationCallCounter.calls).to.equal(3, 'Subsequent retrievals should not trigger validation. (2)');
|
|
371
|
-
|
|
372
|
-
await prefService.set('my.pref', 'boom', PreferenceScope.User);
|
|
373
|
-
expect(validationCallCounter.calls).to.equal(4, 'Event should trigger validation (3).');
|
|
374
|
-
expect(proxy.get('my.pref')).to.equal('boom', 'Base should have been updated.');
|
|
375
|
-
expect(proxy.get(override)).to.equal('baz', 'Override should not have been updated');
|
|
376
|
-
expect(validationCallCounter.calls).to.equal(4, 'Subsequent retrievals should not trigger validation. (3)');
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
|
|
380
270
|
it('toJSON with deep', async () => {
|
|
381
271
|
const { proxy, promisedSchema } = getProxy({
|
|
382
272
|
properties: {
|
|
@@ -151,10 +151,6 @@ export interface PreferenceProxyOptions {
|
|
|
151
151
|
* Indicates whether the proxy should be disposable. Proxies that are shared between multiple callers should not be disposable.
|
|
152
152
|
*/
|
|
153
153
|
isDisposable?: boolean;
|
|
154
|
-
/**
|
|
155
|
-
* Indicates whether the proxy will validate values before returning them to clients.
|
|
156
|
-
*/
|
|
157
|
-
validated?: boolean;
|
|
158
154
|
}
|
|
159
155
|
|
|
160
156
|
/**
|
|
@@ -23,7 +23,6 @@ import { Container } from 'inversify';
|
|
|
23
23
|
import { bindPreferenceService } from '../frontend-application-bindings';
|
|
24
24
|
import { PreferenceSchemaProperties, PreferenceSchemaProvider } from './preference-contribution';
|
|
25
25
|
import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
|
|
26
|
-
import { ApplicationProps } from '@theia/application-package/lib/application-props';
|
|
27
26
|
|
|
28
27
|
disableJSDOM();
|
|
29
28
|
|
|
@@ -62,9 +61,7 @@ describe('Preference Schema Provider', () => {
|
|
|
62
61
|
before(() => {
|
|
63
62
|
disableJSDOM = enableJSDOM();
|
|
64
63
|
FrontendApplicationConfigProvider.set({
|
|
65
|
-
|
|
66
|
-
'applicationName': 'test',
|
|
67
|
-
'preferences': {
|
|
64
|
+
preferences: {
|
|
68
65
|
'editor.fontSize': 20,
|
|
69
66
|
'[typescript]': { 'editor.fontSize': 24 }
|
|
70
67
|
}
|
|
@@ -31,7 +31,6 @@ import { PreferenceScope } from './preference-scope';
|
|
|
31
31
|
import { PreferenceProvider } from './preference-provider';
|
|
32
32
|
import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
|
|
33
33
|
import { createPreferenceProxy, PreferenceChangeEvent } from './preference-proxy';
|
|
34
|
-
import { ApplicationProps } from '@theia/application-package/lib/application-props';
|
|
35
34
|
|
|
36
35
|
disableJSDOM();
|
|
37
36
|
|
|
@@ -56,10 +55,7 @@ describe('Preference Service', () => {
|
|
|
56
55
|
|
|
57
56
|
before(() => {
|
|
58
57
|
disableJSDOM = enableJSDOM();
|
|
59
|
-
FrontendApplicationConfigProvider.set({
|
|
60
|
-
...ApplicationProps.DEFAULT.frontend.config,
|
|
61
|
-
'applicationName': 'test',
|
|
62
|
-
});
|
|
58
|
+
FrontendApplicationConfigProvider.set({});
|
|
63
59
|
});
|
|
64
60
|
|
|
65
61
|
after(() => {
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
|
|
17
17
|
import { Container } from 'inversify';
|
|
18
18
|
import { PreferenceValidationService } from './preference-validation-service';
|
|
19
|
-
import {
|
|
19
|
+
import { PreferenceItem, PreferenceSchemaProvider } from './preference-contribution';
|
|
20
20
|
import { PreferenceLanguageOverrideService } from './preference-language-override-service';
|
|
21
21
|
import * as assert from 'assert';
|
|
22
22
|
import { JSONValue } from '@phosphor/coreutils';
|
|
23
|
-
import { IJSONSchema } from '
|
|
23
|
+
import { IJSONSchema, JsonType } from '../../common/json-schema';
|
|
24
24
|
|
|
25
25
|
/* eslint-disable no-unused-expressions,no-null/no-null */
|
|
26
26
|
|
|
@@ -14,12 +14,12 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import {
|
|
17
|
+
import { PreferenceItem } from '../../common/preferences/preference-schema';
|
|
18
18
|
import { JSONObject, JSONValue } from '../../../shared/@phosphor/coreutils';
|
|
19
19
|
import { PreferenceSchemaProvider } from './preference-contribution';
|
|
20
20
|
import { PreferenceLanguageOverrideService } from './preference-language-override-service';
|
|
21
21
|
import { inject, injectable } from '../../../shared/inversify';
|
|
22
|
-
import { IJSONSchema } from '../../common/json-schema';
|
|
22
|
+
import { IJSONSchema, JsonType } from '../../common/json-schema';
|
|
23
23
|
import { deepClone, unreachable } from '../../common';
|
|
24
24
|
import { PreferenceProvider } from './preference-provider';
|
|
25
25
|
|
package/src/browser/preloader.ts
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { nls } from '../common/nls';
|
|
18
18
|
import { Endpoint } from './endpoint';
|
|
19
19
|
import { OS } from '../common/os';
|
|
20
|
-
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
20
|
+
import { DEFAULT_BACKGROUND_COLOR_STORAGE_KEY, FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
21
21
|
|
|
22
22
|
function fetchFrom(path: string): Promise<Response> {
|
|
23
23
|
const endpoint = new Endpoint({ path }).getRestUrl().toString();
|
|
@@ -47,9 +47,16 @@ async function loadBackendOS(): Promise<void> {
|
|
|
47
47
|
OS.backend.type = () => osType;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
function initBackground(): void {
|
|
51
|
+
const value = window.localStorage.getItem(DEFAULT_BACKGROUND_COLOR_STORAGE_KEY) || '#1d1d1d';
|
|
52
|
+
const documentElement = document.documentElement;
|
|
53
|
+
documentElement.style.setProperty('--theia-editor-background', value);
|
|
54
|
+
}
|
|
55
|
+
|
|
50
56
|
export async function preload(): Promise<void> {
|
|
51
57
|
await Promise.allSettled([
|
|
52
58
|
loadTranslations(),
|
|
53
|
-
loadBackendOS()
|
|
59
|
+
loadBackendOS(),
|
|
60
|
+
initBackground(),
|
|
54
61
|
]);
|
|
55
62
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import { injectable, inject } from 'inversify';
|
|
18
|
-
import { CancellationToken } from 'vscode-
|
|
18
|
+
import { CancellationToken } from '../../shared/vscode-languageserver-protocol';
|
|
19
19
|
import { ProgressClient, ProgressMessage, ProgressUpdate } from '../common';
|
|
20
20
|
import { StatusBar, StatusBarAlignment } from './status-bar';
|
|
21
21
|
import { Deferred } from '../common/promise-util';
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { inject, injectable } from 'inversify';
|
|
18
18
|
import { KeybindingRegistry } from '../keybinding';
|
|
19
|
-
import { Disposable, Command, CommandRegistry, CancellationToken } from '../../common';
|
|
19
|
+
import { Disposable, Command, CommandRegistry, CancellationToken, nls } from '../../common';
|
|
20
20
|
import { ContextKeyService } from '../context-key-service';
|
|
21
21
|
import { CorePreferences } from '../core-preferences';
|
|
22
22
|
import { QuickAccessContribution, QuickAccessProvider, QuickAccessRegistry } from './quick-access';
|
|
@@ -86,12 +86,12 @@ export class QuickCommandService implements QuickAccessContribution, QuickAccess
|
|
|
86
86
|
const otherItems = filterItems(this.otherItems.slice(), filter);
|
|
87
87
|
|
|
88
88
|
if (recentItems.length > 0) {
|
|
89
|
-
items.push({ type: 'separator', label: 'recently used' }, ...recentItems);
|
|
89
|
+
items.push({ type: 'separator', label: nls.localizeByDefault('recently used') }, ...recentItems);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
if (otherItems.length > 0) {
|
|
93
93
|
if (recentItems.length > 0) {
|
|
94
|
-
items.push({ type: 'separator', label: 'other commands' });
|
|
94
|
+
items.push({ type: 'separator', label: nls.localizeByDefault('other commands') });
|
|
95
95
|
}
|
|
96
96
|
items.push(...otherItems);
|
|
97
97
|
}
|
package/src/browser/saveable.ts
CHANGED
|
@@ -21,6 +21,7 @@ import { MaybePromise } from '../common/types';
|
|
|
21
21
|
import { Key } from './keyboard/keys';
|
|
22
22
|
import { AbstractDialog } from './dialogs';
|
|
23
23
|
import { waitForClosed } from './widgets';
|
|
24
|
+
import { nls } from '../common/nls';
|
|
24
25
|
|
|
25
26
|
export interface Saveable {
|
|
26
27
|
readonly dirty: boolean;
|
|
@@ -290,20 +291,20 @@ export class ShouldSaveDialog extends AbstractDialog<boolean> {
|
|
|
290
291
|
|
|
291
292
|
constructor(widget: Widget) {
|
|
292
293
|
super({
|
|
293
|
-
title:
|
|
294
|
+
title: nls.localizeByDefault('Do you want to save the changes you made to {0}?', widget.title.label || widget.title.caption)
|
|
294
295
|
});
|
|
295
296
|
|
|
296
297
|
const messageNode = document.createElement('div');
|
|
297
|
-
messageNode.textContent = "Your changes will be lost if you don't save them.";
|
|
298
|
+
messageNode.textContent = nls.localizeByDefault("Your changes will be lost if you don't save them.");
|
|
298
299
|
messageNode.setAttribute('style', 'flex: 1 100%; padding-bottom: calc(var(--theia-ui-padding)*3);');
|
|
299
300
|
this.contentNode.appendChild(messageNode);
|
|
300
301
|
this.dontSaveButton = this.appendDontSaveButton();
|
|
301
302
|
this.appendCloseButton();
|
|
302
|
-
this.appendAcceptButton('Save');
|
|
303
|
+
this.appendAcceptButton(nls.localizeByDefault('Save'));
|
|
303
304
|
}
|
|
304
305
|
|
|
305
306
|
protected appendDontSaveButton(): HTMLButtonElement {
|
|
306
|
-
const button = this.createButton("Don't
|
|
307
|
+
const button = this.createButton(nls.localizeByDefault("Don't Save"));
|
|
307
308
|
this.controlPanel.appendChild(button);
|
|
308
309
|
button.classList.add('secondary');
|
|
309
310
|
return button;
|
|
@@ -34,11 +34,12 @@ import { FrontendApplicationStateService } from '../frontend-application-state';
|
|
|
34
34
|
import { TabBarToolbarRegistry, TabBarToolbarFactory } from './tab-bar-toolbar';
|
|
35
35
|
import { ContextKeyService } from '../context-key-service';
|
|
36
36
|
import { Emitter } from '../../common/event';
|
|
37
|
-
import { waitForRevealed, waitForClosed } from '../widgets';
|
|
37
|
+
import { waitForRevealed, waitForClosed, PINNED_CLASS } from '../widgets';
|
|
38
38
|
import { CorePreferences } from '../core-preferences';
|
|
39
39
|
import { BreadcrumbsRendererFactory } from '../breadcrumbs/breadcrumbs-renderer';
|
|
40
40
|
import { Deferred } from '../../common/promise-util';
|
|
41
41
|
import { SaveResourceService } from '../save-resource-service';
|
|
42
|
+
import { nls } from '../../common/nls';
|
|
42
43
|
|
|
43
44
|
/** The class name added to ApplicationShell instances. */
|
|
44
45
|
const APPLICATION_SHELL_CLASS = 'theia-ApplicationShell';
|
|
@@ -622,7 +623,7 @@ export class ApplicationShell extends Widget {
|
|
|
622
623
|
const pinned: boolean[] = [];
|
|
623
624
|
|
|
624
625
|
toArray(this.mainPanel.widgets()).forEach((a, i) => {
|
|
625
|
-
pinned[i] = a.title.className.
|
|
626
|
+
pinned[i] = a.title.className.includes(PINNED_CLASS);
|
|
626
627
|
});
|
|
627
628
|
|
|
628
629
|
return pinned;
|
|
@@ -633,7 +634,7 @@ export class ApplicationShell extends Widget {
|
|
|
633
634
|
const pinned: boolean[] = [];
|
|
634
635
|
|
|
635
636
|
toArray(this.bottomPanel.widgets()).forEach((a, i) => {
|
|
636
|
-
pinned[i] = a.title.className.
|
|
637
|
+
pinned[i] = a.title.className.includes(PINNED_CLASS);
|
|
637
638
|
});
|
|
638
639
|
|
|
639
640
|
return pinned;
|
|
@@ -700,7 +701,7 @@ export class ApplicationShell extends Widget {
|
|
|
700
701
|
if (bottomPanel.pinned && bottomPanel.pinned.length === widgets.length) {
|
|
701
702
|
widgets.forEach((a, i) => {
|
|
702
703
|
if (bottomPanel.pinned![i]) {
|
|
703
|
-
a.title.className +=
|
|
704
|
+
a.title.className += ` ${PINNED_CLASS}`;
|
|
704
705
|
a.title.closable = false;
|
|
705
706
|
}
|
|
706
707
|
});
|
|
@@ -719,7 +720,7 @@ export class ApplicationShell extends Widget {
|
|
|
719
720
|
if (mainPanelPinned && mainPanelPinned.length === widgets.length) {
|
|
720
721
|
widgets.forEach((a, i) => {
|
|
721
722
|
if (mainPanelPinned[i]) {
|
|
722
|
-
a.title.className +=
|
|
723
|
+
a.title.className += ` ${PINNED_CLASS}`;
|
|
723
724
|
a.title.closable = false;
|
|
724
725
|
}
|
|
725
726
|
});
|
|
@@ -795,36 +796,13 @@ export class ApplicationShell extends Widget {
|
|
|
795
796
|
*
|
|
796
797
|
* Widgets added to the top area are not tracked regarding the _current_ and _active_ states.
|
|
797
798
|
*/
|
|
798
|
-
async addWidget(widget: Widget, options
|
|
799
|
+
async addWidget(widget: Widget, options?: Readonly<ApplicationShell.WidgetOptions>): Promise<void> {
|
|
799
800
|
if (!widget.id) {
|
|
800
801
|
console.error('Widgets added to the application shell must have a unique id property.');
|
|
801
802
|
return;
|
|
802
803
|
}
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
if (!ref && (area === 'main' || area === 'bottom')) {
|
|
806
|
-
const tabBar = this.getTabBarFor(area);
|
|
807
|
-
ref = tabBar && tabBar.currentTitle && tabBar.currentTitle.owner || undefined;
|
|
808
|
-
}
|
|
809
|
-
// make sure that ref belongs to area
|
|
810
|
-
area = ref && this.getAreaFor(ref) || area;
|
|
811
|
-
const addOptions: DockPanel.IAddOptions = {};
|
|
812
|
-
if (ApplicationShell.isOpenToSideMode(options.mode)) {
|
|
813
|
-
const areaPanel = area === 'main' ? this.mainPanel : area === 'bottom' ? this.bottomPanel : undefined;
|
|
814
|
-
const sideRef = areaPanel && ref && (options.mode === 'open-to-left' ?
|
|
815
|
-
areaPanel.previousTabBarWidget(ref) :
|
|
816
|
-
areaPanel.nextTabBarWidget(ref));
|
|
817
|
-
if (sideRef) {
|
|
818
|
-
addOptions.ref = sideRef;
|
|
819
|
-
} else {
|
|
820
|
-
addOptions.ref = ref;
|
|
821
|
-
addOptions.mode = options.mode === 'open-to-left' ? 'split-left' : 'split-right';
|
|
822
|
-
}
|
|
823
|
-
} else {
|
|
824
|
-
addOptions.ref = ref;
|
|
825
|
-
addOptions.mode = options.mode;
|
|
826
|
-
}
|
|
827
|
-
const sidePanelOptions: SidePanel.WidgetOptions = { rank: options.rank };
|
|
804
|
+
const { area, addOptions } = this.getInsertionOptions(options);
|
|
805
|
+
const sidePanelOptions: SidePanel.WidgetOptions = { rank: options?.rank };
|
|
828
806
|
switch (area) {
|
|
829
807
|
case 'main':
|
|
830
808
|
this.mainPanel.addWidget(widget, addOptions);
|
|
@@ -842,13 +820,41 @@ export class ApplicationShell extends Widget {
|
|
|
842
820
|
this.rightPanelHandler.addWidget(widget, sidePanelOptions);
|
|
843
821
|
break;
|
|
844
822
|
default:
|
|
845
|
-
throw new Error('Unexpected area: ' + options
|
|
823
|
+
throw new Error('Unexpected area: ' + options?.area);
|
|
846
824
|
}
|
|
847
825
|
if (area !== 'top') {
|
|
848
826
|
this.track(widget);
|
|
849
827
|
}
|
|
850
828
|
}
|
|
851
829
|
|
|
830
|
+
getInsertionOptions(options?: Readonly<ApplicationShell.WidgetOptions>): { area: string; addOptions: DockLayout.IAddOptions; } {
|
|
831
|
+
let ref: Widget | undefined = options?.ref;
|
|
832
|
+
let area: ApplicationShell.Area = options?.area || 'main';
|
|
833
|
+
if (!ref && (area === 'main' || area === 'bottom')) {
|
|
834
|
+
const tabBar = this.getTabBarFor(area);
|
|
835
|
+
ref = tabBar && tabBar.currentTitle && tabBar.currentTitle.owner || undefined;
|
|
836
|
+
}
|
|
837
|
+
// make sure that ref belongs to area
|
|
838
|
+
area = ref && this.getAreaFor(ref) || area;
|
|
839
|
+
const addOptions: DockPanel.IAddOptions = {};
|
|
840
|
+
if (ApplicationShell.isOpenToSideMode(options?.mode)) {
|
|
841
|
+
const areaPanel = area === 'main' ? this.mainPanel : area === 'bottom' ? this.bottomPanel : undefined;
|
|
842
|
+
const sideRef = areaPanel && ref && (options?.mode === 'open-to-left' ?
|
|
843
|
+
areaPanel.previousTabBarWidget(ref) :
|
|
844
|
+
areaPanel.nextTabBarWidget(ref));
|
|
845
|
+
if (sideRef) {
|
|
846
|
+
addOptions.ref = sideRef;
|
|
847
|
+
} else {
|
|
848
|
+
addOptions.ref = ref;
|
|
849
|
+
addOptions.mode = options?.mode === 'open-to-left' ? 'split-left' : 'split-right';
|
|
850
|
+
}
|
|
851
|
+
} else {
|
|
852
|
+
addOptions.ref = ref;
|
|
853
|
+
addOptions.mode = options?.mode;
|
|
854
|
+
}
|
|
855
|
+
return { area, addOptions };
|
|
856
|
+
}
|
|
857
|
+
|
|
852
858
|
/**
|
|
853
859
|
* The widgets contained in the given shell area.
|
|
854
860
|
*/
|
|
@@ -1423,14 +1429,15 @@ export class ApplicationShell extends Widget {
|
|
|
1423
1429
|
if (this.bottomPanel.isEmpty) {
|
|
1424
1430
|
this.statusBar.removeElement(BOTTOM_PANEL_TOGGLE_ID);
|
|
1425
1431
|
} else {
|
|
1432
|
+
const label = nls.localize('theia/core/common/collapseBottomPanel', 'Toggle Bottom Panel');
|
|
1426
1433
|
const element: StatusBarEntry = {
|
|
1427
|
-
name:
|
|
1434
|
+
name: label,
|
|
1428
1435
|
text: '$(codicon-window)',
|
|
1429
1436
|
alignment: StatusBarAlignment.RIGHT,
|
|
1430
|
-
tooltip:
|
|
1437
|
+
tooltip: label,
|
|
1431
1438
|
command: 'core.toggle.bottom.panel',
|
|
1432
1439
|
accessibilityInformation: {
|
|
1433
|
-
label:
|
|
1440
|
+
label: label,
|
|
1434
1441
|
role: 'button'
|
|
1435
1442
|
},
|
|
1436
1443
|
priority: -1000
|
|
@@ -123,11 +123,9 @@ export class ShellLayoutRestorer implements CommandContribution {
|
|
|
123
123
|
protected storageKey = 'layout';
|
|
124
124
|
protected shouldStoreLayout: boolean = true;
|
|
125
125
|
|
|
126
|
-
@inject(ContributionProvider) @named(ApplicationShellLayoutMigration)
|
|
127
|
-
protected readonly
|
|
128
|
-
|
|
129
|
-
@inject(WindowService)
|
|
130
|
-
protected readonly windowService: WindowService;
|
|
126
|
+
@inject(ContributionProvider) @named(ApplicationShellLayoutMigration) protected readonly migrations: ContributionProvider<ApplicationShellLayoutMigration>;
|
|
127
|
+
@inject(WindowService) protected readonly windowService: WindowService;
|
|
128
|
+
@inject(ThemeService) protected readonly themeService: ThemeService;
|
|
131
129
|
|
|
132
130
|
constructor(
|
|
133
131
|
@inject(WidgetManager) protected widgetManager: WidgetManager,
|
|
@@ -145,7 +143,7 @@ export class ShellLayoutRestorer implements CommandContribution {
|
|
|
145
143
|
this.logger.info('>>> Resetting layout...');
|
|
146
144
|
this.shouldStoreLayout = false;
|
|
147
145
|
this.storageService.setData(this.storageKey, undefined);
|
|
148
|
-
|
|
146
|
+
this.themeService.reset();
|
|
149
147
|
this.logger.info('<<< The layout has been successfully reset.');
|
|
150
148
|
this.windowService.reload();
|
|
151
149
|
}
|
|
@@ -33,6 +33,7 @@ import { ContextMenuRenderer } from '../context-menu-renderer';
|
|
|
33
33
|
import { MenuPath } from '../../common/menu';
|
|
34
34
|
import { SidebarBottomMenuWidget } from './sidebar-bottom-menu-widget';
|
|
35
35
|
import { SidebarTopMenuWidget } from './sidebar-top-menu-widget';
|
|
36
|
+
import { PINNED_CLASS } from '../widgets';
|
|
36
37
|
|
|
37
38
|
/** The class name added to the left and right area panels. */
|
|
38
39
|
export const LEFT_RIGHT_AREA_CLASS = 'theia-app-sides';
|
|
@@ -274,7 +275,7 @@ export class SidePanelHandler {
|
|
|
274
275
|
widget: title.owner,
|
|
275
276
|
rank: SidePanelHandler.rankProperty.get(title.owner),
|
|
276
277
|
expanded: title === currentTitle,
|
|
277
|
-
pinned: title.className.
|
|
278
|
+
pinned: title.className.includes(PINNED_CLASS)
|
|
278
279
|
}));
|
|
279
280
|
// eslint-disable-next-line no-null/no-null
|
|
280
281
|
const size = currentTitle !== null ? this.getPanelSize() : this.state.lastPanelSize;
|
|
@@ -299,7 +300,7 @@ export class SidePanelHandler {
|
|
|
299
300
|
currentTitle = widget.title;
|
|
300
301
|
}
|
|
301
302
|
if (pinned) {
|
|
302
|
-
widget.title.className +=
|
|
303
|
+
widget.title.className += ` ${PINNED_CLASS}`;
|
|
303
304
|
widget.title.closable = false;
|
|
304
305
|
}
|
|
305
306
|
// Add the widgets directly to the tab bar in the same order as they are stored
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import PerfectScrollbar from 'perfect-scrollbar';
|
|
18
18
|
import { TabBar, Title, Widget } from '@phosphor/widgets';
|
|
19
19
|
import { VirtualElement, h, VirtualDOM, ElementInlineStyle } from '@phosphor/virtualdom';
|
|
20
|
-
import { Disposable, DisposableCollection, MenuPath, notEmpty, SelectionService, CommandService } from '../../common';
|
|
20
|
+
import { Disposable, DisposableCollection, MenuPath, notEmpty, SelectionService, CommandService, nls } from '../../common';
|
|
21
21
|
import { ContextMenuRenderer } from '../context-menu-renderer';
|
|
22
22
|
import { Signal, Slot } from '@phosphor/signaling';
|
|
23
23
|
import { Message, MessageLoop } from '@phosphor/messaging';
|
|
@@ -32,6 +32,7 @@ import { BreadcrumbsRenderer, BreadcrumbsRendererFactory } from '../breadcrumbs/
|
|
|
32
32
|
import { NavigatableWidget } from '../navigatable-types';
|
|
33
33
|
import { IDragEvent } from '@phosphor/dragdrop';
|
|
34
34
|
import { PINNED_CLASS } from '../widgets/widget';
|
|
35
|
+
import { CorePreferences } from '../core-preferences';
|
|
35
36
|
|
|
36
37
|
/** The class name added to hidden content nodes, which are required to render vertical side bars. */
|
|
37
38
|
const HIDDEN_CONTENT_CLASS = 'theia-TabBar-hidden-content';
|
|
@@ -88,7 +89,8 @@ export class TabBarRenderer extends TabBar.Renderer {
|
|
|
88
89
|
protected readonly decoratorService?: TabBarDecoratorService,
|
|
89
90
|
protected readonly iconThemeService?: IconThemeService,
|
|
90
91
|
protected readonly selectionService?: SelectionService,
|
|
91
|
-
protected readonly commandService?: CommandService
|
|
92
|
+
protected readonly commandService?: CommandService,
|
|
93
|
+
protected readonly corePreferences?: CorePreferences
|
|
92
94
|
) {
|
|
93
95
|
super();
|
|
94
96
|
if (this.decoratorService) {
|
|
@@ -148,6 +150,9 @@ export class TabBarRenderer extends TabBar.Renderer {
|
|
|
148
150
|
const style = this.createTabStyle(data);
|
|
149
151
|
const className = this.createTabClass(data);
|
|
150
152
|
const dataset = this.createTabDataset(data);
|
|
153
|
+
const closeIconTitle = data.title.className.includes(PINNED_CLASS)
|
|
154
|
+
? nls.localizeByDefault('Unpin')
|
|
155
|
+
: nls.localizeByDefault('Close');
|
|
151
156
|
return h.li(
|
|
152
157
|
{
|
|
153
158
|
key, className, id, title: title.caption, style, dataset,
|
|
@@ -166,6 +171,7 @@ export class TabBarRenderer extends TabBar.Renderer {
|
|
|
166
171
|
),
|
|
167
172
|
h.div({
|
|
168
173
|
className: 'p-TabBar-tabCloseIcon action-label',
|
|
174
|
+
title: closeIconTitle,
|
|
169
175
|
onclick: this.handleCloseClickEvent
|
|
170
176
|
})
|
|
171
177
|
);
|
|
@@ -483,6 +489,9 @@ export class TabBarRenderer extends TabBar.Renderer {
|
|
|
483
489
|
};
|
|
484
490
|
|
|
485
491
|
protected handleDblClickEvent = (event: MouseEvent) => {
|
|
492
|
+
if (!this.corePreferences?.get('workbench.tab.maximize')) {
|
|
493
|
+
return;
|
|
494
|
+
}
|
|
486
495
|
if (this.tabBar && event.currentTarget instanceof HTMLElement) {
|
|
487
496
|
const id = event.currentTarget.id;
|
|
488
497
|
// eslint-disable-next-line no-null/no-null
|
|
@@ -493,6 +502,7 @@ export class TabBarRenderer extends TabBar.Renderer {
|
|
|
493
502
|
}
|
|
494
503
|
}
|
|
495
504
|
};
|
|
505
|
+
|
|
496
506
|
}
|
|
497
507
|
|
|
498
508
|
/**
|
|
@@ -686,7 +696,7 @@ export class ToolbarAwareTabBar extends ScrollableTabBar {
|
|
|
686
696
|
if (this.breadcrumbsContainer) {
|
|
687
697
|
this.node.appendChild(this.breadcrumbsContainer);
|
|
688
698
|
}
|
|
689
|
-
this.
|
|
699
|
+
this.updateBreadcrumbs();
|
|
690
700
|
}
|
|
691
701
|
super.onAfterAttach(msg);
|
|
692
702
|
}
|
|
@@ -1014,7 +1024,7 @@ export class SideTabBar extends ScrollableTabBar {
|
|
|
1014
1024
|
|
|
1015
1025
|
/**
|
|
1016
1026
|
* Handle `viewContainerPart` drag over,
|
|
1017
|
-
* Defines the appropriate `
|
|
1027
|
+
* Defines the appropriate `dropAction` and opens the tab on which the mouse stands on for more than 800 ms.
|
|
1018
1028
|
*/
|
|
1019
1029
|
protected onDragOver = (event: IDragEvent) => {
|
|
1020
1030
|
const factory = event.mimeData.getData('application/vnd.phosphor.view-container-factory');
|
|
@@ -81,7 +81,7 @@ export class SourceTreeWidget extends TreeWidget {
|
|
|
81
81
|
protected override renderCaption(node: TreeNode): React.ReactNode {
|
|
82
82
|
if (TreeElementNode.is(node)) {
|
|
83
83
|
const classNames = this.createTreeElementNodeClassNames(node);
|
|
84
|
-
return <div className={classNames.join(' ')}>{node.element.render()}</div>;
|
|
84
|
+
return <div className={classNames.join(' ')}>{node.element.render(this)}</div>;
|
|
85
85
|
}
|
|
86
86
|
return undefined;
|
|
87
87
|
}
|