如何根据字母动态创建eclipse rcp中的下拉菜单

时间:2017-08-22 10:26:28

标签: eclipse eclipse-plugin eclipse-rcp

我想按字母顺序在eclipse rcp中创建下拉菜单,这些下拉菜单需要按照字母排列。

这样在主菜单下我想要显示字母。如果有任何与字母相关的贡献,那么我必须在该字母表下创建一个下拉菜单。

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

请查看随附的用例图 enter image description here

1 个答案:

答案 0 :(得分:0)

如果您在e4中,在Application.e4xmi模型中添加"Menu" a "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>
  }
}