2011-07-30 53 views

回答

1

你必須創建ContributionItem類象下面這樣:

public class MyShowViewContributionItem extends org.eclipse.ui.internal.ShowViewMenu { 
    public MyShowViewContributionItem() { 
     this("om.myplugin.myShowViewId"); 
    } 
    public MyShowViewContributionItem(String id) { 
     super(org.eclipse.ui.PlatformUI.getWorkbench().getActiveWorkbenchWindow(), id); 
    } 
} 

然後在plugin.xml org.eclipse.ui.menus擴展:

<menu 
      label="My Show View"> 
     <dynamic 
      class="com.myplugin.MyShowViewContributionItem" 
      id="com.myplugin.myShowViewId"> 
     </dynamic> 
    </menu> 

乾杯, 最大

+0

完成此操作後,儘管在透視擴展中添加了並清除了工作區數據,但我仍然在菜單中看到「」。任何想法如何解決這個問題? –

1

只是爲了我最近分享嘗試做同樣的事情,馬克斯建議在他的answer將工作,但留下你使用內部代碼(重新導致'Discouraged Access'警告)。

另一種方法是通過應用程序操作欄顧問來構建菜單。儘管這種方法會讓你不得不編寫代碼(反對在插件XML定義中使用菜單貢獻)。請看下面的例子:

public class ApplicationActionBarAdvisor extends ActionBarAdvisor 
{ 
    private IContributionItem contributionOpenPerspective; 
    private IContributionItem contributionShowView; 

    ... 

    protected void makeActions(IWorkbenchWindow window) 
    { 
     ... 
     contributionOpenPerspective = ContributionItemFactory. 
      PERSPECTIVES_SHORTLIST.create(window); 
     contributionShowView = ContributionItemFactory. 
      VIEWS_SHORTLIST.create(window); 
     ... 
    } 

    protected void fillMenuBar(IMenuManager menuBar) 
    { 
     ... 
     MenuManager windowMenu = new MenuManager("&Window", 
      IWorkbenchActionConstants.M_WINDOW); 
     menuBar.add(windowMenu); 

     MenuManager openPerspectiveMenu = new MenuManager("&Open Perspective"); 
     openPerspectiveMenu.add(perspectivesContribution); 
     windowMenu.add(openPerspectiveMenu); 

     MenuManager showViewMenu = new MenuManager("Show &View"); 
     showViewMenu.add(viewsContribution); 
     windowMenu.add(showViewMenu); 
     ... 
    } 
} 

一個可能的缺點這種方法是通過菜單中的貢獻創造了顧問創建菜單和菜單之間的相互作用。由於advisor menu items are created before menu contributions,您需要處理在菜單貢獻中添加更多排序邏輯。這對大多數人來說可能沒有問題,但是,您從org.eclipse.ui.menus(即使其他插件與他們自己的菜單貢獻發揮作用時的感覺是錯覺),您失去了集中式菜單結構的「感覺」。

我還包括建立一個透視菜單;完全可以選擇,但是如果有人試圖用觀點來執行相同的菜單構建,我會添加它。

相關問題