提交 3c2a40f6 编写于 作者: J Joao Moreno

fixes #64864

上级 77e4eb5b
...@@ -24,6 +24,11 @@ interface ISCMResourceGroupMenuEntry extends IDisposable { ...@@ -24,6 +24,11 @@ interface ISCMResourceGroupMenuEntry extends IDisposable {
readonly group: ISCMResourceGroup; readonly group: ISCMResourceGroup;
} }
interface ISCMMenus {
readonly resourceGroupMenu: IMenu;
readonly resourceMenu: IMenu;
}
export function getSCMResourceContextKey(resource: ISCMResourceGroup | ISCMResource): string { export function getSCMResourceContextKey(resource: ISCMResourceGroup | ISCMResource): string {
return isSCMResource(resource) ? resource.resourceGroup.id : resource.id; return isSCMResource(resource) ? resource.resourceGroup.id : resource.id;
} }
...@@ -39,7 +44,7 @@ export class SCMMenus implements IDisposable { ...@@ -39,7 +44,7 @@ export class SCMMenus implements IDisposable {
readonly onDidChangeTitle: Event<void> = this._onDidChangeTitle.event; readonly onDidChangeTitle: Event<void> = this._onDidChangeTitle.event;
private readonly resourceGroupMenuEntries: ISCMResourceGroupMenuEntry[] = []; private readonly resourceGroupMenuEntries: ISCMResourceGroupMenuEntry[] = [];
private readonly resourceGroupMenus = new Map<ISCMResourceGroup, IMenu>(); private readonly resourceGroupMenus = new Map<ISCMResourceGroup, ISCMMenus>();
private readonly disposables: IDisposable[] = []; private readonly disposables: IDisposable[] = [];
...@@ -115,12 +120,20 @@ export class SCMMenus implements IDisposable { ...@@ -115,12 +120,20 @@ export class SCMMenus implements IDisposable {
return result; return result;
} }
getMenu(group: ISCMResourceGroup): IMenu { getResourceGroupMenu(group: ISCMResourceGroup): IMenu {
if (!this.resourceGroupMenus.has(group)) {
throw new Error('SCM Resource Group menu not found');
}
return this.resourceGroupMenus.get(group)!.resourceGroupMenu;
}
getResourceMenu(group: ISCMResourceGroup): IMenu {
if (!this.resourceGroupMenus.has(group)) { if (!this.resourceGroupMenus.has(group)) {
throw new Error('SCM Resource Group menu not found'); throw new Error('SCM Resource Group menu not found');
} }
return this.resourceGroupMenus.get(group)!; return this.resourceGroupMenus.get(group)!.resourceMenu;
} }
private onDidSpliceGroups({ start, deleteCount, toInsert }: ISplice<ISCMResourceGroup>): void { private onDidSpliceGroups({ start, deleteCount, toInsert }: ISplice<ISCMResourceGroup>): void {
...@@ -129,15 +142,17 @@ export class SCMMenus implements IDisposable { ...@@ -129,15 +142,17 @@ export class SCMMenus implements IDisposable {
contextKeyService.createKey('scmProvider', group.provider.contextValue); contextKeyService.createKey('scmProvider', group.provider.contextValue);
contextKeyService.createKey('scmResourceGroup', getSCMResourceContextKey(group)); contextKeyService.createKey('scmResourceGroup', getSCMResourceContextKey(group));
const menu = this.menuService.createMenu(MenuId.SCMResourceGroupContext, contextKeyService); const resourceGroupMenu = this.menuService.createMenu(MenuId.SCMResourceGroupContext, contextKeyService);
const resourceMenu = this.menuService.createMenu(MenuId.SCMResourceContext, contextKeyService);
this.resourceGroupMenus.set(group, menu); this.resourceGroupMenus.set(group, { resourceGroupMenu, resourceMenu });
return { return {
group, group,
dispose() { dispose() {
contextKeyService.dispose(); contextKeyService.dispose();
menu.dispose(); resourceGroupMenu.dispose();
resourceMenu.dispose();
} }
}; };
}); });
......
...@@ -423,7 +423,7 @@ class ResourceGroupRenderer implements IListRenderer<ISCMResourceGroup, Resource ...@@ -423,7 +423,7 @@ class ResourceGroupRenderer implements IListRenderer<ISCMResourceGroup, Resource
template.actionBar.context = group; template.actionBar.context = group;
const disposables: IDisposable[] = []; const disposables: IDisposable[] = [];
disposables.push(connectPrimaryMenuToInlineActionBar(this.menus.getMenu(group), template.actionBar)); disposables.push(connectPrimaryMenuToInlineActionBar(this.menus.getResourceGroupMenu(group), template.actionBar));
const updateCount = () => template.count.setCount(group.elements.length); const updateCount = () => template.count.setCount(group.elements.length);
group.onDidSplice(updateCount, null, disposables); group.onDidSplice(updateCount, null, disposables);
...@@ -516,7 +516,7 @@ class ResourceRenderer implements IListRenderer<ISCMResource, ResourceTemplate> ...@@ -516,7 +516,7 @@ class ResourceRenderer implements IListRenderer<ISCMResource, ResourceTemplate>
template.actionBar.context = resource; template.actionBar.context = resource;
const disposables: IDisposable[] = []; const disposables: IDisposable[] = [];
disposables.push(connectPrimaryMenuToInlineActionBar(this.menus.getMenu(resource.resourceGroup), template.actionBar)); disposables.push(connectPrimaryMenuToInlineActionBar(this.menus.getResourceMenu(resource.resourceGroup), template.actionBar));
toggleClass(template.name, 'strike-through', resource.decorations.strikeThrough); toggleClass(template.name, 'strike-through', resource.decorations.strikeThrough);
toggleClass(template.element, 'faded', resource.decorations.faded); toggleClass(template.element, 'faded', resource.decorations.faded);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册