Med utvidelsespunktet org.eclipse.ui.popupMenus kan en plugin-modul bidra med hurtigmenyer i andre visninger og redigeringsprogrammer.
Du kan bidra med en handling for en bestemt hurtigmeny ved å bruke IDen (viewerContribution) eller ved å knytte den til en bestemt objekttype (objectContribution).
Readme-verktøyet definerer begge. La oss først selve objektbidraget.
<extension point = "org.eclipse.ui.popupMenus"> <objectContribution id="org.eclipse.ui.examples.readmetool" objectClass="org.eclipse.core.resources.IFile" nameFilter="*.readme"> <action id="org.eclipse.ui.examples.readmetool.action1" label="%PopupMenus.action" icon="icons/ctool16/openbrwsr.png" menubarPath="additions" helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context" class="org.eclipse.ui.examples.readmetool.PopupMenuActionDelegate" definitionId="org.eclipse.ui.examples.readmetool.action1" enablesFor="1"> </action> </objectContribution> ...
Handlingen for å vise en readme-handling oppgis for objektklassen IFile. Dette betyr at enhver visning som inneholder IFile-objekter, viser bidraget hvis IFile-objekter velges. Vi ser at utvalgskriteriene er ytterligere begrenset med et navnefilter (nameFilter="*.readme") og for enkelte utvalg (enablesFor="1"). Vi har allerede beskrevet at registreringen av denne menyen ikke kjører noen kode fra plugin-modulen før menypunktet er valgt.
Når menypunktet er valgt, kjører arbeidsbenken den angitte klassen. Siden hurtigmenyen er deklarert i en objectContribution, må den oppgitte klassen implementere IObjectActionDelegate.
Handlingen implementeres i PopupMenuActionDelegate.
public void run(IAction action) { MessageDialog.openInformation( this.part.getSite().getShell(), "Readme Example", "Popup Menu Action executed"); }
Vi ser hurtigmenybidraget når vi velger en readme-fil fra ressursnavigatoren.
Et visningsprogrambidrag brukes for å oppgi en hurtigmeny i en bestemt visning eller i et bestemt redigeringsprogram ved hjelp av en ID. Her er readme-verktøyets visningsprogrambidrag:
... <viewerContribution id="org.eclipse.ui.examples.readmetool2" targetID="org.eclipse.ui.examples.readmetool.outline"> <action id="org.eclipse.ui.examples.readmetool.action1" label="%PopupMenus.action" icon="icons/ctool16/openbrwsr.png" menubarPath="additions" helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context" definitionId="org.eclipse.ui.examples.readmetool.action1" class="org.eclipse.ui.examples.readmetool.ViewActionDelegate"> </action> </viewerContribution> </extension>
Merk: Navnet viewerContribution er noe misvisende siden det ikke gjelder for JFace-visningsprogrammer. En mer korrekt betegnelse er popupMenuContribution.
Når utvidelsen er en viewerContribution, må den oppgitte klassen implementere IEditorActionDelegate- eller IViewActionDelegate-grensesnittet, avhengig av om handlingen oppgis på hurtigmenyen i et redigeringsprogram eller i en visning.
targetID angir hvilken visning som har en hurtigmeny som skal endres. I dette tilfellet legget vi til en handling i en av readme-verktøyets visninger, nærmere bestemt i disposisjonen. Selve handlingen skiller seg ikke fra de handlingene vi har sett på tidligere. Vi oppgir en id, definitionId, label og icon for handlingen samt path i hurtigmenyen for bidraget. Handlingen vil bare bli vist på hurtigmenyen i readme-verktøyets disposisjonsvisning.
Merk: definitionId gjør det mulig å linke handlingen til en kommando opprettet av org.eclipse.ui.commands-utvidelsen, som kan brukes til tastbindinger. Se Kommandoer.