Personalización de Beans

La apariencia y el comportamiento de un Bean pueden ser personalizados en el momento del diseño dentro de las herramientas de desarrollo compatibles con los Beans. Aquí podemos ver las dos formas más típicas de personalizar un Bean:

Editores de Propiedades

Un editor de propiedad es una herramienta para personalizar un tipo de propiedad particular. Los editores de propiedades se muestran, o se activan desde la hoja de propiedades. Una hoja de propiedades determinará el tipo de la propidad, buscará un editor de propiedad adecuado, y mostrará el valor actual de la propiedad de una forma adecuada.

Los editores de propiedades deben implementar el interface PropertyEditor. Este interface proporciona métodos que especifican cuando una propiedad debe ser mostrada en una hoja de propiedades.

Aquí tienes la hoja de propiedades del BeanBox contiendo las propiedades de OurButton:

Se empieza el proceso de edición de estas propiedades pulsando sobre la entrada de la propiedad en la hoja.

Cada uno de ellos se muestra dependiendo de los métodos de PropertyEditor que hayamos implementado para que devuelvan valores distintos de null.

Por ejemplo, el editor de propiedad int implementa el método setAsText(). Esto indica a la hoja de propiedades que la propiedad puede ser mostrada como un String, y lo hace en un campo de texto editable.

Los editores de propiedades Color y Font utilizan un panel separado, y sólo utilizan la hoja de propiedades para mostrar el valor actual de la propiedad. Este editor se muestra pulsando sobre ese valor.

Para mostar el valor actual de la propiedad dentro de la hoja de propiedades, necesitamos sobreesciribr isPaintable() para que devuelva true, y paintValue() para que dibuje el nuevo valor de la propiedad en un rectángulo en la hoja de propiedades. Aquí tienes como ColorEditor implementa paintValue():

public void paintValue(java.awt.Graphics gfx, java.awt.Rectangle box) {
        Color oldColor = gfx.getColor();
        gfx.setColor(Color.black);
        gfx.drawRect(box.x, box.y, box.width-3, box.height-3);
        gfx.setColor(color);
        gfx.fillRect(box.x+1, box.y+1, box.width-4, box.height-4);
        gfx.setColor(oldColor);
}
Para soportar el editor de propiedades personalizado, necesitamos sobreescribir dos métodos más: supportsCustomEditor() para que devuelva true, y getCustomEditor() para que devuelve un ejemplar del editor personalizado. ColorEditor.getCustomEditor() devuelve this.

Además, la clase PropertyEditorSupport mantiene una lista de PropertyChangeListener y lanza notificaciones de eventos de cambio de propiedad a dichos oyentes cuando una propiedad compartida ha cambiado.

Como se Asocian los Editores de Propiedades con las Propiedades

Los editores de propiedades son descubiertos y asociados con una propiedad dada mediante:

Los Editores de Propiedades del BDK

El DBK proporciona editores para tipos de datos primitivos como int, bool, float, y para los tipos de clases como Color y Font. El código fuente para estos editores está en beans/apis/sun/beans/editors. Estos fuentes son un buen punto de entrada para escribir tus propios editores. Algunas cosas a observar sobre los editores de propiedades del BDK:

El código fuente de estos editores de propiedades está en beans/apis/sun/beans/editors.

Observa que si no se encuentra un editor de propiedades para una propiedad, el BeanBox no mostrará esa propiedad en la hoja de propiedades.

Personalizadores

Cuando se utiliza un Personalizador de Bean, se obtiene el control completo sobre la configuración o edición del Bean. Un personalizador es como una aplicación que específicamente contiene la personalización de un Bean. Algunas veces las propiedades son insuficientes para representar los atributos configurables de un Bean. Los Personalizadores se usan cuando se necesita utilizar instrucciones sofisticadas para modificar un Bean, y cuando los editores de propiedades son demasiados primitivos para conseguir la personalización del Bean.

Todos los personalizadores deben:

Si un Bean asociado con un Personalizador es arrastrado dentro del BeanBox, podrás ver un ítem "Customize..." en el menú Edit.

Personalizadores del BDK

El OurButtonCustomizer sirve como ejemplo para demostrar el mecanismo de construcción de un personalizador.OurButtonCustomizer:

Los Beans BridgeTester y JDBC Select también tienen personalizadores.


Ozito