Új felületek hozzáadása

Objektumok új típusai adhatók át egy rész konstruktorához az org.eclipse.core.component.types kiterjesztési pont használatával bejegyezésükkel. Ezen a ponton be kell mutatni a komponens kifejezést. Egy komponens bármilyen objektum lehet, amely egy kiterjesztési pontból kerül létrehozásra a konstruktorába argumentumok behelyezésével. A komponensek egyik típusa az új stílusú részek, azonban más komponenstípusok is léteznek.

Az alábbi példában egy típuskiterjesztés látható. Ez a példa azt határozza meg, hogy az INameable felületnek elérhetőnek kell lennie egy rész helyéről.

<extension
      point="org.eclipse.core.component.types">
   <component
         initializer="org.eclipse.ui.part.SiteInitializer"
         interface="org.eclipse.ui.part.services.INameable"
         implementation="org.eclipse.ui.internal.part.services.NullNameableService"
         singleton="true"
   />
</extension>

Az initializer attribútum azt jelzi, hogy a felület hol kerül felhasználásra. Például az "org.eclipse.ui.part.SiteInitializer" karaktersorozat azt jelenti, hogy a felület egy rész helyén kerül felhasználásra. Használhattuk volna az "org.eclipse.ui.part.PartInitializer" értéket is, ha a felület magukat a részeket valósítja meg.

Az interface attribútum a felület neve. Ennek pontosan meg kell egyeznie azzal a típussal, amit a komponens fogadni fog a konstruktorában. Ha olyan kiterjesztést hozunk létre, amely karaktersorozatokat és egy objektumot kérő komponenst ad, akkor nem fogja használni a kiterjesztést annak ellenére, hogy az kompatibilis típus.

Az implementation attribútum a felület alapértelmezett megvalósítását azonosítja. Ez a felületet megvalósító komponensosztályra vagy egy olyan ComponentFactory elemre mutat, amely létrehozhatja azt. További információk a ComponentFactory fejezetben találhatók. Ez a megvalósítás egy függőség kielégítésére használható minden esetben, amikor egy komponens ezt a felületet kéri és az nem található a szülőkörnyezetben. Minden felületnek rendelkeznie kell egy alapértelmezett megvalósítással. Ez azt jelenti, hogy egy helyesen megírt komponens minden esetben működik egy adott hatókörben, függetlenül a szülőkörnyezetében lévő függőségek számától. A megvalósítás nem definiálhatja újra és nem terjesztheti ki az interface attribútumot további felületek megvalósításával. Más komponensek függhetnek ettől a komponenstől a bejegyzett felületén keresztül, de nem függhetnek közvetlenül a megvalósítási osztálytól.

A singleton attribútum azt jelzi, hogy egyetlen alapértelmezett megvalósítás létezik-e. Ha az érték true, akkor egyetlen példány kerül létrehozásra és megosztásra minden más komponens között, amelynek szüksége van rá. Ha az érték false, akkor minden egyes tároló számára, amelynek szüksége van erre, új példány kerül létrehozásra. Például részek esetén a singleton=:"false" azt jelenti, hogy minden rész számára egy példány létrehozásra kerül.