我们如何为树视图创建子上下文菜单

时间:2014-12-08 10:34:44

标签: java contextmenu e4 treeviewer

我使用鼠标右键单击鼠标创建了一个上下文菜单,现在我需要为它创建一个子上下文菜单,这样我就需要为它设置值。创建上下文菜单的代码如下

protected void createContextMenu(Viewer viewer) {
        MenuManager contextMenu = new MenuManager("#ViewerMenu"); //$NON-NLS-1$
        contextMenu.setRemoveAllWhenShown(true);
        contextMenu.addMenuListener(new IMenuListener() {
            @Override
            public void menuAboutToShow(IMenuManager mgr) {
                fillContextMenu(mgr);
            }
        });

        Menu menu = contextMenu.createContextMenu(viewer.getControl());
        viewer.getControl().setMenu(menu);
    }

    /**
     * Fill dynamic context menu
     *
     * @param contextMenu
     */

    protected void fillContextMenu(IMenuManager contextMenu) {
        //String nnn = null;
        //contextMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
        //contextMenu.add(new GroupMarker(nnn));

        contextMenu.add(new Action("set Iterations") {
            @Override
            public void run() {
                // implement this
            }


        });

        contextMenu.add(new Action("Set timeout") {
            @Override
            public void run() {
                // implement this
            }


        });
    }

所以现在对于上下文菜单设置超时,我需要创建子上下文菜单,用户可以在其中设置超时值。那么如何做到这一点。

1 个答案:

答案 0 :(得分:1)

为子菜单创建一个菜单MenuManager

protected void fillContextMenu(IMenuManager contextMenu) {
    //String nnn = null;
    //contextMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
    //contextMenu.add(new GroupMarker(nnn));

    contextMenu.add(new Action("set Iterations") {
        @Override
        public void run() {
            // implement this
        }
    });

    contextMenu.add(new Action("Set timeout") {
        @Override
        public void run() {
            // implement this
        }
    });

   IMenuManager submenu = new MenuManager("Sub menu title");

   submenu.add(new Action("Sub menu item 1") {
        @Override
        public void run() {
            // implement this
        }
    });

  contextMenu.add(submenu);
}