将上下文菜单添加到e4 rcp中的对话框

时间:2015-01-27 04:08:56

标签: rcp e4

我想在对话框中添加上下文菜单。我希望它能以这样一种方式点击任何空的地方,然后出现一个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);
}

1 个答案:

答案 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的孩子开始的所有事情都这样做。)