embeddedCodeEditorWidget.ts 2.3 KB
Newer Older
E
Erich Gamma 已提交
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';

A
Alex Dima 已提交
7
import * as objects from 'vs/base/common/objects';
E
Erich Gamma 已提交
8 9
import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
import {IKeybindingService} from 'vs/platform/keybinding/common/keybindingService';
A
Alex Dima 已提交
10
import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry';
A
Alex Dima 已提交
11
import {ICodeEditorWidgetCreationOptions, IConfigurationChangedEvent, IEditorOptions} from 'vs/editor/common/editorCommon';
E
Erich Gamma 已提交
12
import {ICodeEditorService} from 'vs/editor/common/services/codeEditorService';
A
Alex Dima 已提交
13 14
import {ICodeEditor} from 'vs/editor/browser/editorBrowser';
import {CodeEditorWidget} from 'vs/editor/browser/widget/codeEditorWidget';
E
Erich Gamma 已提交
15

A
Alex Dima 已提交
16
export class EmbeddedCodeEditorWidget extends CodeEditorWidget {
E
Erich Gamma 已提交
17

A
Alex Dima 已提交
18 19
	private _parentEditor: ICodeEditor;
	private _overwriteOptions: ICodeEditorWidgetCreationOptions;
E
Erich Gamma 已提交
20 21 22

	constructor(
		domElement:HTMLElement,
A
Alex Dima 已提交
23 24
		options:ICodeEditorWidgetCreationOptions,
		parentEditor:ICodeEditor,
E
Erich Gamma 已提交
25 26 27 28 29 30 31 32 33 34 35 36 37
		@IInstantiationService instantiationService: IInstantiationService,
		@ICodeEditorService codeEditorService: ICodeEditorService,
		@IKeybindingService keybindingService: IKeybindingService,
		@ITelemetryService telemetryService: ITelemetryService
	) {
		super(domElement, parentEditor.getRawConfiguration(), instantiationService, codeEditorService, keybindingService, telemetryService);

		this._parentEditor = parentEditor;
		this._overwriteOptions = options;

		// Overwrite parent's options
		super.updateOptions(this._overwriteOptions);

A
Alex Dima 已提交
38
		this._lifetimeDispose.push(parentEditor.onDidConfigurationChange((e:IConfigurationChangedEvent) => this._onParentConfigurationChanged(e)));
E
Erich Gamma 已提交
39 40
	}

41 42 43 44
	public getParentEditor(): ICodeEditor {
		return this._parentEditor;
	}

A
Alex Dima 已提交
45
	private _onParentConfigurationChanged(e:IConfigurationChangedEvent): void {
E
Erich Gamma 已提交
46 47 48 49
		super.updateOptions(this._parentEditor.getRawConfiguration());
		super.updateOptions(this._overwriteOptions);
	}

A
Alex Dima 已提交
50 51
	public updateOptions(newOptions:IEditorOptions): void {
		objects.mixin(this._overwriteOptions, newOptions, true);
E
Erich Gamma 已提交
52 53 54
		super.updateOptions(this._overwriteOptions);
	}
}