From ec28475881d4b5ad4570a579381317b29bbd2a5d Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 3 Feb 2020 14:36:30 +0100 Subject: [PATCH] make MenuId dynamic --- src/vs/platform/actions/common/actions.ts | 72 ++++++++++++++++++- .../actions/test/common/menuService.test.ts | 2 +- .../browser/parts/titlebar/menubarControl.ts | 4 +- src/vs/workbench/electron-browser/window.ts | 4 +- 4 files changed, 75 insertions(+), 7 deletions(-) diff --git a/src/vs/platform/actions/common/actions.ts b/src/vs/platform/actions/common/actions.ts index 0a1e2917c54..201198887a0 100644 --- a/src/vs/platform/actions/common/actions.ts +++ b/src/vs/platform/actions/common/actions.ts @@ -56,7 +56,75 @@ export function isISubmenuItem(item: IMenuItem | ISubmenuItem): item is ISubmenu return (item as ISubmenuItem).submenu !== undefined; } -export const enum MenuId { +export class MenuId { + + static readonly CommandPalette = new MenuId('CommandPalette'); + static readonly DebugBreakpointsContext = new MenuId('DebugBreakpointsContext'); + static readonly DebugCallStackContext = new MenuId('DebugCallStackContext'); + static readonly DebugConsoleContext = new MenuId('DebugConsoleContext'); + static readonly DebugVariablesContext = new MenuId('DebugVariablesContext'); + static readonly DebugWatchContext = new MenuId('DebugWatchContext'); + static readonly DebugToolBar = new MenuId('DebugToolBar'); + static readonly EditorContext = new MenuId('EditorContext'); + static readonly EditorContextPeek = new MenuId('EditorContextPeek'); + static readonly EditorTitle = new MenuId('EditorTitle'); + static readonly EditorTitleContext = new MenuId('EditorTitleContext'); + static readonly EmptyEditorGroupContext = new MenuId('EmptyEditorGroupContext'); + static readonly ExplorerContext = new MenuId('ExplorerContext'); + static readonly ExtensionContext = new MenuId('ExtensionContext'); + static readonly GlobalActivity = new MenuId('GlobalActivity'); + static readonly MenubarAppearanceMenu = new MenuId('MenubarAppearanceMenu'); + static readonly MenubarDebugMenu = new MenuId('MenubarDebugMenu'); + static readonly MenubarEditMenu = new MenuId('MenubarEditMenu'); + static readonly MenubarFileMenu = new MenuId('MenubarFileMenu'); + static readonly MenubarGoMenu = new MenuId('MenubarGoMenu'); + static readonly MenubarHelpMenu = new MenuId('MenubarHelpMenu'); + static readonly MenubarLayoutMenu = new MenuId('MenubarLayoutMenu'); + static readonly MenubarNewBreakpointMenu = new MenuId('MenubarNewBreakpointMenu'); + static readonly MenubarPreferencesMenu = new MenuId('MenubarPreferencesMenu'); + static readonly MenubarRecentMenu = new MenuId('MenubarRecentMenu'); + static readonly MenubarSelectionMenu = new MenuId('MenubarSelectionMenu'); + static readonly MenubarSwitchEditorMenu = new MenuId('MenubarSwitchEditorMenu'); + static readonly MenubarSwitchGroupMenu = new MenuId('MenubarSwitchGroupMenu'); + static readonly MenubarTerminalMenu = new MenuId('MenubarTerminalMenu'); + static readonly MenubarViewMenu = new MenuId('MenubarViewMenu'); + static readonly OpenEditorsContext = new MenuId('OpenEditorsContext'); + static readonly ProblemsPanelContext = new MenuId('ProblemsPanelContext'); + static readonly SCMChangeContext = new MenuId('SCMChangeContext'); + static readonly SCMResourceContext = new MenuId('SCMResourceContext'); + static readonly SCMResourceFolderContext = new MenuId('SCMResourceFolderContext'); + static readonly SCMResourceGroupContext = new MenuId('SCMResourceGroupContext'); + static readonly SCMSourceControl = new MenuId('SCMSourceControl'); + static readonly SCMTitle = new MenuId('SCMTitle'); + static readonly SearchContext = new MenuId('SearchContext'); + static readonly StatusBarWindowIndicatorMenu = new MenuId('StatusBarWindowIndicatorMenu'); + static readonly TouchBarContext = new MenuId('TouchBarContext'); + static readonly TitleBarContext = new MenuId('TitleBarContext'); + static readonly TunnelContext = new MenuId('TunnelContext'); + static readonly TunnelInline = new MenuId('TunnelInline'); + static readonly TunnelTitle = new MenuId('TunnelTitle'); + static readonly ViewItemContext = new MenuId('ViewItemContext'); + static readonly ViewTitle = new MenuId('ViewTitle'); + static readonly ViewTitleContext = new MenuId('ViewTitleContext'); + static readonly CommentThreadTitle = new MenuId('CommentThreadTitle'); + static readonly CommentThreadActions = new MenuId('CommentThreadActions'); + static readonly CommentTitle = new MenuId('CommentTitle'); + static readonly CommentActions = new MenuId('CommentActions'); + static readonly BulkEditTitle = new MenuId('BulkEditTitle'); + static readonly BulkEditContext = new MenuId('BulkEditContext'); + + private static _idPool = 0; + + readonly id: number; + readonly _debugName: string; + + constructor(debugName: string) { + this.id = MenuId._idPool++; + this._debugName = debugName; + } +} + +export const enum MenuId3 { CommandPalette, DebugBreakpointsContext, DebugCallStackContext, @@ -146,7 +214,7 @@ export interface IMenuRegistry { export const MenuRegistry: IMenuRegistry = new class implements IMenuRegistry { private readonly _commands = new Map(); - private readonly _menuItems = new Map>(); + private readonly _menuItems = new Map>(); private readonly _onDidChangeMenu = new Emitter(); readonly onDidChangeMenu: Event = this._onDidChangeMenu.event; diff --git a/src/vs/platform/actions/test/common/menuService.test.ts b/src/vs/platform/actions/test/common/menuService.test.ts index b49eca01673..48b8fdd9186 100644 --- a/src/vs/platform/actions/test/common/menuService.test.ts +++ b/src/vs/platform/actions/test/common/menuService.test.ts @@ -28,7 +28,7 @@ suite('MenuService', function () { setup(function () { menuService = new MenuService(NullCommandService); - testMenuId = Math.PI; + testMenuId = new MenuId('testo'); disposables.clear(); }); diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts index 76a3ea95bf2..086764a05e0 100644 --- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts @@ -573,9 +573,9 @@ export class CustomMenubarControl extends MenubarControl { for (let action of actions) { this.insertActionsBefore(action, target); if (action instanceof SubmenuItemAction) { - let submenu = this.menus[action.item.submenu]; + let submenu = this.menus[action.item.submenu.id]; if (!submenu) { - submenu = this.menus[action.item.submenu] = this.menuService.createMenu(action.item.submenu, this.contextKeyService); + submenu = this.menus[action.item.submenu.id] = this.menuService.createMenu(action.item.submenu, this.contextKeyService); this._register(submenu.onDidChange(() => { if (!this.focusInsideMenubar) { const actions: IAction[] = []; diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts index 4f502198c5b..debe0d0e1d6 100644 --- a/src/vs/workbench/electron-browser/window.ts +++ b/src/vs/workbench/electron-browser/window.ts @@ -778,8 +778,8 @@ class NativeMenubarControl extends MenubarControl { if (menuItem instanceof SubmenuItemAction) { const submenu = { items: [] }; - if (!this.menus[menuItem.item.submenu]) { - const menu = this.menus[menuItem.item.submenu] = this.menuService.createMenu(menuItem.item.submenu, this.contextKeyService); + if (!this.menus[menuItem.item.submenu.id]) { + const menu = this.menus[menuItem.item.submenu.id] = this.menuService.createMenu(menuItem.item.submenu, this.contextKeyService); this._register(menu.onDidChange(() => this.updateMenubar())); } -- GitLab