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" 
              /> 
      </editorContribution>
 </extension>

Также как и для действия Просмотр, расширение должно указывать targetID редактора, в который вносятся дополнительные действия.  Само по себе действие очень похоже на действие Просмотр (ИД, метка, значок, toolbarPath, ...), но заданный класс должен применять IEditorActionDelegate.  

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

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

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

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

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