From 86e01ccc56eb248ea0fc0480bf9edc01f87c2c0e Mon Sep 17 00:00:00 2001 From: Tobias Ortmayr Date: Tue, 7 Oct 2025 13:40:56 +0200 Subject: [PATCH 1/2] GLSP-1586: Adjust to new MenuItem API Adjust Theia GLSP context menu service for new MenuItem API. Ensure that isEnabled,isVisible and isToggled are properly forwarded to the Theia Menu item Part of https://github.com/eclipse-glsp/glsp/issues/1586 Requires: https://github.com/eclipse-glsp/glsp-client/pull/450 Requires: https://github.com/eclipse-glsp/glsp-server-node/pull/116 --- .../browser/theia-glsp-context-menu-service.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/theia-integration/src/browser/theia-glsp-context-menu-service.ts b/packages/theia-integration/src/browser/theia-glsp-context-menu-service.ts index 26cf04e3..fc9905a7 100644 --- a/packages/theia-integration/src/browser/theia-glsp-context-menu-service.ts +++ b/packages/theia-integration/src/browser/theia-glsp-context-menu-service.ts @@ -14,7 +14,7 @@ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 ********************************************************************************/ // based on: https://github.com/eclipse-sprotty/sprotty-theia/blob/v0.12.0/src/sprotty/theia-sprotty-context-menu-service.ts -import { Anchor, FocusStateChangedAction, IActionDispatcher, IContextMenuService, MenuItem } from '@eclipse-glsp/client'; +import { Anchor, ClientMenuItem, FocusStateChangedAction, IActionDispatcher, IContextMenuService } from '@eclipse-glsp/client'; import { Command, CommandHandler, CommandRegistry, Disposable, MenuAction, MenuModelRegistry, MenuPath } from '@theia/core'; import { ApplicationShell, ContextMenuRenderer } from '@theia/core/lib/browser'; import { inject, injectable } from 'inversify'; @@ -51,7 +51,7 @@ export class TheiaContextMenuService implements IContextMenuService { return getDiagramWidget(this.shell); } - show(items: MenuItem[], anchor: Anchor, onHide?: () => void): void { + show(items: ClientMenuItem[], anchor: Anchor, onHide?: () => void): void { const context = this.diagramWidget?.node; if (!context) { console.warn('No context available for context menu'); @@ -75,7 +75,7 @@ export class TheiaContextMenuService implements IContextMenuService { this.contextMenuRenderer.render(renderOptions); } - protected register(menuPath: string[], items: MenuItem[]): DisposableItem[] { + protected register(menuPath: string[], items: ClientMenuItem[]): DisposableItem[] { const disposables: DisposableItem[] = []; for (const item of items) { if (item.children && item.children.length > 0) { @@ -90,18 +90,19 @@ export class TheiaContextMenuService implements IContextMenuService { return disposables; } - protected registerSubmenu(menuPath: string[], item: MenuItem): DisposableItem { + protected registerSubmenu(menuPath: string[], item: ClientMenuItem): DisposableItem { return this.menuProvider.registerSubmenu([...menuPath, item.id], item.label, { icon: item.icon }); } - protected registerCommand(menuPath: string[], item: MenuItem): DisposableItem { + protected registerCommand(menuPath: string[], item: ClientMenuItem): DisposableItem { const command: Command = { id: commandId(menuPath, item), label: item.label, iconClass: item.icon }; const disposable = this.commandRegistry.registerCommand(command, new GLSPCommandHandler(item, this.actionDispatcher)); return new DisposableCommand(command, disposable); } - protected registerMenuAction(menuPath: string[], item: MenuItem): DisposableItem { - const menuAction = { label: item.label, order: item.sortString, commandId: commandId(menuPath, item) }; + protected registerMenuAction(menuPath: string[], item: ClientMenuItem): DisposableItem { + const { label, sortString: order, isEnabled, isToggled, isVisible } = item; + const menuAction = { label, order, isEnabled, isToggled, isVisible, commandId: commandId(menuPath, item) }; const menuPathOfItem = item.group ? [...menuPath, item.group] : menuPath; const disposable = this.menuProvider.registerMenuAction(menuPathOfItem, menuAction); return new DisposableMenuAction(menuAction, disposable); @@ -134,7 +135,7 @@ export class TheiaContextMenuService implements IContextMenuService { class GLSPCommandHandler implements CommandHandler { constructor( - readonly menuItem: MenuItem, + readonly menuItem: ClientMenuItem, readonly actionDispatcher?: IActionDispatcher ) {} From 4812ef1a670aa711bbc392e4be5aed8e5425584e Mon Sep 17 00:00:00 2001 From: Tobias Ortmayr Date: Thu, 9 Oct 2025 11:10:36 +0200 Subject: [PATCH 2/2] Upgrade yarn lock --- yarn.lock | 93 +++++++++++++++++++++++++------------------------------ 1 file changed, 42 insertions(+), 51 deletions(-) diff --git a/yarn.lock b/yarn.lock index 49bedf47..09e62005 100644 --- a/yarn.lock +++ b/yarn.lock @@ -822,25 +822,25 @@ integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== "@eclipse-glsp-examples/workflow-glsp@next": - version "2.6.0-next.436" - resolved "https://registry.yarnpkg.com/@eclipse-glsp-examples/workflow-glsp/-/workflow-glsp-2.6.0-next.436.tgz#bbfc1e570159b76ebd443d9abe8a593b89dbf0d8" - integrity sha512-1QvYxWoOhd7j53gFAI5KXaYv9eLBEYcmWnepFr0YT6EED1jwPf0firnBQ+Ww4n2d3peitgsO/CTTotQsMD7qCA== + version "2.6.0-next.6" + resolved "https://registry.yarnpkg.com/@eclipse-glsp-examples/workflow-glsp/-/workflow-glsp-2.6.0-next.6.tgz#f55507850255b89a31e675d2857e9b52b9baf3ef" + integrity sha512-8ofqmbsQiLeOTGNBgrylJghBFgbGegFE7WuPGi+3q641bjgpYNFtP9xIXNzZ/gw+2eitWQdQ40HDdjatqra7sQ== dependencies: - "@eclipse-glsp/client" "2.6.0-next.436+a609666" + "@eclipse-glsp/client" "2.6.0-next.6+eb23ff3" balloon-css "^0.5.0" "@eclipse-glsp-examples/workflow-server-bundled@next": - version "2.6.0-next.129" - resolved "https://registry.yarnpkg.com/@eclipse-glsp-examples/workflow-server-bundled/-/workflow-server-bundled-2.6.0-next.129.tgz#4a67e2de9170626e9e7c659fb731fe9bf737c1df" - integrity sha512-SDKBD5nEDMKcyBaRPIGH3UvXPQN5NIVHVvbJy9QY52YUIkZoFx/7p/oteU8P8anuFVp4m82nI+kOHifYHiJIPg== + version "2.6.0-next.1" + resolved "https://registry.yarnpkg.com/@eclipse-glsp-examples/workflow-server-bundled/-/workflow-server-bundled-2.6.0-next.1.tgz#17703ee78dd134226ed34786693936106a71c40b" + integrity sha512-9RvV4X3sxQ539pMlb0B0DkNEQOmza1czxR46h/jP7MrmBKDifTfwto95mr/OFti8Y6iTk1jHB2tyWa/LyOSLmw== "@eclipse-glsp-examples/workflow-server@next": - version "2.6.0-next.129" - resolved "https://registry.yarnpkg.com/@eclipse-glsp-examples/workflow-server/-/workflow-server-2.6.0-next.129.tgz#1c9169df7d308113acdc29f648ff77a199b1b21b" - integrity sha512-qKCSbw3OKLkJ5C/kIPBVtevLwAHPssVj1QXEwIVVS5GhHiKvwi9VnLXbrjbTy4J6NRUWcSBwI0XIXlfJg3AIQA== + version "2.6.0-next.1" + resolved "https://registry.yarnpkg.com/@eclipse-glsp-examples/workflow-server/-/workflow-server-2.6.0-next.1.tgz#4562b5a7c4aa7fa7b3cbf8583b7853cc837e4eac" + integrity sha512-jxyVYIpl3wD63P53smcUOXGkEuKKC2k4zcyjg4MTLi4Hnsboyi3ruGj7IqPkCL+WiMk32+0Y9byZHn9h4dGdTw== dependencies: - "@eclipse-glsp/layout-elk" "2.6.0-next.129+704fe1e" - "@eclipse-glsp/server" "2.6.0-next.129+704fe1e" + "@eclipse-glsp/layout-elk" "2.6.0-next.1+9d94ba7" + "@eclipse-glsp/server" "2.6.0-next.1+9d94ba7" inversify "^6.1.3" "@eclipse-glsp/cli@2.6.0-next.183+9d337de": @@ -857,12 +857,12 @@ semver "^7.5.1" shelljs "^0.8.5" -"@eclipse-glsp/client@2.6.0-next.436+a609666", "@eclipse-glsp/client@next": - version "2.6.0-next.436" - resolved "https://registry.yarnpkg.com/@eclipse-glsp/client/-/client-2.6.0-next.436.tgz#8fc9e26f41766dc46e91b61eb9ebfa6d57fa381b" - integrity sha512-KLLqhX30Gm2OT6HZoa2LVK+ZvC0dwB/aTGjN3vI0GubvQt8sWHM+9u3c3IqFtqY0Vrt+gMJL+4alSR+RF3P7lw== +"@eclipse-glsp/client@2.6.0-next.6+eb23ff3", "@eclipse-glsp/client@next": + version "2.6.0-next.6" + resolved "https://registry.yarnpkg.com/@eclipse-glsp/client/-/client-2.6.0-next.6.tgz#74e46149637562052aa5e9d4fb230ad5120ec1c2" + integrity sha512-Y8T0SfLxbhsBNToKq5doCsm9JqCdtrVFtLSA9WraaSfH2rx4FFyDrZmPemUt77uUaw3ahxcmtAIFzcT0fhaOdw== dependencies: - "@eclipse-glsp/sprotty" "2.6.0-next.436+a609666" + "@eclipse-glsp/sprotty" "2.6.0-next.6+eb23ff3" autocompleter "^9.1.2" file-saver "^2.0.5" lodash "4.17.21" @@ -924,19 +924,19 @@ resolved "https://registry.yarnpkg.com/@eclipse-glsp/eslint-config/-/eslint-config-2.6.0-next.183.tgz#d40e44d8dc4d8e4905e2e588d58ee0b794eef617" integrity sha512-y/ItrTzhNWjIttHM7FJ8pAaQwWMirz9od/arZ6lUGWHkanHDBE88X76sVIOn/ztJkBzOxzKPwUL+Y1q6GILFfg== -"@eclipse-glsp/graph@2.6.0-next.129+704fe1e": - version "2.6.0-next.129" - resolved "https://registry.yarnpkg.com/@eclipse-glsp/graph/-/graph-2.6.0-next.129.tgz#1a6bcd36c48fb0937090721a1b189a345f2f672f" - integrity sha512-9OcfpgZfnGYKLzpdKnjraciKR4rlTy09Z95X5RjgntKJCXzlo330yM7vupwC7XC3/DVsjTzLlJJSGhjvjf8PhQ== +"@eclipse-glsp/graph@2.6.0-next.1+9d94ba7": + version "2.6.0-next.1" + resolved "https://registry.yarnpkg.com/@eclipse-glsp/graph/-/graph-2.6.0-next.1.tgz#2c2c0ae984619b8cf155e0df9018f36c8935505c" + integrity sha512-ZkPU90A7Ed0gNm92kmzM9BOyuw4wqfPGPaiFydB+Ux79Cac/1Ri8cekhJe7zKeEFE9LNgNkIhuWsOUPcY+7WHQ== dependencies: - "@eclipse-glsp/protocol" "2.5.0" + "@eclipse-glsp/protocol" next -"@eclipse-glsp/layout-elk@2.6.0-next.129+704fe1e": - version "2.6.0-next.129" - resolved "https://registry.yarnpkg.com/@eclipse-glsp/layout-elk/-/layout-elk-2.6.0-next.129.tgz#367d0cff68788be13c1e6701f5070f802cfbab26" - integrity sha512-P4yh1bTXGqbXtUP2HPptbjbGmJHJiTtdMffLqXF0YjTJ/naa5FsYTlgiLHXMTfb4aax5HhyqAgFB3C9NzxNs3A== +"@eclipse-glsp/layout-elk@2.6.0-next.1+9d94ba7": + version "2.6.0-next.1" + resolved "https://registry.yarnpkg.com/@eclipse-glsp/layout-elk/-/layout-elk-2.6.0-next.1.tgz#1d33c8ebedbc7dc061d3362b3d37ff446ada94a0" + integrity sha512-S8/fLrzOBZKfgwiTdjkLtUcnSwg6WfwGQ9mtlNZfIy1voAMro4Osm8gYecYf/1ZeVcWleykFIGCv/K/XdOkUhA== dependencies: - "@eclipse-glsp/server" "2.6.0-next.129+704fe1e" + "@eclipse-glsp/server" "2.6.0-next.1+9d94ba7" elkjs "^0.10.1" "@eclipse-glsp/mocha-config@2.6.0-next.183+9d337de": @@ -956,31 +956,22 @@ dependencies: prettier-plugin-packagejson "~2.4.6" -"@eclipse-glsp/protocol@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@eclipse-glsp/protocol/-/protocol-2.5.0.tgz#4c0325783bf296a8bdcef483cd0da96b760b35e3" - integrity sha512-bPHGamXtkbhFqV+2LAzrkOWw7iUmFIdYT+5uPdGqo3BPITiAA2cyE3iRuePwqgiqidhZrhPW60vL0GRgvgZ3TQ== - dependencies: - sprotty-protocol "1.4.0" - uuid "~10.0.0" - vscode-jsonrpc "8.2.0" - -"@eclipse-glsp/protocol@2.6.0-next.436+a609666": - version "2.6.0-next.436" - resolved "https://registry.yarnpkg.com/@eclipse-glsp/protocol/-/protocol-2.6.0-next.436.tgz#1a16e75a86ca2b6c7b20146f6eeecada07f977a5" - integrity sha512-jxRzMUesjtxFZcq/w2+P0I9HduY4RX0KiQpXwYIxkhYOA5M2FzNOFDyae4Y/YUo3Wuaankl0S74IP6qZSa2iLA== +"@eclipse-glsp/protocol@2.6.0-next.6+eb23ff3", "@eclipse-glsp/protocol@next": + version "2.6.0-next.6" + resolved "https://registry.yarnpkg.com/@eclipse-glsp/protocol/-/protocol-2.6.0-next.6.tgz#7437694ed1e4f5ca716ba657b98af46c90abbc9a" + integrity sha512-uswJrgPNb7wwRCiqyoNOkTCqdM2S+3avXuh4/vDKxyo7w05yLkblp1foEInfYIbRmqTod05K4fAtUWEkxJcg5Q== dependencies: sprotty-protocol "1.4.0" uuid "~10.0.0" vscode-jsonrpc "8.2.0" -"@eclipse-glsp/server@2.6.0-next.129+704fe1e": - version "2.6.0-next.129" - resolved "https://registry.yarnpkg.com/@eclipse-glsp/server/-/server-2.6.0-next.129.tgz#7627fcf57a487ce9a50d5f903d2cb5f9d12f9a05" - integrity sha512-15jfQHKN3eCZdVOHYT1sHkPgw1AhB2Y4T2Ij4zzRElwYAGb5fLBjQAv8p+/U+TSW5gbd3Fc+jl1fttaAhPDsuQ== +"@eclipse-glsp/server@2.6.0-next.1+9d94ba7": + version "2.6.0-next.1" + resolved "https://registry.yarnpkg.com/@eclipse-glsp/server/-/server-2.6.0-next.1.tgz#eee4d231b2f756dd42381ee7916e6ce914655786" + integrity sha512-TJT8nFJRd1JW28JR0cVikfBKV7iEHDPVCFOWVq/dxWGp4iVZouDQlrim7tDZSnDSIH5Uyu7CJy33HrA+aUbZ4Q== dependencies: - "@eclipse-glsp/graph" "2.6.0-next.129+704fe1e" - "@eclipse-glsp/protocol" "2.5.0" + "@eclipse-glsp/graph" "2.6.0-next.1+9d94ba7" + "@eclipse-glsp/protocol" next "@types/uuid" "8.3.1" commander "^8.3.0" fast-json-patch "^3.1.0" @@ -989,12 +980,12 @@ winston "^3.3.3" ws "^8.12.1" -"@eclipse-glsp/sprotty@2.6.0-next.436+a609666": - version "2.6.0-next.436" - resolved "https://registry.yarnpkg.com/@eclipse-glsp/sprotty/-/sprotty-2.6.0-next.436.tgz#6bb5e143010fbe96b92de8c3ce77a74bc5c5d0ec" - integrity sha512-ooYIX8S/lKU/HvtIK6k+1kD4ng7RjLtlwUyXh75g9vZ+RIrqI8mgswEUPAi9H48A1hk0fX8PrMY1yZ7YL1MHfQ== +"@eclipse-glsp/sprotty@2.6.0-next.6+eb23ff3": + version "2.6.0-next.6" + resolved "https://registry.yarnpkg.com/@eclipse-glsp/sprotty/-/sprotty-2.6.0-next.6.tgz#e7f55eac2f4050851bf5371795e23b9d11b0b9c9" + integrity sha512-k2OV+sJDC67lZP72Q2Z2h89Tp7uPaX8rqd/MmbGurkZglS8gDy047jAJcRz/pehcuhUdwVfD9hj+N2VswOa1gg== dependencies: - "@eclipse-glsp/protocol" "2.6.0-next.436+a609666" + "@eclipse-glsp/protocol" "2.6.0-next.6+eb23ff3" autocompleter "^9.1.0" snabbdom "~3.5.1" sprotty "1.4.0"