windowsIpc.ts 5.3 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
	call(command: 'toggleDevTools', arg: number): TPromise<void>;
J
Joao Moreno 已提交
18
	call(command: 'closeFolder', arg: number): TPromise<void>;
J
Joao Moreno 已提交
19
	call(command: 'toggleFullScreen', arg: number): TPromise<void>;
20
	call(command: 'setRepresentedFilename', arg: [number, string]): TPromise<void>;
J
Joao Moreno 已提交
21
	call(command: 'getRecentlyOpen', arg: number): TPromise<{ files: string[]; folders: string[]; }>;
J
Joao Moreno 已提交
22
	call(command: 'focusWindow', arg: number): TPromise<void>;
J
Joao Moreno 已提交
23
	call(command: 'setDocumentEdited', args: [number, boolean]): TPromise<void>;
J
Joao Moreno 已提交
24
	call(command: 'toggleMenuBar', args: number): TPromise<void>;
J
Joao Moreno 已提交
25
	call(command: 'windowOpen', arg: [string[], boolean]): TPromise<void>;
J
Joao Moreno 已提交
26
	call(command: 'openNewWindow'): TPromise<void>;
J
Joao Moreno 已提交
27
	call(command: 'showWindow', arg: number): TPromise<void>;
J
Joao Moreno 已提交
28
	call(command: 'getWindows'): TPromise<{ id: number; path: string; title: string; }[]>;
J
Joao Moreno 已提交
29 30 31 32 33 34 35 36 37 38
	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]);
39
			case 'openFilePicker': return this.service.openFilePicker(arg[0], arg[1], arg[2]);
J
Joao Moreno 已提交
40
			case 'openFolderPicker': return this.service.openFolderPicker(arg[0], arg[1]);
41
			case 'reloadWindow': return this.service.reloadWindow(arg);
J
Joao Moreno 已提交
42
			case 'openDevTools': return this.service.openDevTools(arg);
J
Joao Moreno 已提交
43
			case 'toggleDevTools': return this.service.toggleDevTools(arg);
J
Joao Moreno 已提交
44
			case 'closeFolder': return this.service.closeFolder(arg);
J
Joao Moreno 已提交
45
			case 'toggleFullScreen': return this.service.toggleFullScreen(arg);
46
			case 'setRepresentedFilename': return this.service.setRepresentedFilename(arg[0], arg[1]);
J
Joao Moreno 已提交
47
			case 'getRecentlyOpen': return this.service.getRecentlyOpen(arg);
J
Joao Moreno 已提交
48
			case 'focusWindow': return this.service.focusWindow(arg);
J
Joao Moreno 已提交
49
			case 'setDocumentEdited': return this.service.setDocumentEdited(arg[0], arg[1]);
J
Joao Moreno 已提交
50
			case 'toggleMenuBar': return this.service.toggleMenuBar(arg);
J
Joao Moreno 已提交
51
			case 'windowOpen': return this.service.windowOpen(arg[0], arg[1]);
J
Joao Moreno 已提交
52
			case 'openNewWindow': return this.service.openNewWindow();
J
Joao Moreno 已提交
53
			case 'showWindow': return this.service.showWindow(arg);
J
Joao Moreno 已提交
54
			case 'getWindows': return this.service.getWindows();
J
Joao Moreno 已提交
55 56 57 58 59 60 61 62 63 64 65 66 67 68
		}
	}
}

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]);
	}

69 70
	openFilePicker(windowId: number, forceNewWindow?: boolean, path?: string): TPromise<void> {
		return this.channel.call('openFilePicker', [windowId, forceNewWindow, path]);
J
Joao Moreno 已提交
71 72 73 74 75
	}

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

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

J
Joao Moreno 已提交
81 82 83 84
	openDevTools(windowId: number): TPromise<void> {
		return this.channel.call('openDevTools', windowId);
	}

J
Joao Moreno 已提交
85 86 87
	toggleDevTools(windowId: number): TPromise<void> {
		return this.channel.call('toggleDevTools', windowId);
	}
88

J
Joao Moreno 已提交
89 90 91
	closeFolder(windowId: number): TPromise<void> {
		return this.channel.call('closeFolder', windowId);
	}
J
Joao Moreno 已提交
92

J
Joao Moreno 已提交
93 94 95 96
	toggleFullScreen(windowId: number): TPromise<void> {
		return this.channel.call('toggleFullScreen', windowId);
	}

97 98 99 100
	setRepresentedFilename(windowId: number, fileName: string): TPromise<void> {
		return this.channel.call('setRepresentedFilename', [windowId, fileName]);
	}

J
Joao Moreno 已提交
101 102 103 104
	getRecentlyOpen(windowId: number): TPromise<{ files: string[]; folders: string[]; }> {
		return this.channel.call('getRecentlyOpen', windowId);
	}

J
Joao Moreno 已提交
105 106 107 108
	focusWindow(windowId: number): TPromise<void> {
		return this.channel.call('focusWindow', windowId);
	}

J
Joao Moreno 已提交
109 110 111 112
	setDocumentEdited(windowId: number, flag: boolean): TPromise<void> {
		return this.channel.call('setDocumentEdited', [windowId, flag]);
	}

J
Joao Moreno 已提交
113 114 115 116
	toggleMenuBar(windowId: number): TPromise<void> {
		return this.channel.call('toggleMenuBar', windowId);
	}

J
Joao Moreno 已提交
117 118 119 120
	windowOpen(paths: string[], forceNewWindow?: boolean): TPromise<void> {
		return this.channel.call('windowOpen', [paths, forceNewWindow]);
	}

J
Joao Moreno 已提交
121 122 123
	openNewWindow(): TPromise<void> {
		return this.channel.call('openNewWindow');
	}
J
Joao Moreno 已提交
124 125 126 127

	showWindow(windowId: number): TPromise<void> {
		return this.channel.call('showWindow', windowId);
	}
J
Joao Moreno 已提交
128 129 130 131

	getWindows(): TPromise<{ id: number; path: string; title: string; }[]> {
		return this.channel.call('getWindows');
	}
J
Joao Moreno 已提交
132
}