Menü és eszköztár elérési utak

Számos tevékenység-közreadást láthattunk, amely megadja a tevékenység helyének elérési útját. Nézzük meg közelebbről, hogy mit jelentenek ezek az elérési utak.  

Menü elérési utak

Először a menü elérési utakat tekintjük meg a munkaterület Súgó menüjének megjelenítésével.

Megnevezett csoportok a munkaterületen

Az új menük és menüpontok beszúrásának helye megnevezett csoportok segítségével kerül megadásra. A megnevezett csoport helyként vagy helykitöltőként képzelhető el, amelynek segítségével a menüpontok a menüsor és legördülő menü adott helyein szúrhatók be.

Az IWorkbenchActionConstants és IIDEActionConstants osztályban a munkaterület megadja az összes csoporthely nevét. (Két különböző osztályt használnak, mivel az erőforrással kapcsolatos menüpontok az általános munkaterületből kerülnek származtatásra). Minden munkaterület-menühöz a megnevezett csoportok bekerülnek a menübe azon a helyeken, ahol várható, hogy a bedolgozó új területeket szúr be.

A súgómenü alábbi leírása az IWorkbenchActionConstants osztálydefinícióból kerül adaptálásra.

   Standard Help menu actions
   Start group - HELP_START - "start"
   End group - HELP_END - "end"

Az általános munkaterület-súgómenü egy "start" nevű csoportot ad meg, amelyet a "end," megnevezett csoport követ. Két csoport megadása a bedolgozók számára kicsit jobb vezérlést biztosít azon helyekhez, amelyeken a közreadott elemek a súgó menüben kerülnek pozícionálásra. Ha megad egy menüt, akkor tetszőleges számú hely adható meg.Több bővítőhely hozzáadása jobb vezérelhetőséget biztosít a közreadásokhoz, amelyek a meglévő közreadásokhoz viszonyítva jelennek meg.

A súgómenükhöz menüpontot adó bedolgozók ezen csoportnevek segítségével eldönthetik, hogy a menüpont hova kerül. Az áttekintő bedolgozó például a munkaterülethez hozzáadja az "Áttekintők..." menüt tartalmazó tevékenységkészletet. Itt látható a leírónyelv az org.eclipse.ui.cheatsheets bedolgozó plugin.xml fájljából.

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

Az új súgótevékenység bekerül a súgómenü helpStart csoportjába.

Teljes képzésű menü elérési utak

Egy teljes menü elérési út egyszerűen "menünév/csoportnév."  A munkaterület menüneveinek nagy része az IWorkbenchActionConstants elemben kerül megadásra. (Az erőforrással kapcsolatos menünevek az IIDEActionConstants elemben vannak megadva.) Ha a súgómenü nevét keressük ebben az osztályban, akkor azt találjuk, hogy a súgótevékenység teljes képzésű elérési útja "help/helpEnd."

Néhány menü beágyazott almenükkel rendelkezik. A hosszabb elérési utak itt fordulnak elő. Ha a súgómenü megadott egy "submenu" nevű almenüt egy "submenuStart" nevű csoporttal, akkor a tevékenység teljes képzésű menü elérési útja az új almenüben "help/submenu/submenuStart" lesz.

UI címkék elérhetővé tétele külsőleg

A fenti példa szemlélteti a felhasználói felületen megjelenő karaktersorozat külsőleg elérhetővé tételének módszerét.  A külsőleg elérhetővé tett karaktersorozatok leegyszerűsítik a bedolgozó felhasználói felületének másik nyelvre lefordítását. A plugin.xml fájlokban lévő karaktersorozatok külsőleg elérhetővé tételéhez a karaktersorozatot le kell cserélni egy kulcsra (%CHEAT_SHEETS_MENU) és a plugin.properties fájlban létre kell hozni az alábbi formátumú bejegyzéseket:

	CHEAT_SHEETS_MENU = Cheat Sheets...

A plugin.properties fájl lefordítható különböző nyelvekre és a plugin.xml fájlt nem kell módosítani.

Új menük és csoportok hozzáadása

A példák nagy részében eddig a példa bedolgozók által közreadott tevékenységek hozzáadásra kerültek a menük meglévő megnevezett csoportjaihoz.

Az actionSets, viewActions, editorActions és popupMenus kiterjesztési pont segítségével új menüket és csoportokat adhat meg a kiegészítésen belül. Ez azt jelenti, hogy új almenük és legördülőmenük adhatók meg, és a tevékenységek közreadhatók ezen új menükön. Ebben az esetben az új tevékenység elérési útja tartalmazza az újonnan megadott menü nevét.

Ezt az eljárást akkor láthattuk, amikor a readme eszköz egy új menüt adott meg ehhez a tevékenységkészlethez. Most, hogy a menürendszert már részletesebben megnéztük, tekintsük meg néhányszor a leírónyelvet.

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

Egy   "org_eclipse_ui_examples_readmetool" nevű új menüt vettünk fel, amelynek címkéjét az "%ActionSet.name" kulcs adja meg a tulajdonságok fájlban. Ebben a menüben három megnevezett csoportot adunk meg:  "slot1," "slot2" és "slot3."  Ezt az új menüt hozzáadjuk a "window/additions" elérési úthoz.

Ha visszamegyünk az IWorkbenchActionConstants elemhez, akkor a javadoc fájlban láthatjuk az ablakmenü definícióját:

    * <h3>Standard Window menu actions</h3>
    * <ul>
    * <li>Extra Window-like action group (<code>WINDOW_EXT</code>)</li> 

