A jelleg kiterjesztési pont segítségével a jellegek írói egy szimbolikus név alatt regisztrálhatják saját jellegtípusaikat, amely azután a munkaterületen belül jellegek létrehozására és lekérdezésére használható. A szimbolikus név a jellegkiterjesztés azonosítója. Jelleg kiterjesztés meghatározásakor a "name" attribútumnak ajánlatos értelemmel bíró értéket adni, amely azonosítja az adott jelleget, és esetleg megjeleníthető a felhasználók számára.
A jellegek viszonymegszorításokat határozhatnak meg más jellegekkel. Az "one-of-nature" ("egyfajta-jelleg") megszorítás azt határozza meg, egy adott halmazba tartozó jellegek közül egy projektben egyszerre legfeljebb egy szerepelhet. Ennek szükségszerű következménye az egymással nem kompatibilis jellegek közti kölcsönösen kizárás. A "requires-nature" ("szükséges-jelleg") megszorítás függőséget határoz meg egy másik jelleg irányába. Amikor egy jelleg bekerül egy projektbe, akkor valamennyi szükséges jelleget is fel kell venni. A jellegek beállítása és kiiktatása során garantált, hogy a szükséges jellegek a még beállításukat megelőzően beállításra kerülnek, és csak saját kiiktatásuk után kerülnek kiiktatásra. Emiatt a jellegek közti körkörös függőség nem megengedett.
A jellegek nem vehetők fel vagy távolíthatók el egy projektből, ha ez a módosítás korábban már kielégített megszorításokat sértene. Ha egy jelleg be van állítva egy projekthez, de később kiderül, hogy a megszorításai nincsenek kielégítve, akkor ez a jelleg, és valamennyi jelleg, amely ezt igényli tiltott jelzést kap, de megmarad a projektben. Ez például akkor történhet meg, ha egy szükséges jelleg kimarad a telepítésből. A telepítésből kimaradt, valamint a függőségi körökben szereplő jellegek szintén tiltottként vannak megjelölve.
A jellegek azt is meghatározhatják, hogy konfigurálnak-e növekményes projekt-összeépítőt, és ha igen, akkor melyiket. Ezen információk segítségével a munkaterület biztosítja, hogy az egyes összeépítők csak akkor kerülnek futtatásra, ha a nekik megfelelő jelleg jelen van és az összeépítés alatt álló projekten belül engedélyezett. Ha egy jelleg eltávolításra kerül egy projektből, de a kiiktatási metódusának nem sikerül eltávolítania a hozzá tartozó összeépítőket, akkor ezeket a munkaterület automatikusan eltávolítja a specifikációból. Nem megengedett, hogy két jelleg ugyanazt a növekményes projekt-összeépítőt határozza meg a kódjában.
A jellegek a hozzájuk társított projektekben megtagadhatják csatolt
erőforrások létrehozását. Az allowLinking
attribútum
"false" értékre állításával a jelleg meghatározhatja, hogy
csatolt erőforrásokat ne lehessen létrehozni. Ez a 2.1 kiadás egy új
szolgáltatása.
A 3.1-es kiadással kezdve a jellegek meghatározhatnak rokonságot tetszőleges tartalomtípusokkal, amellyel befolyásolhatják a munkaterületen lévő fájlok tartalomtípusának meghatározásának módját. Ütközések esetén (ha több tartalomtípus azonosan megfelelőnek tekinthető egy adott fájlhoz) a megfelelő projekthez beállított bármely jelleggel rokonságot mutató tartalomtípus kerül kiválasztásra.
<!ELEMENT extension (runtime , (one-of-nature | requires-nature | builder | content-type)* , options?)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #REQUIRED
name CDATA #IMPLIED>
<!ATTLIST run
class CDATA #REQUIRED>
<!ELEMENT parameter EMPTY>
<!ATTLIST parameter
name CDATA #REQUIRED
value CDATA #REQUIRED>
<!ELEMENT one-of-nature EMPTY>
<!ATTLIST one-of-nature
id CDATA #REQUIRED>
<!ELEMENT requires-nature EMPTY>
<!ATTLIST requires-nature
id CDATA #REQUIRED>
<!ELEMENT builder EMPTY>
<!ATTLIST builder
id CDATA #REQUIRED>
<!ELEMENT options EMPTY>
<!ATTLIST options
allowLinking (true | false) >
<!ELEMENT content-type EMPTY>
<!ATTLIST content-type
id CDATA #REQUIRED>
Ha ezek a jellegek a "com.xyz.coolplugin" azonosítóval rendelkező bedolgozóban lennének meghatározva, akkor a teljes képzésű nevük "com.xyz.coolplugin.fireNature", "com.xyz.coolplugin.waterNature" valamint "com.xyz.coolplugin.snowNature" lenne.<extension id=
"fireNature"
name=
"Fire Nature"
point=
"org.eclipse.core.resources.natures"
>
<runtime>
<run class=
"com.xyz.natures.Fire"
/>
</runtime>
<one-of-nature id=
"com.xyz.stateSet"
/>
<options allowLinking=
"false"
/>
</extension>
<extension id=
"waterNature"
name=
"Water Nature"
point=
"org.eclipse.core.resources.natures"
>
<runtime>
<run class=
"com.xyz.natures.Water"
/>
</runtime>
<one-of-nature id=
"com.xyz.stateSet"
/>
</extension>
<extension id=
"snowNature"
name=
"Snow Nature"
point=
"org.eclipse.core.resources.natures"
>
<runtime>
<run class=
"com.xyz.natures.Snow"
>
<parameter name=
"installBuilder"
value=
"true"
/>
</run>
</runtime>
<requires-nature id=
"com.xyz.coolplugin.waterNature"
/>
<builder id=
"com.xyz.snowMaker"
/>
</extension>
Copyright (c) 2002, 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.