我想在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);
}
}
}
});
答案 0 :(得分:0)
添加所有操作并使用javax.swing.JComponent#setVisible(boolean)
答案 1 :(得分:0)
使用IAction.setId(String id)
为自定义操作设置唯一ID,以便稍后可以使用IMenuManager.remove(String id)
删除这些操作。