我想在对话框中添加上下文菜单。我希望它能以这样一种方式点击任何空的地方,然后出现一个deafaul上下文菜单。我已经看到了上下文菜单添加到表格和树的示例,但没有对话作为一个整体,任何片段或示例将不胜感激。
这就是我的尝试。
import org.eclipse.jface.action.MenuManager;
@Override
protected Control createDialogArea(Composite parent) {
Composite container = (Composite) super.createDialogArea(parent);
GridLayout layout = new GridLayout(4, false);
layout.marginRight = 5;
layout.marginLeft = 10;
container.setLayout(layout);
MenuManager menuMgr = new MenuManager();
menuMgr.setRemoveAllWhenShown(true);
menuMgr.add(new Action("New Thing") {
/* (non-Javadoc)
* @see org.eclipse.jface.action.Action#run()
*/
@Override
public void run() {
System.out.println("came in options");
}
});
parent.setMenu(menuMgr.createContextMenu(parent));
productListTreeCheckBox(parent);
return super.createDialogArea(parent);
}
答案 0 :(得分:0)
尝试以与表/树菜单类似的方式创建菜单,但使用顶级Composite
作为对话框。使用菜单管理器可能类似于:
Control topLevelComposite = ... get top level composite
MenuManager menuMgr = new MenuManager();
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(... you menu listener....);
final Menu menu = menuMgr.createContextMenu(topLevelComposite);
topLevelComposite.setMenu(menu);
然后,您必须在每个setMenu
上调用Composite
并在要使用此菜单的对话框中进行控制。你可以使用:
control.setMenu(parent.getMenu());
为此(只要你从topLevelComposite
的孩子开始的所有事情都这样做。)