Edellä on esitetty monia lisäyksiä, jotka määrittävät toimintonsa sijainnin polun. Seuraavaksi tutkitaan tarkemmin näiden polkujen merkitystä.
Valikkopolkuja tarkastellaan tutkimalla ensin työympäristön Ohje-valikkoa.
Uusien valikoiden ja valikon vaihtoehtojen lisäyssijainnit määritetään nimettyjen ryhmien avulla. Nimettyä ryhmää voisi ajatella varastopaikkana tai sijamerkkinä, jonka avulla voi lisätä valikon vaihtoehtoja valikkopalkin tai avattavan valikon tiettyihin kohtiin.
Työympäristö määrittää kaikki ryhmien varastopaikkojen nimet luokissa IWorkbenchActionConstants ja IIDEActionConstants. (Kahta eri luokkaa käytetään, koska resursseihin liittyvät valikon vaihtoehdot jätetään pois yleisestä työympäristöstä). Nimetyt ryhmät sijoitetaan kunkin työympäristön valikon osalta paikkoihin, joihin lisäosien odotetaan lisäävän uusia toimintoja.
Seuraava Ohje-valikon kuvaus on muokatttu IWorkbenchActionConstants-luokan määrityksestä.
Tavalliset Ohje-valikon toiminnot Alkuryhmä - HELP_START - "start" Loppuryhmä - HELP_END - "end"
Tavallinen työympäristön Ohje-valikko määrittää nimetyn ryhmän "start," jonka jälkeen on nimetty ryhmä "end,". Kahden ryhmän määrittämisen avulla lisäosat voivat hallita enemmän sitä, miten niiden lisäämät objektit sijoitetaan Ohje-valikossa. Kun määrität valikon, voit määrittää haluamasi määrän varastopaikkoja. Kun varastopaikkoja lisätään enemmän, muut lisäosat voivat ohjata enemmän sitä, missä niiden lisäykset näkyvät suhteessa olemassa oleviin lisäyksiin.
Valikon vaihtoehdon Ohje-valikkoon lisäävät lisäosat voivat määrittää näiden ryhmien nimien avulla, mihin niiden valikon vaihtoehto menee. Esimerkiksi muistilistan lisäosa lisää työympäristöön toimintojoukon, jossa on "Muistilistat..."-valikko. Seuraavassa esimerkissä on esitettyorg.eclipse.ui.cheatsheets-lisäosan plugin.xml-tiedoston merkinnät.
<extension point="org.eclipse.ui.actionSets"> <actionSet label="%CHEAT_SHEETS" visible="true" id="org.eclipse.ui.cheatsheets.actionSet"> <action label="%CHEAT_SHEETS_MENU" class="org.eclipse.ui.internal.cheatsheets.actions.CheatSheetHelpMenuAction" menubarPath="help/helpStart" id="org.eclipse.ui.cheatsheets.actions.CheatSheetHelpMenuAction"> </action> </actionSet> </extension>
Uusi ohjetoiminto sijoitetaan Ohje-valikkoon ryhmän helpStart sisään.
Täydellinen valikkopolku on yksinkertaisesti "valikon nimi/ryhmän nimi." Useimpien työympäristön valikoiden nimet on määritetty IWorkbenchActionConstants-rajapinnassa. (Resursseihin liittyvien valikoiden nimet on määritetty IIDEActionConstants-rajapinnassa.) Tämän luokan Ohje-valikon nimeä tarkastelemalla huomaa, että ohjetoiminnon tarkennettu polun nimi on "help/helpEnd."
Joissakin valikoissa on sisäkkäisiä alivalikoita, joten polutkin ovat pidempiä. Jos Ohje-valikko olisi määrittänyt alivalikon "submenu" ja nimetyn ryhmän "submenuStart," uuden alivalikon toiminnon tarkennettu valikkopolku olisi "help/submenu/submenuStart."
Edellä oleva esimerkki kuvaa tekniikkaa, jolla ulkoistetaan käyttöliittymässä näkyvät merkkijonot. Merkkijonojen ulkoistus helpottaa lisäosan käyttöliittymän kääntämistä muille kielille. plugin.xml-tiedostojen merkkijonot voi ulkoistaa korvaamalla merkkijono avaimella (%CHEAT_SHEETS_MENU) ja luomalla merkinnät plugin.properties-tiedostoon, jonka muoto on seuraava:
CHEAT_SHEETS_MENU = Muistilistat...
Tiedoston plugin.properties voi kääntää eri kielille joutumatta muuttamaan tiedostoa plugin.xml.
Monissa edellä kuvatuissa esimerkeissä esimerkkilisäosan toimittamat toiminnot on lisätty valikoiden sisällä oleviin aiemmin luotuihin nimettyihin ryhmiin.
Laajennuspisteiden actionSets, viewActions, editorActions ja popupMenus avulla voi määrittää myös uusia valikoita ja ryhmiä lisäyksen sisällä. Tämä tarkoittaa sitä, että voit määrittää uusia alivalikoita tai uusia avattavia valikoita ja lisätä toiminnot näihin uusiin valikoihin. Tällöin uuden toiminnon polku sisältää uuden määritetyn valikon nimen.
Tämä tekniikka esiintyi edellä, kun readme-työkalu määritti uuden valikon toimintojoukolleen. Seuraavassa tarkastellaan merkintöjä vielä kerran nyt, kun valikkopolkuja on tarkasteltu tarkemmin.
<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" enablesFor="1"> <selection class="org.eclipse.core.resources.IFile" name="*.readme"> </selection> </action> ...
Tässä lisättiin uusi valikko "org_eclipse_ui_examples_readmetool", jonka nimiö on määritetty ominaisuustiedoston avaimessa "%ActionSet.name". Tämän valikon sisään määritettiin kolme nimettyä ryhmää, "slot1," "slot2 " ja "slot3." Uusi valikko lisättiin polkuun "window/additions."
Kun siirrytään takaisin rajapintaan IWorkbenchActionConstants, ikkunavalikon määritys näkyy javadocissa:
* <h3>Tavalliset Ikkuna-valikon toiminnot</h3> * <ul> * <li>Lisätty ikkunamainen toimintoryhmä (<code>WINDOW_EXT</code>)</li>
Luokan määrityksessä näkyvät seuraavat aiheeseen liittyvät määritykset:
public static final String MENU_PREFIX = ""; ... public static final String M_WINDOW = MENU_PREFIX+"window"; ... public static final String MB_ADDITIONS = "additions"; // Group. ... public static final String WINDOW_EXT = MB_ADDITIONS; // Group.
Näistä tiedoista voi päätellä polun, jolla lisätään jotain työympäristön "Ikkuna"-valikkoon. Itse valikon nimi on "window", ja se määrittää yhden varastopaikan "additions." Uuden valikon lisäämiseen käytetään polkua "window/additions".
Toimintojoukon esittelyssä lisätään toiminto juuri määritettyyn valikkoon polulla "window/org_eclipse_ui_examples_readmetool/slot1."
Muut lisäosat voivat lisätä tähän valikkoon jonkin oman valikkonsa samaa polkua (tai mahdollisesti jotain muuta varastopaikkaa) käyttäen.
Readme-työkalun esimerkissä ryhmien nimien yksilöintiin käytettiin määritettä separator. Tällöin ryhmien väliin tulee erotinrivi, jos niissä on objekteja. Sen sijaan voi käyttää määritettä groupMarker, jos halutaan määrittää nimetty ryhmä näyttämättä erottimia valikossa eri ryhmien erotusta varten.
Työkalurivipolut toimivat samalla tavalla kuin valikkopolut.
Työympäristön työkalurivi koostuu työkaluriveistä, jotka ovat muiden lisäosien, mukaan luettuna työympäristön, lisäämiä. Kaikissatyökaluriveissä on nimettyjä ryhmiä tai varastopaikkoja, joiden avulla voidaan lisätä uusia työkalurivin objekteja.
Seuraava työkalurivien kuvaus on muokattu IWorkbenchActionConstants-luokan määrityksestä.
// Työympäristön työkalurivien tunnukset public static final String TOOLBAR_FILE = "org.eclipse.ui.workbench.file" public static final String TOOLBAR_NAVIGATE = "org.eclipse.ui.workbench.navigate"; // Työympäristön työkaluriviryhmien tunnukset. Jos haluat lisätä objektin ryhmän alkuun, // käytä GROUP-tunnusta. Jos haluat lisätä objektin ryhmän loppuun, käytä EXT-tunnusta. public static final String PIN_GROUP = "pin.group"; public static final String HISTORY_GROUP = "history.group"; public static final String NEW_GROUP = "new.group"; public static final String SAVE_GROUP = "save.group"; public static final String BUILD_GROUP = "build.group";
Yksinkertaisimmassa tapauksessa lisäosa voi lisätä työkalurivin objektin omaan työkaluriviinsä. Esimerkiksi valikkoon lisätyt readme-työkalun toiminnot saavat myös seuraavan työkalurivin polun:
<action id="org_eclipse_ui_examples_readmetool_readmeAction" menubarPath="window/org_eclipse_ui_examples_readmetool/slot1" toolbarPath="readme" ...
Koska viittausta työympäristön työkaluriviin tai ryhmiin ei ole, readme-toiminnot näkyvät omassa ryhmässään työkalurivillä. Seuraavan polun määritys sen sijaan sijoittaisi objektin tallennusryhmän tiedosto-työkaluriviin:
... <action id="org_eclipse_ui_examples_readmetool_readmeAction" menubarPath="window/org_eclipse_ui_examples_readmetool/slot1" toolbarPath="org.eclipse.ui.workbench.file/save.group" ...
Rajapinnassa IWorkbenchActionConstants määritettyihin polkuihin voi viitata muiden lisäosien työkalurivipoluissa.
Entä jos lisäosa haluaa yhdistää työkaluriviobjektinsa paremmin toisen lisäosan toimintoihin? Seuraavaksi tarkastellaan, miten ulkoisten työkalujen lisäosa (org.eclipse.ui.externaltools) yhdistää toimintonsa vianmääritysohjelman työkaluriviin. Vianmääritysohjelma (org.eclipse.debug.ui) määrittää työkalurivin toimintonsa seuraavasti:
<extension point="org.eclipse.ui.actionSets"> <actionSet label="%LaunchActionSet.label" visible="false" id="org.eclipse.debug.ui.launchActionSet"> ... <action toolbarPath="debug" id="org.eclipse.debug.internal.ui.actions.RunDropDownAction" hoverIcon="icons/full/ctool16/run_exc.png" class="org.eclipse.debug.internal.ui.actions.RunToolbarAction" disabledIcon="icons/full/dtool16/run_exc.png" icon="icons/full/etool16/run_exc.png" helpContextId="run_action_context" label="%RunDropDownAction.label" pulldown="true"> </action> ...
Aivan kuten readme-työkalukin, vianmäärityslisäosa määrittää oman työkalurivipolkunsa, eli sen työkaluriviobjektit ovat omassa työkalurivissään työympäristössä. Mitä ulkoisten työkalujen lisäosa tekee?
<extension point="org.eclipse.ui.actionSets"> <actionSet id="org.eclipse.ui.externaltools.ExternalToolsSet" label="%ActionSet.externalTools" visible="true"> ... <action id="org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar" definitionId= "org.eclipse.ui.externaltools.ExternalToolMenuDelegateToolbar" label="%Action.externalTools" toolbarPath="org.eclipse.debug.ui.launchActionSet/debug" disabledIcon="icons/full/dtool16/external_tools.png" icon="icons/full/etool16/external_tools.png" hoverIcon="icons/full/ctool16/external_tools.png" tooltip="%Action.externalToolsTip" pulldown="true" class="org.eclipse.ui.externaltools.internal.menu.ExternalToolMenuDelegate"> </action> </actionSet> </extension>
Huomaa vianmääritysohjelman toimintojoukon tunnuksen käyttö työkalurivin polussa. Toimintojoukon tunnuksen käyttö polussa tarkoittaa, että työkalurivin objekti tulee sijoittaa viitatun toimintojoukon käyttämään työkaluriviin. Työkaluriviryhmän sisällä objektit järjestetään toimintojoukon tunnuksen mukaan niin, että tässä esimerkissä ulkoisten työkalujen toiminnto näkyvät vianmääritysohjelman toimintojen perässä.
Kun toimintojoukon työkaluriviin tehdään lisäyksiä, myös uusia ryhmiä voi määrittää. Jos ulkoisten työkalujen lisäosa on määrittänyt toolbarpath-polukseen "org.eclipse.debug.ui.launchActionSet/external", työkalurivin toiminnolle luodaan uusi ryhmä. Valikoiden tapaan myös työkalurivin ryhmät rajataan erottimilla.
Periaatteessa ei kannata tehdä lisäyksiä toisen lisäosan valikkoon tai työkaluriviin niin, että polun nimi haetaan plugin.xml-tiedostosta, ellei sitä ole erityisesti merkitty työasemien käyttöön. On mahdollista, että lisäosan tuleva versio muuttaa polkujen nimet. Seuraavassa on esitelty kaksi yleistä tapaa, miten lisäosan toimintojoukkojen tunnukset ja polut merkitään vapaasti käytettäviksi: