@theia/core 1.18.0-next.de7b81be → 1.20.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/LICENSE +642 -0
- package/README.md +3 -2
- package/lib/browser/about-dialog.d.ts.map +1 -1
- package/lib/browser/about-dialog.js +1 -1
- package/lib/browser/about-dialog.js.map +1 -1
- package/lib/browser/authentication-service.d.ts.map +1 -1
- package/lib/browser/authentication-service.js +1 -1
- package/lib/browser/authentication-service.js.map +1 -1
- package/lib/browser/color-registry.d.ts +3 -69
- package/lib/browser/color-registry.d.ts.map +1 -1
- package/lib/browser/color-registry.js +13 -27
- package/lib/browser/color-registry.js.map +1 -1
- package/lib/browser/common-frontend-contribution.d.ts +7 -0
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +138 -121
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/core-preferences.d.ts +2 -0
- package/lib/browser/core-preferences.d.ts.map +1 -1
- package/lib/browser/core-preferences.js +33 -18
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/dialogs.d.ts +6 -0
- package/lib/browser/dialogs.d.ts.map +1 -1
- package/lib/browser/dialogs.js +10 -3
- package/lib/browser/dialogs.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +3 -0
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/frontend-application.d.ts +6 -0
- package/lib/browser/frontend-application.d.ts.map +1 -1
- package/lib/browser/frontend-application.js +13 -0
- package/lib/browser/frontend-application.js.map +1 -1
- 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.spec.js +5 -0
- package/lib/browser/keybinding.spec.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js +16 -11
- package/lib/browser/keyboard/browser-keyboard-frontend-contribution.js.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.d.ts +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.d.ts.map +1 -1
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js +6 -4
- package/lib/browser/keyboard/browser-keyboard-layout-provider.spec.js.map +1 -1
- package/lib/browser/keyboard/keys.d.ts +2 -251
- package/lib/browser/keyboard/keys.d.ts.map +1 -1
- package/lib/browser/keyboard/keys.js +12 -614
- package/lib/browser/keyboard/keys.js.map +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.d.ts +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.d.ts +3 -0
- package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
- package/lib/browser/menu/browser-menu-plugin.js +24 -4
- package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
- package/lib/browser/messaging/ws-connection-provider.d.ts +3 -3
- package/lib/browser/messaging/ws-connection-provider.d.ts.map +1 -1
- package/lib/browser/messaging/ws-connection-provider.js +14 -4
- package/lib/browser/messaging/ws-connection-provider.js.map +1 -1
- package/lib/browser/{nls.d.ts → nls-loader.d.ts} +1 -6
- package/lib/browser/nls-loader.d.ts.map +1 -0
- package/lib/browser/nls-loader.js +29 -0
- package/lib/browser/nls-loader.js.map +1 -0
- package/lib/browser/progress-status-bar-item.d.ts +1 -2
- package/lib/browser/progress-status-bar-item.d.ts.map +1 -1
- package/lib/browser/progress-status-bar-item.js.map +1 -1
- package/lib/browser/quick-input/quick-command-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-command-frontend-contribution.js +2 -1
- package/lib/browser/quick-input/quick-command-frontend-contribution.js.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/quick-input/quick-input-service.d.ts +1 -201
- package/lib/browser/quick-input/quick-input-service.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-input-service.js +11 -93
- package/lib/browser/quick-input/quick-input-service.js.map +1 -1
- package/lib/browser/quick-input/quick-view-service.d.ts +1 -2
- package/lib/browser/quick-input/quick-view-service.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-view-service.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +3 -1
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +1 -2
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
- package/lib/browser/shell/shell-layout-restorer.js +5 -3
- package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
- package/lib/browser/shell/tab-bar-decorator.d.ts +1 -1
- package/lib/browser/shell/tab-bar-decorator.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-decorator.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar.js +2 -1
- package/lib/browser/shell/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts +14 -1
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/tab-bars.js +99 -7
- package/lib/browser/shell/tab-bars.js.map +1 -1
- package/lib/browser/status-bar/status-bar.d.ts +3 -1
- package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
- package/lib/browser/status-bar/status-bar.js +16 -2
- package/lib/browser/status-bar/status-bar.js.map +1 -1
- package/lib/browser/storage-service.spec.js +1 -1
- package/lib/browser/storage-service.spec.js.map +1 -1
- package/lib/browser/theming.d.ts +5 -14
- package/lib/browser/theming.d.ts.map +1 -1
- package/lib/browser/theming.js +14 -0
- package/lib/browser/theming.js.map +1 -1
- package/lib/browser/tooltip-service.d.ts +52 -0
- package/lib/browser/tooltip-service.d.ts.map +1 -0
- package/lib/browser/tooltip-service.js +89 -0
- package/lib/browser/tooltip-service.js.map +1 -0
- package/lib/browser/tree/tree-model.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +1 -1
- package/lib/browser/view-container.d.ts +55 -14
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js +284 -66
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/window/default-window-service.js +2 -2
- package/lib/browser/window/default-window-service.js.map +1 -1
- package/lib/browser/window/window-service.d.ts +1 -7
- package/lib/browser/window/window-service.d.ts.map +1 -1
- package/lib/browser/window/window-service.js +1 -5
- package/lib/browser/window/window-service.js.map +1 -1
- package/lib/browser/window-contribution.d.ts.map +1 -1
- package/lib/browser/window-contribution.js +2 -2
- package/lib/browser/window-contribution.js.map +1 -1
- package/lib/common/cancellation.d.ts +3 -0
- package/lib/common/cancellation.d.ts.map +1 -1
- package/lib/common/cancellation.js +8 -1
- package/lib/common/cancellation.js.map +1 -1
- package/lib/common/color.d.ts +84 -0
- package/lib/common/color.d.ts.map +1 -0
- package/lib/common/color.js +44 -0
- package/lib/common/color.js.map +1 -0
- package/lib/common/command.d.ts +1 -0
- package/lib/common/command.d.ts.map +1 -1
- package/lib/common/command.js +5 -1
- package/lib/common/command.js.map +1 -1
- package/lib/common/i18n/localization.d.ts +14 -0
- package/lib/common/i18n/localization.d.ts.map +1 -1
- package/lib/common/i18n/localization.js +54 -1
- package/lib/common/i18n/localization.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/keys.d.ts +269 -0
- package/lib/common/keys.d.ts.map +1 -0
- package/lib/common/keys.js +634 -0
- package/lib/common/keys.js.map +1 -0
- package/lib/common/messaging/abstract-connection-provider.d.ts +1 -1
- package/lib/common/messaging/abstract-connection-provider.d.ts.map +1 -1
- package/lib/common/messaging/abstract-connection-provider.js +3 -1
- package/lib/common/messaging/abstract-connection-provider.js.map +1 -1
- package/lib/common/messaging/proxy-factory.js +1 -1
- package/lib/common/messaging/proxy-factory.js.map +1 -1
- package/lib/common/nls.d.ts +28 -0
- package/lib/common/nls.d.ts.map +1 -0
- package/lib/common/nls.js +91 -0
- package/lib/common/nls.js.map +1 -0
- package/lib/common/path.d.ts +6 -0
- package/lib/common/path.d.ts.map +1 -1
- package/lib/common/path.js +16 -4
- package/lib/common/path.js.map +1 -1
- package/lib/common/path.spec.js +12 -0
- package/lib/common/path.spec.js.map +1 -1
- package/lib/common/promise-util.d.ts +2 -2
- package/lib/common/promise-util.d.ts.map +1 -1
- package/lib/common/promise-util.js.map +1 -1
- package/lib/common/quick-pick-service.d.ts +219 -1
- package/lib/common/quick-pick-service.d.ts.map +1 -1
- package/lib/common/quick-pick-service.js +108 -1
- package/lib/common/quick-pick-service.js.map +1 -1
- package/lib/common/theme.d.ts +30 -0
- package/lib/common/theme.d.ts.map +1 -0
- package/lib/common/theme.js +18 -0
- package/lib/common/theme.js.map +1 -0
- package/lib/common/window.d.ts +29 -0
- package/lib/common/window.d.ts.map +1 -0
- package/lib/common/window.js +23 -0
- package/lib/common/window.js.map +1 -0
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts +9 -5
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js +40 -15
- package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +5 -8
- package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-main-menu-factory.js +10 -17
- package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts +15 -7
- package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-menu-contribution.js +112 -42
- package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
- package/lib/electron-browser/window/electron-window-preferences.d.ts +1 -0
- package/lib/electron-browser/window/electron-window-preferences.d.ts.map +1 -1
- package/lib/electron-browser/window/electron-window-preferences.js +12 -1
- package/lib/electron-browser/window/electron-window-preferences.js.map +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts +1 -1
- package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
- package/lib/electron-common/electron-main-window-service.d.ts +1 -1
- package/lib/electron-common/electron-main-window-service.d.ts.map +1 -1
- package/lib/electron-common/messaging/electron-messages.d.ts +20 -0
- package/lib/electron-common/messaging/electron-messages.d.ts.map +1 -0
- package/lib/electron-common/messaging/electron-messages.js +23 -0
- package/lib/electron-common/messaging/electron-messages.js.map +1 -0
- package/lib/electron-main/electron-main-application.d.ts +6 -0
- package/lib/electron-main/electron-main-application.d.ts.map +1 -1
- package/lib/electron-main/electron-main-application.js +80 -23
- package/lib/electron-main/electron-main-application.js.map +1 -1
- package/lib/electron-main/electron-main-window-service-impl.d.ts +1 -1
- package/lib/electron-main/electron-main-window-service-impl.d.ts.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.d.ts.map +1 -1
- package/lib/electron-main/messaging/electron-messaging-contribution.js +1 -2
- package/lib/electron-main/messaging/electron-messaging-contribution.js.map +1 -1
- package/package.json +13 -9
- package/shared/@theia/application-package/lib/api.d.ts +1 -0
- package/shared/@theia/application-package/lib/api.js +1 -0
- package/src/browser/about-dialog.tsx +2 -2
- package/src/browser/authentication-service.ts +1 -2
- package/src/browser/color-registry.ts +3 -85
- package/src/browser/common-frontend-contribution.ts +116 -99
- package/src/browser/core-preferences.ts +37 -18
- package/src/browser/dialogs.ts +10 -3
- package/src/browser/frontend-application-module.ts +4 -0
- package/src/browser/frontend-application.ts +13 -0
- package/src/browser/index.ts +1 -0
- package/src/browser/keybinding.spec.ts +8 -1
- package/src/browser/keyboard/browser-keyboard-frontend-contribution.ts +16 -11
- package/src/browser/keyboard/browser-keyboard-layout-provider.spec.ts +10 -4
- package/src/browser/keyboard/keys.ts +2 -675
- package/src/browser/menu/browser-context-menu-renderer.ts +1 -1
- package/src/browser/menu/browser-menu-plugin.ts +25 -5
- package/src/browser/messaging/ws-connection-provider.ts +13 -4
- package/src/browser/nls-loader.ts +26 -0
- package/src/browser/progress-status-bar-item.ts +1 -2
- package/src/browser/quick-input/quick-command-frontend-contribution.ts +2 -2
- package/src/browser/quick-input/quick-command-service.ts +2 -2
- package/src/browser/quick-input/quick-input-service.ts +1 -278
- package/src/browser/quick-input/quick-view-service.ts +1 -2
- package/src/browser/shell/application-shell.ts +4 -3
- package/src/browser/shell/shell-layout-restorer.ts +4 -3
- package/src/browser/shell/tab-bar-decorator.ts +1 -1
- package/src/browser/shell/tab-bar-toolbar.tsx +3 -1
- package/src/browser/shell/tab-bars.ts +103 -8
- package/src/browser/status-bar/status-bar.tsx +16 -1
- package/src/browser/storage-service.spec.ts +1 -1
- package/src/browser/style/alert-messages.css +1 -0
- package/src/browser/style/index.css +5 -0
- package/src/browser/style/menus.css +10 -1
- package/src/browser/style/sidepanel.css +9 -3
- package/src/browser/style/tabs.css +30 -0
- package/src/browser/style/tooltip.css +28 -0
- package/src/browser/style/view-container.css +9 -9
- package/src/browser/theming.ts +6 -17
- package/src/browser/tooltip-service.tsx +98 -0
- package/src/browser/tree/tree-model.ts +1 -1
- package/src/browser/tree/tree-widget.tsx +1 -1
- package/src/browser/view-container.ts +312 -80
- package/src/browser/window/default-window-service.ts +2 -2
- package/src/browser/window/window-service.ts +1 -9
- package/src/browser/window-contribution.ts +2 -2
- package/src/common/cancellation.ts +7 -0
- package/src/common/color.ts +100 -0
- package/src/common/command.ts +11 -1
- package/src/common/i18n/localization.ts +54 -0
- package/src/common/i18n/nls.metadata.json +20421 -0
- package/src/common/index.ts +1 -0
- package/src/common/keys.ts +693 -0
- package/src/common/messaging/abstract-connection-provider.ts +3 -1
- package/src/common/messaging/proxy-factory.ts +1 -1
- package/src/common/nls.ts +104 -0
- package/src/common/path.spec.ts +15 -0
- package/src/common/path.ts +16 -4
- package/src/common/promise-util.ts +3 -3
- package/src/common/quick-pick-service.ts +299 -3
- package/src/common/theme.ts +32 -0
- package/src/common/window.ts +30 -0
- package/src/electron-browser/menu/electron-context-menu-renderer.ts +38 -16
- package/src/electron-browser/menu/electron-main-menu-factory.ts +10 -15
- package/src/electron-browser/menu/electron-menu-contribution.ts +129 -39
- package/src/electron-browser/menu/electron-menu-style.css +84 -0
- package/src/electron-browser/window/electron-window-preferences.ts +13 -1
- package/src/electron-browser/window/electron-window-service.ts +1 -1
- package/src/electron-common/electron-main-window-service.ts +1 -1
- package/src/electron-common/messaging/electron-messages.ts +20 -0
- package/src/electron-main/electron-main-application.ts +86 -20
- package/src/electron-main/electron-main-window-service-impl.ts +1 -1
- package/src/electron-main/messaging/electron-messaging-contribution.ts +1 -2
- package/lib/browser/nls.d.ts.map +0 -1
- package/lib/browser/nls.js +0 -64
- package/lib/browser/nls.js.map +0 -1
- package/src/browser/nls.ts +0 -65
|
@@ -25,6 +25,7 @@ import { FrontendApplicationStateService } from './frontend-application-state';
|
|
|
25
25
|
import { preventNavigation, parseCssTime, animationFrame } from './browser';
|
|
26
26
|
import { CorePreferences } from './core-preferences';
|
|
27
27
|
import { WindowService } from './window/window-service';
|
|
28
|
+
import { TooltipService } from './tooltip-service';
|
|
28
29
|
|
|
29
30
|
/**
|
|
30
31
|
* Clients can implement to get a callback for contributing widgets to a shell on start.
|
|
@@ -100,6 +101,9 @@ export class FrontendApplication {
|
|
|
100
101
|
@inject(WindowService)
|
|
101
102
|
protected readonly windowsService: WindowService;
|
|
102
103
|
|
|
104
|
+
@inject(TooltipService)
|
|
105
|
+
protected readonly tooltipService: TooltipService;
|
|
106
|
+
|
|
103
107
|
constructor(
|
|
104
108
|
@inject(CommandRegistry) protected readonly commands: CommandRegistry,
|
|
105
109
|
@inject(MenuModelRegistry) protected readonly menus: MenuModelRegistry,
|
|
@@ -130,6 +134,7 @@ export class FrontendApplication {
|
|
|
130
134
|
|
|
131
135
|
const host = await this.getHost();
|
|
132
136
|
this.attachShell(host);
|
|
137
|
+
this.attachTooltip(host);
|
|
133
138
|
await animationFrame();
|
|
134
139
|
this.stateService.state = 'attached_shell';
|
|
135
140
|
|
|
@@ -221,6 +226,13 @@ export class FrontendApplication {
|
|
|
221
226
|
Widget.attach(this.shell, host, ref);
|
|
222
227
|
}
|
|
223
228
|
|
|
229
|
+
/**
|
|
230
|
+
* Attach the tooltip container to the host element.
|
|
231
|
+
*/
|
|
232
|
+
protected attachTooltip(host: HTMLElement): void {
|
|
233
|
+
this.tooltipService.attachTo(host);
|
|
234
|
+
}
|
|
235
|
+
|
|
224
236
|
/**
|
|
225
237
|
* If a startup indicator is present, it is first hidden with the `theia-hidden` CSS class and then
|
|
226
238
|
* removed after a while. The delay until removal is taken from the CSS transition duration.
|
|
@@ -231,6 +243,7 @@ export class FrontendApplication {
|
|
|
231
243
|
return new Promise(resolve => {
|
|
232
244
|
window.requestAnimationFrame(() => {
|
|
233
245
|
startupElem.classList.add('theia-hidden');
|
|
246
|
+
console.log(`Finished loading frontend application after ${(performance.now() / 1000).toFixed(3)} seconds`);
|
|
234
247
|
const preloadStyle = window.getComputedStyle(startupElem);
|
|
235
248
|
const transitionDuration = parseCssTime(preloadStyle.transitionDuration, 0);
|
|
236
249
|
window.setTimeout(() => {
|
package/src/browser/index.ts
CHANGED
|
@@ -36,6 +36,9 @@ import * as os from '../common/os';
|
|
|
36
36
|
import * as chai from 'chai';
|
|
37
37
|
import * as sinon from 'sinon';
|
|
38
38
|
import { Emitter, Event } from '../common/event';
|
|
39
|
+
import { bindPreferenceService } from './frontend-application-bindings';
|
|
40
|
+
import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
|
|
41
|
+
import { ApplicationProps } from '@theia/application-package/lib/';
|
|
39
42
|
|
|
40
43
|
disableJSDOM();
|
|
41
44
|
|
|
@@ -87,6 +90,7 @@ before(async () => {
|
|
|
87
90
|
bind(ContextKeyService).toSelf().inSingletonScope();
|
|
88
91
|
bind(FrontendApplicationStateService).toSelf().inSingletonScope();
|
|
89
92
|
bind(CorePreferences).toConstantValue(<CorePreferences>{});
|
|
93
|
+
bindPreferenceService(bind);
|
|
90
94
|
});
|
|
91
95
|
|
|
92
96
|
testContainer.load(module);
|
|
@@ -102,6 +106,10 @@ describe('keybindings', () => {
|
|
|
102
106
|
|
|
103
107
|
before(() => {
|
|
104
108
|
disableJSDOM = enableJSDOM();
|
|
109
|
+
FrontendApplicationConfigProvider.set({
|
|
110
|
+
...ApplicationProps.DEFAULT.frontend.config,
|
|
111
|
+
'applicationName': 'test'
|
|
112
|
+
});
|
|
105
113
|
});
|
|
106
114
|
|
|
107
115
|
after(() => {
|
|
@@ -537,4 +545,3 @@ function isKeyBindingRegistered(keybinding: Keybinding): boolean {
|
|
|
537
545
|
);
|
|
538
546
|
return keyBindingFound;
|
|
539
547
|
}
|
|
540
|
-
|
|
@@ -19,16 +19,18 @@ import { isOSX } from '../../common/os';
|
|
|
19
19
|
import { CommandContribution, CommandRegistry, Command } from '../../common/command';
|
|
20
20
|
import { BrowserKeyboardLayoutProvider, KeyboardLayoutData } from './browser-keyboard-layout-provider';
|
|
21
21
|
import { QuickPickValue, QuickInputService, QuickPickItem } from '../quick-input';
|
|
22
|
+
import { nls } from '../../common/nls';
|
|
22
23
|
|
|
23
24
|
export namespace KeyboardCommands {
|
|
24
25
|
|
|
25
26
|
const KEYBOARD_CATEGORY = 'Keyboard';
|
|
27
|
+
const KEYBOARD_CATEGORY_KEY = nls.getDefaultKey(KEYBOARD_CATEGORY);
|
|
26
28
|
|
|
27
|
-
export const CHOOSE_KEYBOARD_LAYOUT
|
|
29
|
+
export const CHOOSE_KEYBOARD_LAYOUT = Command.toLocalizedCommand({
|
|
28
30
|
id: 'core.keyboard.choose',
|
|
29
31
|
category: KEYBOARD_CATEGORY,
|
|
30
32
|
label: 'Choose Keyboard Layout',
|
|
31
|
-
};
|
|
33
|
+
}, 'theia/core/keyboard/choose', KEYBOARD_CATEGORY_KEY);
|
|
32
34
|
|
|
33
35
|
}
|
|
34
36
|
|
|
@@ -50,9 +52,9 @@ export class BrowserKeyboardFrontendContribution implements CommandContribution
|
|
|
50
52
|
protected async chooseLayout(): Promise<KeyboardLayoutData | undefined> {
|
|
51
53
|
const current = this.layoutProvider.currentLayoutData;
|
|
52
54
|
const autodetect: QuickPickValue<'autodetect'> = {
|
|
53
|
-
label: 'Auto-detect',
|
|
54
|
-
description: this.layoutProvider.currentLayoutSource !== 'user-choice' ?
|
|
55
|
-
detail: 'Try to detect the keyboard layout from browser information and pressed keys.',
|
|
55
|
+
label: nls.localizeByDefault('Auto-detect'),
|
|
56
|
+
description: this.layoutProvider.currentLayoutSource !== 'user-choice' ? nls.localize('theia/core/keyboard/current', '(current: {0})', current.name) : undefined,
|
|
57
|
+
detail: nls.localize('theia/core/keyboard/tryDetect', 'Try to detect the keyboard layout from browser information and pressed keys.'),
|
|
56
58
|
value: 'autodetect'
|
|
57
59
|
};
|
|
58
60
|
const pcLayouts = this.layoutProvider.allLayoutData
|
|
@@ -64,20 +66,22 @@ export class BrowserKeyboardFrontendContribution implements CommandContribution
|
|
|
64
66
|
.sort((a, b) => compare(a.name, b.name))
|
|
65
67
|
.map(layout => this.toQuickPickValue(layout, current === layout));
|
|
66
68
|
let layouts: Array<QuickPickValue<KeyboardLayoutData | 'autodetect'> | QuickPickItem>;
|
|
69
|
+
const macKeyboards = nls.localize('theia/core/keyboard/mac', 'Mac Keyboards');
|
|
70
|
+
const pcKeyboards = nls.localize('theia/core/keyboard/pc', 'PC Keyboards');
|
|
67
71
|
if (isOSX) {
|
|
68
72
|
layouts = [
|
|
69
73
|
autodetect,
|
|
70
|
-
{ type: 'separator', label:
|
|
71
|
-
{ type: 'separator', label:
|
|
74
|
+
{ type: 'separator', label: macKeyboards }, ...macLayouts,
|
|
75
|
+
{ type: 'separator', label: pcKeyboards }, ...pcLayouts
|
|
72
76
|
];
|
|
73
77
|
} else {
|
|
74
78
|
layouts = [
|
|
75
79
|
autodetect,
|
|
76
|
-
{ type: 'separator', label:
|
|
77
|
-
{ type: 'separator', label:
|
|
80
|
+
{ type: 'separator', label: pcKeyboards }, ...pcLayouts,
|
|
81
|
+
{ type: 'separator', label: macKeyboards }, ...macLayouts
|
|
78
82
|
];
|
|
79
83
|
}
|
|
80
|
-
const selectedItem = await this.quickInputService?.showQuickPick(layouts, { placeholder: 'Choose a keyboard layout' });
|
|
84
|
+
const selectedItem = await this.quickInputService?.showQuickPick(layouts, { placeholder: nls.localize('theia/core/keyboard/chooseLayout', 'Choose a keyboard layout') });
|
|
81
85
|
if (selectedItem && ('value' in selectedItem)) {
|
|
82
86
|
return this.layoutProvider.setLayoutData(selectedItem.value);
|
|
83
87
|
}
|
|
@@ -86,7 +90,8 @@ export class BrowserKeyboardFrontendContribution implements CommandContribution
|
|
|
86
90
|
protected toQuickPickValue(layout: KeyboardLayoutData, isCurrent: boolean): QuickPickValue<KeyboardLayoutData> {
|
|
87
91
|
return {
|
|
88
92
|
label: layout.name,
|
|
89
|
-
description:
|
|
93
|
+
description:
|
|
94
|
+
`${layout.hardware === 'mac' ? 'Mac' : 'PC'} (${layout.language})${isCurrent ? nls.localize('theia/core/keyboard/currentLayout', ' - current layout') : ''}`,
|
|
90
95
|
value: layout
|
|
91
96
|
};
|
|
92
97
|
}
|
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
|
|
17
|
+
import { enableJSDOM } from '../test/jsdom';
|
|
18
|
+
|
|
19
|
+
let disableJSDOM = enableJSDOM();
|
|
20
|
+
|
|
17
21
|
import { Container, injectable } from 'inversify';
|
|
18
22
|
import type { IMacKeyboardLayoutInfo } from 'native-keymap';
|
|
19
23
|
import * as chai from 'chai';
|
|
@@ -26,11 +30,15 @@ import { WindowService } from '../window/window-service';
|
|
|
26
30
|
import { BrowserKeyboardLayoutProvider } from './browser-keyboard-layout-provider';
|
|
27
31
|
import { Key } from './keys';
|
|
28
32
|
|
|
33
|
+
disableJSDOM();
|
|
34
|
+
|
|
29
35
|
describe('browser keyboard layout provider', function (): void {
|
|
30
36
|
|
|
31
37
|
let stubOSX: sinon.SinonStub;
|
|
32
38
|
let stubWindows: sinon.SinonStub;
|
|
33
|
-
|
|
39
|
+
|
|
40
|
+
before(() => disableJSDOM = enableJSDOM());
|
|
41
|
+
after(() => disableJSDOM());
|
|
34
42
|
|
|
35
43
|
const setup = (system: 'mac' | 'win' | 'linux') => {
|
|
36
44
|
switch (system) {
|
|
@@ -47,7 +55,6 @@ describe('browser keyboard layout provider', function (): void {
|
|
|
47
55
|
stubWindows = sinon.stub(os, 'isWindows').value(false);
|
|
48
56
|
}
|
|
49
57
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
|
-
stubNavigator = sinon.stub(global, 'navigator' as any).value({});
|
|
51
58
|
const container = new Container();
|
|
52
59
|
container.bind(BrowserKeyboardLayoutProvider).toSelf();
|
|
53
60
|
container.bind(ILogger).to(MockLogger);
|
|
@@ -61,7 +68,6 @@ describe('browser keyboard layout provider', function (): void {
|
|
|
61
68
|
afterEach(() => {
|
|
62
69
|
stubOSX.restore();
|
|
63
70
|
stubWindows.restore();
|
|
64
|
-
stubNavigator.restore();
|
|
65
71
|
});
|
|
66
72
|
|
|
67
73
|
it('detects German Mac layout', async () => {
|
|
@@ -83,7 +89,7 @@ describe('browser keyboard layout provider', function (): void {
|
|
|
83
89
|
currentLayout = l;
|
|
84
90
|
});
|
|
85
91
|
|
|
86
|
-
chai.expect((currentLayout.info as IMacKeyboardLayoutInfo).id).to.equal('com.apple.keylayout.
|
|
92
|
+
chai.expect((currentLayout.info as IMacKeyboardLayoutInfo).id).to.equal('com.apple.keylayout.German');
|
|
87
93
|
service.validateKey({ code: Key.SEMICOLON.code, character: 'm' });
|
|
88
94
|
chai.expect((currentLayout.info as IMacKeyboardLayoutInfo).id).to.equal('com.apple.keylayout.French');
|
|
89
95
|
});
|