【问题标题】:Eclipse RCP: popup menu toggle command with object dependent statesEclipse RCP:具有对象相关状态的弹出菜单切换命令
【发布时间】:2016-08-04 20:17:30
【问题描述】:

我想要一个上下文菜单(右键单击),允许切换被单击对象的不同状态。

在 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 检查选择了哪些对象并调用它们的方法来切换它们的状态(向列表添加或删除参数化值)。

到目前为止一切都很好......

但是,我想让我的菜单条目像复选框(如style="toggle")所指示的那样工作。关于这个问题的每个教程(例如this one)都解释了如何通过将以下代码添加到plugin.xml来为命令添加状态:

<state 
     class="org.eclipse.ui.handlers.RegistryToggleState:true" 
     id="org.eclipse.ui.commands.toggleState"> 
</state>   

但这只会给我这个命令的一个全局状态,我想从点击的对象中读取状态吗?我怎样才能做到这一点?

编辑 1: 复制了从教程中截取的错误代码。我还尝试实现一个自己的类来扩展State 类(就像RegistryToggleState 所做的那样)。但是我不知道如何从这个类中返回一个状态。

编辑 2: 我找到了解决方法。它不能解决建议的问题,但对我有用。

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-rcp


    【解决方案1】:

    解决方法

    这不是完全解决问题的方法,因为它不使用任何状态对象。但这对我来说很好用: 按照this question 的建议,我在我的处理程序中实现了IElementUpdater。 在updateElement 方法中,我从element 对象中获取所选元素并相应地调用element.setChecked()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2012-11-26
      相关资源
      最近更新 更多