【问题标题】:Contribute an "editorAction" via org.eclipse.ui.menus extension point通过 org.eclipse.ui.menus 扩展点贡献一个“editorAction”
【发布时间】:2012-05-10 22:32:07
【问题描述】:

在像here 这样的许多文档中描述,Eclipse 3.2 中的旧扩展点org.eclipse.ui.actionSetsorg.eclipse.ui.viewActionsorg.eclipse.ui.editorActionsorg.eclipse.ui.popupMenus 被Eclipse 3.3 中的新org.eclipse.ui.menus 扩展点取代.

所以我的简单问题: 如何使用新的扩展点 org.eclipse.ui.menus 为 editorAction 工具栏 (org.eclipse.ui.editorActions) 做出贡献?

我在许多不同的locationURI 值中尝试了以下类似的东西,但它从未奏效。

   <extension point="org.eclipse.ui.menus">
      <menuContribution locationURI="toolbar:my.editor.id">
         <command
               commandId="my.command.id"
               icon="icons/somicon.gif"
               label="Do my command"
               style="push">
         </command>
      </menuContribution>
   </extension>

我的命令从未出现,我在控制台中也没有得到任何反馈。那么locationURI 的正确属性是什么,以便在那里获取我的命令??

该命令适用于其他工具栏,它也可以通过旧扩展点工作(修改命令类)。

为什么我需要新的扩展点? 因为它不仅支持命令,还支持控件,您可以在其中贡献的不仅仅是一个简单的按钮。

最终更新

以下解决方案旨在替换 editorActions 扩展点的功能。由于答案最后评论中提到的错误,这种替换并不是真的有用。 无论如何接受...

【问题讨论】:

  • 也许完整的 editorAction 工具栏及其概念已被弃用,应该使用由 katsharp 解释的机制。对此想法的任何官方确认都会很好......
  • 如果您需要官方确认,您可能应该在 Eclipse 新闻组/论坛上询问。

标签: java eclipse-rcp


【解决方案1】:

我设法使用这个 locationURI 为 Eclipse 的主工具栏做出了贡献:

locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions"

因此,例如,仅当我的编辑器处于活动状态时才将我的命令贡献给工具栏:

<extension
     point="org.eclipse.ui.menus">
  <menuContribution
      locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
     <toolbar
           id="mytoolbar.id"
           label="my toolbar">
        <command
              commandId="command.id"
              icon="icons/sample.gif"
              id="mytoolbar.command.id"
              label="Do my command"
              style="push">
           <visibleWhen
                 checkEnabled="false">
                     <with
                         variable="activePartId">
                          <equals
                             value="my.editor.id">
                          </equals>
                     </with>
          </visibleWhen>
        </command>
     </toolbar>
  </menuContribution>
</extension>

command.id 是我的命令的 ID。

【讨论】:

  • 谢谢你的那个版本。但它不是 editorAction 工具栏,当活动编辑器不是指定的编辑器时,它会完全隐藏。而且我必须将它添加到我的所有命令中。
  • editorAction 工具栏是什么意思,是主工具栏的一部分吗?
  • 它是一个单独的工具栏,包含编辑器操作。它在编辑器处于活动状态时显示,在编辑器处于非活动状态时隐藏。对于该工具栏中的所有操作,所有显示和隐藏都是自动完成的。
  • 这将创建一个工具栏 (mytoolbar.id),然后您可以将每个命令添加到此。工具栏元素上有一个 visibleWhen,但是这个错误 - bugs.eclipse.org/bugs/show_bug.cgi?id=201589 详细说明它不起作用。所以,是的,对于这个实现,你必须在每个命令上都有一个 visibleWhen。
猜你喜欢
  • 2019-04-02
  • 1970-01-01
  • 1970-01-01
  • 2010-10-03
  • 2016-01-31
  • 2018-10-26
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
相关资源
最近更新 更多