Nella sezione Preferenze di runtime, è stata esaminata l'infrastruttura per la definizione e la memorizzazione delle preferenze con ambiti diversi. È stato inoltre evidenziato come l'estensione org.eclipse.core.runtime.preferences possa essere utilizzata per definire ambiti supplementari per le preferenze. Il plugin delle risorse della piattaforma definisce l'ambito delle preferenze, chiamato "Progetto", per specificare le preferenze del progetto basate sull'ambito. Le preferenze del progetto basate sull'ambito vengono memorizzate in un file situato all'interno del progetto. Ciò semplifica la memorizzazione di un insieme di preferenze e lo scambio delle preferenze con altri utenti, utilizzando i meccanismi orientati alle risorse, quali un sistema di controllo della versione.
La definizione di nuovi ambiti è piuttosto semplice. Il plugin definisce il nome dell'ambito e la classe che lo implementa. Il plugin delle risorse definisce l'ambito del progetto come segue:
<extension id="preferences" point="org.eclipse.core.runtime.preferences" name="preferences"> <scope name="project" class="org.eclipse.core.internal.resources.ProjectPreferences"/> </extension>
La classe specificata deve implementare l'interfaccia IScope, il che significa che deve essere in grado di creare nodi di preferenze per l'ambito.
Poiché l'ambito del progetto relativo alle preferenze non è uno degli ambiti di runtime standard, il nodo che rappresenta una preferenza a livello di progetto deve essere richiamato in modo specifico. Dal nodo della preferenza principale, è necessario spostarsi alla preferenza del progetto basata sull'ambito. È possibile effettuare ciò utilizzando il metodo ProjectScope:
IScopeContext projectScope = new ProjectScope(MyProject);
Una volta individuato l'ambito del progetto per un determinato progetto, i valori delle preferenze possono essere richiamati utilizzando gli stessi meccanismi riportati precedentemente. Le preferenze sono denominate utilizzando il nome stringa della preferenza. I nomi vengono qualificati con un'altra stringa (spesso l'id di un plugin) che qualifica lo spazio dei nomi della preferenza. Il frammento di seguito riportato richiama un nodo di preferenze dall'ambito del progetto. Una volta richiamato l'ambito corretto, la gestione dei nodi non è diversa dalla gestione dei nodi di altri ambiti.
... Preferences projectNode = projectScope.node("com.example.myplugin"); if (projectNode != null) { value = node.getBoolean("MyPreference", "true"); //do something with the value. } ...
Per salvare il valore in un file del progetto, il nodo viene scaricato. Il plugin delle risorse gestisce la logistica per la gestione del file delle preferenze a livello di progetto.
projectNode.flush();