@theia/core 1.21.0-next.17 → 1.21.0-next.21

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.
Files changed (65) hide show
  1. package/lib/browser/common-frontend-contribution.d.ts +5 -2
  2. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  3. package/lib/browser/common-frontend-contribution.js +21 -4
  4. package/lib/browser/common-frontend-contribution.js.map +1 -1
  5. package/lib/browser/dialogs.d.ts +1 -0
  6. package/lib/browser/dialogs.d.ts.map +1 -1
  7. package/lib/browser/dialogs.js +11 -1
  8. package/lib/browser/dialogs.js.map +1 -1
  9. package/lib/browser/frontend-application.d.ts +15 -2
  10. package/lib/browser/frontend-application.d.ts.map +1 -1
  11. package/lib/browser/frontend-application.js +8 -1
  12. package/lib/browser/frontend-application.js.map +1 -1
  13. package/lib/browser/shell/application-shell-mouse-tracker.js +2 -2
  14. package/lib/browser/shell/application-shell-mouse-tracker.js.map +1 -1
  15. package/lib/browser/shell/application-shell.d.ts +0 -13
  16. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  17. package/lib/browser/shell/application-shell.js +1 -16
  18. package/lib/browser/shell/application-shell.js.map +1 -1
  19. package/lib/browser/shell/shell-layout-restorer.d.ts +2 -0
  20. package/lib/browser/shell/shell-layout-restorer.d.ts.map +1 -1
  21. package/lib/browser/shell/shell-layout-restorer.js +13 -6
  22. package/lib/browser/shell/shell-layout-restorer.js.map +1 -1
  23. package/lib/browser/window/default-window-service.d.ts +19 -2
  24. package/lib/browser/window/default-window-service.d.ts.map +1 -1
  25. package/lib/browser/window/default-window-service.js +67 -12
  26. package/lib/browser/window/default-window-service.js.map +1 -1
  27. package/lib/browser/window/default-window-service.spec.js +3 -3
  28. package/lib/browser/window/default-window-service.spec.js.map +1 -1
  29. package/lib/browser/window/test/mock-window-service.d.ts +3 -1
  30. package/lib/browser/window/test/mock-window-service.d.ts.map +1 -1
  31. package/lib/browser/window/test/mock-window-service.js +3 -1
  32. package/lib/browser/window/test/mock-window-service.js.map +1 -1
  33. package/lib/browser/window/window-service.d.ts +20 -6
  34. package/lib/browser/window/window-service.d.ts.map +1 -1
  35. package/lib/electron-browser/menu/electron-menu-contribution.d.ts +2 -0
  36. package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
  37. package/lib/electron-browser/menu/electron-menu-contribution.js +6 -0
  38. package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
  39. package/lib/electron-browser/window/electron-window-service.d.ts +7 -5
  40. package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
  41. package/lib/electron-browser/window/electron-window-service.js +20 -42
  42. package/lib/electron-browser/window/electron-window-service.js.map +1 -1
  43. package/lib/electron-common/messaging/electron-messages.d.ts +27 -0
  44. package/lib/electron-common/messaging/electron-messages.d.ts.map +1 -1
  45. package/lib/electron-common/messaging/electron-messages.js +24 -1
  46. package/lib/electron-common/messaging/electron-messages.js.map +1 -1
  47. package/lib/electron-main/electron-main-application.d.ts +9 -0
  48. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  49. package/lib/electron-main/electron-main-application.js +57 -14
  50. package/lib/electron-main/electron-main-application.js.map +1 -1
  51. package/package.json +3 -3
  52. package/src/browser/common-frontend-contribution.ts +23 -6
  53. package/src/browser/dialogs.ts +9 -0
  54. package/src/browser/frontend-application.ts +19 -2
  55. package/src/browser/shell/application-shell-mouse-tracker.ts +2 -2
  56. package/src/browser/shell/application-shell.ts +1 -18
  57. package/src/browser/shell/shell-layout-restorer.ts +12 -6
  58. package/src/browser/window/default-window-service.spec.ts +3 -3
  59. package/src/browser/window/default-window-service.ts +69 -13
  60. package/src/browser/window/test/mock-window-service.ts +3 -1
  61. package/src/browser/window/window-service.ts +22 -8
  62. package/src/electron-browser/menu/electron-menu-contribution.ts +6 -1
  63. package/src/electron-browser/window/electron-window-service.ts +21 -41
  64. package/src/electron-common/messaging/electron-messages.ts +29 -0
  65. package/src/electron-main/electron-main-application.ts +74 -15
