我为Eclipse插件创建了一个新视图,我想重用一些基本的弹出菜单,如Run As,Open,Copy,Delete,这些菜单存在于其他视图中,例如package explorer。是否有可能这样做。
我知道菜单贡献,但是可以将新菜单项添加到现有列表中。如何重用其他视图中的现有菜单?
这就是视图制作菜单的方式:
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));
}
答案 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
或可启动对象。