Bod rozšíření charakterů umožňuje zapisovačům registrovat svou implementaci charakteru pod symbolickým názvem, který je poté použit v rámci pracovního prostoru k vyhledání a konfiguraci charakterů. Symbolický název je ID rozšíření charakteru. Při definování rozšíření charakteru se doporučuje zadat jako atribut "name" hodnotu, která je pro člověka čitelná. Tato hodnota určuje význam a potenciálně může být prezentována uživatelům.
Charaktery mohou určovat omezení vztahu s ostatními charaktery. Omezení typu "one-of-nature" určuje, že současně může v projektu existovat maximálně jeden charakter patřící do dané sady. Toto nastavení vynutí vzájemné vyloučení mezi charaktery, které nejsou navzájem kompatibilní. Omezení typu "requires-nature" určuje závislost na jiném charakteru. Pokud je do projektu přidán charakter, musí být rovněž přidány všechny povinné charaktery. Charaktery zaručují, že budou konfigurovány a dekonfigurovány takovým způsobem, kdy konfigurace a dekonfigurace jejich povinných charakterů bude provedena před a po charakterech. Z tohoto důvodu nejsou povoleny cyklické závislosti mezi charaktery.
Charaktery nelze přidat do projektu nebo je z něj odebrat, pokud by taková změna narušila některé omezení, které bylo dříve splněno. Pokud je v projektu nakonfigurován charakter, ale později je zjištěno, že jeho omezení nejsou splněna, je tento charakter a všechny jeho povinné charaktery označeny jako disabled (znepřístupněné), ale zůstanou v projektu zachovány. K této situaci například dochází, když při instalaci chybí povinný charakter. Charaktery, které v instalaci chybí, a charaktery obsažené v cyklech závislosti jsou také označeny jako zablokované.
Charaktery mohou také určovat přírůstkové tvůrce projektů (existují-li), kteří jimi budou nakonfigurovány. Díky těmto informacím pracovní prostor zajišťuje, že tvůrci budou spouštěni pouze, když existuje jejich odpovídající charakter, a budou zpřístupněny při sestavení projektu. Jestliže je charakter z projektu odebrán, ale metodě odstranění z konfigurace charakteru se nezdaří odebrání příslušných tvůrců, odebere pracovní prostor tyto tvůrce ze specifikace automaticky. Dva charaktery nemohou ve své značce určovat stejného přírůstkového tvůrce projektu.
Charaktery také umožňují nepovolit vytvoření propojených prostředků v projektu, k nimž jsou přiřazeny. Nastavením atributu allowLinking
na hodnotu "false" může charakter deklarovat, že propojené prostředky nebudou nikdy vytvářeny. Tato funkce je ve verzi 2.1 nová.
Počínaje verzí 3.1, charaktery mohou deklarovat spřízněnost s libovolným typem obsahu. To má vliv na způsob určování typu obsahu pro soubory v pracovním prostoru. V případě konfliktu (dva či více typů je považováno za stejně vhodné pro daný soubor) se vybere typ obsahu se spřízněností k některému z charakterů nakonfigurovanému pro odpovídající projekt.
<!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>
Jestliže byla tato rozšíření definována v modulu plug-in s ID com.xyz.coolplugin, jsou úplné názvy těchto funkcí com.xyz.coolplugin.fireNature, com.xyz.coolplugin.waterNature a com.xyz.coolplugin.snowNature.<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 a další.
Všechna práva vyhrazena.
Tento program a doprovodné materiály jsou zpřístupněny za podmínek licence Eclipse Public License
v1.0, která je součástí této distribuce a je k dispozici na adrese
http://www.eclipse.org/legal/epl-v10.html