/*--------------------------------------------------------------------------------------------- * 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, eventToCall, eventFromCall } from 'vs/base/parts/ipc/common/ipc'; import { IExtensionManagementService, ILocalExtension, IGalleryExtension, DidInstallExtensionEvent } from './extensionManagement'; import Event from 'vs/base/common/event'; export interface IExtensionManagementChannel extends IChannel { call(command: 'event:onInstallExtension'): TPromise; call(command: 'event:onDidInstallExtension'): TPromise; call(command: 'event:onUninstallExtension'): TPromise; call(command: 'event:onDidUninstallExtension'): TPromise; call(command: 'install', extensionOrPath: ILocalExtension | string): TPromise; call(command: 'uninstall', extension: ILocalExtension): TPromise; call(command: 'getInstalled', includeDuplicateVersions: boolean): TPromise; call(command: string, arg: any): TPromise; } export class ExtensionManagementChannel implements IExtensionManagementChannel { constructor(private service: IExtensionManagementService) { } call(command: string, arg: any): TPromise { switch (command) { case 'event:onInstallExtension': return eventToCall(this.service.onInstallExtension); case 'event:onDidInstallExtension': return eventToCall(this.service.onDidInstallExtension); case 'event:onUninstallExtension': return eventToCall(this.service.onUninstallExtension); case 'event:onDidUninstallExtension': return eventToCall(this.service.onDidUninstallExtension); case 'install': return this.service.install(arg); case 'uninstall': return this.service.uninstall(arg); case 'getInstalled': return this.service.getInstalled(arg); } } } export class ExtensionManagementChannelClient implements IExtensionManagementService { serviceId = IExtensionManagementService; constructor(private channel: IExtensionManagementChannel) { } private _onInstallExtension = eventFromCall(this.channel, 'event:onInstallExtension'); get onInstallExtension(): Event { return this._onInstallExtension; } private _onDidInstallExtension = eventFromCall(this.channel, 'event:onDidInstallExtension'); get onDidInstallExtension(): Event { return this._onDidInstallExtension; } private _onUninstallExtension = eventFromCall(this.channel, 'event:onUninstallExtension'); get onUninstallExtension(): Event { return this._onUninstallExtension; } private _onDidUninstallExtension = eventFromCall(this.channel, 'event:onDidUninstallExtension'); get onDidUninstallExtension(): Event { return this._onDidUninstallExtension; } install(extension: IGalleryExtension): TPromise; install(zipPath: string): TPromise; install(arg: any): TPromise { return this.channel.call('install', arg); } uninstall(extension: ILocalExtension): TPromise { return this.channel.call('uninstall', extension); } getInstalled(includeDuplicateVersions?: boolean): TPromise { return this.channel.call('getInstalled', includeDuplicateVersions); } }