Java 如何为treeviewer动态生成子菜单上下文

Java 如何为treeviewer动态生成子菜单上下文,java,contextmenu,e4,treeviewer,Java,Contextmenu,E4,Treeviewer,我已经为treeviewer填充了一个上下文菜单,但是现在我需要动态填充treeviewer的子菜单上下文。子上下文菜单应该包含列表中的所有内容。例如,列表包含[a、b、c、d、e],所以现在主菜单有菜单a,子菜单必须包含列表中的所有元素。这可以做到吗 菜单结构应如下所示 A->A B C D e 现在上下文菜单的代码如下 protected void fillContextMenu(final IMenuManager contextMenu) { //String nnn =

我已经为treeviewer填充了一个上下文菜单,但是现在我需要动态填充treeviewer的子菜单上下文。子上下文菜单应该包含列表中的所有内容。例如,列表包含[a、b、c、d、e],所以现在主菜单有菜单a,子菜单必须包含列表中的所有元素。这可以做到吗

菜单结构应如下所示 A->A B C D e

现在上下文菜单的代码如下

protected void fillContextMenu(final IMenuManager contextMenu) {
        //String nnn = null;
        //contextMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
        //contextMenu.add(new GroupMarker(nnn));

         IMenuManager submenu = new MenuManager("Add Test Case");

            submenu.add(new Action("Sub menu item 1") {
                 @Override
                 public void run() {
                     // implement this
                 }
             });

           contextMenu.add(submenu);



        contextMenu.add(new Action("Add Test step") {
            @Override
            public void run() {
                // don't do anything here
            }
        });
        contextMenu.add(new Action("Add New Test Case") {
            @Override
            public void run() {
                // implement this
            }


        });

}
现在我们如何生成列表中包含的动态子上下文菜单。

首先确保

IMenuManager.setRemoveAllWhenShown(true);
在创建关联菜单时调用。这意味着每次显示菜单时都会调用
fillContextMenu

然后,您只需在列表中循环,为
fillContextMenu
中的列表中的每个项目创建操作:

List<String> itemList = .... your list

for (String item : itemList)
 {
   submenu.add(new Action(item) {
         @Override
         public void run() {
               // implement this
         }
   });
 }
List itemList=。。。。你的名单
用于(字符串项:itemList)
{
子菜单.添加(新操作(项目){
@凌驾
公开募捐{
//实施这个
}
});
}

当我按下子菜单中的任何按钮时,如何获取所按下子菜单的名称请不要在评论中提出新问题