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 wtyczce rozszerzanie menu i paska narzędzi środowiska roboczego po aktywowaniu edytora innej wtyczki.
W przykładzie readme wtyczka używała 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" definitionId="org.eclipse.ui.examples.readmetool.ea1" /> </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 itd.). Różnica polega na tym, że określona klasa musi implementować interfejs IEditorActionDelegate, a ponadto można określić element definitionId, który pozwala powiązać akcję z komendą określoną za pomocą rozszerzenia org.eclipse.ui.commands, co ma znaczenie przy tworzeniu przypisań klawiszy. Patrz punkt Komendy.
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.
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")); }