我想在 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);
}
}
}
});