org.eclipse.ui.editorActions

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

В примере readme модуль использует точку расширения editorActions для добавления дополнительных действий к меню, добавленным редактором readme. Определение в plugin.xml должно выглядеть уже знакомым.

<extension
    point = "org.eclipse.ui.editorActions">
      <editorContribution 
         id="org.eclipse.ui.examples.readmetool.ec1" 
         targetID="org.eclipse.ui.examples.readmetool.ReadmeEditor">        
	   <action id="org.eclipse.ui.examples.readmetool.ea1" 
              label="%Editors.Action.label" 
              toolbarPath="ReadmeEditor"
              icon="icons/obj16/editor.png" 
              tooltip="%Editors.Action.tooltip" 
              class="org.eclipse.ui.examples.readmetool.EditorActionDelegate" 
              definitionId="org.eclipse.ui.examples.readmetool.ea1"
              /> 
      </editorContribution>
 </extension>

Также как и для действия Просмотр, расширение должно указывать targetID редактора, в который вносятся дополнительные действия.   Само по себе действие очень похоже на действие Просмотр (ИД, метка, значок, toolbarPath, ...). Разница в том, что указанный класс должен реализовать метод IEditorActionDelegate, а также можно указать definitionId для связывания действия с командой, заданной в расширении org.eclipse.ui.commands. Это расширение необходимо для создания привязок клавиш. Обратитесь к разделу Команды.

Обратите внимание, что путь строки меню не указан в этом коде.  Таким образом, действие будет отображаться в панели инструментов рабочей среды, когда редактор активен, но не в меню рабочей среды.   (Подробные сведения о путях панели инструментов и меню содержатся в разделе Пути меню и панели инструментов).

Конечно, при активизации редактора мы видим действия редактора в панели инструментов рядом с действиями, добавленными самим редактором.

Действие редактора отображается на панели инструментов рядом с действиями, добавленными самим редактором

Утилита readme предоставляет EditorActionDelegate для реализации действия.  Этот класс очень похож на делегата действия пункта Просмотр, рассмотренного ранее.

public void run(IAction action) {
	MessageDialog.openInformation(editor.getSite().getShell(),
		MessageUtil.getString("Readme_Editor"),
		MessageUtil.getString("Editor_Action_executed")); 
}