org.eclipse.ui.editorActions

Již jsme viděli, jak editory mohou při své aktivaci vkládat své vlastní akce do nabídek a panelu nástrojů pracovní plochy.  Bod rozšíření org.eclipse.ui.editorActions umožňuje modulu plug-in přidávat do nabídek a panelu nástrojů pracovní plochy při aktivaci editoru jiného modulu plug-in.

V příkladu README modul plug-in používá bod rozšíření editorActions ke vložení přídavných akcí do nabídky vložené editorem README. Definice v našem plugin.xml by vám v tomto momentu měla být zcela srozumitelná.

   <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>

Podobně jako v případě akce pohledu musí rozšíření definovat identifikátor targetID editoru, do kterého akce přispívají.  Samotná akce je velmi podobná akci pohledu (id, label, icon, toolbarPath, ...). Výjimkou je skutečnost, že zadaná třída musí implementovat IEditorActionDelegate.  

Povšimněte si, že tento markup nezadává cestu pruhu nabídky.  Proto se akce při aktivaci editoru zobrazí na panelu nástrojů pracovní plochy, avšak nikoli v pruhu nabídky.  (Výklad k cestám panelu nástrojů a nabídek viz Cesty nabídky a panelu nástrojů.)

Je-li editor aktivní, zobrazuje se na panelu nástrojů vedle akcí vložených samotným editorem naše akce editoru.

Akce editoru se zobrazuje vedle původních příspěvků editoru na panelu nástrojů pracovní plochy

Nástroj README poskytuje k implementaci akce EditorActionDelegate.  Tato třída je obdobná delegátu akce pohledu, kterou jsme popsali výše.

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