Как мы можем динамически генерировать контекст подменю для средства просмотра деревьев
Я заполнил контекстное меню для средства просмотра дерева, но теперь мне нужно динамически заполнить контекст подменю для средства просмотра дерева, в контекстном меню должно содержаться все содержимое списка. Например, список содержит [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
}
});
}
Так что теперь, как мы можем создать динамическое подконтекстное меню, содержащееся в списке.
1 ответ
Сначала убедитесь, что
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
}
});
}