extensionHost.contribution.ts 6.1 KB
Newer Older
1 2 3 4 5 6 7
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

'use strict';

J
Joao Moreno 已提交
8
import { IWorkbenchContribution, IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions';
9
import { Registry } from 'vs/platform/registry/common/platform';
J
Johannes Rieken 已提交
10 11
import { IInstantiationService, IConstructorSignature0 } from 'vs/platform/instantiation/common/instantiation';
import { IThreadService } from 'vs/workbench/services/thread/common/threadService';
12
import { MainContext, InstanceCollection } from '../node/extHost.protocol';
J
Johannes Rieken 已提交
13
import { IExtensionService } from 'vs/platform/extensions/common/extensions';
14 15

// --- addressable
J
Johannes Rieken 已提交
16 17
import { MainThreadCommands } from './mainThreadCommands';
import { MainThreadConfiguration } from './mainThreadConfiguration';
18
import { MainThreadDebugService } from './mainThreadDebugService';
J
Johannes Rieken 已提交
19 20 21 22
import { MainThreadDiagnostics } from './mainThreadDiagnostics';
import { MainThreadDocuments } from './mainThreadDocuments';
import { MainThreadEditors } from './mainThreadEditors';
import { MainThreadErrors } from './mainThreadErrors';
S
Sandeep Somavarapu 已提交
23
import { MainThreadTreeViews } from './mainThreadTreeViews';
J
Johannes Rieken 已提交
24 25 26 27
import { MainThreadLanguageFeatures } from './mainThreadLanguageFeatures';
import { MainThreadLanguages } from './mainThreadLanguages';
import { MainThreadMessageService } from './mainThreadMessageService';
import { MainThreadOutputService } from './mainThreadOutputService';
28
import { MainThreadProgress } from './mainThreadProgress';
J
Johannes Rieken 已提交
29 30 31 32 33 34 35 36
import { MainThreadQuickOpen } from './mainThreadQuickOpen';
import { MainThreadStatusBar } from './mainThreadStatusBar';
import { MainThreadStorage } from './mainThreadStorage';
import { MainThreadTelemetry } from './mainThreadTelemetry';
import { MainThreadTerminalService } from './mainThreadTerminalService';
import { MainThreadWorkspace } from './mainThreadWorkspace';
import { MainProcessExtensionService } from './mainThreadExtensionService';
import { MainThreadFileSystemEventService } from './mainThreadFileSystemEventService';
37
import { MainThreadTask } from './mainThreadTask';
J
Joao Moreno 已提交
38
import { MainThreadSCM } from './mainThreadSCM';
C
Christof Marti 已提交
39
import { MainThreadCredentials } from './mainThreadCredentials';
40 41

// --- other interested parties
J
Johannes Rieken 已提交
42
import { MainThreadDocumentsAndEditors } from './mainThreadDocumentsAndEditors';
J
Johannes Rieken 已提交
43
import { JSONValidationExtensionPoint } from 'vs/platform/jsonschemas/common/jsonValidationExtensionPoint';
44
import { LanguageConfigurationFileHandler } from 'vs/workbench/parts/codeEditor/electron-browser/languageConfiguration/languageConfigurationExtensionPoint';
J
Johannes Rieken 已提交
45
import { SaveParticipant } from './mainThreadSaveParticipant';
46

47 48 49
// --- registers itself as service
import './mainThreadHeapService';

50 51 52 53
export class ExtHostContribution implements IWorkbenchContribution {

	constructor(
		@IThreadService private threadService: IThreadService,
54 55
		@IInstantiationService private instantiationService: IInstantiationService,
		@IExtensionService private extensionService: IExtensionService
56 57 58 59 60 61 62 63 64
	) {
		this.initExtensionSystem();
	}

	public getId(): string {
		return 'vs.api.extHost';
	}

	private initExtensionSystem(): void {
65 66 67 68
		const create = <T>(ctor: IConstructorSignature0<T>): T => {
			return this.instantiationService.createInstance(ctor);
		};

J
Johannes Rieken 已提交
69 70
		const documentsAndEditors = this.instantiationService.createInstance(MainThreadDocumentsAndEditors);

71 72 73
		// Addressable instances
		const col = new InstanceCollection();
		col.define(MainContext.MainThreadCommands).set(create(MainThreadCommands));
74
		col.define(MainContext.MainThreadConfiguration).set(create(MainThreadConfiguration));
75
		col.define(MainContext.MainThreadDebugService).set(create(MainThreadDebugService));
76
		col.define(MainContext.MainThreadDiagnostics).set(create(MainThreadDiagnostics));
J
Johannes Rieken 已提交
77 78
		col.define(MainContext.MainThreadDocuments).set(this.instantiationService.createInstance(MainThreadDocuments, documentsAndEditors));
		col.define(MainContext.MainThreadEditors).set(this.instantiationService.createInstance(MainThreadEditors, documentsAndEditors));
79
		col.define(MainContext.MainThreadErrors).set(create(MainThreadErrors));
S
Sandeep Somavarapu 已提交
80
		col.define(MainContext.MainThreadTreeViews).set(create(MainThreadTreeViews));
81 82 83 84
		col.define(MainContext.MainThreadLanguageFeatures).set(create(MainThreadLanguageFeatures));
		col.define(MainContext.MainThreadLanguages).set(create(MainThreadLanguages));
		col.define(MainContext.MainThreadMessageService).set(create(MainThreadMessageService));
		col.define(MainContext.MainThreadOutputService).set(create(MainThreadOutputService));
85
		col.define(MainContext.MainThreadProgress).set(create(MainThreadProgress));
86 87 88 89
		col.define(MainContext.MainThreadQuickOpen).set(create(MainThreadQuickOpen));
		col.define(MainContext.MainThreadStatusBar).set(create(MainThreadStatusBar));
		col.define(MainContext.MainThreadStorage).set(create(MainThreadStorage));
		col.define(MainContext.MainThreadTelemetry).set(create(MainThreadTelemetry));
D
Daniel Imms 已提交
90
		col.define(MainContext.MainThreadTerminalService).set(create(MainThreadTerminalService));
91
		col.define(MainContext.MainThreadWorkspace).set(create(MainThreadWorkspace));
J
Joao Moreno 已提交
92
		col.define(MainContext.MainThreadSCM).set(create(MainThreadSCM));
93
		col.define(MainContext.MainThreadTask).set(create(MainThreadTask));
C
Christof Marti 已提交
94
		col.define(MainContext.MainThreadCredentials).set(create(MainThreadCredentials));
A
Alex Dima 已提交
95 96 97
		if (this.extensionService instanceof MainProcessExtensionService) {
			col.define(MainContext.MainProcessExtensionService).set(<MainProcessExtensionService>this.extensionService);
		}
98 99 100 101
		col.finish(true, this.threadService);

		// Other interested parties
		create(JSONValidationExtensionPoint);
A
Alex Dima 已提交
102
		this.instantiationService.createInstance(LanguageConfigurationFileHandler);
103
		create(MainThreadFileSystemEventService);
104
		create(SaveParticipant);
105 106 107 108 109 110
	}
}

// Register File Tracker
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench).registerWorkbenchContribution(
	ExtHostContribution
111
);