从editorAction迁移到org.eclipse.ui.menus

时间:2018-10-29 08:28:42

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

对于我拥有的previous question,我找到了一种使用一些不推荐使用的API的解决方案。

为了在用户单击标记时运行某些内容,我将其添加到了plugin.xml

<extension point="org.eclipse.ui.editorActions">
    <editorContribution targetID="org.eclipse.cdt.ui.editor.CEditor"
        id="org.eclipse.ui.texteditor.ruler.actions">
         <action
               actionID="RulerClick"
               class="com.example.MarkerClickAction"
               id="com.example.MarkerClickAction"
               label="%Dummy.label">
         </action>
    </editorContribution>
</extension>

我尝试将editorActions转换为org.eclipse.ui.menus,到目前为止,我想到了:

<extension
      point="org.eclipse.ui.menus">
   <menuContribution
         allPopups="false"
         locationURI="org.eclipse.cdt.ui.editor.CEditor">
      <command
            commandId="com.example.MarkerClickAction"
            description="Opens Quick Fix when the user clicks a marker"
            id="org.eclipse.ui.texteditor.ruler.actions"
            name="Marker Click Action">
      </command>
   </menuContribution>
</extension>
<extension
    point="org.eclipse.ui.handlers">
    <handler
        class="com.example.MarkerClickAction"
        commandId="com.example.MarkerAction">
    </handler>
</extension>  

我不知道如何映射的唯一内容是actionID="RulerClick"中的<action>字段。
我应该在哪里配置这些信息?

1 个答案:

答案 0 :(得分:2)

您还需要一个org.eclipse.ui.commands扩展点来定义命令ID。

从处理程序到旧操作之间没有简单的映射。

处理程序通常将扩展org.eclipse.core.commands.AbstractHandler

org.eclipse.ui.handlers.HandlerUtil类为处理程序提供了许多帮助程序方法,以执行诸如获取活动编辑器之类的事情。

请注意,尽管org.eclipse.ui.editorActions被标记为已弃用,但由于现有代码使用过多,因此不太可能将其删除。