Implementere en egenskapsside

Når arbeidsbenken oppretter og starter en egenskapsside, definerer den den valgte ressursen på siden. Siden kan bruke getElement()-metoden til å hente elementet IAdaptable.

Mønsteret for opprettelse av egenskapssider likner på preferansesidene, så vi skal bare se på forskjellene. Egenskapssidene viser informasjon om elementet. Denne informasjonen kan hentes ved å få tilgang til elementet for å spørre etter eller beregne relevant informasjon.  Informasjonen kan også lagres og hentes fra ressursens egenskaper.

ReadmeFilePropertyPage beregner det meste av informasjonen ved hjelp av elementet. Snutten nedenfor viser hvordan antall seksjoner behandles og vises i en etikett.

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

Når en egenskap behandles, er det ikke behov for logikk for å lagre verdien siden brukeren ikke kan oppdatere verdien.

Egenskapssider brukes vanligvis til å vise og definere de applikasjonsspesifikke  egenskapene for en ressurs. (Du finner en beskrivelse av sesjonsegenskaper og permanente egenskaper i Ressursegenskaper.) Siden egenskapssiden kjenner sine ressurser, kan ressursprogrammeringsgrensesnittet brukes på siden til å initialisere kontrollverdier eller definere nye egenskapsverdier basert på brukervalg på egenskapssidene.

Snutten nedenfor viser en avmerkingsboksverdi som initialiseres fra en egenskap i en egenskapssides element.

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

Den tilsvarende koden for lagring av avmerkingsboksverdien tilbake til egenskapen, ser slik ut:

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