我已经为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
}
});
}
现在我们如何生成列表中包含的动态子上下文菜单。
答案 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
}
});
}