提交 9fd2603b 编写于 作者: A Alex Ross

Remote explorer drop down should respect context keys

Fixes #86209
上级 7f1975a4
......@@ -20,6 +20,7 @@ import { startsWith } from 'vs/base/common/strings';
import { isStringArray } from 'vs/base/common/types';
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
export interface IRemoteSelectItem extends ISelectOptionItem {
authority: string[];
......@@ -85,10 +86,10 @@ export class SwitchRemoteViewItem extends SelectActionViewItem {
return this.optionsItems[index];
}
static createOptionItems(views: IViewDescriptor[]): IRemoteSelectItem[] {
static createOptionItems(views: IViewDescriptor[], contextKeyService: IContextKeyService): IRemoteSelectItem[] {
let options: IRemoteSelectItem[] = [];
views.forEach(view => {
if (view.group && startsWith(view.group, 'targets') && view.remoteAuthority) {
if (view.group && startsWith(view.group, 'targets') && view.remoteAuthority && (!view.when || contextKeyService.contextMatchesRules(view.when))) {
options.push({ text: view.name, authority: isStringArray(view.remoteAuthority) ? view.remoteAuthority : [view.remoteAuthority] });
}
});
......
......@@ -280,6 +280,7 @@ export class RemoteViewlet extends FilterViewContainerViewlet {
@IExtensionService extensionService: IExtensionService,
@IRemoteExplorerService private readonly remoteExplorerService: IRemoteExplorerService,
@IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService,
@IContextKeyService private readonly contextKeyService: IContextKeyService
) {
super(VIEWLET_ID, remoteExplorerService.onDidChangeTargetType, configurationService, layoutService, telemetryService, storageService, instantiationService, themeService, contextMenuService, extensionService, contextService);
}
......@@ -290,7 +291,7 @@ export class RemoteViewlet extends FilterViewContainerViewlet {
public getActionViewItem(action: Action): IActionViewItem | undefined {
if (action.id === SwitchRemoteAction.ID) {
return this.instantiationService.createInstance(SwitchRemoteViewItem, action, SwitchRemoteViewItem.createOptionItems(Registry.as<IViewsRegistry>(Extensions.ViewsRegistry).getViews(VIEW_CONTAINER)));
return this.instantiationService.createInstance(SwitchRemoteViewItem, action, SwitchRemoteViewItem.createOptionItems(Registry.as<IViewsRegistry>(Extensions.ViewsRegistry).getViews(VIEW_CONTAINER), this.contextKeyService));
}
return super.getActionViewItem(action);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册