mainThreadTerminalService.ts 2.0 KB
Newer Older
D
Daniel Imms 已提交
1 2 3 4 5 6
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
'use strict';

D
Daniel Imms 已提交
7
import {ITerminalService} from 'vs/workbench/parts/terminal/electron-browser/terminal';
8 9
import {IPanelService} from 'vs/workbench/services/panel/common/panelService';
import {IPartService} from 'vs/workbench/services/part/common/partService';
D
Daniel Imms 已提交
10 11 12 13 14
import {MainThreadTerminalServiceShape} from './extHost.protocol';

export class MainThreadTerminalService extends MainThreadTerminalServiceShape {

	constructor(
15 16 17
		@IPanelService private panelService: IPanelService,
		@IPartService private partService: IPartService,
		@ITerminalService private terminalService: ITerminalService
D
Daniel Imms 已提交
18 19 20
	) {
		super();
	}
D
Daniel Imms 已提交
21

P
Pine Wu 已提交
22 23
	public $createTerminal(name?: string, shellPath?: string, shellArgs?: string[]): number {
		return this.terminalService.createInstance(name, shellPath, shellArgs).id;
D
Daniel Imms 已提交
24 25 26
	}

	public $show(terminalId: number, preserveFocus: boolean): void {
27 28 29 30 31
		let terminalInstance = this.terminalService.getInstanceFromId(terminalId);
		if (terminalInstance) {
			this.terminalService.setActiveInstance(terminalInstance);
			this.terminalService.showPanel(!preserveFocus);
		}
D
Daniel Imms 已提交
32
	}
D
Daniel Imms 已提交
33

D
Daniel Imms 已提交
34
	public $hide(terminalId: number): void {
35
		if (this.terminalService.getActiveInstance().id === terminalId) {
D
Daniel Imms 已提交
36
			this.terminalService.hidePanel();
37
		}
D
Daniel Imms 已提交
38 39 40
	}

	public $dispose(terminalId: number): void {
41 42 43 44
		let terminalInstance = this.terminalService.getInstanceFromId(terminalId);
		if (terminalInstance) {
			terminalInstance.dispose();
		}
D
Daniel Imms 已提交
45 46
	}

D
Daniel Imms 已提交
47
	public $sendText(terminalId: number, text: string, addNewLine: boolean): void {
48 49 50 51
		let terminalInstance = this.terminalService.getInstanceFromId(terminalId);
		if (terminalInstance) {
			terminalInstance.sendText(text, addNewLine);
		}
D
Daniel Imms 已提交
52
	}
D
Daniel Imms 已提交
53
}