Preferências do escopo do projeto

Em Preferências do tempo de execução, observamos a infra-estrutura para definir e armazenar preferências com escopos diferentes. Vimos também que a extensão de org.eclipse.core.runtime.preferences pode ser utilizada para definir escopos adicionais para preferências. O plug-in de recursos da plataforma define seu próprio escopo de preferência, chamado de "Projeto", para definir as preferências de escopo do projeto. AS preferências de escopo do projeto são armazenadas em um arquivo localizado dentro do projeto. Isso facilita armazenar um conjunto de preferências e trocá-las com outros usuários utilizando mecanismos orientados pelo recurso como o sistema de controle de versão.

Especificando o Escopo

A definição para novos escopos é muito simples. O plug-in define o nome do escopo, assim como a classe que o implementa. O plug-in de recursos define o escopo do projeto da seguinte forma:

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

A classe especificada deve implementar a interface de IScope que significa que deve ser capaz de criar nós de preferência para o escopo.

Nós de Preferência do Escopo do Projeto

Já que o escopo do projeto para preferências não é um dos escopos de tempo de execução padrão, o nó representando uma preferência do nível de projeto deve ser obtida especificamente. A partir do nó de preferência de raiz, você deve navegar para a preferência do escopo de projeto. Isso pode ser alcançado utilizando o ProjectScope:

	IScopeContext projectScope = new ProjectScope(MyProject);

Assim que o escopo do projeto para um projeto específico é localizado, os valores de preferência podem ser obtidos utilizando os mesmos mecanismos vistos anteriormente. As preferências são nomeadas utilizando o nome da cadeia da preferência. Os nomes são qualificados com outra cadeia (freqüentemente um id de plug-in) que qualifica o espaço de nomes da preferência. O seguinte fragmento obtém um nó de preferência a partir do escopo do projeto. Você observará que, assim que o escopo correto é obtido, trabalhar com os nós não é diferente de trabalhar com nós de outros escopos.

	...
	Preferences projectNode = projectScope.node("com.example.myplugin");
	if (projectNode != null) {
		value = node.getBoolean("MyPreference", "true");
		//do something with the value.
	}
	...

Para salvar o valor em um arquivo no projeto, o nó é esvaziado. O plug-in dos recursos manipula a logística para gerenciar o arquivo de preferências em nível de projeto.

	projectNode.flush();