gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:11:31 26 4
gpt4 key购买 nike

我为 Eclipse 插件创建了一个新 View ,我想重用基本的弹出菜单,如 Run As 、Open 、 Copy 、 Delete ,它们存在于其他 View (如包资源管理器)中。是否可以这样做。

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

这就是 View 制作菜单的方式:

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));
}

最佳答案

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

“运行方式”菜单项应出现在菜单中的 IWorkbenchActionConstants.MB_ADDITIONS 位置,但前提是 View 项启用正确。对于“运行方式”,启用表达式为:

     <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 或可启动对象。

关于java - 如何将 Eclipse 插件中现有 View 的上下文弹出菜单重用到新创建的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27401764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com