windowsIpc.ts 2.1 KB
Newer Older
J
Joao Moreno 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

'use strict';

import { TPromise } from 'vs/base/common/winjs.base';
import { IChannel } from 'vs/base/parts/ipc/common/ipc';
import { IWindowsService } from './windows';

export interface IWindowsChannel extends IChannel {
	call(command: 'openFileFolderPicker', args: [number, boolean]): TPromise<void>;
14
	call(command: 'openFilePicker', args: [number, boolean, string]): TPromise<void>;
J
Joao Moreno 已提交
15
	call(command: 'openFolderPicker', args: [number, boolean]): TPromise<void>;
16
	call(command: 'reloadWindow', arg: number): TPromise<void>;
J
Joao Moreno 已提交
17 18 19 20 21 22 23 24 25 26
	call(command: string, arg?: any): TPromise<any>;
}

export class WindowsChannel implements IWindowsChannel {

	constructor(private service: IWindowsService) { }

	call(command: string, arg?: any): TPromise<any> {
		switch (command) {
			case 'openFileFolderPicker': return this.service.openFileFolderPicker(arg[0], arg[1]);
27
			case 'openFilePicker': return this.service.openFilePicker(arg[0], arg[1], arg[2]);
J
Joao Moreno 已提交
28
			case 'openFolderPicker': return this.service.openFolderPicker(arg[0], arg[1]);
29
			case 'reloadWindow': return this.service.reloadWindow(arg);
J
Joao Moreno 已提交
30 31 32 33 34 35 36 37 38 39 40 41 42 43
		}
	}
}

export class WindowsChannelClient implements IWindowsService {

	_serviceBrand: any;

	constructor(private channel: IWindowsChannel) { }

	openFileFolderPicker(windowId: number, forceNewWindow?: boolean): TPromise<void> {
		return this.channel.call('openFileFolderPicker', [windowId, forceNewWindow]);
	}

44 45
	openFilePicker(windowId: number, forceNewWindow?: boolean, path?: string): TPromise<void> {
		return this.channel.call('openFilePicker', [windowId, forceNewWindow, path]);
J
Joao Moreno 已提交
46 47 48 49 50
	}

	openFolderPicker(windowId: number, forceNewWindow?: boolean): TPromise<void> {
		return this.channel.call('openFolderPicker', [windowId, forceNewWindow]);
	}
51 52 53 54

	reloadWindow(windowId: number): TPromise<void> {
		return this.channel.call('reloadWindow', windowId);
	}
J
Joao Moreno 已提交
55
}