我有一个使用org.eclipse.ui.popupMenus编写的上下文菜单。由于现在不推荐使用org.eclipse.ui.menus,所以我也想使用它。
以前的实现如下所示
<extension
point="org.eclipse.ui.popupMenus">
<objectContribution
adaptable="true"
id="com.xyz.plm.analysis.func.gui.popupOnComponentForCA"
objectClass="com.xyz.plm.componentmodel.IComponent">
<action
class="com.xyz.plm.analysis.my.gui.MyAction"
enablesFor="1"
id="com.xyz.plm.analysis.my.gui.MyActionion2"
label="Run My Action"
menubarPath="com.xyz.plm.ide.ui.myToolsPopupMenu/myToolsGroup"
tooltip="Run My Action">
</action>到目前为止,我尝试的是下面的内容
<extension
point="org.eclipse.ui.commands">
<command
id="com.xyz.plm.analysis.my.commandmygui"
name="Run My Action">
</command>
</extension>
<extension
point="org.eclipse.ui.handlers">
<handler
class="com.xyz.plm.analysis.my.gui.MyAnalysisGui"
commandId="com.xyz.plm.analysis.my.commandmygui">
<enabledWhen>
<with
variable="selection">
<iterate
ifEmpty="false"
operator="or">
<instanceof
value="com.xyz.plm.componentmodel.IComponent">
</instanceof>
</iterate>
</with>
</enabledWhen>
</handler>
</extension>
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="popup:com.xyz.plm.ide.ui.myToolsPopupMenu">
<command
commandId="com.xyz.plm.analysis.my.commandmygui"
label="RunMyACtion"
style="push">
</command>
</menuContribution>
</extension>但是有了这个,我看到MyAction subMenu在MyTools上下文菜单下。但是MyAction是禁用的。此外,当我右键单击select MyACtion时,我看到projectExplorer窗口和编辑器中都出现了MyTools。
我想要的是MyAction子菜单应该只出现在MyTools弹出菜单下,只有当我右键单击一个IComponent类型的对象时,该菜单才会出现。
发布于 2016-02-17 08:19:54
您应该在菜单贡献上使用visibleWhen,而对处理程序不使用enabledWhen。您可能应该使用adapt而不是instanceof。
所以,就像:
<extension
point="org.eclipse.ui.handlers">
<handler
class="com.xyz.plm.analysis.my.gui.MyAnalysisGui"
commandId="com.xyz.plm.analysis.my.commandmygui">
</handler>
</extension>
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="popup:com.xyz.plm.ide.ui.myToolsPopupMenu">
<command
commandId="com.xyz.plm.analysis.my.commandmygui"
label="RunMyACtion"
style="push">
<visibleWhen>
<with
variable="selection">
<iterate
ifEmpty="false"
operator="or">
<adapt
value="com.xyz.plm.componentmodel.IComponent">
</adapt>
</iterate>
</with>
</visibleWhen>
</command>
</menuContribution>
</extension>发布于 2016-07-06 18:54:11
等价物是测试activeMenuSelection和activeMenuEditorInput,在右键单击时设置,并检查等效条件。这些值是可迭代的,因此您需要对它们进行迭代以执行测试。见Eclipse的示例。
https://stackoverflow.com/questions/35448915
复制相似问题