org.eclipse.ui.actionSets

Din plugin kan bidrage med menuer, menupunkter og værktøjslinjeelementer til menuerne og værktøjslinjen på arbejdsbænken ved at bruge udvidelsespunktet org.eclipse.ui.actionSets. Bidragene er grupperet i funktionssæt, som kan gøres synlige med en brugerindstilling, så det er muligt at mindske den forvirring, der kan opstå, hvis alle pluginss menubidrag vises på samme tid.

Du kan se, hvilke funktionssæt der er bidraget til arbejdsbænken, ved at vælge Vindue > Tilpas perspektiv... på arbejdsbænkens menu. Indstillingen viser en dialogboks med funktionssættene i form af kommandogrupper. Et hak ved en kommandogruppe betyder, at menu- og værktøjslinjefunktionerne er synlige på arbejdsbænken. Du kan vælge navnet på kommandogruppen for at få vist en liste med de tilgængelige menu- og værktøjslinjefunktioner i højre side. Nedenstående figur viser listen med de kommandogrupper, der er tilgængelige på arbejdsbænken. Din arbejdsbænk kan se anderledes ud, afhængig af hvilke plugins du har installeret, og hvilket perspektiv der er aktivt.

Dialogboksen Tilpas perspektiv med funktionssætsliste

Readme-værktøjet bruger et funktionssæt til at bidrage med forskellige funktioner af typen "Åbn Readme-browser" til arbejdsbænkmenuen. Vi bidrog med en lignende funktion til ressourcenavigatorens pop op-menu. Her er koden:

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

Det er tydeligt, at der foregår meget i koden. Lad os kigge på den trin for trin, idet vi nøjes med den første funktion i denne omgang.   

Først bliver funktionssættet erklæret og får en etiket (label). Etiketten "ReadMe Actions" (defineret for nøglen %ActionSet.name i plugin'ens properties-fil) bruges til at vise funktionssættet i ovenstående dialogboks. Eftersom visible er angivet til true, vil funktionssættet som udgangspunkt være markeret i listen med funktionssæt og funktionerne vil være synlige på arbejdsbænken.

Resten af funktionssætserklæringen drejer sig om den menu, hvor funktionen vises, og selve funktionerne.

Vi definerer en menu, hvis etiket vises på arbejdsbænkens menuer. Menuens sti (path) fortæller arbejdsbænken, hvor den nye menu skal placeres i skuffen additions til menuen window. Der er en beskrivelse af menustier og skuffer i Menu- og værktøjslinjestier. Vi definerer også nogle skuffer i den nye menu, så der kan indsættes funktioner på bestemte steder på menuen.

Denne kode er nok til at få vist menuen på menuen Vindue på arbejdsbænken.

Menuen Vindue på arbejdsbænken med indgangen Readme File Editor (Editor til Readme-fil)

Dernæst defineres selve funktionerne.   

Funktionsdefinitionen (id, label, icon, class) ligner de andre funktioner, der vises i oversigter, editorer og pop op-menuer.  I det følgende fokuseres der på forskellen:  hvor bliver funktionen placeret? Vi bruger   menubarPath og toolbarPath til at angive placeringen. Først defineres menubarPath for at tilføje funktionen til en skuffe i den menu, der lige er defineret ( "window/org_eclipse_ui_examples_readmetool/slot1").

Menuen Editor til Readme-fil med menupunkter

Derefter defineres en ny toolbarPath for at indsætte funktionerne på arbejdsbænkens værktøjslinje. Eftersom der er defineret en ny værktøjssti, "readme", bestemmer arbejdsbænken, hvor den skal placeres i forhold til værktøjsbidragene fra andre plugins.

Arbejdsbænkens værktøjslinje med Readme-funktion

Hvad sker der, når brugeren vælger funktionen? Funktionen implementeres med den klasse, der er angivet i attributten class. Funktionen class skal implementere IWorkbenchWindowActionDelegate eller IWorkbenchWindowPulldownDelegate, hvis funktionen skal vises som værktøjselement, som kan rulles ned på værktøjslinjen. Eftersom vi ikke opretter et værktøjselement, som kan rulles ned, angiver vi WindowActionDelegate. Klassen ligner ObjectActionDelegate. Den starter dialogboksen Readme-afsnit, når brugeren vælger funktionen. Afsnitsdialogbokse er beskrevet i Programdialogbokse.

Funktionen leverer også aktiveringsbetingelser for dens menupunkt og værktøjslinjeelement. Menupunktet og værktøjslinjeelementet aktiveres kun, hvis der vælges en enkelt (enablesFor="1") Readme-fil (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme"). Funktionens menupunkt og værktøjslinjeelement vises og er aktiveret i medfør af koden i filen plugin.xml. Der udføres intet af plugin-koden, før brugeren vælger funktionen, og arbejdsbænken udfører funktionsklassen.

definitionId tillader, at funktionen linkes til en kommando, der er oprettet af udvidelsen org.eclipse.ui.commands, der kan anvendes til tastbindinger. Alle funktioner i et actionSets skal sammenkædes med en kommando, enten eksisterende kommandoer, der stilles til rådighed af arbejdsbænken eller kommandoer, der er oprettet af den leverende plugin. Se Kommandoer.

De to andre funktioner beskrives senere i forbindelse med funktioner, som kan ændre mål.