如何将Eclipse插件中现有视图的上下文弹出菜单重用到新创建的视图?

时间:2014-12-10 13:04:28

标签: java eclipse-plugin swt jface

我为Eclipse插件创建了一个新视图,我想重用一些基本的弹出菜单,如Run As,Open,Copy,Delete,这些菜单存在于其他视图中,例如package explorer。是否有可能这样做。

我知道菜单贡献,但是可以将新菜单项添加到现有列表中。如何重用其他视图中的现有菜单? enter image description here

这就是视图制作菜单的方式:

private void hookContextMenu() {
        MenuManager menuMgr = new MenuManager("#PopupMenu");
        menuMgr.setRemoveAllWhenShown(true);
        menuMgr.addMenuListener(new IMenuListener() {
            public void menuAboutToShow(IMenuManager manager) {
                SuitAExplorer.this.fillContextMenu(manager);
            }
        });
        Menu menu = menuMgr.createContextMenu(viewer.getControl());
        viewer.getControl().setMenu(menu);
        getSite().registerContextMenu(menuMgr, viewer);
    }

private void fillContextMenu(IMenuManager manager) {
        manager.add(action1);
        manager.add(action2);
        manager.add(new Separator());
        drillDownAdapter.addNavigationActions(manager);
        // Other plug-ins can contribute there actions here
        manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
    }

1 个答案:

答案 0 :(得分:1)

一些菜单项,如复制和粘贴,您必须自己编写为Eclipse,不知道如何复制视图对象。

' Run As'菜单项应出现在菜单中的IWorkbenchActionConstants.MB_ADDITIONS位置,但仅在视图项启用正确时才会出现。对于' Run As'启用表达式为:

     <enablement>
        <or>
           <and>
              <not>
                 <with
                       variable="org.eclipse.core.runtime.Platform">
                    <test
                          args="org.eclipse.debug.core"
                          property="org.eclipse.core.runtime.bundleState"
                          value="ACTIVE">
                    </test>
                 </with>
              </not>
              <adapt
                    type="org.eclipse.core.resources.IResource">
              </adapt>
           </and>
           <and>
              <with
                    variable="org.eclipse.core.runtime.Platform">
                 <test
                       args="org.eclipse.debug.core"
                       property="org.eclipse.core.runtime.bundleState"
                       value="ACTIVE">
                 </test>
              </with>
              <test
                    property="org.eclipse.debug.core.launchable"
                    value="run">
              </test>
           </and>
        </or>
     </enablement>

正在测试是否安装了org.eclipse.debug.core插件,并且当前选择可以适应IResource或可启动对象。