【问题标题】:Eclipse RCP: How to properly create a toolbar with global actions using the Command framework?Eclipse RCP:如何使用命令框架正确创建具有全局操作的工具栏?
【发布时间】:2014-08-27 15:15:19
【问题描述】:

我的 RCP 应用程序有一个内部带有 TreeViewer 的视图。使用 Command 框架,我尝试使用可以对树元素执行常见操作的项目填充其工具栏,例如“删除”、“属性”等。

我希望根据 TreeViewer 的选择状态启用/禁用图标,但它们应该始终可见。

这是我目前想出的(我只展示了删除命令,其他的非常相似):

<extension point="org.eclipse.ui.handlers">
    <handler commandId="org.eclipse.ui.edit.delete" class="my.custom.DeleteHandler">
        <activeWhen>
            <with variable="activePartId">
                <equals value="my.custom.ViewPart" />
            </with>
        </activeWhen>
        <enabledWhen>
            <count value="(0-" />
        </enabledWhen>
    </handler>
</extension>

<extension point="org.eclipse.ui.menus">
    <menuContribution locationURI="toolbar:my.custom.ViewPart">        
        <command commandId="org.eclipse.ui.edit.delete" label="Delete" />
    </menuContribution>
</extension>

只要活动部分是我的树视图,一切都可以正常工作。但是,当焦点转到编辑器时,按钮就会被激活。我想这是因为我的自定义处理程序被停用以支持默认的工作台处理程序。

当活动部件不是我的视图部件时,如何保持“删除”、“属性”项可见但禁用?

【问题讨论】:

    标签: eclipse-rcp


    【解决方案1】:

    不要使用&lt;activeWhen&gt;,而是将所有条件放在&lt;enabledWhen&gt;

    <enabledWhen>
      <and>
         <count value="(0-" />
         <with variable="activePartId">
            <equals value="my.custom.ViewPart" />
         </with>
       </and>
    </enabledWhen>
    

    【讨论】:

    • 感谢您的回答。我试过了,但它没有解决问题。一旦焦点离开视图部分,工具栏项目就会启用。
    猜你喜欢
    • 2013-11-04
    • 2011-04-15
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    相关资源
    最近更新 更多