2017-08-22 62 views
0

我想按照字母順序在eclipse rcp中創建下拉菜單,這些下拉菜單需要按照字母排列。如何在eclipse rcp中根據字母動態創建下拉菜單

這樣在主菜單下我想顯示字母。如果有任何與字母表有關的貢獻,那麼我必須在該字母表下創建一個下拉菜單。

// Use case 
Menu 
    A -> Action, 
    B -> Bind, 
    C -> Click 

請看看進入連接的用例圖 enter image description here

+0

看看'org.eclipse.ui.menus'擴展點的'dynamic'元素 - [see here](https://wiki.eclipse.org/Menu_Contributions/Populating_a_dynamic_submenu) –

回答

0

如果你在E4,在Application.e4xmi模型,動態菜單添加到"Menu"一個"Dynamic Menu Contribution"
鏈接到一個類,將建立這樣的菜單:

public class DynamicMenuContributor { 
    @Inject 
    private EModelService  modelService; 
    @AboutToShow 
    public void aboutToShow(List<MMenuElement> items) { 

    for (String s : <your collection of letters>) { 
     MDirectMenuItem dynamicItem = modelService.createModelElement(MDirectMenuItem.class); 
     dynamicItem.setLabel(s); 
     dynamicItem.setContributorURI(<contributor uri>); 
     dynamicItem.setContributionURI(<point the class that will handle the menu event>); 
     // dynamicItem.setType(ItemType.RADIO); 
     // dynamicItem.setSelected(selected); 
     // dynamicItem.setIconURI(<url to icon>); 
     // dynamicItem.getTransientData().put(<param1 name>, <param1 value>); 
     // dynamicItem.getTransientData().put(<param2 name>, <param2value>); 

     items.add(dynamicItem); 
    } 
    } 
} 

有了一個類來處理該事件是這樣的:

public class DynamicMenuSelectiontHandler { 
    @Execute 
    public void execute(MMenuItem menuItem) { 
    <param1> = menuItem.getTransientData().get(<param 1 name>); 
    <param2> = menuItem.getTransientData().get(<param 2 name>); 
    <put your logic here> 
    } 
}