【发布时间】:2011-12-10 23:12:20
【问题描述】:
我想在 JFace 的TreeViewer 中显示一个弹出菜单。
菜单应包含 3 个永远不会更改的常量菜单项,以及根据单击(选择)的树节点而变化的附加项。
一种选择是使用setRemoveAllWhenShown(true),但这将删除所有菜单项,包括常量项。
我想避免这种情况。
所以结束我的任务:
- 如果使用右键单击树而不选择任何节点,则只显示常量项。
- 如果在特定节点上使用右键单击,则显示常量项(如果存在则删除先前的附加项)并为此节点添加附加项(如果此选项可用,也可以替换它)。
到目前为止我的代码:
//Add Some Actions
menuManager.add(..);
menuManager.add(..);
menuManager.add(..);
menuManager.add(new Separator());
//This will delete all items inluding the constant, I want to avoid that
//menuManager.setRemoveAllWhenShown(true);
menuManager.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
IStructuredSelection selection = (IStructuredSelection) mTreeViewer.getSelection();
if (!selection.isEmpty()) {
BaseItm selected = (BaseItm) selection.getFirstElement();
if (selected instanceof sometype) {
//Remove additional item IF exists
manager.add(sepcificActionForThisNode);
}
}
}
});
【问题讨论】:
标签: java eclipse eclipse-plugin jface treeviewer