Ha tovább nézzük ezt az osztálydefiníciót, akkor az alábbi kapcsolódó definíciókat fogjuk látni:

   public static final String MENU_PREFIX = "";
   ...
   public static final String M_WINDOW = MENU_PREFIX+"window";
   ...
   public static final String MB_ADDITIONS = "additions";  // Csoport.
   ...
   public static final String WINDOW_EXT = MB_ADDITIONS;   // Csoport.

Ezen információkból összerakható az elérési út az elem munkaterület "Ablak" menüjéhez adásához. A menü neve "window", és egy "additions"  nevű bővítőhelyet adunk hozzá. Az új menü hozzáadásához a "window/additions" elérési utat használjuk.

A tevékenységkészlet deklarációban a "window/org_eclipse_ui_examples_readmetool/slot1" elérési út segítségével hozzáadunk egy tevékenységet az újonnan megadott menühöz.

Ugyanezen elérési út segítségével (vagy esetleg más helyek egyikével) más bedolgozók is hozzáadhatják a menühöz a saját menüjük egyikét.  

A readme eszköz példában a separator attribútum segítségével azonosítjuk a csoportneveket.  Ennek hatására egy elválasztóvonal jelenik meg ezen csoportok között, amennyiben tartalmaznak elemeket.  Ehelyett használható a groupMarker attribútum, amennyiben a menüben elválasztó megjelenítése nélkül meg szeretnénk adni egy megnevezett csoportot a csoportok megkülönböztetése érdekében.

Eszköztár elérési utak

Az eszköztár elérési utak a menü elérési utakhoz hasonlóan működnek.  

Megnevezett eszköztárak a munkaterületen

A munkaterület-eszköztár különböző bedolgozók által biztosított eszköztárakból áll, magát a munkaterületet is beleértve. Adott eszköztáron belül megnevezett csoportok és helyek találhatók, amelyek segítségével új eszköztár-elemek szúrhatók be.    

A munkaterület-eszköztár alábbi leírása az IWorkbenchActionConstants osztály definícióból kerül adaptálásra.

// Munkaterület-eszköztárazonosítók
public static final String TOOLBAR_FILE = "org.eclipse.ui.workbench.file"
public static final String TOOLBAR_NAVIGATE = "org.eclipse.ui.workbench.navigate"; 

// Munkaterület-eszköztárazonosítók. Ha a csoport elejéhez kíván elemet hozzáadni, 
// akkor használja a GROUP azonosítót. Ha a csoport végéhez kíván elemet hozzáadni, akkor az EXT azonosítót használja.
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"; 

A legegyszerűbb esetben a bedolgozó közreadhat egy eszköztárelemet a saját eszköztárban. A menühöz közreadott readme eszköz tevékenységek egy eszköztár elérési utat is megadnak:

<action id="org_eclipse_ui_examples_readmetool_readmeAction"  
   menubarPath="window/org_eclipse_ui_examples_readmetool/slot1"
   toolbarPath="readme"
...

Mivel nincs hivatkozás a munkaterület-eszköztár elérési utakra vagy csoportokra, a readme tevékenységek megjelennek az eszköztáron a saját csoportban. Az alábbi elérési út megadása hatására az elem a fájl eszköztárba kerül a mentés csoportban:

...
<action id="org_eclipse_ui_examples_readmetool_readmeAction"  
   menubarPath="window/org_eclipse_ui_examples_readmetool/slot1"
   toolbarPath="org.eclipse.ui.workbench.file/save.group"
...

Az IWorkbenchActionConstants elemben megadott elérési utakra más bedolgozók eszköztár elérési útjaiban hivatkozhatnak.

Hozzáadás más bedolgozó tevékenységkészletekhez

Tételezzük fel, hogy a bedolgozó azt szeretné, hogy az eszköztár-elemek jobban integrálódjanak más bedolgozó tevékenységeivel? Tekintsük meg, hogy a külső eszközök bedolgozó (org.eclipse.ui.externaltools) hogyan integrálja a tevékenységeket a hibakereső eszköztárral. A hibakereső (org.eclipse.debug.ui) az alábbi módon adja meg az eszköztár-tevékenységeket:

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

A readme eszközhöz hasonlóan a hibakereső bedolgozó saját eszköztár elérési utat ad meg, amely azt jelenti, hogy az eszköztár-elemek a saját eszköztárba kerülnek a munkaterületen.  Mit csinál a külső eszközök bedolgozó?

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

Figyelje meg a hibakereső tevékenységkészlet-azonosítójának használatát az eszköztár elérési útvonalban.  A tevékenységkészlet-azonosító elérési útban alkalmazása előírja, hogy az eszköztárelemet a hivatkozott tevékenységkészlet által használt eszköztárban kell elhelyezni. Az eszköztárcsoportban a tevékenységkészlet-azonosítókat az elemek rendezik sorba, így a példánkban a külső eszközök tevékenység a hibakereső tevékenységek után jelenik meg. 

Tevékenységkészlet eszköztárához adáskor új csoportok is megadhatók.   Ha a külső eszközök bedolgozó "org.eclipse.debug.ui.launchActionSet/external" eszköztár elérési utat ad meg, akkor az eszköztáron egy új csoport kerül létrehozásra a tevékenységhez.  A menükhöz hasonlóan az eszköztárcsoportok elválasztók segítségével kerülnek ábrázolásra. 

Elérési utak használata másik bedolgozóból

Általában nem javasolt más bedolgozó menüjéhez vagy eszköztárához az elérési út plugin.xml fájlból származtatásával közreadni, hacsak nem lett külön megjelölve rendelkezésre állóként az ügyfelek számára.  Elképzelhető, hogy a bedolgozó jövőbeli verziója megváltoztatja az elérési utak neveit. Két általános módszer a bedolgozó tevékenységkészlet-azonosítóinak és elérési útjainak használhatóként megjelölésére: