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

fixes #64864

上级 77e4eb5b
......@@ -24,6 +24,11 @@ interface ISCMResourceGroupMenuEntry extends IDisposable {
readonly group: ISCMResourceGroup;
}
interface ISCMMenus {
readonly resourceGroupMenu: IMenu;
readonly resourceMenu: IMenu;
}
export function getSCMResourceContextKey(resource: ISCMResourceGroup | ISCMResource): string {
return isSCMResource(resource) ? resource.resourceGroup.id : resource.id;
}
......@@ -39,7 +44,7 @@ export class SCMMenus implements IDisposable {
readonly onDidChangeTitle: Event<void> = this._onDidChangeTitle.event;
private readonly resourceGroupMenuEntries: ISCMResourceGroupMenuEntry[] = [];
private readonly resourceGroupMenus = new Map<ISCMResourceGroup, IMenu>();
private readonly resourceGroupMenus = new Map<ISCMResourceGroup, ISCMMenus>();
private readonly disposables: IDisposable[] = [];
......@@ -115,12 +120,20 @@ export class SCMMenus implements IDisposable {
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)) {
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 {
......@@ -129,15 +142,17 @@ export class SCMMenus implements IDisposable {
contextKeyService.createKey('scmProvider', group.provider.contextValue);
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 {
group,
dispose() {
contextKeyService.dispose();
menu.dispose();
resourceGroupMenu.dispose();
resourceMenu.dispose();
}
};
});
......
......@@ -423,7 +423,7 @@ class ResourceGroupRenderer implements IListRenderer<ISCMResourceGroup, Resource
template.actionBar.context = group;
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);
group.onDidSplice(updateCount, null, disposables);
......@@ -516,7 +516,7 @@ class ResourceRenderer implements IListRenderer<ISCMResource, ResourceTemplate>
template.actionBar.context = resource;
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.element, 'faded', resource.decorations.faded);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册