Personalizadores de propiedades de bean Java

Un personalizador es un diálogo adicional que los usuarios pueden lanzar para cambiar propiedades del bean Java. Puede crear clases de personalizador para editar propiedades de beans 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 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 este se le proporciona un bean Java que está personalizando como parte del método public void setObject(Object bean);. Es entonces cuando el personalizador puede realizar cambios directamente en el 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 escucha en el personalizador y si este va a renovar el aspecto del bean Java en la vista Diseño, debe señalar un cambio de propiedad llamado a sus escuchas 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 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 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 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 cancelación, debe hacerlo, asegurando así que las propiedades del bean 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 Java:

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

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