Создание страницы свойств

При создании и запуске страницы свойств рабочая среда добавляет выбранный ресурс в страницу. Метод getElement() позволяет странице получить свой элемент IAdaptable.

Шаблон для создания страниц свойств похож на шаблон для страниц параметров, поэтому здесь будут рассмотрены только некоторые отличия между ними. Страницы свойств отображают сведения о своем элементе. Для получения этой информации необходимо получить доступ к элементу.  Кроме того, информация может быть получена и сохранена из свойств ресурса.

Класс ReadmeFilePropertyPage вычисляет большую часть сведений с помощью своего элемента. Представленный ниже фрагмент кода демонстрирует, как вычисляется и отображается в метке число разделов.

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

При вычислении свойства не требуется использовать специальный алгоритм для сохранения значения, так как пользователь не может обновить это значение.

Страницы свойств широко используются для просмотра и определения свойств ресурса для конкретного приложения . (Описание сеансовых и постоянных свойств приведено в разделе Свойства ресурсов.)  Поскольку странице свойств известен ее ресурс, API ресурсов позволяет инициализировать значения управляющих элементов или задавать новые значения свойств на основе выбранных пользователем значений на странице свойств.

Приведенный ниже фрагмент кода демонстрирует инициализацию значения переключателя из свойства в элементе страницы свойств.

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

Пример кода для сохранения значения переключателя в свойстве выглядит следующим образом:

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