Implementér egenskabsside

Når arbejdsbænken opretter og starter en egenskabsside, angives den valgte ressource på siden. Siden kan bruge getElement()-metoden til at hente sit element, en IAdaptable.

Mønsteret for oprettelse af egenskabssider ligner det til indstillingssider. Og derfor fokuseres der kun på forskellene her. Egenskabssider viser oplysninger om deres element. Du kan hente disse oplysninger ved at få adgang til elementet for at forespørge på eller for at beregne de relevante oplysninger. Oplysningerne kan også gemmes og hentes fra ressourcens egenskaber.

ReadmeFilePropertyPage beregner de fleste oplysninger vha. sit element. Følgende stykke kode viser, hvordan antallet af sektioner beregnes og vises i en etiket.

   ...
      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 egenskab beregnes, er der ikke behov for, at tilsvarende logik gemmer værdien, da brugeren ikke kan opdatere værdien.

Egenskabssider benyttes som regel til at vise og angive en ressources programspecifikke egenskaber. (I Ressourceegenskaber finder du flere oplysninger om sessionsegenskaber og vedvarende egenskaber.) Da egenskabssiden kender sin ressource, kan ressource-API'et benyttes på siden til at initialisere kontrolværdier eller til at angive nye egenskabsværdier på basis af de valg, brugeren har angivet på egenskabssiden.

Følgende stykke kode viser en afkrydsningsfeltværdi, der initialiseres fra en egenskab på elementets egenskabsside.

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

Den tilsvarende kode for lagring af afkrydsningsfeltværdien i egenskaben ser sådan ud:

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