Implementar una página de propiedades

Cuando el entorno de trabajo crea y lanza una página de propiedades, establece en la página el recurso seleccionado. La página puede utilizar el método getElement() para obtener su elemento, una interfaz IAdaptable.

El patrón para crear páginas de propiedades es similar al de las páginas de preferencias, por lo que solo nos centraremos en las diferencias. Las páginas de propiedades muestran información sobre su elemento. Esta información se puede obtener accediendo al elemento para consultar o calcular la información relevante.  La información también se puede almacenar y recuperar a partir de las propiedades del recurso.

ReadmeFilePropertyPage calcula la mayor parte de su información utilizando su correspondiente elemento. El siguiente fragmento de código muestra cómo se calcula el número de secciones y se visualiza en una etiqueta.

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

Cuando se calcula una propiedad, no es necesario proporcionar la correspondiente lógica para guardar el valor, ya que el usuario no puede actualizarlo.

En general, las páginas de propiedades sirven para ver y establecer las propiedades de un recurso específicas de la aplicación. (En el tema Propiedades de los recursos hallará una explicación de las propiedades persistentes y de sesión).Puesto que la página de propiedades conoce el recurso que le corresponde, se puede emplear la API de recursos en la página para inicializar los valores de control o establecer nuevos valores de propiedades basándose en las selecciones que el usuario realiza en la página de propiedades.

El siguiente fragmento de código muestra el valor de un recuadro de selección que se está inicializando a partir de una propiedad en un elemento de la página de propiedades.

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

El correspondiente código que permite guardar el valor del recuadro de selección de nuevo en la propiedad tiene este aspecto:

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