Instickprogrammet kan bidra med menyer, menyobjekt och verktygsfältobjekt till arbetsmiljöns menyer och verktygsfält genom att använda utökningspunkten org.eclipse.ui.actionSets. I syfte att minska det gytter som skulle orsakas av att ha alla insticksprograms menybidrag synliga samtidigt, grupperas bidragen i åtgärdsuppsättningar som kan göras synliga med hjälp av användarinställningar.
Du kan se vilka åtgärdsuppsättningar som har lagts till i arbetsmiljön genom att välja
Fönster > Anpassa perspektiv...
i arbetsmiljömenyn. Om du väljer det här alternativet visas en dialogrutan med en lista av åtgärdsuppsättningar som grupper med kommandon. En bockmarkering vid en kommandogrupp anger att menyns och verktygsfältets åtgärder visas i arbetsmiljön. Du kan välja namnet på kommandogruppen om du vill visa listan med tillgängliga meny- och verktygsfältåtgärder till höger. I bilden nedan visas listan med tillgängliga kommandogrupper i arbetsmiljön. (Din arbetsmiljö kan se annorlunda ut beroende på vilka insticksprogram du har installerat och vilket perspektiv som är aktivt.)
Readme-verktyget använder en åtgärdsuppsättning som bidrar med flera olika "Öppna Readme-visningsprogram"-åtgärder till menyn i arbetsmiljön. (Vi bidrar med en liknande åtgärd till resursnavigatorns snabbmeny.) Koden är den följande:
<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>
Oj, här pågår en hel del! Låt oss ta det ett steg i taget och bara titta på den första åtgärden nu.
Först deklareras åtgärdsuppsättningen och tilldelas etiketten label. Etiketten "ReadMe Actions" (som definieras för nyckeln %ActionSet.name i insticksprogrammets egenskapsfil) används till att visa åtgärdsuppsättningen i dialogrutan som visas nedan. Eftersom vi angett visible till true, har arbetsmiljön initialtåtgärdsuppsättningen markerad i listan med åtgärdsuppsättningar och åtgärderna är synliga.
Resten av åtgärdsuppsättningsdeklarationen rör sig om att definiera menyn på vilken åtgärderna visas och själva åtgärderna.
Vi definierar en meny vars etikett, label, visas på arbetsmiljöns menyer. Menyns sökväg, path, anger att arbetsmiljön ska placera den nya menyn på platsen additions på menyn Fönster. (För en diskussion om menysökvägar och platser, se 3#Sökvägar för menyer och verktygsfält.) Vi definierar även några platser på vår nya meny så att åtgärder kan infogas på specifika platser på vår meny.
Denna kod är ensam tillräcklig för att orsaka att menyn visas på menynFönster i arbetsmiljön.
Sedan definierar vi själva åtgärderna.
Åtgärdsdefinitionen (id, label, icon, class) liknar de andra åtgärder vi sett i vyer, redigerare och snabbmenyer. Vi kommer här att fokusera på vad som är annorlunda: vart går åtgärden? Vi använder menubarPath och toolbarPath till att ange dess plats. Först definierar vi menubarPath som lägger till åtgärden på en plats på menyn som vi just definierade ( "window/org_eclipse_ui_examples_readmetool/slot1").
Sedan definierar vi en ny toolbarPath som infogar våra åtgärder på arbetsmiljöns verktygsfält. Eftersom vi har definierat en ny verktygssökväg, "readme", kommer arbetsmiljön att avgöra var den placeras i förhållande till andra insticksprograms verktygsfältsbidrag.
Vad händer när användaren väljer åtgärden? Åtgärden implementeras av den klass som anges i attributet class. Åtgärden class måste implementera IWorkbenchWindowActionDelegate, eller IWorkbenchWindowPulldownDelegate om åtgärden ska visas som ett menyobjekt på verktygsfältet. Eftersom vi inte skapar ett menyobjekt tillhandahåller vi WindowActionDelegate. Den här klassen liknar ObjectActionDelegate. Den startar dialogrutan med readme-avsnitt när användaren väljer åtgärden. (Vi kommer att diskutera dialogrutan med avsnitt i Tillämpningsdialogrutor.)
Åtgärden tillhandahåller även aktiveringsvillkor för dess menyalternativ och verktygsfältsalternativ. Meny- och verktygsfältsobjekten aktiveras bara när en enstaka (enablesFor="1") readme-fil (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme") väljs. Denna åtgärds meny- och verktygsfältsobjekt aktiveras pga koden i filen plugin.xml. Ingen del av instickprogrammets kod körs förrän användaren väljer åtgärden och arbetsmiljön kör åtgärden class.
Med definitionId kan åtgärden länkas till ett kommando som skapats av utökningen org.eclipse.ui.commands som kan användas för nyckelbidningar. Alla åtgärder i en åtgärdsuppsättning ska länkas till ett kommando, antingen ett befintligt kommando som är tillgängligt i arbetsmiljön eller ett kommando som skapats av det bidragande insticksprogrammet. Mer information finns i avsnittet om kommandon.
Vi ska ta en titt på de andra två åtgärderna senare i ett sammanhang med åtgärder som kan få nya mål.