Миграция из EditorAction в org.eclipse.ui.menus - PullRequest
0 голосов
/ 29 октября 2018

Для предыдущего вопроса , который у меня был, я нашел решение, которое использует некоторые устаревшие 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 голосов
/ 29 октября 2018

Вам также понадобится точка расширения org.eclipse.ui.commands для определения идентификатора команды.

Не существует простого сопоставления обработчика со старым действием.

Обработчик обычно расширяет org.eclipse.core.commands.AbstractHandler.

Класс org.eclipse.ui.handlers.HandlerUtil предоставляет несколько вспомогательных методов для обработчиков, например, для получения активного редактора.

Обратите внимание, что хотя org.eclipse.ui.editorActions помечен как устаревший, маловероятно, что он когда-либо будет удален, так как слишком много существующего кода использует его.

...