Implementera en egenskapssida

När arbetsmiljön skapar och startar en egenskapssida anges vald resurs på sidan. Sidan kan använda metoden getElement() för att hämta sina element, en IAdaptable.

Mönstret för att skapa egenskapssidor påminner om det för inställningssidor så vi kommer bara att fokusera på det som skiljer dem åt. På egenskapssidor visas information om deras element. Denna information kan fås genom att accessa elementet för att fråga eller beräkna relevant information.  Informationen kan också lagras och hämtas från resursens egenskaper.

ReadmeFilePropertyPage beräknar det mesta av sin information med hjälp av sina element. I följande kodstycke visas hur antalet urval beräknas och visas på 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 beräknas finns inget behov av motsvarande logik för att spara värdet eftersom användare inte kan uppdatera värdet.

Egenskapssidor används vanligen för att visa och ange tillämpningsspecifika egenskaper för en resurs. (I Resursegenskaper finns en diskussion om sessions- och permanenta egenskaper.) Eftersom egenskapssidan känner sin resurs kan resurs-API användas på sidan för att initiera kontrollvärden eller för att ange nya egenskapsvärden baserat på användarnas val på egenskapssidan.

I följande kodstycke visas ett kryssrutevärde som initieras från en egenskap på ett element på egenskapssidan.

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

Motsvarande kod för att spara kryssrutevärdet i egenskapen ser ut så här:

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