[英]Eclipse RCP: popup menu toggle command with object dependent states
我想要一个上下文菜单(单击鼠标右键),该菜单允许切换所单击对象的不同状态。
在plugin.xml中,我已经有了一个包含命令条目的弹出菜单,例如:
<command
commandId="...switchDistanceCommand"
label="30s"
style="toggle">
<parameter
name="...switchDistanceMillis"
value="30000">
</parameter>
</command>
和一个命令:
<extension
point="org.eclipse.ui.commands">
<command
id="....switchDistanceCommand"
name="Switch Distance">
<commandParameter
id="....switchDistanceMillis"
name="Seconds"
optional="false">
</commandParameter>
</command>
</extension>
处理程序:
<handler
class="....SwitchDistanceHandler"
commandId="....switchDistanceCommand">
</handler>
处理程序类SwitchDistanceHandler
检查选择了哪些对象,然后在其上调用方法以切换其状态(将参数化的值添加或删除到List中)。
到现在为止还挺好...
但是,我希望我的菜单项可以用作复选框(如style="toggle"
)所示。 关于此问题的每篇教程(例如本教程)都说明了如何通过将以下代码添加到plugin.xml中来向命令添加状态:
<state
class="org.eclipse.ui.handlers.RegistryToggleState:true"
id="org.eclipse.ui.commands.toggleState">
</state>
但是,这只会给我该命令的一个全局状态 ,我想从单击的对象中读取状态吗? 我怎样才能做到这一点?
编辑1:复制了从教程中删除的错误代码。 我也尝试实现自己的类,该类扩展了State
类(如RegistryToggleState
所做的那样)。 但我不知道如何从此类返回状态。
编辑2:我找到了一种解决方法。 它不能解决提出的问题,但对我有用。
这不是解决问题的确切方法,因为它不使用任何状态对象。 但这对我来说很好:按照这个问题的建议,我在Handler中实现了IElementUpdater
。 在updateElement
方法中,我从element
对象中提取了选定的element
并相应地调用了element.setChecked()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.