@@ -15,9 +15,32 @@
15
15
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
16
16
  ********************************************************************************/
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.Restart = exports.TitleBarStyleAtStartup = exports.TitleBarStyleChanged = exports.RequestTitleBarStyle = void 0;
18
+ exports.StopReason = exports.RELOAD_REQUESTED_SIGNAL = exports.CLOSE_REQUESTED_SIGNAL = exports.Restart = exports.TitleBarStyleAtStartup = exports.TitleBarStyleChanged = exports.RequestTitleBarStyle = void 0;
19
19
  exports.RequestTitleBarStyle = 'requestTitleBarStyle';
20
20
  exports.TitleBarStyleChanged = 'titleBarStyleChanged';
21
21
  exports.TitleBarStyleAtStartup = 'titleBarStyleAtStartup';
22
22
  exports.Restart = 'restart';
23
+ /**
24
+ * Emitted by main when close requested.
25
+ */
26
+ exports.CLOSE_REQUESTED_SIGNAL = 'close-requested';
27
+ /**
28
+ * Emitted by window when a reload is requested.
29
+ */
30
+ exports.RELOAD_REQUESTED_SIGNAL = 'reload-requested';
31
+ var StopReason;
32
+ (function (StopReason) {
33
+ /**
34
+ * Closing the window with no prospect of restart.
35
+ */
36
+ StopReason[StopReason["Close"] = 0] = "Close";
37
+ /**
38
+ * Reload without closing the window.
39
+ */
40
+ StopReason[StopReason["Reload"] = 1] = "Reload";
41
+ /**
42
+ * Reload that includes closing the window.
43
+ */
44
+ StopReason[StopReason["Restart"] = 2] = "Restart";
45
+ })(StopReason = exports.StopReason || (exports.StopReason = {}));
23
46
  //# sourceMappingURL=electron-messages.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"electron-messages.js","sourceRoot":"","sources":["../../../src/electron-common/messaging/electron-messages.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAErE,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,OAAO,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"electron-messages.js","sourceRoot":"","sources":["../../../src/electron-common/messaging/electron-messages.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAErE,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,OAAO,GAAG,SAAS,CAAC;AACjC;;GAEG;AACU,QAAA,sBAAsB,GAAG,iBAAiB,CAAC;AACxD;;GAEG;AACU,QAAA,uBAAuB,GAAG,kBAAkB,CAAC;AAE1D,IAAY,UAaX;AAbD,WAAY,UAAU;IAClB;;OAEG;IACH,6CAAK,CAAA;IACL;;OAEG;IACH,+CAAM,CAAA;IACN;;OAEG;IACH,iDAAO,CAAA;AACX,CAAC,EAbW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAarB"}
@@ -24,6 +24,7 @@ import { ContributionProvider } from '../common/contribution-provider';
24
24
  import { ElectronSecurityTokenService } from './electron-security-token-service';
25
25
  import { ElectronSecurityToken } from '../electron-common/electron-token';
26
26
  import Storage = require('electron-store');
27
+ import { StopReason } from '../electron-common/messaging/electron-messages';
27
28
  /**
28
29
  * Theia tracks the maximized state of Electron Browser Windows.
29
30
  */
