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

时间:2014-12-08 13:25:45

标签: java contextmenu e4 treeviewer

我已经为treeviewer填充了一个上下文菜单,但现在我需要动态填充treeviewer的子菜单上下文,子上下文菜单shold包含list中的所有内容。例如,列表包含[a,b,c, d,e]所以现在主菜单有菜单A,子菜单必须包含列表中的所有元素才能完成

菜单结构应如下所示 A->一种    b    C    d    ë

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

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
            }


        });

}

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

1 个答案:

答案 0 :(得分:2)

首先确保

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
         }
   });
 }