繁体   English   中英

Eclipse RCP:具有对象相关状态的弹出菜单切换命令

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM