Implementace stránky vlastností

Když modul workbench (pracovní plocha) vytváří stránku vlastností, nastaví na tuto stránku vybraný prostředek. Stránka může používat metodu getElement() k získání prvku IAdaptable.

Vzor pro vytvoření stránek vlastností je podobný jako u stránek předvoleb, takže se zaměříme pouze na to, co se liší. Stránky vlastnost zobrazují informace o svém prvku. Tato informace může být získána při přístupu k prvku kvůli dotazu na příslušnou informaci nebo kvůli jejímu výpočtu.  Tato informace může být také uložena a získána z vlastností prostředku.

ReadmeFilePropertyPage počítá většinu z informací pomocí svého prvku. Následující úsek ukazuje, jak se vypočítá počet sekcí a jak se zobrazí ve štítku.

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

Když je počítána vlastnost, není nutné, aby příslušná logika ukládala tuto hodnotu, protože uživatel nemůže tuto hodnotu aktualizovat.

Stránky vlastností se běžně používají pro zobrazování a pro nastavování vlastností prostředku specifických pro aplikaci. (Viz téma Vlastnosti prostředku, kde je diskuse o relaci a trvalých vlastnostech.)  Jelikož stránka vlastností zná svůj prostředek, rozhraní API prostředku může být použito k inicializaci hodnot obslužného prvku nebo k nastavení nové hodnoty vlastnosti na základě výběru uživatele na stránce vlastností.

Následující úsek ukazuje inicializaci hodnoty zaškrtávacího políčka z vlastnosti na prvku ze stránky vlastností.

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

Příslušný kód pro uložení hodnoty zaškrtávacího políčka zpět do vlastnosti vypadá takto:

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