Projektinlaajuiset oletusasetukset

Kohdassa Ajonaikaiset oletusasetukset tarkasteltiin oletusasetusten määrityksen ja tallennuksen rakennetta eri vaikutusalueilla. Tarkastelimme myös org.eclipse.core.runtime.preferences-laajennusta, jonka avulla voi määrittää lisää vaikutusalueita oletusasetuksille. Ympäristön resurssilisäosa määrittää oman oletusasetusten vaikutusalueensa nimeltä "Projekti", projektinlaajuisten oletusasetusten määritystä varten. Projektia vaikutusalueena käyttävät oletusasetukset tallennetaan projektissa sijaitsevaan tiedostoon. Tällöin on helppoa tallentaa joukko oletusasetuksia ja vaihtaa niitä muiden käyttäjien kanssa, jotka käyttävät resurssipainotteisia menetelmiä, kuten versionhallintajärjestelmää.

Vaikutusalueen määritys

Uusien vaikutusalueiden määritys on helppoa. Lisäosa määrittää vaikutusalueen nimen sekä sen toteuttavan luokan. Resurssilisäosa määrittää projektin vaikutusalueen seuraavasti:

	<extension id="preferences" point="org.eclipse.core.runtime.preferences" name="preferences">
		<scope name="project" class="org.eclipse.core.internal.resources.ProjectPreferences"/>
	</extension>

Määritetyn luokan on toteutettava IScope-rajapinta, joten sen on pystyttävä luomaan oletusasetussolmuja vaikutusalueelle.

Projektinlaajuiset oletusasetussolmut

Koska projekti ei kuulu oletusasetusten normaaleihin ajonaikaisiin vaikutusalueisiin, projektinlaajuista oletusasetusta edustava solmu on noudettava nimenomaisesti. Oletusasetusten pääsolmusta on siirryttävä projektinlaajuiseen oletusasetukseen. Tämän voi tehdä kohteen ProjectScope avulla seuraavasti:

	IScopeContext projectScope = new ProjectScope(MyProject);

Kun tietyn projektin vaikutusalue on löytynyt, oletusasetusten arvot voi noutaa aiemmin kuvatuin tavoin. Oletusasetukset on nimetty oletusasetuksen merkkijononimen mukaan. Nimet on tarkennettu toisen merkkijonon (usein lisäosan tunnuksen) avulla, joka tarkentaa oletusasetuksen nimitilaa. Seuraava katkelma noutaa oletusasetussolmun projektin vaikutusalueelta. Huomaa, että kun oikea vaikutusalue on noudettu, solmujen käsittely ei eroa muiden vaikutusalueiden solmujen käsittelystä.

	...
	Preferences projectNode = projectScope.node("com.example.myplugin");
	if (projectNode != null) {
		value = node.getBoolean("MyPreference", "true");
	//tee jotain arvolla.
	}
	...

Jotta arvon voi tallentaa tiedostoon projektissa, solmu tyhjennetään. Resurssilisäosa käsittelee projektinlaajuisten oletusasetusten tiedoston hallintaan liittyvät seikat.

	projectNode.flush();