Skip to content

Commit f8cdbe7

Browse files
author
Benjamin Pasero
committed
host - reduce methods that are required
1 parent 7928b7f commit f8cdbe7

40 files changed

Lines changed: 327 additions & 168 deletions

File tree

src/vs/code/electron-main/windows.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1626,7 +1626,7 @@ export class WindowsManager extends Disposable implements IWindowsMainService {
16261626
cli = { ...cli, remote };
16271627
}
16281628

1629-
const forceReuseWindow = options && options.reuse;
1629+
const forceReuseWindow = options && options.forceReuseWindow;
16301630
const forceNewWindow = !forceReuseWindow;
16311631

16321632
return this.open({ context, cli, forceEmpty: true, forceNewWindow, forceReuseWindow });

src/vs/platform/electron/electron-main/electronMainService.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { Event } from 'vs/base/common/event';
77
import { IWindowsMainService } from 'vs/platform/windows/electron-main/windows';
88
import { MessageBoxOptions, MessageBoxReturnValue, shell, OpenDevToolsOptions, SaveDialogOptions, SaveDialogReturnValue, OpenDialogOptions, OpenDialogReturnValue, CrashReporterStartOptions, crashReporter, Menu, BrowserWindow, app } from 'electron';
9-
import { INativeOpenInWindowOptions } from 'vs/platform/windows/node/window';
9+
import { INativeOpenWindowOptions } from 'vs/platform/windows/node/window';
1010
import { ILifecycleMainService } from 'vs/platform/lifecycle/electron-main/lifecycleMainService';
1111
import { IOpenedWindow, OpenContext, IWindowOpenable, IOpenEmptyWindowOptions } from 'vs/platform/windows/common/windows';
1212
import { INativeOpenDialogOptions } from 'vs/platform/dialogs/node/dialogs';
@@ -69,11 +69,17 @@ export class ElectronMainService implements AddFirstParameterToFunctions<IElectr
6969
return undefined;
7070
}
7171

