Pagine delle proprietà

Le pagine Proprietà sono molto simili alle pagine delle preferenze. La differenza principale consiste nel fatto che le pagine delle proprietà sono associate ad una particolare risorsa, mentre le pagine delle preferenze sono associate al plug-in stesso.

org.eclipse.ui.propertyPages

È possibile fornire una pagina delle proprietà per una risorsa utilizzando il punto di estensione org.eclipse.ui.propertyPages. La pagina delle proprietà di una risorsa viene richiamata utilizzando il menu Proprietà della visualizzazione del navigator della risorsa.  Questo menu è disponibile quando è selezionata una singola risorsa. 

Il readme tool fornisce due pagine delle proprietà.

<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>

Entrambe le pagine vengono fornite di oggetti di tipo IFile con un'estensione file .readme.

Le pagine delle proprietà assomigliano molto alle pagine delle preferenze, ad eccezione del fatto che non è presente una gerarchia o una divisione in categorie. Nella finestra di dialogo sottostante, entrambe le pagine delle proprietà del readme appaiono nell'elenco principale delle pagine.

Pagina Proprietà

Quando il workbench crea e avvia una pagina delle proprietà, imposta nella pagina la risorsa selezionata. La pagina può utilizzare il metodo getElement() per ottenere il relativo elemento, IAdaptable.

Il modello per la creazione delle pagine delle proprietà è simile a quello per le pagine delle preferenze; quindi, ci si soffermerà solo sulle eventuali differenze. Le pagine delle proprietà mostrano informazioni relative al rispettivo elemento. Tali informazioni possono essere ottenute accedendo all'elemento per effettuare una query o per calcolare le informazioni rilevanti.  Le informazioni possono anche essere memorizzate e richiamate dalle proprietà della risorsa.

La ReadmeFilePropertyPage calcola la maggior parte delle informazioni utilizzando il proprio elemento. Il frammento di codice seguente mostra come il numero delle sezioni viene calcolato e visualizzato in un'etichetta.

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

Quando una proprietà viene calcolata, non è necessaria la logica corrispondente per salvare il valore poiché l'utente non può aggiornare questo valore.

Le pagine delle proprietà vengono comunemente utilizzate per la visualizzazione e l'impostazione delle proprietà, specifiche per applicazione,  di una risorsa. Per una descrizione delle proprietà di sessione e persistenti, vedere Proprietà delle risorse.  Poiché la pagina delle proprietà conosce la propria risorsa, l'API di risorse può essere utilizzata in questa pagina per inizializzare i valori di controllo o per impostare nuovi valori di proprietà in base alle selezioni effettuate dall'utente sulla pagina delle proprietà.

Il seguente frammento di codice mostra un valore di casella di controllo inizializzato da una proprietà sull'elemento di una pagina delle proprietà.

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

Il codice corrispondente per il salvataggio nella proprietà del valore della casella di controllo appare nel modo illustrato di seguito:

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