Eigenschaftenseite implementieren

Wenn die Workbench eine Eigenschaftenseite erstellt und startet, fügt sie die ausgewählte Ressource in die Seite ein. Die Seite kann die Methode getElement() verwenden, um ihr Element abzurufen, ein Objekt IAdaptable.

Das Muster für die Erstellung von Eigenschaftenseiten ist mit dem für Benutzervorgabenseiten vergleichbar. Daher wird im Folgenden nur auf die Unterschiede eingegangen. Eigenschaftenseiten zeigen Informationen zu ihrem jeweiligen Element an. Diese Informationen werden durch einen Zugriff auf das Element erhalten, um die relevanten Informationen abzufragen oder zu berechnen. Die Informationen können auch in den Eigenschaften der Ressource gespeichert und abgerufen werden.

ReadmeFilePropertyPage berechnet die meisten Informationen unter Verwendung des Elements. Der folgende Ausschnitt veranschaulicht, wie die Anzahl der Abschnitte berechnet und ein Anzeigenobjekt angezeigt wird.

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

Wenn eine Eigenschaft berechnet wird, ist keine entsprechende Logik zum Speichern des Wertes erforderlich, da der Benutzer diesen Wert nicht aktualisieren kann.

Eigenschaftenseiten werden gewöhnlich zum Anzeigen und Festlegen der anwendungsspezifischen Eigenschaften einer Ressource verwendet. (Eine Erörterung von Sitzungseigenschaften und permanenten Eigenschaften finden Sie unter Ressourceneigenschaften.)Da die Eigenschaftenseite ihre Ressource kennt, können auf der Seite mit Hilfe der Ressourcen-API die Steuerelementwerte initialisiert oder neue Eigenschaftswerte anhand der Benutzerauswahl auf der Eigenschaftenseite festgelegt werden.

Der folgende Ausschnitt veranschaulicht, wie ein Wert für ein Markierungsfeld aus einer Eigenschaft im Element einer Eigenschaftenseite initialisiert wird.

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

Der entsprechende Code, mit dem der Wert des Markierungsfelds wieder in der Eigenschaft gespeichert wird, sieht folgendermaßen aus:

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