2012-12-12 55 views
2

在eclipse中,我爲他們擁有的主按鈕工具欄中的按鈕定義了命令。我有一個命令/按鈕在那裏設置爲下拉按鈕,我想以編程方式向其中添加選項。有點像在eclipse中如何擊中播放按鈕上的小下拉按鈕並查看不同的運行場景。我希望能夠將這樣的選項添加到我的下拉菜單中。我無法通過插件編輯器來完成,因爲我需要動態生成菜單選項。在eclipse中以編程方式將選項添加到下拉按鈕

所以說我有我的plugin.xml文件中定義的下拉按鈕。如何將選項以編程方式添加到下拉菜單中?

<menuContribution 
     allPopups="false" 
     locationURI="toolbar:org.eclipse.ui.main.toolbar"> 
    <toolbar 
      id="com.company.gui.base.toolBarMain"> 
     <command 
       commandId="com.company.gui.base.command1" 
       icon="icons/magnifier.png" 
       id="com.company.gui.base.toolBarMain.monitor" 
       label="Im a pulldown menu" 
       style="pulldown"> 
     </command> 
    </toolbar> 
    </menuContribution> 

回答

5

請找到下面的代碼。

private void addContextMenu(SampleContributionFactory fac) { 
    final IMenuService menuService = (IMenuService) PlatformUI.getWorkbench().getService (IMenuService.class); 
    menuService.addContributionFactory(fac); 
} 

class SampleContributionFactory extends AbstractContributionFactory{ 

    SampleContributionFactory(final String menuID) { 
     super("menu:" + menuID, null); 
    } 

    @Override 
    public void createContributionItems(IServiceLocator serviceLocator, 
      IContributionRoot additions) {  
     // add Command Contribution item 
     additions.addContributionItem(<YOUR CONTRIBUTION ITEM>, null); 
    // add one more Command Contribution item 
    .... 
    } 
} 

現在創建SampleContributionFactory的一個對象,如下所示。

SampleContributionFactory fac = new SampleContributionFactory ("com.company.gui.base.toolBarMain.monitor"); 

並調用該方法

addContextMenu(fac); 

TODO:所要求的您在SampleContributionFactory add命令貢獻的項目。

+0

在eclipse文檔中有關於此的任何教程嗎?看起來,他們很好地記錄了所有可以通過聲明完成的事情,但是當需要動態/程序化的框架方法時,我無法找到正確的信息。你的解決方案效果很好,但是在API文檔中深入探索並嘗試了各種各樣的東西之後,我一直沒有得到它,直到你出現。 – CryptDemon

+0

某些可能對您有幫助的鏈接是:http://wiki.eclipse.org/Menu_Contributions/IFile_objectContribution和http://www.medihack.org/2009/10/05/dynamic-menus-and-toolbar-contributions /。 但你是對的,有些東西很難找到文檔。我們必須得到的方法是通過挖掘eclipse源代碼本身。 :-) – Syam

+0

@Syam謝謝:) –

相關問題