0

我已经为 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
            }


        });

}

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

4

1 回答 1

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
         }
   });
 }
于 2014-12-08T13:44:57.210 回答