Gau*_*rav 5 java eclipse eclipse-plugin eclipse-rcp
我正在使用带有兼容性层的Eclipse 4.4.1创建一个RCP应用程序(从3.x迁移到4.x).我在应用程序模型中定义了菜单.第一次启动应用程序时菜单正常显示,但重新启动应用程序完全隐藏菜单栏并仅显示工具栏.
为什么在恢复RCP应用程序时可能不显示菜单?
这听起来像是我最近遇到的这个错误:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=388808
就我个人而言,错误报告中的解决方法并不完全适合我(但可能适合你)。对我有用的内容基于 Karl Puperze 的最后一篇文章(略有修改):
https://www.eclipse.org/forums/index.php/t/446433/
public class ForceMainMenuProcessor
{
@Execute
public void execute(@Optional MApplication application, @Optional EModelService modelService)
{
MTrimmedWindow window = (MTrimmedWindow)
modelService.find("<id of your main trimmed window>", application);
if (window == null || window.getMainMenu() != null)
{ return; }
final MMenu mainMenu = modelService.createModelElement(MMenu.class);
mainMenu.setElementId("org.eclipse.ui.main.menu");
window.setMainMenu(mainMenu);
}
}
Run Code Online (Sandbox Code Playgroud)
由此,最后的步骤是确保我在具有 id 的主 e4xmi 文件中定义(没有内容)菜单org.eclipse.ui.main.menu,然后定义包含菜单内容的片段。
在plugin.xml 中,向扩展org.eclipse.e4.workbench.model点添加一个指向刚刚创建的.e4xmi 模型片段的片段,并将“apply”设置为always。
最后,在同一个扩展点上,添加一个处理器并将其指向上面的类。beforefragment过去true和apply过去都是always。
e4xmi 文件仍然用于定义菜单,但在代码中,由于上面定义的处理器,无论工作区中保存了何种持久状态,菜单都被迫显示。在已经将菜单分割成一个单独的模型片段之后,我最终得到了这个解决方案,所以我不确定解决方案的这一部分是否确实需要,但最肯定的是定义处理器。
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |