我从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>
建议将不胜感激!!
在调试时,我发现我的应用程序模型(“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” “)
如果我在任何地方出错,请纠正我。
答案 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工作区中。