【问题标题】:How to programmatically set an initial state for an Eclipse UI command?如何以编程方式为 Eclipse UI 命令设置初始状态?
【发布时间】:2017-06-07 23:09:01
【问题描述】:

我正在扩展 org.eclipse.ui.commands 以向我的 menuContribution 提供一个新命令,该命令具有 toggle 样式。

现在我想设置一个初始状态,但它不应该是硬编码状态。因此,不能提供以下状态:

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

状态应该反映首选项页面中的属性,无需持久化任何内容。通过调用插件Activator 中的方法手动设置状态不起作用,因为我会在第一次单击命令时立即跳转到start 方法,但这为时已晚,因为上下文菜单应该已经反映了偏好属性的正确状态。

我该如何解决这个问题?

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-rcp eclipse-pde


    【解决方案1】:

    我认为您应该实现自己的 State 类,该类应扩展 org.eclipse.jface.commands.ToggleState 并覆盖 setState 方法。它可以取任何值,但忽略它并做你想做的事(阅读偏好等)

    我没试过,只是猜测。

    【讨论】:

    • 我已经尝试过了,但问题是我的实现 (setState) 不会被调用。
    • 显然状态的ID必须是org.eclipse.ui.commands.toggleState。我提供了我的自定义 ID,我想这就是我的代码从未被调用过的原因。
    • 哦,ToggleStatesetValue 方法,而不是 setState。我只是困惑)
    • 是的,我注意到了。您能否通过不使用自定义标识符而是使用org.eclipse.ui.commands.toggleState 来确认它应该可以工作?
    • 我不知道。刚刚发现在我们的代码中,我们直接从其处理程序(setInitializationData 方法)设置切换按钮的状态。它执行与您类似的工作并将值存储在 PlatformUI.getPreferenceStore() 中,状态具有自定义 ID,用于在 execute 中获取命令的当前状态 (command.getState(id)) 并设置新值。不确定是否有必要。
    猜你喜欢
    • 2021-11-05
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多