Мне нужно создать контекстное меню для TreeViewer в проекте плагина Eclipse. Но в меню не должно быть постоянных пунктов, они должны различаться в зависимости от типа выбранного узла. Например, мой treeViewer имеет следующую иерархию:
Node A
|
--Node B
|
--Node C
Для узла A - я хочу показать меню с действием, но для узлов B и C я не хочу ничего показывать (нет меню).
Мне нужно создать контекстное меню для TreeViewer в проекте плагина Eclipse. Но в меню не должно быть постоянных пунктов, они должны различаться в зависимости от типа выбранного узла. Например, мой treeViewer имеет следующую иерархию:
Node A
|
--Node B
|
--Node C
Для узла A - я хочу показать меню с действием, но для узлов B и C я не хочу ничего показывать (нет меню).
Мне нужно создать контекстное меню для TreeViewer в проекте плагина Eclipse. Но в меню не должно быть постоянных пунктов, они должны различаться в зависимости от типа выбранного узла. Например, мой treeViewer имеет следующую иерархию:
Node A
|
--Node B
|
--Node C
Для узла A - я хочу показать меню с действием, но для узлов B и C я не хочу ничего показывать (нет меню). Мне удалось создать меню для узла A, но потом я не могу избавиться от него, когда выбран какой-либо другой тип узла. Мой код выглядит так:
treeViewer.addSelectionChangedListener(
new ISelectionChangedListener(){
public void selectionChanged(SelectionChangedEvent event) {
if(event.getSelection() instanceof IStructuredSelection) {
IStructuredSelection selection = (IStructuredSelection)event.getSelection();
Object o = selection.getFirstElement();
MenuManager menuMgr = new MenuManager();
if (o instanceof NodeA){
Menu menu = menuMgr.createContextMenu(treeViewer.getControl());
treeViewer.getControl().setMenu(menu);
getSite().registerContextMenu(menuMgr, treeViewer);
menuMgr.add(new SomeAction());
}else {
//what ?
}
}
}
}
);
В ветке else я пытался вызвать dispose ()
, removeAll ()
в MenuManager ... ничего не работает!
Любая помощь - это оценен, спасибо.