簡體   English   中英

菜單欄在恢復狀態下不顯示在eclipse e4中

[英]Menu bar not displaying in eclipse e4 on restore state

我正在使用帶有兼容性層的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);
    }
}

從那以后,最后的步驟是確保我在主e4xmi文件中定義了(沒有內容)菜單,該菜單具有org.eclipse.ui.main.menu id,然后定義了包含菜單內容的片段。

在plugin.xml中,向org.eclipse.e4.workbench.model擴展點添加一個片段,該片段指向剛創建的.e4xmi模型片段,並將“apply”設置為always。

最后,在同一個擴展點上,添加了一個處理器並將其指向上面的類。 beforefragmenttrue並且always apply

e4xmi文件仍然用於定義菜單,但在代碼中,由於上面定義的處理器,無論工作區中保存了什么持久狀態,都強制顯示菜單。 在將菜單拆分為單獨的模型片段之后,我最終得到了這個解決方案,所以我不確定解決方案的那部分是否肯定是必需的,但大多數肯定是定義了處理器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM