embeddedCodeEditorWidget.ts 2.5 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
import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
9
import {ICommandService} from 'vs/platform/commands/common/commands';
10
import {IContextKeyService} from 'vs/platform/contextkey/common/contextkey';
A
Alex Dima 已提交
11
import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry';
A
Alex Dima 已提交
12
import {ICodeEditorWidgetCreationOptions, IConfigurationChangedEvent, IEditorOptions} from 'vs/editor/common/editorCommon';
E
Erich Gamma 已提交
13
import {ICodeEditorService} from 'vs/editor/common/services/codeEditorService';
A
Alex Dima 已提交
14 15
import {ICodeEditor} from 'vs/editor/browser/editorBrowser';
import {CodeEditorWidget} from 'vs/editor/browser/widget/codeEditorWidget';
E
Erich Gamma 已提交
16

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

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

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

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

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

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

43 44 45 46
	public getParentEditor(): ICodeEditor {
		return this._parentEditor;
	}

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

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