Опитвам се да скрия/покажа елемент от подменю (menumanager) от контекста (изскачащо меню), когато определен възел е избран/не е избран в дървото.
Въпреки че методите setVisible се задействат според очакванията, това не оказва влияние.
Кодът:
TreeViewer tViewer;
tViewer = new TreeViewer(parent, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
tViewer.setLabelProvider(new WorkbenchLabelProvider());
tViewer.setContentProvider(new BaseWorkbenchContentProvider());
tViewer.setInput(viewFactory.getInstance().getRoot());
final MenuManager menuMain = new MenuManager("Main",null);
menuMain.add(mActionClose);
MenuManager menuManager = new MenuManager("#PopupMenu", "contextMenu");
menuManager.add(menuMain);
menuManager.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
//Get the selected node in tree
IStructuredSelection selection = (IStructuredSelection) tViewer.getSelection();
if (!selection.isEmpty()) { //If something selected
NNodeBase ob = (NNodeBase) selection.getFirstElement(); //Get the base class of node
if (!(ob instanceof NTMModel)) {
menuMain.setVisible(false);
}
else
menuMain.setVisible(true);
}
}
});
Menu menu = menuManager.createContextMenu(tViewer.getControl());
tViewer.getControl().setMenu(menu);