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