Ympäristö määrittää eräitä keskeisiä sisältölajeja, esimerkiksi tavallisen tekstin ja XML:n. Nämä sisältölajit määritetään samalla tavalla kuin minkä tahansa lisäosan lisäämät sisältölajit. Seuraavaksi tarkastellaan, kuinka ympäristö määrittää eräitä sisältölajeja, jotta sisältölajikehys tulee paremmin ymmärrettäväksi.
Lisäosat määrittävät sisältölajeja lisäämällä laajennuksen
laajennuspisteelle org.eclipse.core.runtime.contentTypes.
Tässä laajennuksessa lisäosa määrittää sisältölajille yksinkertaisen tunnuksen ja
nimen (koko tunnus on aina yksinkertainen tunnus, jonka etuliitteenä on nykyinen nimitila).
Seuraavassa katkelmassa on tiivistetty versio org.eclipse.core.runtime.text
-sisältölajin lisäyksestä:
<extension point="org.eclipse.core.runtime.contentTypes"> <content-type id="text" name="%textContentTypeName"> file-extensions="txt"> <describer class="org.eclipse.core.internal.content.TextContentDescriber"/> </content-type> ...
file-extensions
-määrite määrittää, mitkä tiedostotunnisteet
liittyvät sisältölajiin (tässä esimerkissä ".txt"). file-names
-määrite
(jota ei käytetty tässä tapauksessa) mahdollistaa koko nimien käytön. Ympäristö huomioi kummankin määritteen
tunnistaessaan ja kuvatessaan sisältölajia (jos asiakas antaa tiedostonimen).
describer
-elementin avulla määritetään sisältölajin sisällön kuvaaja.
Sisältölajin on annettava sisällön kuvaaja, jos sisältölajin tiedoissa on tunnistettavissa
olevia ominaisuuksia, jotka mahdollistavat sisältölajin automaattisen tunnistuksen, tai muita
kiinnostavia ominaisuuksia. Kun kyseessä on org.eclipse.core.runtime.text
,
sisältölajin tunnistus ei onnistu pelkästään sisältöä tarkastelemalla.
Tekstivirtaan voidaan kuitenkin lisätä tavujärjestyksen merkki. Asiakkaat
voivat olla kiinnostuneita tästä ominaisuudesta, joten siihen kannattaa käyttää sisällön kuvaajaa.
Kuvaaja on IContentDescriber-kohteen tai ITextContentDescriber-kohteen toteutus. Jälkimmäinen on edellisen erikoistapaus, joka on toteutettava tekstisuuntautuneiden sisältölajien kuvaajien avulla. Sisältölajin luonteesta huolimatta kuvaajalla on kaksi tehtävää: se auttaa selvittämään, onko sen sisältölaji sovelias tietylle tietovirralle, ja noutaa ominaisuuksia tietovirrasta, jonka oletetaan kuuluvan sen sisältölajiin.
Metodia describe(stream, description) kutsutaan aina, kun ympäristö
yrittää selvittää tietyn tietovirran sisältölajin tai kuvata sen
sisältöä. Kuvaus on null
, jos pelkkää tunnistusta on pyydetty.
Muutoin kuvaaja yrittää täyttää sisältökuvauksen vain ominaisuuksilla, jotka
ovat löytyneet virtaa lukemalla.
Sisältölajin merkintöjen avulla on esiteltävä kaikki ominaisuudet, joilla on
oletusarvoja (esimerkiksi org.eclipse.core.runtime.xml
esittelee UTF-8-merkistön
oletusmerkistönä).
Toteuttaessaan tehtäväänsä sisällön kuvaaja oletetaan ajettavan niin nopeasti kuin mahdollista. Mitä vähemmän tietovirtaa on luettava, sitä parempi. Lisäksi oletetaan, että sisällön kuvaajan toteutus esitellään paketissa, joka on vapautettu lisäosan aktivoinnista (katso Eclipse-AutoStart-resurssijoukon manifest-tiedoston ylätunniste). Koska kaikkien kuvaajien ilmentymät luodaan, kun sisältölajikehys alustetaan, tämän edellytyksen huomiotta jättäminen aiheuttaa ennenaikaisen aktivoinnin, mitä on vältettävä. Ympäristön tulevat toteutukset voivat ehkä kieltäytyä kuvaajien ilmentymien luonnista, jos niiden luonti liipaisisi vastaavan lisäosan aktivoinnin.
Sisältölajit ovat luonteeltaan hierarkkisia. Näin uuden sisältölajit voivat hyötyä yleisempien sisältölajien määritteistä ja toiminnasta. Esimerkiksi XML-tietojen sisältölaji katsotaan tekstisisältölajin aliobjektiksi:
<content-type id="xml" name="%xmlContentTypeName" base-type="org.eclipse.core.runtime.text" file-extensions="xml"> <describer class="org.eclipse.core.internal.content.XMLContentDescriber"/> <property name="charset" default="UTF-8"/> </content-type>
XML-tiedosto katsotaan eräänlaiseksi tekstitiedostoksi, joten kaikki jälkimmäiseen soveltuvat tuoteominaisuudet soveltuvat myös edelliseen.
Huomaa, että XML-sisältölaji ohittaa useat sisältölajimääritteet, jotka on alun perin
määritetty tekstisisältölajiin, esimerkiksi tiedostoliitännät ja kuvaajan
toteutuksen. Lisäksi tämä sisältölaji esittelee oletusarvoisen ominaisuusarvon
charset
-ominaisuudelle. Tämä tarkoittaa, että sellaisen tietovirran sisällön kuvauksen aikana,
jonka katsotaan kuuluvan XML-sisältölajiin, ympäristö määrittää arvoksi "UTF-8", jos kuvaaja
ei täytä charset-ominaisuutta.
Toisena esimerkkinä org.eclipse.ant.core.antBuildFile
-sisältölaji
(Ant-koontikomentosarjoja varten) laajentaa XML-sisältölajia:
<content-type
id="antBuildFile"
name="%antBuildFileContentType.name"
base-type="org.eclipse.core.runtime.xml"
file-names="build.xml"
file-extensions="macrodef,ent,xml">
<describer
class="org.eclipse.ant.internal.core.contentDescriber.AntBuildfileContentDescriber">
</describer>
</content-type>
Huomaa, että charset-ominaisuuden oletusarvo on peritty. On mahdollista peruuttaa peritty ominaisuus tai kuvaaja esittelemällä ne uudelleen käyttäen arvona tyhjää merkkijonoa.
Aiemmin luotuihin sisältölajeihin voi lisätä uusia tiedostoliitäntöjä. Esimerkiksi
Resurssit-lisäosa liittää org.eclipse.core.runtime.xml
-kohteen
".project"-tiedostoihin:
<extension point="org.eclipse.core.runtime.contentTypes"> <file-association content-type="org.eclipse.core.runtime.xml" file-names=".project"/> ...
Eclipse-ympäristön laajennettavan luonteen vuoksi sisältölaji, jonka varassa lisäosa on,
ei ehkä ole käytettävissä kaikissa tuotteen kokoonpanoissa. Tämän voi kiertää
käyttämällä sisältölajin valenimeä. Sisältölajin valenimi on jonkin sellaisen muun,
ensisijaisen sisältölajin paikanvaraaja, jonka saatavuus ei ole varmaa. Esimerkiksi
ajonaikainen osa esittelee valenimen (org.eclipse.core.runtime.properties
)
Java properties -sisältölajille, jonka Java Development Tooling
(org.eclipse.jdt.core.javaProperties
) lisää:
<!-- paikanvaraaja tilanteisiin, joissa JDT:n virallinen tyyppi ei ole käytettävissä -->
<content-type id="properties" name="%propertiesContentTypeName"
base-type="org.eclipse.core.runtime.text"
alias-for="org.eclipse.jdt.core.javaProperties"
file-extensions="properties">
<property name="charset" default="ISO-8859-1"/>
</content-type>
Tämä antaa lisäosille paikanvaraajan, johon ne voivat viitata siitä huolimatta, onko ensisijainen sisältölaji käytettävissä vai ei. Jos se on käytettävissä, valenimisisältölaji ei ole sisältölajiluettelossa ja kaikki viittaukset siihen tulkitaan viittauksiksi kohdesisältölajiin. Jos se ei ole käytettävissä, valenimeä käytetään tavallisena sisältölajina.