提交 2d735515 编写于 作者: S Sandeep Somavarapu

Add authority and label to extension management server

上级 a057e321
......@@ -13,7 +13,6 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'
import { ILocalization } from 'vs/platform/localizations/common/localizations';
import URI from 'vs/base/common/uri';
import { IWorkspaceFolder, IWorkspace } from 'vs/platform/workspace/common/workspace';
import { Schemas } from 'vs/base/common/network';
export const EXTENSION_IDENTIFIER_PATTERN = '^([a-z0-9A-Z][a-z0-9\-A-Z]*)\\.([a-z0-9A-Z][a-z0-9\-A-Z]*)$';
export const EXTENSION_IDENTIFIER_REGEX = new RegExp(EXTENSION_IDENTIFIER_PATTERN);
......@@ -318,17 +317,17 @@ export interface IExtensionManagementService {
}
export const IExtensionManagementServerService = createDecorator<IExtensionManagementServerService>('extensionManagementServerService');
export const localExtensionManagementServerLocation: URI = URI.from({ scheme: Schemas.file });
export interface IExtensionManagementServer {
extensionManagementService: IExtensionManagementService;
location: URI;
authority: string;
label: string;
}
export interface IExtensionManagementServerService {
_serviceBrand: any;
readonly extensionManagementServers: IExtensionManagementServer[];
getDefaultExtensionManagementServer(): IExtensionManagementServer;
getLocalExtensionManagementServer(): IExtensionManagementServer;
getExtensionManagementServer(location: URI): IExtensionManagementServer;
}
......
......@@ -7,7 +7,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
import { Event, EventMultiplexer } from 'vs/base/common/event';
import {
IExtensionManagementService, ILocalExtension, IGalleryExtension, LocalExtensionType, InstallExtensionEvent, DidInstallExtensionEvent, IExtensionIdentifier, DidUninstallExtensionEvent, IReportedExtension, IGalleryMetadata,
IExtensionManagementServerService, IExtensionManagementServer, localExtensionManagementServerLocation
IExtensionManagementServerService, IExtensionManagementServer
} from 'vs/platform/extensionManagement/common/extensionManagement';
import { flatten } from 'vs/base/common/arrays';
......@@ -50,7 +50,7 @@ export class MulitExtensionManagementService implements IExtensionManagementServ
}
install(zipPath: string): TPromise<void> {
return this.extensionManagementServerService.getExtensionManagementServer(localExtensionManagementServerLocation).extensionManagementService.install(zipPath);
return this.extensionManagementServerService.getLocalExtensionManagementServer().extensionManagementService.install(zipPath);
}
installFromGallery(extension: IGalleryExtension): TPromise<void> {
......@@ -58,7 +58,7 @@ export class MulitExtensionManagementService implements IExtensionManagementServ
}
getExtensionsReport(): TPromise<IReportedExtension[]> {
return this.extensionManagementServerService.getExtensionManagementServer(localExtensionManagementServerLocation).extensionManagementService.getExtensionsReport();
return this.extensionManagementServerService.getLocalExtensionManagementServer().extensionManagementService.getExtensionsReport();
}
private getServer(extension: ILocalExtension): IExtensionManagementServer {
......
......@@ -148,7 +148,7 @@ export class Renderer implements IPagedRenderer<IExtension, ITemplateData> {
this.extensionService.getExtensions().then(runningExtensions => {
if (installed && installed.local) {
const installedExtensionServer = this.extensionManagementServerService.getExtensionManagementServer(installed.local.location);
const isSameExtensionRunning = runningExtensions.some(e => areSameExtensions(e, extension) && installedExtensionServer.location.toString() === this.extensionManagementServerService.getExtensionManagementServer(e.extensionLocation).location.toString());
const isSameExtensionRunning = runningExtensions.some(e => areSameExtensions(e, extension) && installedExtensionServer.authority === this.extensionManagementServerService.getExtensionManagementServer(e.extensionLocation).authority);
toggleClass(data.root, 'disabled', !isSameExtensionRunning);
} else {
removeClass(data.root, 'disabled');
......
......@@ -152,8 +152,8 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
private createExtensionsViewDescriptorsForServer(server: IExtensionManagementServer): IViewDescriptor[] {
return [{
id: `server.extensionsList.${server.location.toString()}`,
name: server.location.authority,
id: `server.extensionsList.${server.authority}`,
name: server.label,
container: VIEW_CONTAINER,
ctor: GroupByServerExtensionsView,
when: ContextKeyExpr.has('groupByServersContext'),
......@@ -449,7 +449,7 @@ export class ExtensionsViewlet extends ViewContainerViewlet implements IExtensio
protected createView(viewDescriptor: IViewDescriptor, options: IViewletViewOptions): ViewletPanel {
for (const extensionManagementServer of this.extensionManagementServerService.extensionManagementServers) {
if (viewDescriptor.id === `server.extensionsList.${extensionManagementServer.location.toString()}`) {
if (viewDescriptor.id === `server.extensionsList.${extensionManagementServer.authority}`) {
const servicesCollection: ServiceCollection = new ServiceCollection();
servicesCollection.set(IExtensionManagementServerService, new SingleServerExtensionManagementServerService(extensionManagementServer));
servicesCollection.set(IExtensionManagementService, extensionManagementServer.extensionManagementService);
......
......@@ -921,7 +921,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService,
const installed = this.installed.filter(e => e.id === extension.id)[0];
if (installed) {
const server = this.extensionManagementServerService.getExtensionManagementServer(local.location);
const existingLocal = installed.locals.filter(l => this.extensionManagementServerService.getExtensionManagementServer(l.location).location.toString() === server.location.toString())[0];
const existingLocal = installed.locals.filter(l => this.extensionManagementServerService.getExtensionManagementServer(l.location).authority === server.authority)[0];
if (existingLocal) {
const locals = [...installed.locals];
locals.splice(installed.locals.indexOf(existingLocal), 1, local);
......
......@@ -14,7 +14,7 @@ import * as ExtensionsActions from 'vs/workbench/parts/extensions/electron-brows
import { ExtensionsWorkbenchService } from 'vs/workbench/parts/extensions/node/extensionsWorkbenchService';
import {
IExtensionManagementService, IExtensionGalleryService, IExtensionEnablementService, IExtensionTipsService, ILocalExtension, LocalExtensionType, IGalleryExtension,
DidInstallExtensionEvent, DidUninstallExtensionEvent, InstallExtensionEvent, IExtensionIdentifier, EnablementState, InstallOperation, IExtensionManagementServerService, IExtensionManagementServer, localExtensionManagementServerLocation
DidInstallExtensionEvent, DidUninstallExtensionEvent, InstallExtensionEvent, IExtensionIdentifier, EnablementState, InstallOperation, IExtensionManagementServerService, IExtensionManagementServer
} from 'vs/platform/extensionManagement/common/extensionManagement';
import { getGalleryExtensionId, getGalleryExtensionIdFromLocal } from 'vs/platform/extensionManagement/common/extensionManagementUtil';
import { ExtensionManagementService, getLocalExtensionIdFromGallery, getLocalExtensionIdFromManifest } from 'vs/platform/extensionManagement/node/extensionManagementService';
......@@ -71,7 +71,7 @@ suite('ExtensionsActions Test', () => {
instantiationService.stub(IExtensionManagementService, 'onUninstallExtension', uninstallEvent.event);
instantiationService.stub(IExtensionManagementService, 'onDidUninstallExtension', didUninstallEvent.event);
instantiationService.stub(IExtensionManagementServerService, instantiationService.createInstance(SingleServerExtensionManagementServerService, <IExtensionManagementServer>{ location: localExtensionManagementServerLocation, extensionManagementService: instantiationService.get(IExtensionManagementService) }));
instantiationService.stub(IExtensionManagementServerService, instantiationService.createInstance(SingleServerExtensionManagementServerService, <IExtensionManagementServer>{ authority: 'vscode-local', extensionManagementService: instantiationService.get(IExtensionManagementService), label: 'local' }));
instantiationService.stub(IExtensionEnablementService, new TestExtensionEnablementService(instantiationService));
......
......@@ -3,9 +3,12 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IExtensionManagementService, IExtensionManagementServerService, IExtensionManagementServer, localExtensionManagementServerLocation } from 'vs/platform/extensionManagement/common/extensionManagement';
import { IExtensionManagementService, IExtensionManagementServerService, IExtensionManagementServer } from 'vs/platform/extensionManagement/common/extensionManagement';
import URI from 'vs/base/common/uri';
import { Schemas } from 'vs/base/common/network';
import { localize } from 'vs/nls';
const localExtensionManagementServerAuthority: string = 'vscode-local';
export class ExtensionManagementServerService implements IExtensionManagementServerService {
......@@ -16,14 +19,14 @@ export class ExtensionManagementServerService implements IExtensionManagementSer
constructor(
localExtensionManagementService: IExtensionManagementService
) {
this.extensionManagementServers = [{ extensionManagementService: localExtensionManagementService, location: localExtensionManagementServerLocation }];
this.extensionManagementServers = [{ extensionManagementService: localExtensionManagementService, authority: localExtensionManagementServerAuthority, label: localize('local', "Local") }];
}
getExtensionManagementServer(location: URI): IExtensionManagementServer {
return this.extensionManagementServers[0];
}
getDefaultExtensionManagementServer(): IExtensionManagementServer {
getLocalExtensionManagementServer(): IExtensionManagementServer {
return this.extensionManagementServers[0];
}
}
......@@ -41,11 +44,11 @@ export class SingleServerExtensionManagementServerService implements IExtensionM
}
getExtensionManagementServer(location: URI): IExtensionManagementServer {
location = location.scheme === Schemas.file ? URI.from({ scheme: Schemas.file }) : location;
return this.extensionManagementServers.filter(server => location.authority === server.location.authority)[0];
const authority = location.scheme === Schemas.file ? localExtensionManagementServerAuthority : location.authority;
return this.extensionManagementServers.filter(server => authority === server.authority)[0];
}
getDefaultExtensionManagementServer(): IExtensionManagementServer {
getLocalExtensionManagementServer(): IExtensionManagementServer {
return this.extensionManagementServers[0];
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册