【问题标题】:Use of RCP e3-plugins in pure e4-application在纯 e4 应用程序中使用 RCP e3 插件
【发布时间】:2015-11-06 02:12:03
【问题描述】:

我有一个现有的 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 插件而无需更改它们。 主要目标是编写新的 e4 插件(使用 DI、POJO 处理程序、视图等),同时保留 e3 插件。

例如:

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

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

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

【问题讨论】:

  • 据我所知,关于这样做的信息很少。

标签: eclipse eclipse-plugin eclipse-rcp rcp xmi


【解决方案1】:

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

  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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2015-12-26
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多