72-
async openEmptyWindow(windowId: number, options?: IOpenEmptyWindowOptions): Promise<void> {
73-
this.windowsMainService.openEmptyWindow(OpenContext.API, options);
72+
openWindow(windowId: number, options?: IOpenEmptyWindowOptions): Promise<void>;
73+
openWindow(windowId: number, toOpen: IWindowOpenable[], options?: INativeOpenWindowOptions): Promise<void>;
74+
openWindow(windowId: number, arg1?: IOpenEmptyWindowOptions | IWindowOpenable[], arg2?: INativeOpenWindowOptions): Promise<void> {
75+
if (Array.isArray(arg1)) {
76+
return this.doOpenWindow(windowId, arg1, arg2);
77+
}
78+
79+
return this.doOpenEmptyWindow(windowId, arg1);
7480
}
7581

76-
async openInWindow(windowId: number, toOpen: IWindowOpenable[], options: INativeOpenInWindowOptions = Object.create(null)): Promise<void> {
82+
private async doOpenWindow(windowId: number, toOpen: IWindowOpenable[], options: INativeOpenWindowOptions = Object.create(null)): Promise<void> {
7783
if (toOpen.length > 0) {
7884
this.windowsMainService.open({
7985
context: OpenContext.API,
@@ -91,6 +97,10 @@ export class ElectronMainService implements AddFirstParameterToFunctions<IElectr
9197
}
9298
}
9399

100+
private async doOpenEmptyWindow(windowId: number, options?: IOpenEmptyWindowOptions): Promise<void> {
101+
this.windowsMainService.openEmptyWindow(OpenContext.API, options);
102+
}
103+
94104
async toggleFullScreen(windowId: number): Promise<void> {
95105
const window = this.windowsMainService.getWindowById(windowId);
96106
if (window) {
@@ -267,7 +277,7 @@ export class ElectronMainService implements AddFirstParameterToFunctions<IElectr
267277
}
268278
}
269279

270-
async closeWorkpsace(windowId: number): Promise<void> {
280+
async closeWorkspace(windowId: number): Promise<void> {
271281
const window = this.windowsMainService.getWindowById(windowId);
272282
if (window) {
273283
return this.windowsMainService.closeWorkspace(window);

src/vs/platform/electron/node/electron.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { INativeOpenDialogOptions } from 'vs/platform/dialogs/node/dialogs';
1111
import { ISerializableCommandAction } from 'vs/platform/actions/common/actions';
1212
import { ParsedArgs } from 'vscode-minimist';
1313
import { IProcessEnvironment } from 'vs/base/common/platform';
14-
import { INativeOpenInWindowOptions } from 'vs/platform/windows/node/window';
14+
import { INativeOpenWindowOptions } from 'vs/platform/windows/node/window';
1515

1616
export const IElectronService = createDecorator<IElectronService>('electronService');
1717

@@ -33,8 +33,8 @@ export interface IElectronService {
3333
getWindowCount(): Promise<number>;
3434
getActiveWindowId(): Promise<number | undefined>;
3535

36-
openEmptyWindow(options?: IOpenEmptyWindowOptions): Promise<void>;
37-
openInWindow(toOpen: IWindowOpenable[], options?: INativeOpenInWindowOptions): Promise<void>;
36+
openWindow(options?: IOpenEmptyWindowOptions): Promise<void>;
37+
openWindow(toOpen: IWindowOpenable[], options?: INativeOpenWindowOptions): Promise<void>;
3838

3939
toggleFullScreen(): Promise<void>;
4040

@@ -76,7 +76,7 @@ export interface IElectronService {
7676
// Lifecycle
7777
relaunch(options?: { addArgs?: string[], removeArgs?: string[] }): Promise<void>;
7878
reload(): Promise<void>;
79-
closeWorkpsace(): Promise<void>;
79+
closeWorkspace(): Promise<void>;
8080
closeWindow(): Promise<void>;
8181
quit(): Promise<void>;
8282

src/vs/platform/windows/common/windows.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,17 @@ export interface IOpenedWindow {
1919
filename?: string;
2020
}
2121

22-
export interface IOpenInWindowOptions {
23-
forceNewWindow?: boolean;
22+
export interface IBaseOpenWindowsOptions {
2423
forceReuseWindow?: boolean;
24+
}
25+
26+
export interface IOpenWindowOptions extends IBaseOpenWindowsOptions {
27+
forceNewWindow?: boolean;
2528

2629
noRecentEntry?: boolean;
2730
}
2831

29-
export interface IOpenEmptyWindowOptions {
30-
reuse?: boolean;
32+
export interface IOpenEmptyWindowOptions extends IBaseOpenWindowsOptions {
3133
remoteAuthority?: string;
3234
}
3335

src/vs/platform/windows/node/window.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { IOpenInWindowOptions } from 'vs/platform/windows/common/windows';
6+
import { IOpenWindowOptions } from 'vs/platform/windows/common/windows';
77
import { URI } from 'vs/base/common/uri';
88

9-
export interface INativeOpenInWindowOptions extends IOpenInWindowOptions {
9+
export interface INativeOpenWindowOptions extends IOpenWindowOptions {
1010
diffMode?: boolean;
1111
addMode?: boolean;
1212
gotoLineMode?: boolean;

src/vs/workbench/api/common/apiCommands.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { ITextEditorOptions } from 'vs/platform/editor/common/editor';
1111
import { EditorViewColumn } from 'vs/workbench/api/common/shared/editor';
1212
import { EditorGroupLayout } from 'vs/workbench/services/editor/common/editorGroupsService';
1313
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
14-
import { IOpenInWindowOptions, IWindowOpenable } from 'vs/platform/windows/common/windows';
14+
import { IOpenWindowOptions, IWindowOpenable, IOpenEmptyWindowOptions } from 'vs/platform/windows/common/windows';
1515
import { IWorkspacesService, hasWorkspaceFileExtension, IRecent } from 'vs/platform/workspaces/common/workspaces';
1616
import { Schemas } from 'vs/base/common/network';
1717

@@ -49,7 +49,7 @@ export class OpenFolderAPICommand {
4949
if (!uri) {
5050
return executor.executeCommand('_files.pickFolderAndOpen', { forceNewWindow: arg.forceNewWindow });
5151
}
52-
const options: IOpenInWindowOptions = { forceNewWindow: arg.forceNewWindow, forceReuseWindow: arg.forceReuseWindow, noRecentEntry: arg.noRecentEntry };
52+
const options: IOpenWindowOptions = { forceNewWindow: arg.forceNewWindow, forceReuseWindow: arg.forceReuseWindow, noRecentEntry: arg.noRecentEntry };
5353
uri = URI.revive(uri);
5454
const uriToOpen: IWindowOpenable = (hasWorkspaceFileExtension(uri) || uri.scheme === Schemas.untitled) ? { workspaceUri: uri } : { folderUri: uri };
5555
return executor.executeCommand('_files.windowOpen', [uriToOpen], options);
@@ -75,10 +75,12 @@ interface INewWindowAPICommandOptions {
7575
export class NewWindowAPICommand {
7676
public static ID = 'vscode.newWindow';
7777
public static execute(executor: ICommandsExecutor, options?: INewWindowAPICommandOptions): Promise<any> {
78-
return executor.executeCommand('_files.newWindow', {
79-
reuse: options && options.reuseWindow,
78+
const commandOptions: IOpenEmptyWindowOptions = {
79+
forceReuseWindow: options && options.reuseWindow,
8080
remoteAuthority: options && options.remoteAuthority
81-
});
81+
};
82+
83+
return executor.executeCommand('_files.newWindow', commandOptions);
8284
}
8385
}
8486
CommandsRegistry.registerCommand({

src/vs/workbench/api/node/extHostCLIServer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { IExtHostCommands } from 'vs/workbench/api/common/extHostCommands';
1010
import { IWindowOpenable } from 'vs/platform/windows/common/windows';
1111
import { URI } from 'vs/base/common/uri';
1212
import { hasWorkspaceFileExtension } from 'vs/platform/workspaces/common/workspaces';
13-
import { INativeOpenInWindowOptions } from 'vs/platform/windows/node/window';
13+
import { INativeOpenWindowOptions } from 'vs/platform/windows/node/window';
1414

1515
export interface OpenCommandPipeArgs {
1616
type: 'open';
@@ -127,7 +127,7 @@ export class CLIServer {
127127
}
128128
if (urisToOpen.length) {
129129
const waitMarkerFileURI = waitMarkerFilePath ? URI.file(waitMarkerFilePath) : undefined;
130-
const windowOpenArgs: INativeOpenInWindowOptions = { forceNewWindow, diffMode, addMode, gotoLineMode, forceReuseWindow, waitMarkerFileURI };
130+
const windowOpenArgs: INativeOpenWindowOptions = { forceNewWindow, diffMode, addMode, gotoLineMode, forceReuseWindow, waitMarkerFileURI };
131131
this._commands.executeCommand('_files.windowOpen', urisToOpen, windowOpenArgs);
132132
}
133133
res.writeHead(200);

src/vs/workbench/browser/actions/windowActions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ abstract class BaseOpenRecentAction extends Action {
135135
});
136136

137137
if (pick) {
138-
return this.hostService.openInWindow([pick.openable], { forceNewWindow: keyMods && keyMods.ctrlCmd });
138+
return this.hostService.openWindow([pick.openable], { forceNewWindow: keyMods && keyMods.ctrlCmd });
139139
}
140140
}
141141
}
@@ -260,7 +260,7 @@ export class NewWindowAction extends Action {
260260
}
261261

262262
run(): Promise<void> {
263-
return this.hostService.openEmptyWindow();
263+
return this.hostService.openWindow();
264264
}
265265
}
266266

src/vs/workbench/browser/dnd.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ export class ResourcesDropHandler {
297297

298298
// Open in separate windows if we drop workspaces or just one folder
299299
if (toOpen.length > folderURIs.length || folderURIs.length === 1) {
300-
await this.hostService.openInWindow(toOpen, { forceReuseWindow: true });
300+
await this.hostService.openWindow(toOpen, { forceReuseWindow: true });
301301
}
302302

303303
// folders.length > 1: Multiple folders: Create new workspace with folders and open

src/vs/workbench/browser/parts/editor/editorWidgets.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ export class OpenWorkspaceButtonContribution extends Disposable implements IEdit
163163
this._register(this.openWorkspaceButton.onClick(() => {
164164
const model = this.editor.getModel();
165165
if (model) {
166-
this.hostService.openInWindow([{ workspaceUri: model.uri }]);
166+
this.hostService.openWindow([{ workspaceUri: model.uri }]);
167167
}
168168
}));
169169

0 commit comments

Comments
 (0)