org.eclipse.ui.editorActions

Wiadomo już, w jaki sposób edytory mogą po aktywowaniu wnosić własne akcje do menu i paska narzędzi środowiska roboczego.  Punkt rozszerzenia org.eclipse.ui.editorActions umożliwia modułowi dodatkowemu rozszerzanie menu i paska narzędzi środowiska roboczego po aktywowaniu edytora innego modułu dodatkowego.

W przykładzie readme moduł dodatkowy używał punktu rozszerzenia editorActions w celu wniesienia dodatkowych akcji do menu rozszerzonego przez edytor readme. Definicja w pliku plugin.xml powinna już wyglądać znajomo.

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

Podobnie jak w przypadku akcji widoku, rozszerzenie musi określać atrybut targetID edytora, do którego wnosi akcje.  Sama akcja jest bardzo podobna do akcji widoku (id, label, icon, toolbarPath...), z wyjątkiem tego, że dana klasa musi implementować interfejs IEditorActionDelegate.  

Warto zauważyć, że w tym kodzie znaczników ścieżka paska menu nie jest określona.  Dlatego akcja zostanie wyświetlona na pasku narzędzi środowiska roboczego po aktywowaniu edytora, ale nie pojawi się na pasku menu środowiska roboczego.  Ścieżki paska narzędzi i menu omówiono w sekcji Ścieżki menu i paska narzędzi.

W każdym razie, gdy edytor jest aktywny, dodatkowa akcja edytora będzie dostępna na pasku narzędzi obok akcji wniesionych przez sam edytor.

Akcja edytora dostępna na pasku narzędzi środowiska roboczego obok akcji wniesionych przez sam edytor

Narzędzie readme dostarcza klasę EditorActionDelegate w celu zaimplementowania akcji.  Ta klasa jest bardzo podobna do klasy ViewActionDelegate, która była już omawiana.

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