0

我有一个现有的 RCP 项目,主要由 e3.x 插件组成。目标平台已经迁移到 Eclipse 4.5 并且兼容层也在使用中。目前可以在插件中使用新的 POJO e4view。这种“混合模式”运行良好。但是当我需要通过扩展(org.eclipse.ui.main.menu)扩展现有菜单时,我必须使用plugin.xml中的扩展。我的目标是创建一个应用程序模型(Application.e4xmi)并将定义从当前的 main-plugin.xml 迁移到新的应用程序模型(即处理程序、菜单定义等)。新插件应该使用新的模型片段(fragment.e4xmi)。非常重要的是,我不会修改现有的 e3 插件。是否可以将现有的主插件迁移到纯 e4 插件并添加旧的 e3 插件而无需更改它们。

例如:

Plugin Main(e4):Application.e3xmi(包含菜单定义、处理程序、命令等) plugin.xml(包含应用程序和产品目标)

插件 A(e4):e4views (POJO) fragment.e4xmi(包含新菜单条目的扩展)plugin.xml

插件 B(旧版 e3):e3(从 ViewPart 扩展)plugin.xml(包含新菜单条目、旧处理程序的扩展)

4

1 回答 1

0

我认为目前只有两种方法可以为应用程序模型做出贡献。

  1. 模型片段
  2. 模型处理器

第二个是您提供菜单条目的选项。问题是,只有新模型元素才有可能,您需要在 e3 插件中实现处理器。我的结论是,现在不可能使用具有 e3 贡献的纯 e4 应用程序,但我可能是错的。

示例取自: Eclipse4Modularity vogella

// the menu is injected based on the parameter
// defined in the extension point
@Inject
@Named("org.eclipse.ui.file.menu")
private MMenu menu;

MDirectMenuItem menuItem =  modelService.createModelElement(MDirectMenuItem.class);
menuItem.setLabel("Another Exit");
menuItem.setContributionURI("bundleclass://"
    + "com.example.e4.rcp.todo.contribute/"
    + ExitHandlerWithCheck.class.getName());
menu.getChildren().add(menuItem);
于 2015-08-17T12:15:04.410 回答