首页 文章

在纯e4应用中使用RCP e3插件

提问于
浏览
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插件而无需更改它们 . 主要目标是在保留e3插件的同时编写新的e4插件(带DI,POJO处理程序,视图等) .

例如:

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

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

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

1 回答

  • 0

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

    • 模型碎片

    • 型号处理器

    第二个是您提供菜单条目的选项 . 问题是afaik它只能用新的模型元素,你需要在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);
    

相关问题