A szerkesztők kezdeti hozzáadott halmazát egy másik kiterjesztési pont (org.eclipse.ui.editors) határozza meg. Egy tevékenységhalmaz jön létre és ezen osztozik az összes ugyanolyan típusú szerkesztő. Meghívás esetén ezek a tevékenységek az aktív szerkesztőn kerülnek végrehajtásra. Ez a kiterjesztési pont ugyanezt a mintát követi. Minden egyes tevékenységkiterjesztésen, ami létrejön, osztozik az összes ugyanolyan típusú szerkesztő. A tevékenységosztálynak meg kell valósítania az org.eclipse.ui.IEditorActionDelegate felületet. Az aktív szerkesztő az IEditorActionDelegate.setActiveEditor meghívásával kerül átadásra a megbízottnak.
Egy tevékenység engedélyezését vagy láthatóságát az enablement és visibility elemekkel lehet megadni. E két elem egy logikai kifejezést tartalmaz, amelyek kiértékelve meghatározzák az engedélyezést és/vagy láthatóságot.
Az enablement és visibility elemek szintaxisa ugyanaz. Mindkettő egyetlen logikai kifejezés részelemet tartalmazhat. A legegyszerűbb esetben ez egy objectClass, objectState, pluginState vagy systemProperty elem. Bonyolultabb esetben az and, or és not elemek kombinálhatók egy logikai kifejezés létrehozása érdekében. Az and és or elemnek egyaránt 2 részelemet kell tartalmaznia. A not elem csak 1 részelemet tartalmazhat.
<!ELEMENT extension (editorContribution+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT editorContribution (menu* , action*)>
<!ATTLIST editorContribution
id CDATA #REQUIRED
targetID CDATA #REQUIRED>
Ezzel az elemmel adható meg szerkesztőtevékenységek és/vagy menük egy csoportja.
<!ELEMENT action (selection* | enablement?)>
<!ATTLIST action
id CDATA #REQUIRED
label CDATA #REQUIRED
accelerator CDATA #IMPLIED
definitionId CDATA #IMPLIED
menubarPath CDATA #IMPLIED
toolbarPath CDATA #IMPLIED
icon CDATA #IMPLIED
disabledIcon CDATA #IMPLIED
hoverIcon CDATA #IMPLIED
tooltip CDATA #IMPLIED
helpContextId CDATA #IMPLIED
style (push|radio|toggle) "push"
state (true | false)
class CDATA #REQUIRED
enablesFor CDATA #IMPLIED
actionID CDATA #IMPLIED>
Ez az elem egy tevékenységet ad meg, amelyet a felhasználó meghívhat a felhasználói felületen.
push | - normál menü- vagy eszköztár-elem. | |
radio | - választógomb stílusú menü- vagy eszköztár-elem. Az ugyanazon menü- vagy eszköztárcsoporton belüli választógomb stílusú tevékenységek választógombokként működnek. A kezdőértéket a state attribútum határozza meg. | |
toggle | - megjelölt vagy átkapcsolható stílusú menüelem. A kezdőértéket a state attribútum határozza meg. |
! | - egy elem sincs kiválasztva | |
? | - 0 vagy 1 elem van kiválasztva | |
+ | - 1 vagy több elem van kiválasztva | |
multiple, 2+ | - 2 vagy több elem van kiválasztva | |
n | - a kijelölt elemek pontos száma. Például: Az enablesFor=" 4" csak akkor engedélyezi a tevékenységet, ha 4 elem van kijelölve | |
* | - tetszőleges számú elem van kiválasztva |
Ha több kiterjesztés ad hozzá a vonalzóműveleteket ugyanahhoz a szövegszerkesztőhöz, akkor az a kiterjesztés nyer, amelynek bedolgozója az előfeltétel-fa tetején található. Ha több ilyen bedolgozó is van, akkor az első nyer.
<!ELEMENT menu (separator+ , groupMarker*)>
<!ATTLIST menu
id CDATA #REQUIRED
label CDATA #REQUIRED
path CDATA #IMPLIED>
Ez az elem szolgál egy új menü meghatározására.
<!ELEMENT separator EMPTY>
<!ATTLIST separator
name CDATA #REQUIRED>
Az elem létrehoz egy menüelválasztót az új menüben.
<!ELEMENT groupMarker EMPTY>
<!ATTLIST groupMarker
name CDATA #REQUIRED>
Ez az elem az új menüben létrehoz egy megnevezett csoportot. Az új menüben látható módon nem jelenik meg (szemben a separator elemmel).
<!ELEMENT selection EMPTY>
<!ATTLIST selection
class CDATA #REQUIRED
name CDATA #IMPLIED>
Ez az elem segít annak meghatározásában, milyen tevékenység legyen engedélyezve az aktuális kiválasztás alapján. Figyelmen kívül marad, ha az enablement elem meg van adva.
<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Ez az elem szolgál a kiterjesztés engedélyezésének meghatározására.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Ez az elem szolgál a kiterjesztés láthatóságának meghatározására.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Az elem egy logikai AND műveletet ábrázol a két részelemként kiértékelt kifejezés eredményén.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Az elem egy logikai OR műveletet ábrázol a két részelemként kiértékelt kifejezés eredményén.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Az elem egy logikai NOT műveletet ábrázol a részelemként kiértékelt kifejezés eredményén.
<!ELEMENT objectClass EMPTY>
<!ATTLIST objectClass
name CDATA #REQUIRED>
Ez az elem szolgál az aktuális kijelölésben szereplő egyes objektumok osztályainak vagy felületeinek kiértékelésére. A kifejezés értéke akkor igaz, ha a kijelölés minden egyes objektuma megvalósítja az adott osztályt vagy felületet.
<!ELEMENT objectState EMPTY>
<!ATTLIST objectState
name CDATA #REQUIRED
value CDATA #REQUIRED>
Ez az elem használatos az aktuális kijelölésben szereplő egyes objektumok attribútumállapotainak kiértékelésére. A kifejezés értéke akkor igaz, ha a kijelölés minden egyes objektuma egy adott attribútumállapottal bír. Ilyen típusú kifejezés kiértékeléséhez a kijelölés minden objektumának meg kell valósítania, vagy adaptálódnia kell az org.eclipse.ui.IActionFilter felülethez.
<!ELEMENT pluginState EMPTY>
<!ATTLIST pluginState
id CDATA #REQUIRED
value (installed|activated) "installed">
Ez az elem szolgál egy bedolgozó állapotának kiértékelésére. A bedolgozó állapota az alábbi lehet: telepített ("feloldott" OSGi állapotnak felel meg) vagy aktivált ("aktív" OSGi állapotnak felel meg).
<!ELEMENT systemProperty EMPTY>
<!ATTLIST systemProperty
name CDATA #REQUIRED
value CDATA #REQUIRED>
Ez az elem szolgál bizonyos rendszertulajdonságok állapotának kiértékelésére. A tulajdonság értéke a java.lang.System helyről kerül lekérésre.
<extension point=
"org.eclipse.ui.editorActions"
>
<editorContribution id=
"com.xyz.xyzContribution"
targetID=
"com.ibm.XMLEditor"
>
<menu id=
"XYZ"
label=
"&XYZ menü"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ"
label=
"&Run XYZ Tool"
menubarPath=
"XYZ/group1"
toolbarPath=
"Normal/additions"
style=
"toggle"
state=
"true"
icon=
"icons/runXYZ.gif"
tooltip=
"Run XYZ Tool"
helpContextId=
"com.xyz.run_action_context"
class=
"com.xyz.actions.RunXYZ"
>
<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
/>
</action>
</editorContribution>
</extension>
A fenti példában a megadott tevékenység egy jelölőnégyzet-elemként jelenik meg az új, "XYZ menü" nevű, felső szintű menüben, valamint váltókapcsolóként az eszköztárban. A tevékenység akkor engedélyezett, ha a kijelölés csak Java fájl erőforrásokat tartalmaz.
Az alábbiakban bemutatunk még egy példát egy nézetszerkesztő-tevékenységkiterjesztés deklarációjára:
<extension point=
"org.eclipse.ui.editorActions"
>
<editorContribution id=
"com.xyz.xyz2Contribution"
targetID=
"com.ibm.XMLEditor"
>
<menu id=
"XYZ2"
label=
"&XYZ2 menü"
path=
"edit/additions"
>
<separator name=
"group1"
/>
</menu>
<action id=
"com.xyz.runXYZ2"
label=
"& XYZ2 eszköz futtatása"
menubarPath=
"edit/XYZ2/group1"
style=
"push"
icon=
"icons/runXYZ2.gif"
tooltip=
"XYZ2 eszköz futtatása"
helpContextId=
"com.xyz.run_action_context2"
class=
"com.xyz.actions.RunXYZ2"
>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<not>
<objectState name=
"extension"
value=
"java"
/>
</not>
</and>
</enablement>
</action>
</editorContribution>
</extension>
A fenti példában a megadott tevékenység egy menüelemként jelenik meg a felső szintű "Szerkesztés" menü "XYZ2 menü" nevű almenüjében. A tevékenység akkor engedélyezett, ha a kijelölés nem tartalmaz Java fájl erőforrásokat.
Ez a kiterjesztési pont használható a cél szerkesztő által korábban létrehozott menük tevékenységekkel bővítésére. Ezenfelül a munkaterület ablaka is bővíthető menükkel és tevékenységekkel. A munkaterület ablak tevékenységeinek és főbb csoportjainak azonosítói az org.eclipse.ui.IWorkbenchActionConstants helyen vannak meghatározva. Ezek szolgálnak referenciaként az új tevékenységek elhelyezéséhez. Felső szintű menük a path attribútum alábbi értékeivel hozhatók létre:
Az elérési úthoz adott tevékenységek és menük csak akkor jelennek meg, ha a társított szerkesztő aktív. A szerkesztő bezárása esetén a menük és tevékenységek is eltávolításra kerülnek.
A tevékenységkiterjesztés engedélyezési feltételeit kezdetben az enablesFor, és a selection vagy enablement elem adja meg. Miután azonban a tevékenység megbízottja példányosításra került, az közvetlenül is vezérelheti az állapotot a saját selectionChanged metódusával.
A tevékenységek és a menücímkék hívóbetűket kódoló speciális karaktereket is tartalmazhatnak, az alábbi szabályoknak megfelelően:
A selection és enablement elemek kölcsönösen kizárják egymást. Az enablement helyettesítheti a selection elemet az objectClass és objectState részelemek használatával. Például az alábbi kód:
kifejezhető így is:<selection class=
"org.eclipse.core.resources.IFile"
name=
"*.java"
>
</selection>
<enablement>
<and>
<objectClass name=
"org.eclipse.core.resources.IFile"
/>
<objectState name=
"extension"
value=
"java"
/>
</and>
</enablement>
Copyright (c) 2000, 2005 IBM Corporation és mások.
Minden jog fenntartva. Jelen program és annak kísérőanyagai a csomaghoz
tartozó, illetve a
http://www.eclipse.org/legal/epl-v10.html
címen is elérhető Eclipse Public License 1.0 verziójának hatálya alatt lettek
közzétéve.