JDAL Swing Spring Namespace
Desde la versión 1.2.1 JDAL Swing soporta custom namespaces de Spring con la intención de simplificar la configuración del contexto.
El namespace http://www.jdal.org/schema/swing define los siguientes elementos:
- defaults define los beans necesarios para usar JDAL con sus valores por defecto.
- table simplifica la definición de TablePanels y PageableTables
- column simplifica la definición de columnas en las tablas paginables.
Defaults
El elemento defaults no tiene atributos y declara los siguientes beans :
- paginatorView paginador de las tablas paginables
- controlAccessorFactory implementación por defecto de ControlAccessorFactory
- binderFactory implementación por defecto de BinderFactroy
- customEditorConfigurer CustomEditorConfiguer que declara los PropertyEditors necesarios para asignar iconos desde el la configuración del contexto.
- defaultTableActions lista con las acciones de la tabla paginable por defecto.
- defaultGuiFactory GuiFactory por defecto para las tablas paginables
- controlInitilizer ControlInitializer por defecto que utilizarán las implementaciones de AbstractView
Table
El elemento table simplifica la definición de tablas paginables. Asume la siguiente convención de nombres en los beans definidos en el contexto de la aplicación.
Es decir, los beans relacionados con la entidad de nombre simple Entity se denominan utilizando los siguientes sufijos:
- table para TablePanel
- PageableTable para PageableTable
- FilterView para la vista del filtro.
- Service para PersistentService
- Editor para el editor de la entidad.
Atributos
- entity obligatorio, define la entidad que se mostrará en la tabla.
- paginator opcional, por defecto defaultPaginator
- datasource opcional, por defecto entityService
- editor opcional, por defecto entityEditor
- actions opcional, por defecto defaultActions
- filter opcional, por defecto entityFilter
- filterView opcional, por defecto entityFilterView
- tableService opcional. Referencia el bean que implementa TableService para hacer persistentes la configuración de la tabla.
Subelementos
El elemento table admite un número indeterminado de elementos column para definir cada una de las columnas de la tabla.
Column
El elemento column se utiliza para la definición de las columnas en el elemento table o tiene subelementos y admite los siguientes elementos:
- name obligatorio, nombre la propiedad de la entidad que se mostrará en la columna.
- displayName opcional, nombre que se mostrará en la cabecera de la columna. Puede utilizar códigos de internacionalización. Los códigos se resolverán mediante el bean MessageSource definido en el contexto.
- editable opcional, true si las celdas de la columna son editables.
- sortProperty opcional, nombre la propiedad que se utilizará para ordenar la columna. Se pueden utilizar propertyPaths. Por defecto el valor definido en name.
- width opcional, permite asignar un tamaño en pixels a la columna.
- renderer opcional, TableCellRenderer que se utilizará para dibujar las celdas de la columna.
- editor opcional, TableCellEditor que se utilizará para editar el contenido de las celdas.
- class opcional, tipo del elemento que se muestra en la columna.
Declaración del namespace
Para utilizar el namespace, necesita declararlo en el elemento beans de forma similar al resto de namespaces de Spring.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:swing="http://www.jdal.org/schema/swing" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.jdal.org/schema/swing http://www.jdal.org/schema/jdal/jdal-swing.xsd" default-init-method="init"> <swing:defaults /> <!-- Project --> <swing:table entity="info.joseluismartin.gefa.model.Project" tableService="tableService" > <swing:columns> <swing:column name="name" displayName="Name" /> <swing:column name="customer" displayName="Customer" /> <swing:column name="bid" displayName="Bid" /> <swing:column name="description" displayName="Description" /> <swing:column name="amount" displayName="Amount" /> </swing:columns> </swing:table> </beans>
th_content_end(); th_footer(); th_body_end(); ?>