Fix Microsoft/vscode-remote/issues/1556

This commit is contained in:
Sandeep Somavarapu 2019-04-24 12:24:55 +02:00
parent c306bf9b1f
commit 32dc6a831b
2 changed files with 27 additions and 33 deletions

View file

@ -55,6 +55,9 @@ import { ExtensionType } from 'vs/platform/extensions/common/extensions';
import { Registry } from 'vs/platform/registry/common/platform';
import { ViewContainerViewlet } from 'vs/workbench/browser/parts/views/viewsViewlet';
import { RemoteAuthorityContext } from 'vs/workbench/common/contextkeys';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts';
import { ILabelService } from 'vs/platform/label/common/label';
interface SearchInputEvent extends Event {
target: HTMLInputElement;
@ -90,7 +93,9 @@ const viewIdNameMappings: { [id: string]: string } = {
export class ExtensionsViewletViewsContribution implements IWorkbenchContribution {
constructor(
@IExtensionManagementServerService private readonly extensionManagementServerService: IExtensionManagementServerService
@IExtensionManagementServerService private readonly extensionManagementServerService: IExtensionManagementServerService,
@ILabelService private readonly labelService: ILabelService,
@IWorkbenchEnvironmentService private readonly workbenchEnvironmentService: IWorkbenchEnvironmentService
) {
this.registerViews();
}
@ -176,22 +181,32 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
}
private createExtensionsViewDescriptorsForServer(server: IExtensionManagementServer): IViewDescriptor[] {
const getViewName = (viewTitle: string, server: IExtensionManagementServer): string => {
const serverLabel = this.workbenchEnvironmentService.configuration.remoteAuthority === server.authority ? this.labelService.getHostLabel(REMOTE_HOST_SCHEME, server.authority) || server.label : server.label;
if (viewTitle && this.workbenchEnvironmentService.configuration.remoteAuthority) {
return `${serverLabel} - ${viewTitle}`;
}
return viewTitle ? viewTitle : serverLabel;
};
const getInstalledViewName = (): string => getViewName(localize('installed', "Installed"), server);
const getOutdatedViewName = (): string => getViewName(localize('outdated', "Outdated"), server);
const onDidChangeServerLabel: EventOf<void> = this.workbenchEnvironmentService.configuration.remoteAuthority ? EventOf.map(this.labelService.onDidChangeFormatters, () => undefined) : EventOf.None;
return [{
id: `extensions.${server.authority}.installed`,
name: localize('installed', "Installed"),
ctorDescriptor: { ctor: ServerExtensionsView, arguments: [server] },
get name() { return getInstalledViewName(); },
ctorDescriptor: { ctor: ServerExtensionsView, arguments: [server, EventOf.map<void, string>(onDidChangeServerLabel, () => getInstalledViewName())] },
when: ContextKeyExpr.and(ContextKeyExpr.has('searchInstalledExtensions')),
weight: 100
}, {
id: `extensions.${server.authority}.outdated`,
name: localize('outdated', "Outdated"),
ctorDescriptor: { ctor: ServerExtensionsView, arguments: [server] },
get name() { return getOutdatedViewName(); },
ctorDescriptor: { ctor: ServerExtensionsView, arguments: [server, EventOf.map<void, string>(onDidChangeServerLabel, () => getOutdatedViewName())] },
when: ContextKeyExpr.and(ContextKeyExpr.has('searchOutdatedExtensions')),
weight: 100
}, {
id: `extensions.${server.authority}.default`,
name: localize('installed', "Installed"),
ctorDescriptor: { ctor: ServerExtensionsView, arguments: [server] },
get name() { return getInstalledViewName(); },
ctorDescriptor: { ctor: ServerExtensionsView, arguments: [server, EventOf.map<void, string>(onDidChangeServerLabel, () => getInstalledViewName())] },
when: ContextKeyExpr.and(ContextKeyExpr.has('defaultExtensionViews'), ContextKeyExpr.has('hasInstalledExtensions'), RemoteAuthorityContext.notEqualsTo('')),
weight: 40,
order: 1
@ -224,7 +239,6 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
ctorDescriptor: { ctor: RecommendedExtensionsView },
when: ContextKeyExpr.has('recommendedExtensions'),
weight: 50,
canToggleVisibility: true,
order: 2
};
}
@ -239,7 +253,6 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
ctorDescriptor: { ctor: WorkspaceRecommendedExtensionsView },
when: ContextKeyExpr.and(ContextKeyExpr.has('recommendedExtensions'), ContextKeyExpr.has('nonEmptyWorkspace')),
weight: 50,
canToggleVisibility: true,
order: 1
};
}
@ -252,7 +265,6 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
ctorDescriptor: { ctor: EnabledExtensionsView },
when: ContextKeyExpr.and(ContextKeyExpr.has('searchEnabledExtensions')),
weight: 40,
canToggleVisibility: true,
order: 1
};
}
@ -265,7 +277,6 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
ctorDescriptor: { ctor: DisabledExtensionsView },
when: ContextKeyExpr.and(ContextKeyExpr.has('searchDisabledExtensions')),
weight: 10,
canToggleVisibility: true,
order: 3,
collapsed: true
};
@ -278,8 +289,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
name: viewIdNameMappings[id],
ctorDescriptor: { ctor: BuiltInExtensionsView },
when: ContextKeyExpr.has('searchBuiltInExtensions'),
weight: 100,
canToggleVisibility: true
weight: 100
};
}
@ -290,8 +300,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
name: viewIdNameMappings[id],
ctorDescriptor: { ctor: BuiltInThemesExtensionsView },
when: ContextKeyExpr.has('searchBuiltInExtensions'),
weight: 100,
canToggleVisibility: true
weight: 100
};
}
@ -302,8 +311,7 @@ export class ExtensionsViewletViewsContribution implements IWorkbenchContributio
name: viewIdNameMappings[id],
ctorDescriptor: { ctor: BuiltInBasicsExtensionsView },
when: ContextKeyExpr.has('searchBuiltInExtensions'),
weight: 100,
canToggleVisibility: true
weight: 100
};
}
}

