eclipseRCP深入淺出(學習總結)2015.08.24

chapter 6 

1、 ApplicationWorkbenchWindowAdvisor中的preWindowOpen()方法可以設置頂級菜單可用:

//設置頂級菜單可用,但不設置可見
    configurer.setShowMenuBar(true);

2、只有給頂級菜單添加選項之後纔可見,否則就是空的,顯示不出來

3、當創建一個RCP應用框架以後,他就生成了一個ActionBarAdvisor的實現類:ApplicationActionBarAdvisor。它有空的makeActions()和fillMenuBar()方法。makeActions()用來創建每一個action,並把它們的對象保存爲ApplicationActionBarAdvisor的成員變量。每一個action都需要註冊,這樣可以確保當窗口關閉時,這些action隨之被刪除。

protected void makeActions(IWorkbenchWindow window) {
    exitaAction = ActionFactory.QUIT.create(window);
    register(exitaAction);
    aboutAction = ActionFactory.ABOUT.create(window);
    register(aboutAction);
    }

4、workbench定義了許多常用的action,他們可以在RCP應用中重複使用,而且他們都是ActionFactory的內部類。用的時候只需要實例化它們,他們已經被提前設置好了標準的name、id、icon。

protected void fillMenuBar(IMenuManager menuBar) {
    //&後面的纔是要顯示的名字  第二個參數是id
    MenuManager hyperbolaMenu = new MenuManager("&Hyperbola111","hyperbola");
    hyperbolaMenu.add(exitaAction);
    MenuManager helpMenu = new MenuManager("&Help111","help");
    helpMenu.add(aboutAction);
    menuBar.add(hyperbolaMenu);
    menuBar.add(helpMenu);
    }

5、menu manager用來保存action和子菜單的路徑,通過分組,可以創建action的邏輯結構。menu manager讓人不用關心菜單是怎麼創建的,只用關心你是以何種邏輯結構來組織和展示action:

protected void fillMenuBar(IMenuManager menuBar) {
    //&後面的纔是要顯示的名字  第二個參數是id
    MenuManager hyperbolaMenu = new MenuManager("&Hyperbola111","hyperbola");
    hyperbolaMenu.add(exitaAction);
    //構造方法中參數是分組名,就是把子菜單看成分組,
    hyperbolaMenu.add(new GroupMarker("other-actions"));//分組1
    hyperbolaMenu.add(new GroupMarker("another-actions"));//分組2
    hyperbolaMenu.appendToGroup("other-actions", aboutAction);//給分組1添加了一個aboutaction
    hyperbolaMenu.appendToGroup("another-actions", aboutAction);//給分組2添加了一個aboutaction
    MenuManager helpMenu = new MenuManager("&Help111","help");
    helpMenu.add(aboutAction);
    menuBar.add(hyperbolaMenu);
    menuBar.add(helpMenu);
    }

6、例如aboutaction和exitaction是任何時候都可以使用的,他們獨立於應用程序,但我們需要創建一些在特定時刻起作用,而在其他狀態禁用的action:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章