Páginas de Propriedades

As página de propriedade são muito similares às páginas de preferência. A diferença principal é que as páginas de propriedade estão associadas a um recurso particular, enquanto as de preferências estão associadas ao próprio plug-in.

org.eclipse.ui.propertyPages

É possível contribuir com uma página de propriedade para um recurso utilizando o ponto de extensão org.eclipse.ui.propertyPages. Uma página de propriedade de recurso é chamada utilizando o menu Propriedades na exibição do navegador de recursos.  Esse menu está disponível quando um único recurso estiver selecionado. 

A ferramenta leiame contribui com duas páginas de propriedade.

<extension
    point = "org.eclipse.ui.propertyPages">
    <page
        id="org.eclipse.ui.examples.readmetool.FilePage"
        name="Readme Tool"
        objectClass="org.eclipse.core.resources.IFile"
        class="org.eclipse.ui.examples.readmetool.ReadmeFilePropertyPage"
        nameFilter="*.readme">
    </page>
    <page
        id="org.eclipse.ui.examples.readmetool.FilePage2"
        name="More Readme Info"
        objectClass="org.eclipse.core.resources.IFile"
        class="org.eclipse.ui.examples.readmetool.ReadmeFilePropertyPage2"
        nameFilter="*.readme">
    </page>
</extension>

Ambas as páginas são contribuídas por objetos do tipo IFile com uma extensão de arquivo .readme.

As páginas de propriedade parecem muito com as páginas de preferência, exceto por não haver hierarquia ou categorização das páginas de propriedade. No diálogo abaixo, aparecem as duas páginas de propriedades do leiame na lista principal de páginas.

Página de propriedades

Quando o workbench cria e lança uma página de propriedade, ele define os recursos selecionados na página. A página pode utilizar o método getElement() para obter seu elemento, um IAdaptable.

O padrão para a criação das páginas de propriedades é similar àquele das páginas de preferências, então, somente trataremos do que é diferente. As páginas de propriedades mostram informações sobre seus elementos. Essas informações podem ser obtidas acessando o elemento para consultar ou computar as informações relevantes.  As informações também podem ser recuperadas das propriedades do recurso.

O ReadmeFilePropertyPage computa a maioria das informações utilizando seu elemento. O seguinte fragmento mostra como o número de seções é computado e exibido em uma etiqueta.

...
IResource resource = (IResource) getElement();
...
IAdaptable sections = getSections(resource);
if (sections instanceof AdaptableList) {
    AdaptableList list = (AdaptableList)sections;
    label = createLabel(panel, String.valueOf(list.size()));
...

Quando uma propriedade é computada, não há necessidade de lógica correspondente para salvar o valor, pelo fato de o usuário não poder atualizar esse valor.

As páginas de propriedades são comumente utilizadas para exibir e definir as propriedades específicas do aplicativo de um recurso.  (Consulte Propriedades do recurso para obter uma discussão da seção e propriedades persistentes.)  Desde que a página de propriedades conheça seu recurso, os recursos API podem ser utilizados na página para iniciar os valores de controle ou para definir novos valores de propriedades das seleções do usuário na página de propriedades.

O fragmento a seguir mostra um valor de caixa de entrada sendo inicializado a partir de uma propriedade em um elemento de página de propriedade.

private void initializeValues() {
    ...
    IResource resource = (IResource) getElement();
    label.setText(resource.getPersistentProperty("MyProperty"));
    ...
}

O código correspondente para salvar o valor da caixa de entrada de volta na propriedade parece com este:

private void storeValues() {
    ...
    IResource resource = (IResource) getElement();
    resource.setPersistentProperty("MyProperty", label.getText());
    ...
}