【发布时间】:2011-09-06 15:47:25
【问题描述】:
我需要在 Eclipse 插件项目中为 TreeViewer 创建一个上下文菜单。但是,菜单不应包含常量项,它们应根据所选节点的类型而有所不同。例如,我的 treeViewer 具有以下层次结构:
Node A
|
--Node B
|
--Node C
对于节点 A - 我想显示一个带有操作的菜单,但对于节点 B 和 C,我不想显示任何内容(无菜单)。 I managed to create the menu for node A, but then I can't get rid of it when some other type of node is selected.我的代码如下:
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 分支上,我尝试在 MenuManager 上调用 dispose(),removeAll()...没有任何效果!
感谢任何帮助,谢谢。
【问题讨论】:
标签: java eclipse eclipse-plugin swt