提交 1f123343 编写于 作者: J Joao Moreno

windows ipc: adopt openFile/FolderPicker

上级 21e5a940
......@@ -105,7 +105,7 @@ export interface IWindowsMainService {
open(openConfig: IOpenConfiguration): VSCodeWindow[];
openPluginDevelopmentHostWindow(openConfig: IOpenConfiguration): void;
openFileFolderPicker(forceNewWindow?: boolean): void;
openFilePicker(forceNewWindow?: boolean): void;
openFilePicker(forceNewWindow?: boolean, path?: string): void;
openFolderPicker(forceNewWindow?: boolean): void;
openAccessibilityOptions(): void;
focusLastActive(cli: ParsedArgs): VSCodeWindow;
......@@ -239,24 +239,6 @@ export class WindowsManager implements IWindowsMainService, IWindowEventService
}
});
ipc.on('vscode:openFilePicker', (event, forceNewWindow?: boolean, path?: string) => {
this.logService.log('IPC#vscode-openFilePicker');
this.openFilePicker(forceNewWindow, path);
});
ipc.on('vscode:openFolderPicker', (event, forceNewWindow?: boolean) => {
this.logService.log('IPC#vscode-openFolderPicker');
this.openFolderPicker(forceNewWindow);
});
ipc.on('vscode:openFileFolderPicker', (event, forceNewWindow?: boolean) => {
this.logService.log('IPC#vscode-openFileFolderPicker');
this.openFileFolderPicker(forceNewWindow);
});
ipc.on('vscode:closeFolder', (event, windowId: number) => {
this.logService.log('IPC#vscode-closeFolder');
......
......@@ -15,7 +15,7 @@ export interface IWindowsService {
_serviceBrand: any;
openFileFolderPicker(windowId: number, forceNewWindow?: boolean): TPromise<void>;
openFilePicker(windowId: number, forceNewWindow?: boolean): TPromise<void>;
openFilePicker(windowId: number, forceNewWindow?: boolean, path?: string): TPromise<void>;
openFolderPicker(windowId: number, forceNewWindow?: boolean): TPromise<void>;
}
......@@ -26,6 +26,6 @@ export interface IWindowService {
_serviceBrand: any;
openFileFolderPicker(forceNewWindow?: boolean): TPromise<void>;
openFilePicker(forceNewWindow?: boolean): TPromise<void>;
openFilePicker(forceNewWindow?: boolean, path?: string): TPromise<void>;
openFolderPicker(forceNewWindow?: boolean): TPromise<void>;
}
\ No newline at end of file
......@@ -11,7 +11,7 @@ import { IWindowsService } from './windows';
export interface IWindowsChannel extends IChannel {
call(command: 'openFileFolderPicker', args: [number, boolean]): TPromise<void>;
call(command: 'openFilePicker', args: [number, boolean]): TPromise<void>;
call(command: 'openFilePicker', args: [number, boolean, string]): TPromise<void>;
call(command: 'openFolderPicker', args: [number, boolean]): TPromise<void>;
call(command: string, arg?: any): TPromise<any>;
}
......@@ -23,7 +23,7 @@ export class WindowsChannel implements IWindowsChannel {
call(command: string, arg?: any): TPromise<any> {
switch (command) {
case 'openFileFolderPicker': return this.service.openFileFolderPicker(arg[0], arg[1]);
case 'openFilePicker': return this.service.openFilePicker(arg[0], arg[1]);
case 'openFilePicker': return this.service.openFilePicker(arg[0], arg[1], arg[2]);
case 'openFolderPicker': return this.service.openFolderPicker(arg[0], arg[1]);
}
}
......@@ -39,8 +39,8 @@ export class WindowsChannelClient implements IWindowsService {
return this.channel.call('openFileFolderPicker', [windowId, forceNewWindow]);
}
openFilePicker(windowId: number, forceNewWindow?: boolean): TPromise<void> {
return this.channel.call('openFilePicker', [windowId, forceNewWindow]);
openFilePicker(windowId: number, forceNewWindow?: boolean, path?: string): TPromise<void> {
return this.channel.call('openFilePicker', [windowId, forceNewWindow, path]);
}
openFolderPicker(windowId: number, forceNewWindow?: boolean): TPromise<void> {
......
......@@ -21,8 +21,8 @@ export class WindowService implements IWindowService {
return this.windowsService.openFileFolderPicker(this.windowId, forceNewWindow);
}
openFilePicker(forceNewWindow?: boolean): TPromise<void> {
return this.windowsService.openFilePicker(this.windowId, forceNewWindow);
openFilePicker(forceNewWindow?: boolean, path?: string): TPromise<void> {
return this.windowsService.openFilePicker(this.windowId, forceNewWindow, path);
}
openFolderPicker(forceNewWindow?: boolean): TPromise<void> {
......
......@@ -24,8 +24,8 @@ export class WindowsService implements IWindowsService {
return TPromise.as(null);
}
openFilePicker(windowId: number, forceNewWindow?: boolean): TPromise<void> {
this.windowsMainService.openFilePicker(forceNewWindow);
openFilePicker(windowId: number, forceNewWindow?: boolean, path?: string): TPromise<void> {
this.windowsMainService.openFilePicker(forceNewWindow, path);
return TPromise.as(null);
}
......
......@@ -18,6 +18,7 @@ import { asFileEditorInput } from 'vs/workbench/common/editor';
import { IMessageService } from 'vs/platform/message/common/message';
import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService';
import { IWindowIPCService } from 'vs/workbench/services/window/electron-browser/windowService';
import { IWindowService } from 'vs/platform/windows/common/windows';
import { ipcRenderer as ipc, clipboard } from 'electron';
......@@ -116,63 +117,65 @@ export class GlobalCopyPathAction extends Action {
}
}
export class BaseOpenAction extends Action {
private ipcMsg: string;
constructor(id: string, label: string, ipcMsg: string) {
super(id, label);
this.ipcMsg = ipcMsg;
}
public run(): TPromise<any> {
ipc.send(this.ipcMsg); // Handle in browser process
return TPromise.as(true);
}
}
export class OpenFileAction extends Action {
public static ID = 'workbench.action.files.openFile';
public static LABEL = nls.localize('openFile', "Open File...");
static ID = 'workbench.action.files.openFile';
static LABEL = nls.localize('openFile', "Open File...");
constructor(id: string, label: string, @IWorkbenchEditorService private editorService: IWorkbenchEditorService) {
constructor(
id: string,
label: string,
@IWorkbenchEditorService private editorService: IWorkbenchEditorService,
@IWindowService private windowService: IWindowService
) {
super(id, label);
}
public run(): TPromise<any> {
run(): TPromise<any> {
const fileInput = asFileEditorInput(this.editorService.getActiveEditorInput(), true);
// Handle in browser process
if (fileInput) {
ipc.send('vscode:openFilePicker', false, paths.dirname(fileInput.getResource().fsPath));
} else {
ipc.send('vscode:openFilePicker');
return this.windowService.openFilePicker(false, paths.dirname(fileInput.getResource().fsPath));
}
return TPromise.as(true);
return this.windowService.openFilePicker();
}
}
export class OpenFolderAction extends BaseOpenAction {
export class OpenFolderAction extends Action {
public static ID = 'workbench.action.files.openFolder';
public static LABEL = nls.localize('openFolder', "Open Folder...");
static ID = 'workbench.action.files.openFolder';
static LABEL = nls.localize('openFolder', "Open Folder...");
constructor(id: string, label: string) {
super(id, label, 'vscode:openFolderPicker');
constructor(
id: string,
label: string,
@IWindowService private windowService: IWindowService
) {
super(id, label);
}
run(): TPromise<any> {
return this.windowService.openFolderPicker();
}
}
export class OpenFileFolderAction extends BaseOpenAction {
export class OpenFileFolderAction extends Action {
static ID = 'workbench.action.files.openFileFolder';
static LABEL = nls.localize('openFileFolder', "Open...");
public static ID = 'workbench.action.files.openFileFolder';
public static LABEL = nls.localize('openFileFolder', "Open...");
constructor(
id: string,
label: string,
@IWindowService private windowService: IWindowService
) {
super(id, label);
}
constructor(id: string, label: string) {
super(id, label, 'vscode:openFileFolderPicker');
run(): TPromise<any> {
return this.windowService.openFileFolderPicker();
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册