Contribuindo com uma página de preferência

O ponto de extensão org.eclipse.ui.preferencePages permite que você contribua com páginas para o diálogo (Janela->Preferências) de preferências gerais. O diálogo de preferências apresenta uma lista hierárquica de entradas de preferência de usuário. Cada entrada exibe uma página de preferência correspondente quando selecionada.

A ferramenta leia-me utiliza esse ponto de extensão para incluir a página de preferências de Exemplo Leia-me.

   <extension
      point = "org.eclipse.ui.preferencePages">
       <page id="org.eclipse.ui.examples.readmetool.Page1"
	    class="org.eclipse.ui.examples.readmetool.ReadmePreferencePage"
            name="%PreferencePage.name">
       </page>
   </extension>

Essa marcação define uma página de preferência chamada "Exemplo Leia-me" que é implementada pela classe ReadmePreferencePage. A classe deve implementar a interface IWorkbenchPreferencePage.

O workbench utiliza os mecanismos de preferência do tempo de execução de núcleo para acessar todos os nós na árvore de preferências e suas páginas correspondentes. Essa lista pode ser inicializada a partir de informações no serviço de preferências sem executar qualquer código de plug-in.

Página de preferências do Workbench

A preferência "Exemplo Leia-me" é incluída no nível superior da árvore de preferência à esquerda.  Por que? Porque uma contribuição de página de preferência será incluída como uma raiz da árvore, a não ser que um atributo categoria seja especificado. (O nome categoria é algo ambíguo. Talvez um nome melhor seja caminho.) O atributo categoria especifica o id (ou uma seqüência de IDs da raiz) da página pai. Por exemplo, a marcação a seguir criaria uma segunda página de preferência da ferramenta leia-me, "Página Filha Exemplo Leia-me," como uma filha da página original.

   <extension
      point = "org.eclipse.ui.preferencePages">
      <page
         id="org.eclipse.ui.examples.readmetool.Page1"
         class="org.eclipse.ui.examples.readmetool.ReadmePreferencePage"
         name="%PreferencePage.name">
      </page>
      <page
         id="org.eclipse.ui.examples.readmetool.Page2"
         class="org.eclipse.ui.examples.readmetool.ReadmePreferencePage2"
         name="Página Filha de Exemplo Leia-me"
         category="org.eclipse.ui.examples.readmetool.Page1>
      </page>
   </extension>

Assim que o usuário selecionar a entrada para uma página de preferência na árvore à esquerda, o workbench criará e exibirá uma página de preferência utilizando a classe especificada na definição da extensão.  Essa ação é o que ativa o plug-in (se já não estava ativado devido a outra operação do usuário).