@@ -125,6 +126,8 @@ export declare class ElectronMainApplication {
125
126
  protected useNativeWindowFrame: boolean;
126
127
  protected didUseNativeWindowFrameOnStart: Map<number, boolean>;
127
128
  protected restarting: boolean;
129
+ protected closeIsConfirmed: Set<number>;
130
+ protected closeRequested: number;
128
131
  get config(): FrontendApplicationConfig;
129
132
  start(config: FrontendApplicationConfig): Promise<void>;
130
133
  protected getTitleBarStyle(config: FrontendApplicationConfig): 'native' | 'custom';
@@ -165,6 +168,10 @@ export declare class ElectronMainApplication {
165
168
  */
166
169
  protected attachGlobalShortcuts(electronWindow: BrowserWindow): void;
167
170
  protected restoreMaximizedState(electronWindow: BrowserWindow, options: TheiaBrowserWindowOptions): void;
171
+ protected attachCloseListeners(electronWindow: BrowserWindow, options: TheiaBrowserWindowOptions): void;
172
+ protected doCloseWindow(electronWindow: BrowserWindow): void;
173
+ protected handleStopRequest(electronWindow: BrowserWindow, onSafeCallback: () => unknown, reason: StopReason): Promise<void>;
174
+ protected checkSafeToStop(electronWindow: BrowserWindow, reason: StopReason): Promise<boolean>;
168
175
  /**
169
176
  * Start the NodeJS backend server.
170
177
  *
@@ -178,6 +185,8 @@ export declare class ElectronMainApplication {
178
185
  protected onSecondInstance(event: ElectronEvent, argv: string[], cwd: string): Promise<void>;
179
186
  protected onWindowAllClosed(event: ElectronEvent): void;
180
187
  protected restart(id: number): void;
188
+ protected handleReload(event: Electron.IpcMainEvent): Promise<void>;
189
+ protected reload(electronWindow: BrowserWindow): void;
181
190
  protected startContributions(): Promise<void>;
182
191
  protected stopContributions(): void;
183
192
  }
@@ -1 +1 @@
1
- {"version":3,"file":"electron-main-application.d.ts","sourceRoot":"","sources":["../../src/electron-main/electron-main-application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"electron-main-application.d.ts","sourceRoot":"","sources":["../../src/electron-main/electron-main-application.ts"],"names":[],"mappings":"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"}
@@ -104,6 +104,8 @@ let ElectronMainApplication = class ElectronMainApplication {
104
104
  this.useNativeWindowFrame = true;
105
105
  this.didUseNativeWindowFrameOnStart = new Map();
106
106
  this.restarting = false;
107
+ this.closeIsConfirmed = new Set();
108
+ this.closeRequested = 0;
107
109
  }
108
110
  get config() {
109
111
  if (!this._config) {
@@ -162,6 +164,7 @@ let ElectronMainApplication = class ElectronMainApplication {
162
164
  this.attachSaveWindowState(electronWindow);
163
165
  this.attachGlobalShortcuts(electronWindow);
164
166
  this.restoreMaximizedState(electronWindow, options);
167
+ this.attachCloseListeners(electronWindow, options);
165
168
  return electronWindow;
166
169
  }
167
170
  async getLastWindowOptions() {
@@ -312,19 +315,19 @@ let ElectronMainApplication = class ElectronMainApplication {
312
315
  */
313
316
  attachGlobalShortcuts(electronWindow) {
314
317
  var _a;
315
- if ((_a = this.config.electron) === null || _a === void 0 ? void 0 : _a.disallowReloadKeybinding) {
316
- const accelerators = ['CmdOrCtrl+R', 'F5'];
317
- electronWindow.on('focus', () => {
318
- for (const accelerator of accelerators) {
319
- electron_1.globalShortcut.register(accelerator, () => { });
320
- }
321
- });
322
- electronWindow.on('blur', () => {
323
- for (const accelerator of accelerators) {
324
- electron_1.globalShortcut.unregister(accelerator);
325
- }
326
- });
327
- }
318
+ const handler = ((_a = this.config.electron) === null || _a === void 0 ? void 0 : _a.disallowReloadKeybinding) ? () => { }
319
+ : () => this.reload(electronWindow);
320
+ const accelerators = ['CmdOrCtrl+R', 'F5'];
321
+ electronWindow.on('focus', () => {
322
+ for (const accelerator of accelerators) {
323
+ electron_1.globalShortcut.register(accelerator, handler);
324
+ }
325
+ });
326
+ electronWindow.on('blur', () => {
327
+ for (const accelerator of accelerators) {
328
+ electron_1.globalShortcut.unregister(accelerator);
329
+ }
330
+ });
328
331
  }
329
332
  restoreMaximizedState(electronWindow, options) {
330
333
  if (options.isMaximized) {
@@ -334,6 +337,38 @@ let ElectronMainApplication = class ElectronMainApplication {
334
337
  electronWindow.unmaximize();
335
338
  }
336
339
  }
340
+ attachCloseListeners(electronWindow, options) {
341
+ electronWindow.on('close', async (event) => {
342
+ // User has already indicated that it is OK to close this window.
343
+ if (this.closeIsConfirmed.has(electronWindow.id)) {
344
+ this.closeIsConfirmed.delete(electronWindow.id);
345
+ return;
346
+ }
347
+ event.preventDefault();
348
+ this.handleStopRequest(electronWindow, () => this.doCloseWindow(electronWindow), electron_messages_1.StopReason.Close);
349
+ });
350
+ }
351
+ doCloseWindow(electronWindow) {
352
+ this.closeIsConfirmed.add(electronWindow.id);
353
+ electronWindow.close();
354
+ }
355
+ async handleStopRequest(electronWindow, onSafeCallback, reason) {
356
+ // Only confirm close to windows that have loaded our front end.
357
+ const safeToClose = !electronWindow.webContents.getURL().includes(this.globals.THEIA_FRONTEND_HTML_PATH) || await this.checkSafeToStop(electronWindow, reason);
358
+ if (safeToClose) {
359
+ onSafeCallback();
360
+ }
361
+ }
362
+ checkSafeToStop(electronWindow, reason) {
363
+ const closeRequest = this.closeRequested++;
364
+ const confirmChannel = `safeToClose-${electronWindow.id}-${closeRequest}`;
365
+ const cancelChannel = `notSafeToClose-${electronWindow.id}-${closeRequest}`;
366
+ return new Promise(resolve => {
367
+ electronWindow.webContents.send(electron_messages_1.CLOSE_REQUESTED_SIGNAL, { confirmChannel, cancelChannel, reason });
368
+ electron_1.ipcMain.once(confirmChannel, () => resolve(true));
369
+ electron_1.ipcMain.once(cancelChannel, () => resolve(false));
370
+ });
371
+ }
337
372
  /**
338
373
  * Start the NodeJS backend server.
339
374
  *
@@ -408,6 +443,7 @@ let ElectronMainApplication = class ElectronMainApplication {
408
443
  electron_1.ipcMain.on(electron_messages_1.Restart, ({ sender }) => {
409
444
  this.restart(sender.id);
410
445
  });
446
+ electron_1.ipcMain.on(electron_messages_1.RELOAD_REQUESTED_SIGNAL, event => this.handleReload(event));
411
447
  electron_1.ipcMain.on(electron_messages_1.RequestTitleBarStyle, ({ sender }) => {
412
448
  sender.send(electron_messages_1.TitleBarStyleAtStartup, this.didUseNativeWindowFrameOnStart.get(sender.id) ? 'native' : 'custom');
413
449
  });
@@ -441,7 +477,14 @@ let ElectronMainApplication = class ElectronMainApplication {
441
477
  });
442
478
  this.restarting = false;
443
479
  });
444
- window.close();
480
+ this.handleStopRequest(window, () => this.doCloseWindow(window), electron_messages_1.StopReason.Restart);
481
+ }
482
+ async handleReload(event) {
483
+ const window = electron_1.BrowserWindow.fromId(event.sender.id);
484
+ this.reload(window);
485
+ }
486
+ reload(electronWindow) {
487
+ this.handleStopRequest(electronWindow, () => electronWindow.reload(), electron_messages_1.StopReason.Reload);
445
488
  }
446
489
  async startContributions() {
447
490
  const promises = [];
@@ -1 +1 @@
1
- {"version":3,"file":"electron-main-application.js","sourceRoot":"","sources":["../../src/electron-main/electron-main-application.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"electron-main-application.js","sourceRoot":"","sources":["../../src/electron-main/electron-main-application.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/core",
3
- "version": "1.21.0-next.17+7f954ac2561",
3
+ "version": "1.21.0-next.21+08b61a7003f",
4
4
  "description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
5
5
  "main": "lib/common/index.js",
6
6
  "typings": "lib/common/index.d.ts",
@@ -17,7 +17,7 @@
17
17
  "@phosphor/virtualdom": "1",
18
18
  "@phosphor/widgets": "1",
19
19
  "@primer/octicons-react": "^9.0.0",
20
- "@theia/application-package": "1.21.0-next.17+7f954ac2561",
20
+ "@theia/application-package": "1.21.0-next.21+08b61a7003f",
21
21
  "@types/body-parser": "^1.16.4",
22
22
  "@types/cookie": "^0.3.3",
23
23
  "@types/dompurify": "^2.2.2",
@@ -177,5 +177,5 @@
177
177
  "nyc": {
178
178
  "extends": "../../configs/nyc.json"
179
179
  },
180
- "gitHead": "7f954ac2561e73f9cc1e4c2df1e347ba9431b2c4"
180
+ "gitHead": "08b61a7003f25824c084ea162e5942e8af19507a"
181
181
  }
@@ -20,7 +20,7 @@ import debounce = require('lodash.debounce');
20
20
  import { injectable, inject, optional } from 'inversify';
21
21
  import { MAIN_MENU_BAR, SETTINGS_MENU, MenuContribution, MenuModelRegistry, ACCOUNTS_MENU } from '../common/menu';
22
22
  import { KeybindingContribution, KeybindingRegistry } from './keybinding';
23
- import { FrontendApplication, FrontendApplicationContribution } from './frontend-application';
23
+ import { FrontendApplication, FrontendApplicationContribution, OnWillStopAction } from './frontend-application';
24
24
  import { CommandContribution, CommandRegistry, Command } from '../common/command';
25
25
  import { UriAwareCommandHandler } from '../common/uri-command-handler';
26
26
  import { SelectionService } from '../common/selection-service';
@@ -55,6 +55,9 @@ import { QuickInputService, QuickPick, QuickPickItem } from './quick-input';
55
55
  import { AsyncLocalizationProvider } from '../common/i18n/localization';
56
56
  import { nls } from '../common/nls';
57
57
  import { CurrentWidgetCommandAdapter } from './shell/current-widget-command-adapter';
58
+ import { ConfirmDialog, confirmExit, Dialog } from './dialogs';
59
+ import { WindowService } from './window/window-service';
60
+ import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
58
61
 
59
62
  export namespace CommonMenus {
60
63
 
@@ -353,6 +356,9 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
353
356
  @inject(AuthenticationService)
354
357
  protected readonly authenticationService: AuthenticationService;
355
358
 
359
+ @inject(WindowService)
360
+ protected readonly windowService: WindowService;
361
+
356
362
  async configure(app: FrontendApplication): Promise<void> {
357
363
  const configDirUri = await this.environments.getConfigDirUri();
358
364
  // Global settings
@@ -967,10 +973,10 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
967
973
  });
968
974
  }
969
975
 
970
- onWillStop(): true | undefined {
976
+ onWillStop(): OnWillStopAction | undefined {
971
977
  try {
972
978
  if (this.shouldPreventClose || this.shell.canSaveAll()) {
973
- return true;
979
+ return { reason: 'Dirty editors present', action: () => confirmExit() };
974
980
  }
975
981
  } finally {
976
982
  this.shouldPreventClose = false;
@@ -983,10 +989,11 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
983
989
  for (const additionalLanguage of ['en', ...availableLanguages]) {
984
990
  items.push({
985
991
  label: additionalLanguage,
986
- execute: () => {
987
- if (additionalLanguage !== nls.locale) {
992
+ execute: async () => {
993
+ if (additionalLanguage !== nls.locale && await this.confirmRestart()) {
994
+ this.windowService.setSafeToShutDown();
988
995
  window.localStorage.setItem(nls.localeId, additionalLanguage);
989
- window.location.reload();
996
+ this.windowService.reload();
990
997
  }
991
998
  }
992
999
  });
@@ -998,6 +1005,16 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
998
1005
  });
999
1006
  }
1000
1007
 
1008
+ protected async confirmRestart(): Promise<boolean> {
1009
+ const shouldRestart = await new ConfirmDialog({
1010
+ title: nls.localizeByDefault('A restart is required for the change in display language to take effect.'),
1011
+ msg: nls.localizeByDefault('Press the restart button to restart {0} and change the display language.', FrontendApplicationConfigProvider.get().applicationName),
1012
+ ok: nls.localizeByDefault('Restart'),
1013
+ cancel: Dialog.CANCEL,
1014
+ }).open();
1015
+ return shouldRestart === true;
1016
+ }
1017
+
1001
1018
  protected selectIconTheme(): void {
1002
1019
  let resetTo: string | undefined = this.iconThemes.current;
1003
1020
  const previewTheme = debounce((id: string) => this.iconThemes.current = id, 200);
@@ -385,7 +385,16 @@ export class ConfirmDialog extends AbstractDialog<boolean> {
385
385
  }
386
386
  return msg;
387
387
  }
388
+ }
388
389
 
390
+ export async function confirmExit(): Promise<boolean> {
391
+ const safeToExit = await new ConfirmDialog({
392
+ title: nls.localize('theia/core/quitTitle', 'Are you sure you want to quit?'),
393
+ msg: nls.localize('theia/core/quitMessage', 'Any unsaved changes will not be saved.'),
394
+ ok: Dialog.YES,
395
+ cancel: Dialog.NO,
396
+ }).open();
397
+ return safeToExit === true;
389
398
  }
390
399
 
391
400
  @injectable()
@@ -52,10 +52,10 @@ export interface FrontendApplicationContribution {
52
52
 
53
53
  /**
54
54
  * Called on `beforeunload` event, right before the window closes.
55
- * Return `true` in order to prevent exit.
55
+ * Return `true` or an OnWillStopAction in order to prevent exit.
56
56
  * Note: No async code allowed, this function has to run on one tick.
57
57
  */
58
- onWillStop?(app: FrontendApplication): boolean | void;
58
+ onWillStop?(app: FrontendApplication): boolean | undefined | OnWillStopAction;
59
59
 
60
60
  /**
61
61
  * Called when an application is stopped or unloaded.
@@ -77,6 +77,23 @@ export interface FrontendApplicationContribution {
77
77
  onDidInitializeLayout?(app: FrontendApplication): MaybePromise<void>;
78
78
  }
79
79
 
80
+ export interface OnWillStopAction {
81
+ /**
82
+ * @resolves to `true` if it is safe to close the application; `false` otherwise.
83
+ */
84
+ action: () => MaybePromise<boolean>;
85
+ /**
86
+ * A descriptive string for the reason preventing close.
87
+ */
88
+ reason: string;
89
+ }
90
+
91
+ export namespace OnWillStopAction {
92
+ export function is(candidate: unknown): candidate is OnWillStopAction {
93
+ return typeof candidate === 'object' && !!candidate && 'action' in candidate && 'reason' in candidate;
94
+ }
95
+ }
96
+
80
97
  const TIMER_WARNING_THRESHOLD = 100;
81
98
 
82
99
  /**
@@ -46,10 +46,10 @@ export class ApplicationShellMouseTracker implements FrontendApplicationContribu
46
46
  onStart(): void {
47
47
  // Here we need to attach a `mousedown` listener to the `TabBar`s, `DockPanel`s and the `SidePanel`s. Otherwise, Phosphor handles the event and stops the propagation.
48
48
  // Track the `mousedown` on the `TabBar` for the currently active widget.
49
- this.applicationShell.activeChanged.connect((shell: ApplicationShell, args: FocusTracker.IChangedArgs<Widget>) => {
49
+ this.applicationShell.onDidChangeActiveWidget((args: FocusTracker.IChangedArgs<Widget>) => {
50
50
  this.toDisposeOnActiveChange.dispose();
51
51
  if (args.newValue) {
52
- const tabBar = shell.getTabBarFor(args.newValue);
52
+ const tabBar = this.applicationShell.getTabBarFor(args.newValue);
53
53
  if (tabBar) {
54
54
  this.toDisposeOnActiveChange.push(addEventListener(tabBar.node, 'mousedown', this.mousedownListener, true));
55
55
  }
@@ -16,7 +16,6 @@
16
16
 
17
17
  import { injectable, inject, optional, postConstruct } from 'inversify';
18
18
  import { ArrayExt, find, toArray, each } from '@phosphor/algorithm';
19
- import { Signal } from '@phosphor/signaling';
20
19
  import {
21
20
  BoxLayout, BoxPanel, DockLayout, DockPanel, FocusTracker, Layout, Panel, SplitLayout,
22
21
  SplitPanel, TabBar, Widget, Title
@@ -299,7 +298,7 @@ export class ApplicationShell extends Widget {
299
298
  panelFocus.set(area === 'main');
300
299
  };
301
300
  updateFocusContextKeys();
302
- this.activeChanged.connect(updateFocusContextKeys);
301
+ this.onDidChangeActiveWidget(updateFocusContextKeys);
303
302
  }
304
303
 
305
304
  protected setTopPanelVisibility(preference: string): void {
@@ -929,28 +928,13 @@ export class ApplicationShell extends Widget {
929
928
  return title ? title.owner : undefined;
930
929
  }
931
930
 
932
- /**
933
- * A signal emitted whenever the `currentWidget` property is changed.
934
- *
935
- * @deprecated since 0.11.0, use `onDidChangeCurrentWidget` instead
936
- */
937
- readonly currentChanged = new Signal<this, FocusTracker.IChangedArgs<Widget>>(this);
938
-
939
931
  /**
940
932
  * Handle a change to the current widget.
941
933
  */
942
934
  private onCurrentChanged(sender: FocusTracker<Widget>, args: FocusTracker.IChangedArgs<Widget>): void {
943
- this.currentChanged.emit(args);
944
935
  this.onDidChangeCurrentWidgetEmitter.fire(args);
945
936
  }
946
937
 
947
- /**
948
- * A signal emitted whenever the `activeWidget` property is changed.
949
- *
950
- * @deprecated since 0.11.0, use `onDidChangeActiveWidget` instead
951
- */
952
- readonly activeChanged = new Signal<this, FocusTracker.IChangedArgs<Widget>>(this);
953
-
954
938
  protected readonly toDisposeOnActiveChanged = new DisposableCollection();
955
939
 
956
940
  /**
@@ -1014,7 +998,6 @@ export class ApplicationShell extends Widget {
1014
998
  };
1015
999
  this.toDisposeOnActiveChanged.push(Disposable.create(() => newValue['onCloseRequest'] = onCloseRequest));
1016
1000
  }
1017
- this.activeChanged.emit(args);
1018
1001
  this.onDidChangeActiveWidgetEmitter.fire(args);
1019
1002
  }
1020
1003
 
@@ -26,6 +26,7 @@ import { ContributionProvider } from '../../common/contribution-provider';
26
26
  import { MaybePromise } from '../../common/types';
27
27
  import { ApplicationShell, applicationShellLayoutVersion, ApplicationShellLayoutVersion } from './application-shell';
28
28
  import { CommonCommands } from '../common-frontend-contribution';
29
+ import { WindowService } from '../window/window-service';
29
30
 
30
31
  /**
31
32
  * A contract for widgets that want to store and restore their inner state, between sessions.
@@ -125,6 +126,9 @@ export class ShellLayoutRestorer implements CommandContribution {
125
126
  @inject(ContributionProvider) @named(ApplicationShellLayoutMigration)
126
127
  protected readonly migrations: ContributionProvider<ApplicationShellLayoutMigration>;
127
128
 
129
+ @inject(WindowService)
130
+ protected readonly windowService: WindowService;
131
+
128
132
  constructor(
129
133
  @inject(WidgetManager) protected widgetManager: WidgetManager,
130
134
  @inject(ILogger) protected logger: ILogger,
@@ -137,12 +141,14 @@ export class ShellLayoutRestorer implements CommandContribution {
137
141
  }
138
142
 
139
143
  protected async resetLayout(): Promise<void> {
140
- this.logger.info('>>> Resetting layout...');
141
- this.shouldStoreLayout = false;
142
- this.storageService.setData(this.storageKey, undefined);
143
- ThemeService.get().reset(); // Theme service cannot use DI, so the current theme ID is stored elsewhere. Hence the explicit reset.
144
- this.logger.info('<<< The layout has been successfully reset.');
145
- window.location.reload(true);
144
+ if (await this.windowService.isSafeToShutDown()) {
145
+ this.logger.info('>>> Resetting layout...');
146
+ this.shouldStoreLayout = false;
147
+ this.storageService.setData(this.storageKey, undefined);
148
+ ThemeService.get().reset(); // Theme service cannot use DI, so the current theme ID is stored elsewhere. Hence the explicit reset.
149
+ this.logger.info('<<< The layout has been successfully reset.');
150
+ this.windowService.reload();
151
+ }
146
152
  }
147
153
 
148
154
  storeLayout(app: FrontendApplication): void {
@@ -51,7 +51,7 @@ describe('DefaultWindowService', () => {
51
51
  ];
52
52
  const windowService = setupWindowService('never', frontendContributions);
53
53
  assert(frontendContributions.every(contribution => !contribution.onWillStopCalled), 'contributions should not be called yet');
54
- assert(windowService.canUnload(), 'canUnload should return true');
54
+ assert(windowService['collectContributionUnloadVetoes']().length === 0, 'there should be no vetoes');
55
55
  assert(frontendContributions.every(contribution => contribution.onWillStopCalled), 'contributions should have been called');
56
56
  });
57
57
  it('onWillStop should be called on every contribution (ifRequired)', () => {
@@ -62,7 +62,7 @@ describe('DefaultWindowService', () => {
62
62
  ];
63
63
  const windowService = setupWindowService('ifRequired', frontendContributions);
64
64
  assert(frontendContributions.every(contribution => !contribution.onWillStopCalled), 'contributions should not be called yet');
65
- assert(!windowService.canUnload(), 'canUnload should return false');
65
+ assert(windowService['collectContributionUnloadVetoes']().length > 0, 'There should be vetoes');
66
66
  assert(frontendContributions.every(contribution => contribution.onWillStopCalled), 'contributions should have been called');
67
67
  });
68
68
  it('onWillStop should be called on every contribution (always)', () => {
@@ -72,7 +72,7 @@ describe('DefaultWindowService', () => {
72
72
  ];
73
73
  const windowService = setupWindowService('always', frontendContributions);
74
74
  assert(frontendContributions.every(contribution => !contribution.onWillStopCalled), 'contributions should not be called yet');
75
- assert(!windowService.canUnload(), 'canUnload should return false');
75
+ assert(windowService['collectContributionUnloadVetoes']().length > 0, 'there should be vetoes');
76
76
  assert(frontendContributions.every(contribution => contribution.onWillStopCalled), 'contributions should have been called');
77
77
  });
78
78
  });