Vi har akkurat sett hvordan redigeringsprogrammer kan bidra med sine egne handlinger på arbeidsbenkmenyene og verktøylinjen når de blir aktive. Utvidelsespunktet org.eclipse.ui.editorActions gjør det mulig for plugin-moduler å bidra til arbeidsbenkmenyer og verktøylinje når et redigeringsprogram for en annen plugin-modul blir aktivt.
I readme-eksempelet bruker plugin-modulen utvidelsespunktet editorActions for å bidra med flere handlinger til menyen fra readme-redigeringsprogrammet. Definisjonen i plugin.xml bør nå se nokså kjent ut.
<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>
På samme måte som med en visningshandling må utvidelsen angi targetID for redigeringsprogrammet som den bidrar med handlinger for. Selve handlingen er svært lik en visningshandling (id, label, icon, toolbarPath, ...) bortsett fra at den oppgitte klassen må implementere IEditorActionDelegate, og en definitionId kan oppgis for å linke denne handlingen til en kommando oppgitt ved utvidelsen org.eclipse.ui.commands, som er viktig for tastbinding. Se Kommandoer.
Merk at en bane til menylinjen ikke angis i denne kodetypen. Handlingen vil derfor bli vist på arbeidsbenkens verktøylinje når redigeringsprogrammet er aktivt, men ikke på arbeidsbenkens menylinje. (Du finner en beskrivelse av verktøylinje- og menybaner under Meny- og verktøylinjebaner.)
Når et redigeringsprogram er aktivt, ser vi ganske riktig redigeringsprogramhandlingen på verktøylinjen ved siden av handlingene som ble oppgitt av selve redigeringsprogrammet.
Readme-verktøyet oppgir EditorActionDelegate som implementerer handlingen. Denne klassen er svært lik den visningshandlingsdelegaten vi allerede har sett.
public void run(IAction action) { MessageDialog.openInformation(editor.getSite().getShell(), MessageUtil.getString("Readme_Editor"), MessageUtil.getString("Editor_Action_executed")); }