Plugin-modulen kan bidra med menyer, meny- og verktøylinjepunkter på arbeidsbenkmenyer og verktøylinjen via utvidelsespunktet org.eclipse.ui.actionSets. For å unngå det kaoset det ville blitt om alle plugin-modulenes menybidrag skulle vises på en gang, grupperes bidragene i handlingssett som kan gjøres synlige via brukerpreferanse.
Du kan se hvilke handlingssett som er oppgitt i arbeidsbenken, ved å velge
Vindu > Tilpass perspektiv... på arbeidsbenkmenyen. Dette alternativet viser en dialogboks med
handlingssett som kommandogrupper. Hvis det er en hake ved en kommandogruppe, er meny- og
verktøylinjehandlingene synlige i arbeidsbenken. Du kan velge navnet på kommandogruppen hvis du vil se listen over tilgjengelige meny- og
verktøylinjehandlinger til høyre. Figuren nedenfor viser listen over tilgjengelige
kommandogrupper i arbeidsbenken. (Det kan være at arbeidsbenken ser annerledes ut,
avhengig av hvilke plugin-moduler som er installert og hvilket perspektiv som er aktivt.)
Readme-verktøyet bruker et handlingssett til å oppgi flere ulike handlinger for åpning av readme-nettleser for arbeidsbenkmenyen. (Vi oppgav en liknende handling for hurtigmenyen i ressursnavigatoren.) Kodetypen er følgende:
<extension point = "org.eclipse.ui.actionSets"> <actionSet id="org_eclipse_ui_examples_readmetool_actionSet" label="%ActionSet.name" visible="true"> <menu id="org_eclipse_ui_examples_readmetool" label="%ActionSet.menu" path="window/additions"> <separator name="slot1"/> <separator name="slot2"/> <separator name="slot3"/> </menu> <action id="org.eclipse.ui.examples.readmetool.readmeAction" menubarPath="window/org_eclipse_ui_examples_readmetool/slot1" toolbarPath="readme" label="%ReadmeAction.label" tooltip="%ReadmeAction.tooltip" helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context" icon="icons/ctool16/openbrwsr.png" class="org.eclipse.ui.examples.readmetool.WindowActionDelegate" definitionId="org.eclipse.ui.examples.readmetool.readmeAction" enablesFor="1"> <selection class="org.eclipse.core.resources.IFile" name="*.readme"> </selection> </action> ... </actionSet> </extension>
Her skjedde det en hel del! La oss ta et skritt om gangen og først konsentrere oss om den første handlingen.
Først deklareres handlingssettet og en gitt etikett (label). Etiketten "ReadMe Actions" (definert for nøkkelen %ActionSet.name i plugin-modulens egenskapsfil) brukes for å vise handlingssettet i dialogboksen ovenfor. Siden vi har satt visible til "true", er det merket av for arbeidsbenkens handlingssett i handlingssettlisten og handlingene er synlige.
Den øvrige handlingssettdeklasasjonen definerer menyen som handlingen vises på samt selve handlingene.
Vi definerer en meny med en etikett (label) som vises på arbeidsbenkmenyene. Menybanen (path) forteller arbeidsbenken at den nye menyen skal plasseres i sporet additions på menyen window. (Du finner en nærmere beskrivelse av menybaner og spor under Baner til menyer og verktøylinjer.) Vi definerer også noen spor på den nye menyen slik at handlinger kan settes inn på spesifikke steder på menyen.
Kodetypen alene er nok til å vise menyen på arbeidsbenkens Vindu-meny.
Vi skal nå definere selve handlingene.
Handlingsdefinisjonen (id, label, icon, class) likner på andre handlinger som vi har sett i visninger, redigeringsprogrammer og hurtigmenyer. Her fokuserer vi på hva som er ulikt: hvor går handlingen videre? Vi bruker menubarPath og toolbarPath til å angi plasseringen av handlingen. Først skal vi definere menubarPath for å legge til handlingen i et spor på menyen som vi akkurat har definert ( "window/org_eclipse_ui_examples_readmetool/slot1").
Deretter definerer vi en ny toolbarPath for å sette inn handlingene på arbeidsbenkens verktøylinje. Ettersom vi har definert en ny verktøybane, "readme", avgjør arbeidsbenken hvor den skal plasseres i forhold til andre plugin-modulers bidrag til verktøylinjer.
Hva skjer når handlingen velges av brukeren? Handlingen implementeres av klassen som er angitt i class-attributtet. Handlingen class må implementere IWorkbenchWindowActionDelegate eller IWorkbenchWindowPulldownDelegate for å vise handlingen som et verktøyelement som kan velges på verktøylinjen. Ettersom vi ikke oppretter verktøyelementer som kan velges på en meny, oppgir vi WindowActionDelegate. Klassen likner på ObjectActionDelegate. Den starter dialogboksen med readme-deler når brukeren velger handlingen. (Vi skal se nærmere denne dialogboksen i Applikasjonsdialogbokser.)
Handlingen oppgir også aktiveringstilstander for menypunktet og verktøylinjepunktet. Meny- og verktøylinjepunktene aktiveres bare når en enkelt (enablesFor="1") readme-fil (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme") velges. Handlingens meny- og verktøylinjepunkt vises og aktiveres på grunn av kodetypen i filen plugin.xml. Ingen av del av plugin-modulens kode blir kjørt før brukeren velger handlingen og arbeidsbenken kjører handlingen class.
definitionId gjøre det mulig å linke handlingen til en kommando opprettet av org.eclipse.ui.commands-utvidelsen, som kan brukes til tastbindinger. Alle handlinger i et actionSets bør linkes til en kommando, enten eksisterende kommandoer bidratt av arbeidsbenken eller kommandoer opprettet av det bidragende plugin-modulen. Se Kommandoer.
Vi skal se nærmere på de to andre handlingene senere i konteksten målskiftende handlinger.