如何在“RCP项目”中使用“混合模式”方法(同时使用'e3'和'e4'API)

时间:2015-09-29 08:43:04

标签: eclipse dependency-injection eclipse-rcp e4 emf

我从GitHub下载了一个示例项目here,它使用了RCP开发的混合模式。在该项目中,他们将'e4'D.I特征访问到现有的3.x RCP应用程序中。

我也为我的3.x RCP应用程序(有我自己的.product文件)尝试了相同的方法,但我在'MyLegacyIDE.e4xmi'文件中定义的菜单(或部分)没有反映到已启动的产品和UI(菜单,视图,部件等)与Eclipse 3.x系列中的相同。将MyLegacyIDE.e4xmi文件添加到我的插件项目时,没有任何新的事情发生。

另外,我已经将'applicationXMI'参数指向我在插件位置定义的XMI文件,如:

<extension
     id="product"
     point="org.eclipse.core.runtime.products">
  <product
        application="com.ami.veb.ui.application"
        name="VeB - e4 Product">
     <property
           name="applicationXMI"
           value="MyLegacyIDE.e4xmi">
     </property>
  </product>

建议将不胜感激!!

ROOT CAUSE(针对我的问题):

在调试时,我发现我的应用程序模型(“MyLegacyIDE.e4xmi”)没有被Eclipse正确加载。在以下行中(在加载应用程序模型期间):

Resource applicationResource = loadResource(applicationDefinitionInstance); of ResourceHandler.java ['org.eclipse.e4.ui.internal.workbench' plugin]

applicationDefinitionInstance - &gt;仍然指向“LegacyIDE.e4xmi”,它出现在'org.eclipse.ui.workbench'插件下,而不是我在plugin.xml文件中定义的XMI文件(“MyLegacyIDE.e4xmi”)。

(即'applicationDefinitionInstance'的值是“platform:/plugin/org.eclipse.ui.workbench/LegacyIDE.e4xmi”而不是“platform:/plugin/com.ami.veb.ui/MyLegacyIDE.e4xmi” “)

如果我在任何地方出错,请纠正我。

1 个答案:

答案 0 :(得分:1)

我错过了包括Trimmed Window。将Trimmed窗口添加到我的LegacyIDE.e4xmi后,我的Eclipse 3.x RCP应用程序现在能够实现混合模式。

<children xsi:type="basic:TrimmedWindow" xmi:id="_qBUjQHb5EeWNbY4EJKhljA" elementId="com.ami.veb.ui.trimmedwindow.0"/>

最初,我错误地认为Trimmed Window是必需的。只有当整个布局由应用程序模型控制时(即,只有当我完全迁移到e4 Architecuture时)。

后来我发现在将它添加到我的LegacyIDE.e4xmi文件后,我能够将应用程序模型加载到我的3.x Eclipse工作区中。