我有这个问题,我无法排除故障。我们有两个包含相同观点的观点。此视图有一个基于 instanceof 启用的菜单。如果我从树中选择项目并右键单击,则启用菜单,因为 instanceof 符合条件。如果我随后更改为具有相同视图的另一个透视图,则树中的选择不会改变,但如果我右键单击所选的同一项目,菜单将不再启用。我必须单击视图并返回以再次启用菜单。这是我定义 plugin.xml 的方式。我认为 plugin.xml 很好,因为它在不改变视角时工作正常。我只需要弄清楚为什么改变视角会刷新菜单,但不会重新检查。
此外,如果我切换到不包含此视图的透视图,当我回来时菜单会启用。
<extension
point="org.eclipse.ui.commands">
<command
id="com.cerner.automation.touchstone.workflow.Modify"
name="%com.cerner.automation.touchstone.workflow.Modify.label">
</command>
<extension
point="org.eclipse.ui.handlers">
<handler
commandId="com.cerner.automation.touchstone.workflow.Modify">
<enabledWhen>
<with
variable="selection">
<iterate
ifEmpty="false"
operator="and">
<instanceof
value="com.cerner.automation.touchstone.model.ModuleItem">
</instanceof>
</iterate>
</with>
</enabledWhen>
</handler>
</extension>
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="popup:com.cerner.automation.touchstone.views.ModuleView">
<command
commandId="com.cerner.automation.touchstone.workflow.Modify"
icon="icons/modify.png"
label="%com.cerner.automation.touchstone.workflow.Modify.label"
style="push">
</command>
</menuContribution>
</extension>