View file

@ -45,9 +45,6 @@ import { ExtensionType, ExtensionIdentifier, IExtensionDescription, isLanguagePa
import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
import product from 'vs/platform/product/node/product';
import { CancelablePromise, createCancelablePromise } from 'vs/base/common/async';
import { ILabelService } from 'vs/platform/label/common/label';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts';
import { isUIExtension } from 'vs/workbench/services/extensions/node/extensionsUtil';
class ExtensionsViewState extends Disposable implements IExtensionsViewState {
@ -822,18 +819,11 @@ export class ExtensionsListView extends ViewletPanel {
}
}
function getViewTitleForServer(viewTitle: string, server: IExtensionManagementServer, labelService: ILabelService, workbenchEnvironmentService: IWorkbenchEnvironmentService): string {
const serverLabel = workbenchEnvironmentService.configuration.remoteAuthority === server.authority ? labelService.getHostLabel(REMOTE_HOST_SCHEME, server.authority) || server.label : server.label;
if (viewTitle && workbenchEnvironmentService.configuration.remoteAuthority) {
return `${serverLabel} - ${viewTitle}`;
}
return viewTitle ? viewTitle : serverLabel;
}
export class ServerExtensionsView extends ExtensionsListView {
constructor(
server: IExtensionManagementServer,
onDidChangeTitle: Event<string>,
options: ExtensionsListViewOptions,
@INotificationService notificationService: INotificationService,
@IKeybindingService keybindingService: IKeybindingService,
@ -850,15 +840,11 @@ export class ServerExtensionsView extends ExtensionsListView {
@IExperimentService experimentService: IExperimentService,
@IWorkbenchThemeService workbenchThemeService: IWorkbenchThemeService,
@IExtensionsWorkbenchService extensionsWorkbenchService: IExtensionsWorkbenchService,
@ILabelService labelService: ILabelService,
@IWorkbenchEnvironmentService workbenchEnvironmentService: IWorkbenchEnvironmentService,
@IExtensionManagementServerService extensionManagementServerService: IExtensionManagementServerService
) {
const viewTitle = options.title;
options.title = getViewTitleForServer(viewTitle, server, labelService, workbenchEnvironmentService);
options.server = server;
super(options, notificationService, keybindingService, contextMenuService, instantiationService, themeService, extensionService, extensionsWorkbenchService, editorService, tipsService, modeService, telemetryService, configurationService, contextService, experimentService, workbenchThemeService, extensionManagementServerService);
this.disposables.push(labelService.onDidChangeFormatters(() => this.updateTitle(getViewTitleForServer(viewTitle, server, labelService, workbenchEnvironmentService))));
this.disposables.push(onDidChangeTitle(title => this.updateTitle(title)));
}
async show(query: string): Promise<IPagedModel<IExtension>> {