我在修改 EMF 自动创建的“New Child”菜单以为某些类型的项目创建子菜单时遇到问题。我发现,默认情况下,管道符号用作分隔符,因此具有名称的子对象会Hamburger | Megaplusbig
导致Hamburger
出现子菜单。此页面似乎表明getCreateChildText()
在相关项目提供者中覆盖是一个不错的选择。
我想要的是某些类型的模型项目出现在子菜单中,为了实现这一点,我只需确保将其MySubmenu |
添加到名称之前。我的问题是我在 Eclipse 中编辑的模型的类位于一个单独的 Jar 文件中,我不能(或者说真的不应该)修改它。
我没有太多运气试图以另一种方式实现这一目标。我的另一个尝试是扩展BasicModelEditActionProvider
和覆盖它的fillContextMenu()
和updateActions()
方法。后者确实通过另一个调用来创建子菜单BasicActionProvider.extractSubmenuActions()
,我可以再次覆盖它,但是到那时,关于我的模型对象的信息在抽象中丢失了。该方法适用于IAction
列表,即使我将操作强制转换为StaticSelectionCommandAction
(它始终是),该command
字段也没有公共 getter,并且只有通过command
我在某处看到实际 EMF EObject 的字段。
我正在寻找一个不太难看的解决方案,它不涉及修改 Jar 文件中的项目提供程序,除非我真的必须这样做。