Personalizadores para propiedades bean de Java

Un personalizador es un diálogo adicional que los usuarios pueden lanzar para cambiar propiedades del bean de Java. Puede crear clases de personalización para la edición de propiedades de beans de Java que puede añadir al editor visual.

Una clase de personalizador debe implementar la interfaz java.beans.Customizer, y también debe ser una subclase de java.awt.Component. Por lo general, un personalizador es un contenedor, como java.awt.Panel o javax.swing.JPanel, que contiene los controles que le permiten ver y manipular las propiedades del bean de Java. Cuando se lanza el personalizador desde el botón de la barra de herramientas, se ubica dentro de un diálogo que tiene los botones Aceptar y Cancelar.

Cuando un usuario abre un personalizador, a éste se le proporciona un bean de Java que está personalizando como parte del método public void setObject(Object bean);. Es entonces cuando el personalizador puede realizar cambios directamente al argumento.

La interfaz java.beans.Customizer también tiene los métodos public void addPropertyChangeListener(PropertyChangeListener listener); y public void removePropertyChangeListener(PropertyChangeListener listener). El editor visual se añadirá él mismo como a la escucha en el personalizador y si éste va a renovar el aspecto del bean de Java en la vista Diseño, se envía señal de cambio de propiedad mediante la invocación de sus elementos a la escucha con alguno de los métodos firePropertyChange(... con cualquier conjunto de argumentos.

Cuando el usuario pulsa Aceptar, el editor visual intentará determinar los cambios que el personalizador ha realizado en el bean de Java, de forma que pueda actualizar el código fuente Java. Para hacerlo, el editor visual obtiene una copia de todas las propiedades del bean de Java antes de que se lance el personalizador, y luego las compara con las propiedades al cierre del mismo. Si alguna propiedad es distinta (devuelve false al método equals), se considera que ha cambiado. Para determinar el argumento para el método set de la propiedad, se crea el editor de propiedad en el java.beans.PropertyDescriptor. A continuación se invoca con public void setValue(Object) y public String getJavaInitializationString();. De la misma forma, cuando se pulsa Cancelar, como el personalizador ya ha cambiado el bean de Java, el editor visual realiza una consulta al conjunto de propiedades y restablece cualquier diferencia a su estado inicial.

Si el personalizador es una shell de alto nivel que no precisa de la ejecución de un diálogo dentro de él, como java.awt.Frame o javax.swing.JFrame, el editor visual ejecutará el personalizador tal cual. Como este tipo de personalizador es responsable de su propio conjunto de botones y el editor visual no tiene forma de saber si ha sido cancelado o confirmado, siempre que se cierre el personalizador, se consultan las propiedades de alto nivel para ver si han cambiado. Así, si el personalizador realiza una operación de cancelación, debe hacerlo, asegurando así que las propiedades del bean de Java se restauran a sus valores iniciales.

Tras escribir un personalizador, es necesario establecerlo en un descriptor de bean para la clase BeanInfo del bean de Java:

public class MyClassBeanInfo extends SimpleBeanInfo {
    public BeanDescriptor getBeanDescriptor() {
        return new BeanDescriptor(MyClass.class,
MyCustomizer.class);
    }
}

Tema padre: Ampliación del editor visual

(C) Copyright IBM Corporation 1999, 2004. Reservados todos los derechos.