Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_pl.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_pl.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_pl.properties	(revision 38348)
@@ -0,0 +1,107 @@
+#Translations for language [pl]
+#Thu Oct 29 12:16:22 CET 2009
+a_panel=
+abrir...=
+aceptar=Akceptuj
+Anadir_al_conjunto=Dodaj do zbioru
+anterior=Poprzedni
+aplicar=
+ayuda=
+ayuda_0=
+ayuda_1_5=
+ayuda_background=
+ayuda_c=
+ayuda_h=
+ayuda_more_less=
+ayuda_wheel=
+bajar=
+borrar_todos=Usu\u0144 wszystko
+borrar_uno=Usu\u0144 zaznaczone
+calendarBackOneMonth=
+calendarBackOneYear=
+calendarForwardOneMonth=
+calendarForwardOneYear=
+calendarSelectDate=
+calendarTitle=
+cancel=Anuluj
+cancelar=Anuluj
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Zamknij
+date_button_explanation=
+de=z
+de\ 0=z 0
+deleteText=
+deleteText_on_filter_use_explanation=
+edit_copy=
+edit_cut=
+edit_delete=
+edit_paste=
+edit_redo=
+edit_select_all=
+edit_undo=
+Error=
+espere=Prosz\u0119 czeka\u0107
+Failed_pausing_the_process=
+Failed_resuming_the_process=
+Failed_the_process=
+fields_uppercase_first=
+filter_by_sentence=
+filter_of_Table=
+filtros=
+guardar=Zapisz
+Information=
+known_values=
+msg_cancel_incrementable=
+no=Nie
+No=
+no_image_available=
+nuevo=Nowy
+Nuevo_conjunto=Nowy zestaw
+numero_incorrecto=Niew\u0142a\u015bciwa warto\u015b\u0107
+ocultardetalles=
+ok=Ok
+Open=
+open_file=
+operator_and_explanation=
+operator_distinct_explanation=
+operator_equal_explanation=
+operator_equal_greater_explanation=
+operator_equal_smaller_explanation=
+operator_greater_explanation=
+operator_not_explanation=
+operator_or_explanation=
+operator_smaller_explanation=
+panel_adding_exception=
+panel_loading_exception=
+parenthesis_explanation=
+pausar=
+Percent=
+primero=Pierwszy
+Process_canceled=
+Process_failed=
+Process_finished=
+Process_finished_wont_be_cancelled=
+reanudar=
+registro=
+salir=Wyj\u015bcie
+seleccion_alpha=
+Seleccionar_del_conjunto=Wybierz z zestawu
+select_color=
+si=Tak
+siguiente=Nast\u0119pny
+subir=
+teclas=
+text_preview_text=
+the_panel=
+The_process_cant_be_cancelled=
+The_process_cant_be_paused=
+tiempo_transcurrido=
+title_cancel_incrementable=
+ultimo=Ostatni
+validate_expression=
+validate_filter_expression_explanation=
+verdetalles=
+Warning=
+write_here_a_filter_expression=
+Yes=

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_pl.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_it.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_it.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_it.properties	(revision 38348)
@@ -0,0 +1,112 @@
+#Translations for language [it]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=un pannello
+abrir...=
+aceptar=Accetta
+Anadir_al_conjunto=Aggiungi all'insieme
+anterior=Precedente
+aplicar=Applica
+ayuda=Aiuto
+ayuda_0=Spazio, 0\: mostra tutto
+ayuda_1_5=1-5\: Zoom 1-5
+ayuda_background=B\: Mostra/Nascondi sfondo
+ayuda_c=C\: Centra
+ayuda_h=H\: Questo  aiuto
+ayuda_more_less=+/-\: Zoom +/-
+ayuda_wheel=Rotellina mouse\: Zoom +/-
+bajar=
+borrar_todos=Elimina tutto
+borrar_uno=Elimina punto selezionato
+calendarBackOneMonth=Indietro un mese
+calendarBackOneYear=Indietro un anno
+calendarForwardOneMonth=Avanti un mese
+calendarForwardOneYear=Avanti un anno
+calendarSelectDate=Seleziona data
+calendarTitle=Calendario
+Campos=Campi
+cancel=Cancella
+cancelar=Cancella
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Chiudi
+date_button_explanation=Permette la selezione di una data.
+de=di
+de\ 0=di 0
+deleteText=Cancella testo
+deleteText_on_filter_use_explanation=Elimina espressione di filtro
+edit_copy=Copia
+edit_cut=Taglia
+edit_delete=Elimina
+edit_paste=Incolla
+edit_redo=Ripeti
+edit_select_all=Seleziona tutto
+edit_undo=Annulla
+Error=Errore
+errorMessageJComboBoxItemsSeekerConfigurable=Invalida configurazione del comportamento.
+espere=Attendere, per favore
+exportJOP2Title=Esporta come JOP2T
+Failed_pausing_the_process=FALLITA Sospensione del processo.
+Failed_resuming_the_process=FALLITA Ripresa del processo
+Failed_the_process=Processo FALLITO.
+fields_uppercase_first=Campi
+filter_by_sentence=Filtrato tramite espressione
+filter_of_Table=Filtro Tabella
+filterOnAWFSLayer=Filtro su un Livello WFS
+filtros=Filtri
+guardar=Salva
+Information=Informazione
+known_values=Valori noti
+msg_cancel_incrementable=Cancellare il processo?
+no=No
+No=No
+no_image_available=Immagine non disponibile
+nuevo=Nuovo
+Nuevo_conjunto=Nuovo insieme
+numero_incorrecto=Numero non corretto
+ocultardetalles=Nascondi dettagli
+ok=Accetta
+Open=
+open_file=Apri file
+operator_and_explanation=Operatore E (AND).\nAgisce come intersezione tra insiemi;\naltrimenti, come operatore logico, restituisce VERO\nse entrambi gli operandi sono VERI.
+operator_distinct_explanation=Operatore DISTINTO DA.\nAgisce selezionando gli elementi\nnon coincidenti tra i due insiemi.
+operator_equal_explanation=Operatore UGUALE (\=).\nAgisce selezionanto gli elementi \ncoincidenti in entrambi gli insiemi.
+operator_equal_greater_explanation=Operatore MAGGIORE O UGUALE A (>\=).\nAgisce selezionando gli elementi dell'\noperando/insieme a sinistra dell'operatore\ncon valori maggiori o uguali a quelli di destra.
+operator_equal_smaller_explanation=Operatore MINORE O UGUALE A (<\=).\nAgisce selezionando gli elementi dell'\noperando/insieme a sinistra dell'operatore\ncon valori minori o uguali a quelli di destra.
+operator_greater_explanation=Operatore MAGGIORE DI (>).\nAgisce selezionando gli elementi dell'\noperando/insieme a sinistra dell'operatore\ncon valori maggiori di quelli di destra.
+operator_not_explanation=Operatore NO.\nAgisce come il Complementare tra insiemi;\naltrimenti, come operatore logico, cambia VERO\nin FALSO o viceversa.
+operator_or_explanation=Operatore O (OR).\nAgisce come Unione tra insiemi;\naltrimenti, come operatore logico, restituisce falso se\nentrambi gli operandi sono falsi.
+operator_smaller_explanation=Operatore MINORE DI (>).\nAgisce selezionando gli elementi dell'\noperando/insieme a sinistra dell'operatore\ncon valori minori di quelli di destra.
+panel_adding_exception=Errore unendo Livello\:
+panel_loading_exception=Errore caricamento Livello\:
+parenthesis_explanation=Aggiunge i simboli parentesi.\n(Utile per raggruppare operazioni).
+pausar=Sospendere
+Percent=Percentuale
+primero=Primo
+Process_canceled=Processo annullato.
+Process_failed=Processo fallito.
+Process_finished=Processo completato.
+Process_finished_wont_be_cancelled=Processo completato, non sar\u00e0 cancellato.
+reanudar=Riprendere
+registro=Registro\:
+salir=Esci
+seleccion_alpha=Selezione trasparenza
+Seleccionar_del_conjunto=Seleziona dall'insieme
+select_color=Seleziona colore
+si=si
+siguiente=Successivo
+subir=
+teclas=Teclas
+text_preview_text=Anteprima
+the_panel=Il pannello
+The_process_cant_be_cancelled=Il processo non pu\u00f2 essere annullato
+The_process_cant_be_paused=Il processo non pu\u00f2 essere messo in pausa
+tiempo_transcurrido=Tempo trascorso
+title_cancel_incrementable=Conferma
+ultimo=Ultimo
+validate_expression=Validazione espressione
+validate_filter_expression_explanation=Valida o meno l'espressione di filtro
+Valores=Valori
+verdetalles=Mostra dettagli
+Warning=Attenzione
+write_here_a_filter_expression=Scrivere qui un'espressione di filtro
+Yes=Si

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_it.properties
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text.properties	(revision 38348)
@@ -0,0 +1,283 @@
+#Translations for language [es]
+#Mon Nov 02 08:36:03 CET 2009
+a_panel=un panel
+abrir...=Abrir...
+abrir_archivo=Abrir Archivo
+aceptar=Aceptar
+all_and_disordered=Todos los items y Desordenados
+all_and_maintain_order=Todos los items y Mantener \u00f3rden
+all_and_ordered=Todos los items y Ordenados
+allowedMEditionPMConfigurationLabel=Permite edici\u00f3n texto con rat\u00f3n
+alphabetical_ordered=Ordenada alfab\u00e9ticamente
+Anadir_al_conjunto=A\u00f1adir al conjunto
+anterior=Anterior
+aplicar=Aplicar
+apply=Aplicar
+area=\u00c1rea
+attributeName=Nombre
+attributeType=Tipo
+ayuda=Ayuda
+ayuda_0=Espacio, 0\: Ver todo
+ayuda_1_5=1-5\: Zoom 1-5
+ayuda_background=B\: Mostrar/Ocultar fondo
+ayuda_c=C\: Centrar
+ayuda_h=H\: Esta ayuda
+ayuda_more_less=+/-\: Zoom +/-
+ayuda_wheel=Rueda rat\u00f3n\: Zoom +/-
+a\u00f1adir_banda=A\u00f1adir banda
+bajar=Down
+banda=Banda
+bandas=Bandas
+beepConfigurationLabel=Beep (Sonido de alerta)
+borrar_todos=Borrar todos los puntos
+borrar_uno=Borrar punto seleccionado
+buffer=Buffer
+calendarBackOneMonth=Retrocede un mes
+calendarBackOneYear=Retrocede un a\u00f1o
+calendarForwardOneMonth=Avanza un mes
+calendarForwardOneYear=Avanza un a\u00f1o
+calendarSelectDate=Seleccione una fecha.
+calendarTitle=Calendario
+cancel=Cancelar
+cancelar=Cancelar
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cant_configure_parameters=No se pueden configurar los par\u00e1metros.
+cant_connect=No se puede realizar la conexi\u00f3n
+cant_connect_wfs=No ha sido posible realizar la conexi\u00f3n con el WFS
+cantLoad=No se puede cargar la capa WFS
+cantTestThisMethod=La aplicaci\u00f3n no puede testear esta operaci\u00f3n.
+caseSensitiveConfigurationLabel=Distingue May\u00fasculas / Min\u00fasculas
+cellRendererConfigurationLabel=Renderer de celda
+cerrar=Cerrar
+column=Columna
+completeArrowKeySelectionConfigurationLabel=Completa selecci\u00f3n por cursores
+conection=Conexi\u00f3n
+configuration=configuraci\u00f3n
+configurationParameters=Par\u00e1metros Configuraci\u00f3n de Constructores
+configure=configurar
+confirmation=Confirmaci\u00f3n
+connect=Conectar
+constructors=Constructores
+couldnt_add_some_panel_exception=No se pudieron agregar algunos paneles\:
+couldnt_load_panels_from_extension_point_exception=No se pudieron cargar algunos paneles a partir de un punto de extensi\u00f3n\:
+couldnt_load_panels_from_list_exception=No se pudieron cargar algunos paneles de la lista\:
+couldnt_load_some_panel_exception=No se pudieron cargar algunos paneles\:
+creaction=Creacci\u00f3n
+crear_tabla=Crear Tabla
+date=Fecha
+Date=Fecha
+date_button_explanation=Permite seleccionar una fecha.
+de=de
+de\ 0=de 0
+default=Por defecto
+default_name=Capa WFS
+deleteText=Borrar texto
+deleteText_on_filter_use_explanation=Borra la sentencia de filtrado.
+descripcion=Descripci\u00f3n
+description=Descripci\u00f3n
+disordered=Desordenada
+displayAllItemsWithArrowButtonConfigurationLabel=Todo item via bot\u00f3n-flecha
+dynamic_and_disordered=Coincidencias y Desordenados
+dynamic_and_maintain_order=Coincidencias y Mantener \u00f3rden
+dynamic_and_ordered=Coincidencias y Ordenados
+edit_copy=Copiar
+edit_cut=Cortar
+edit_delete=Eliminar
+edit_paste=Pegar
+edit_redo=Rehacer
+edit_select_all=Seleccionar todo
+edit_undo=Deshacer
+elimination=Eliminaci\u00f3n
+empty_panel_group_exception=Ning\u00fan panel cargado.
+empty_panel_group_gui_exception=Ning\u00fan panel en la interfaz gr\u00e1fica de usuario.
+enable/Disable=Habilitar/Deshabilitar
+error=Error
+Error=Error
+error_codifying_numbers=Error codificando los n\u00fameros.
+error_coding_filter_query=Error codificando la consulta SQL
+error_validating_filter_query=Error validando la consulta SQL
+errorMessageJComboBoxItemsSeekerConfigurable=Configuraci\u00f3n del comportamiento inv\u00e1lida.
+espere=Por favor, espere
+exportJOP2Title=Exportar a JOP2T
+extraer=Extraer
+Failed_pausing_the_process=Fall\u00f3 pausando el proceso.
+Failed_resuming_the_process=Fall\u00f3 reanudando el proceso.
+Failed_the_process=Fall\u00f3 el proceso.
+feature=Capas
+fields=Campos
+fields_uppercase_first=Campos
+fill=Rellenar
+filter=Filtro
+filter_by_sentence=Filtrado por sentencia
+filter_of_Table=Filtro de Tabla
+filter_with_an_incorrect_format=Filtro con formato incorrecto
+filterOnALayer=Filtro sobre una capa
+filtros=Filtros
+finded=encontrado
+fit_WFS_layer=Ajustar capa WFS
+formato_no_numerico=Formato no num\u00e9rico
+formatos=Formatos
+geometry=Geometr\u00eda
+GeometryPropertyType=Geometr\u00eda
+guardar=Guardar
+has_bad_format=tiene mal formato
+help=Ayuda
+hidePopupIfThereAreNoItemsConfigurationLabel=Oculta popup si no items
+in=en
+incorrect_format_on_date=Formato incorrecto en fecha
+incorrectNumberOfParametersWritten=N\u00famero incorrecto de par\u00e1metros escritos
+incorrectParameter=Par\u00e1metro incorrecto
+info=Informaci\u00f3n
+Information=Informaci\u00f3n
+invoke=Invoca
+isnt_a_field_of_layer=no es un campo de la capa.
+itemsOrderConfigurationLabel=Ordenaci\u00f3n
+jComboBoxConfigurableLookUpByTheUser_frameTitle=Testeo del componente JComboBoxConfigurableLookUp
+jOPMessageFileDoesntExists=El archivo fuente no existe
+jOPMessageFileWithoutReadPermissions=No tienes permisos de lectura para leer el fichero fuente
+jOPMessageIncorrectFile=El archivo fuente no es un fichero
+known_values=Valores conocidos
+ladoVentana=Lado ventana
+languageRulesConfigurationLabel=Reglas de idioma
+layer_abstract=Resumen de la capa
+layer_name=Nombre de la capa
+layer_title=T\u00edtulo de la capa
+layerName=Nombre de la capa
+layerType=Tipo de geometr\u00eda
+left=Izquierda
+like_JTextField=Como JTextField
+limpiar=Limpiar
+line=L\u00ednea
+log=Log
+maintain_position=Mantener posici\u00f3n
+max_features=M\u00e1x. features
+maxFeatures_aviso=Se ha recuperado un numero de Features igual al m\u00e1ximo \n numero de Features permitido. Puede aumentar el n\u00famero de \nFeatures recuperadas modificando el par\u00e1metro "Buffer"
+maximo=M\u00e1ximo
+media=Media
+mediana=Mediana
+method=Operaci\u00f3n
+minimo=M\u00ednimo
+msg_cancel_incrementable=\u00bfEsta seguro de que desea cancelar este proceso?
+MultiLineStringPropertyType=Multil\u00ednea
+MultiPointPropertyType=Multipunto
+MultiPolygonPropertyType=Multipol\u00edgono
+name=Nombre
+new=Nuevo
+no=No
+No=No
+no_acumulado=No acumulado
+no_filter_will_be_applied_in_the_load_of_the_layer=No se aplicar\u00e1 ning\u00fan filtro en la carga de la capa.
+no_image_available=Imagen no disponible.
+nombre=Nombre
+not_valid_token=Token no v\u00e1lido.
+npixeles=N\u00famero de pixeles
+nuevo=Nuevo
+Nuevo_conjunto=Nuevo conjunto
+numero_incorrecto=N\u00famero incorrecto
+object=Objeto
+objectsCreation=Creacci\u00f3n de Objetos
+ocultardetalles=Ocultar detalles
+ok=Aceptar
+Ongoing_process_please_wait=Proceso en marcha, por favor espere...
+onlyOneColorOnTextConfigurationLabel=Texto s\u00f3lo de un color
+Open=
+open_file=Abrir Archivo
+operator_and_explanation=Operador Y.\nAct\u00faa como una Intersecci\u00f3n en conjuntos;\nsino, como operador l\u00f3gico, da cierto si\nambos operandos son ciertos.
+operator_distinct_explanation=Operador DISTINTO DE.\nAct\u00faa seleccionando aquellos elementos que\nno coinciden entre ambos conjuntos.
+operator_equal_explanation=Operador IGUAL.\nAct\u00faa seleccionando aquellos elementos\nque coinciden entre ambos conjuntos.
+operator_equal_greater_explanation=Operador MAYOR O IGUAL QUE.\nAct\u00faa seleccionando aquellos elementos del\noperando/conjunto a la izquierda del operador\nque tienen mayor o igual valor que el de su derecha.
+operator_equal_smaller_explanation=Operador MENOR O IGUAL QUE.\nAct\u00faa seleccionando aquellos elementos del\noperando/conjunto a la izquierda del operador\nque tienen menor o igual valor que el de su derecha.
+operator_greater_explanation=Operador MAYOR QUE.\nAct\u00faa seleccionando aquellos elementos del\noperando/conjunto a la izquierda del operador que\ntienen mayor valor que el de su derecha.
+operator_not_explanation=Operador NO.\nAct\u00faa como un Complementario en conjuntos;\nsino, como operador l\u00f3gico, cambia cierto\npor falso o viceversa.
+operator_or_explanation=Operador O.\nAct\u00faa como una Uni\u00f3n en conjuntos;\nsino, como operador l\u00f3gico, da falso si\nambos operandos son falsos.
+operator_smaller_explanation=Operador MENOR QUE.\nAct\u00faa seleccionando aquellos elementos del\noperando/conjunto a la izquierda del operador\nque tienen menor valor que el de su derecha.
+options=Opciones
+origen=Origen
+outputType=Tipo de dato
+panel_adding_exception=Error agregando capa\: 
+panel_base_exception=Error cargando %(PANEL_LABEL)%(CAUSE_MESSAGE).
+panel_loading_exception=Error cargando capa\:
+panel_without_preferred_size_defined_exception=Panel de etiqueta %(PANEL_LABEL) sin tama\u00f1o inicial definido.
+parameters=Par\u00e1metros
+parenthesis_explanation=A\u00f1ade los s\u00edmbolos par\u00e9ntesis.\n(\u00datil para agrupar operaciones).
+pausar=Pausar
+Percent=Porcentaje
+PointPropertyType=Punto
+primero=Primero
+Process_canceled=Proceso cancelado.
+Process_failed=Fall\u00f3 el proceso.
+Process_finished=Proceso finalizado.
+Process_finished_successfully=Proceso finalizado satisfactoriamente.
+Process_finished_wont_be_cancelled=El proceso finaliz\u00f3, no se cancelar\u00e1.
+proofs=Pruebas
+properties=Propiedades
+propiedades=Propiedades
+puntos=Puntos
+queryIsNull=Consulta nula.
+reanudar=Reanudar
+refresh_capabilities=Refrescar cach\u00e9
+refresh_capabilities_tooltip=Marque esta casilla para sobreescribir los datos anteriores.
+registro=Registro\:
+reproyectar_aviso=La proyecci\u00f3n de la capa no es igual que la de la vista.\nAVISO\: Puede ser inexacto con algunas transformaciones.\nPor favor, lea la documentaci\u00f3n.
+reset=Resetear
+resultOf=Resultado de
+right=Derecha
+salir=Salir
+saturation=Saturaci\u00f3n
+seleccion_alpha=Selecci\u00f3n de Transparencia
+seleccion_color=Selecci\u00f3n de Color
+Seleccionar_del_conjunto=Seleccionar del conjunto
+seleccionar_srs=Seleccionar SRS
+select_color=Seleccione un color
+select_coordinates_manually=Selecciona las coordenadas manualmente
+select_coordinates_using_view=Selecciona las coordenadas en la vista
+select_features=Selecciona las capas
+select_fields=Seleccionar campos de la capa
+selectAComponent=Seleccione un componente
+selectAMethod=Seleccione una operaci\u00f3n
+selected_layer=Capa seleccionada
+server=Servidor
+server_abstract=Resumen del servidor
+server_timeout=Alcanzado m\u00e1ximo tiempo de espera de respuesta
+server_title=T\u00edtulo del servidor
+server_type=Tipo de servidor
+service_info=Informaci\u00f3n del servicio
+show_layer_names=Mostrar nombres de capas
+showAllItemsInListBoxConfigurationLabel=Mostrar todos los items
+si=s\u00ed
+sideLong=Lado ventana
+siguiente=Siguiente
+srs=Srs
+subir=Subir
+teclas=Teclas
+test=Test
+test_TableFilterQueryJPanel_title=Test TableFilterQueryJPanel 
+testJComboBoxConfigurableLookUpErrorMessage=Error de ejecuci\u00f3n en el componente JComboBoxConfigurableLookUp
+text_preview_text=Vista previa
+the_panel=el panel
+The_process_cant_be_cancelled=El proceso no se puede cancelar.
+The_process_cant_be_paused=El proceso no se puede pausar.
+the_token=el token
+tiempo_transcurrido=Tiempo transcurrido
+timeout=Timeout
+tipo=Tipo
+title_cancel_incrementable=Confirmaci\u00f3n
+todas=Todas
+toForceSelectAnItemConfigurationLabel=Forzar seleccionar \u00edtem
+ultimo=\u00daltimo
+validate_expression=Validar expresi\u00f3n
+validate_filter_expression_explanation=Validar o no la expresi\u00f3n de filtro.
+verdetalles=Ver detalles
+vista=Vista
+warning=Aviso
+Warning=Aviso
+wfs_properties=Propiedades WFS
+wfs_server_error=Error del servidor wfs
+WFSLayer=Capa WFS
+will_use_a_default_array_of_items=Usar\u00e1 un array de \u00edtems predefinido.
+will_use_a_default_model=Usar\u00e1 un modelo predefinido.
+will_use_a_default_vector_of_items=Usar\u00e1 un vector de \u00edtems predefinido.
+write_here_a_filter_expression=Escriba aqu\u00ed una expresi\u00f3n de filtrado.
+yellow=Amarillo
+Yes=S\u00ed
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text.properties
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_ro.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_ro.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_ro.properties	(revision 38348)
@@ -0,0 +1,107 @@
+#Translations for language [ro]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=un panou
+abrir...=
+aceptar=Accept
+Anadir_al_conjunto=Adaug\u0103 la set
+anterior=Precedent
+aplicar=Aplic\u0103
+ayuda=Ajutor
+ayuda_0=Spa\u021biu, 0\: Arat\u0103 toate
+ayuda_1_5=1-5\: Zoom 1-5
+ayuda_background=B\: Arat\u0103/Ascunde fundal
+ayuda_c=C\: Centreaz\u0103
+ayuda_h=H\: Acest lucru ajut\u0103 la
+ayuda_more_less=+/-\: Zoom +/-
+ayuda_wheel=Roti\u021b\u0103 mouse\: Zoom +/-
+bajar=
+borrar_todos=Sterge totul
+borrar_uno=Sterge unul
+calendarBackOneMonth=\u00cenapoi o lun\u0103
+calendarBackOneYear=\u00cenapoi un an
+calendarForwardOneMonth=\u00cenainte o lun\u0103
+calendarForwardOneYear=\u00cenainte un an
+calendarSelectDate=Selecteaz\u0103 dat\u0103
+calendarTitle=Calendar
+cancel=Anulez
+cancelar=Anuleaz\u0103
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=\u00cenchide
+date_button_explanation=Permite selectarea unei ferestre
+de=0\=de 0
+de\ 0=de 0
+deleteText=Elimin\u0103 text
+deleteText_on_filter_use_explanation=Elimin\u0103 expresia de filtrare
+edit_copy=Copiaz\u0103
+edit_cut=Taie
+edit_delete=\u0218terge
+edit_paste=Lipe\u0219te
+edit_redo=Ref\u0103
+edit_select_all=Selecteax\u0103 totul
+edit_undo=Anuleaz\u0103
+Error=Eroare
+espere=Asteapta
+Failed_pausing_the_process=E\u0219ec pauzare proces
+Failed_resuming_the_process=E\u0219ec reluare proces
+Failed_the_process=E\u0219ec de procesare
+fields_uppercase_first=C\u00e2mpuri
+filter_by_sentence=Filtare dup\u0103 sentin\u021b\u0103
+filter_of_Table=Filtru de tabel
+filtros=Filtre
+guardar=Salveaz\u0103
+Information=Informa\u021bie
+known_values=Valori cunoscute
+msg_cancel_incrementable=Sunte\u021bi sigur c\u0103 dori\u021bi s\u0103 \u00eentrerupe\u021bi procesul?
+no=Nu
+No=Nu
+no_image_available=Imagine indisponibil\u0103
+nuevo=Nou
+Nuevo_conjunto=Selec\u0163ie nou\u0103
+numero_incorrecto=Valoare incorect\u0103
+ocultardetalles=Ascunde detalii
+ok=Accept
+Open=
+open_file=Deschide fi\u0219ier
+operator_and_explanation=Operator Y
+operator_distinct_explanation=Operator DIFERIT DE.
+operator_equal_explanation=Operator EGAL.
+operator_equal_greater_explanation=Operator MAI MARE SAU EGAL.
+operator_equal_smaller_explanation=Operator MAI MIC SAU EGAL.
+operator_greater_explanation=Operator MAI MARE.
+operator_not_explanation=Operator NU.
+operator_or_explanation=Operator O.
+operator_smaller_explanation=Operator MAI MIC.
+panel_adding_exception=Eroare ad\u0103ugare strat\:
+panel_loading_exception=Eroare \u00eenc\u0103rcare strat\:
+parenthesis_explanation=Adaug\u0103 simboluri paranteze.\r\n (Utile pentru opera\u021biile de grupare).
+pausar=Pauz\u0103
+Percent=Procent
+primero=Primul
+Process_canceled=Proces anulat
+Process_failed=Proces e\u0219uat
+Process_finished=Proces finalizat
+Process_finished_wont_be_cancelled=Procesul s-a terminat, nu anulat.
+reanudar=Reluare
+registro=Registru\:
+salir=Renun\u0163\u0103
+seleccion_alpha=Selec\u021bie transparen\u021b\u0103
+Seleccionar_del_conjunto=Selecteaz\u0103 din set\u0103ri
+select_color=Selecteaz\u0103 culoare
+si=da
+siguiente=Urm\u0103torul
+subir=
+teclas=Chei
+text_preview_text=Previzualizare
+the_panel=panoul
+The_process_cant_be_cancelled=Procesul nu poate fi anulat
+The_process_cant_be_paused=Procesul nu poate fi pauzat
+tiempo_transcurrido=Timp dep\u0103\u0219it
+title_cancel_incrementable=Confirmare
+ultimo=Ultimul
+validate_expression=Validare expresie
+validate_filter_expression_explanation=Validare sau nu a expresiei filtrului.
+verdetalles=Arat\u0103 detalii
+Warning=Avertisment
+write_here_a_filter_expression=Scrie\u021bi aici o extensie de filtrat
+Yes=Da

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_ro.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_zh.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_zh.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_zh.properties	(revision 38348)
@@ -0,0 +1,107 @@
+#Translations for language [zh]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=
+abrir...=
+aceptar=\u786e\u5b9a
+Anadir_al_conjunto=\u6dfb\u52a0\u5230\u7cfb\u5217\u4e2d
+anterior=\u540e\u9000
+aplicar=
+ayuda=
+ayuda_0=
+ayuda_1_5=
+ayuda_background=
+ayuda_c=
+ayuda_h=
+ayuda_more_less=
+ayuda_wheel=
+bajar=
+borrar_todos=
+borrar_uno=
+calendarBackOneMonth=
+calendarBackOneYear=
+calendarForwardOneMonth=
+calendarForwardOneYear=
+calendarSelectDate=
+calendarTitle=
+cancel=\u53d6\u6d88
+cancelar=\u53d6\u6d88
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=\u5173\u95ed
+date_button_explanation=
+de=
+de\ 0=
+deleteText=
+deleteText_on_filter_use_explanation=
+edit_copy=
+edit_cut=
+edit_delete=
+edit_paste=
+edit_redo=
+edit_select_all=
+edit_undo=
+Error=
+espere=\u8bf7\u7b49\u5f85
+Failed_pausing_the_process=
+Failed_resuming_the_process=
+Failed_the_process=
+fields_uppercase_first=
+filter_by_sentence=
+filter_of_Table=
+filtros=
+guardar=\u5b58\u76d8
+Information=
+known_values=
+msg_cancel_incrementable=
+no=\u5426
+No=
+no_image_available=
+nuevo=\u65b0\u5efa
+Nuevo_conjunto=\u65b0\u5efa\u7cfb\u5217
+numero_incorrecto=\u6570\u636e\u4e0d\u6b63\u786e
+ocultardetalles=
+ok=\u786e\u5b9a
+Open=
+open_file=
+operator_and_explanation=
+operator_distinct_explanation=
+operator_equal_explanation=
+operator_equal_greater_explanation=
+operator_equal_smaller_explanation=
+operator_greater_explanation=
+operator_not_explanation=
+operator_or_explanation=
+operator_smaller_explanation=
+panel_adding_exception=
+panel_loading_exception=
+parenthesis_explanation=
+pausar=
+Percent=
+primero=
+Process_canceled=
+Process_failed=
+Process_finished=
+Process_finished_wont_be_cancelled=
+reanudar=
+registro=
+salir=\u9000\u51fa
+seleccion_alpha=
+Seleccionar_del_conjunto=\u4ece\u7cfb\u5217\u4e2d\u9009\u62e9
+select_color=
+si=\u662f
+siguiente=\u7ee7\u7eed
+subir=
+teclas=
+text_preview_text=
+the_panel=
+The_process_cant_be_cancelled=
+The_process_cant_be_paused=
+tiempo_transcurrido=
+title_cancel_incrementable=
+ultimo=
+validate_expression=
+validate_filter_expression_explanation=
+verdetalles=
+Warning=
+write_here_a_filter_expression=
+Yes=

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_zh.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_ca.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_ca.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_ca.properties	(revision 38348)
@@ -0,0 +1,112 @@
+#Translations for language [ca]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=un panell
+abrir...=
+aceptar=Acceptar
+Anadir_al_conjunto=Afegir al conjunt
+anterior=Anterior
+aplicar=Aplicar
+ayuda=Ajuda
+ayuda_0=Espai, 0\: veure-ho tot
+ayuda_1_5=1-5\: Zoom 1-5
+ayuda_background=B\: Mostrar/Ocultar fons
+ayuda_c=C\: centrar
+ayuda_h=H\: esta ajuda
+ayuda_more_less=+/-\: Zoom +/-
+ayuda_wheel=Roda ratol\u00ed\: Zoom +/-
+bajar=
+borrar_todos=Esborrar tots els punts
+borrar_uno=Esborrar punt seleccionat
+calendarBackOneMonth=Retrocedix un mes
+calendarBackOneYear=Retrocedix un any
+calendarForwardOneMonth=Avan\u00e7a un mes
+calendarForwardOneYear=Avan\u00e7a un any
+calendarSelectDate=Seleccione una data
+calendarTitle=Calendari
+Campos=Camps
+cancel=Cancel\u00b7lar
+cancelar=Cancel\u00b7lar
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Tancar
+date_button_explanation=Permet seleccionar una data
+de=de
+de\ 0=de 0
+deleteText=Esborrar text
+deleteText_on_filter_use_explanation=Esborrar la sent\u00e8ncia del filtratge
+edit_copy=Copiar
+edit_cut=Tallar
+edit_delete=Eliminar
+edit_paste=Apegar
+edit_redo=Refer
+edit_select_all=Seleccionar tot
+edit_undo=Desfer
+Error=Error
+errorMessageJComboBoxItemsSeekerConfigurable=Configuraci\u00f3 del comportament inv\u00e0lida.
+espere=Per favor, espereu
+exportJOP2Title=Exportar a JOP2T
+Failed_pausing_the_process=Ha fallat en pausar el proc\u00e9s.
+Failed_resuming_the_process=Ha fallat en reprendre el proc\u00e9s.
+Failed_the_process=Ha fallat el proc\u00e9s.
+fields_uppercase_first=Camps
+filter_by_sentence=Filtratge per sent\u00e8ncia
+filter_of_Table=Filtre de taula
+filterOnAWFSLayer=
+filtros=Filtres
+guardar=Guardar
+Information=Informaci\u00f3
+known_values=Valors coneguts
+msg_cancel_incrementable=Est\u00e0 segur que vol cancel\u00b7lar este proc\u00e9s?
+no=No
+No=No
+no_image_available=Imatge no disponible.
+nuevo=Nou
+Nuevo_conjunto=Nou conjunt
+numero_incorrecto=N\u00famero incorrecte
+ocultardetalles=Ocultar detalls
+ok=D'acord
+Open=
+open_file=Obrir arxiu
+operator_and_explanation=Operador Y.\nActua com una intersecci\u00f3 en conjunts;\nsin\u00f3, com a operador l\u00f2gic, d\u00f3na cert si\nambd\u00f3s operants s\u00f3n certs.
+operator_distinct_explanation=Operador DISTINT DE.\nActua seleccionant aquells elements que\nno coincidixen entre ambd\u00f3s conjunts.
+operator_equal_explanation=Operador IGUAL.\nActua seleccionant aquell elements\nque coincidixen entre ambd\u00f3s conjunts.
+operator_equal_greater_explanation=Operador MAJOR O IGUAL QUE.\nActua seleccionant aquells elements de\nl'operant/conjunt a l'esquerra de l'operador\nque tenen major o igual valor que el de la seua dreta.
+operator_equal_smaller_explanation=Operador MENOR O IGUAL QUE.\nActua seleccionant aquells elements de\nl'operant/conjunt a l'esquerra de l'operador\nque tenen menor o igual valor que el de la seua dreta.
+operator_greater_explanation=Operador MAJOR QUE.\nActua seleccionant aquells elements de\nl'operant/conjunt a l'esquerra de l'operador que\ntenen major valor que el de la seua dreta.
+operator_not_explanation=Operador NO.\nActua com un complementari en conjunts;\nsin\u00f3, com a operador l\u00f2gic, canvi cert\nper fals o viceversa.
+operator_or_explanation=Operador O.\nActua com una uni\u00f3 en conjunts;\nsin\u00f3, com a operador l\u00f2gic, d\u00f3na fals si\nambd\u00f3s operandos s\u00f3n falsos.
+operator_smaller_explanation=Operador MENOR QUE.\nActua seleccionant aquells elements de\nl'operant/conjunt a l'esquerra de l'operador\nque tenen menor valor que el de la seua dreta.
+panel_adding_exception=Error en agregar capa\:
+panel_loading_exception=Error en carregar capa\:
+parenthesis_explanation=Afig els s\u00edmbols par\u00e8ntesis.\n(\u00datil per a agrupar operacions).
+pausar=Pausar
+Percent=Percentatge
+primero=Primer
+Process_canceled=Proc\u00e9s cancel\u00b7lat.
+Process_failed=Ha fallat el proc\u00e9s.
+Process_finished=Proc\u00e9s finalitzat.
+Process_finished_wont_be_cancelled=El proc\u00e9s ha finalitzat, no es cancel\u00b7lar\u00e0.
+reanudar=Reprendre
+registro=Registre\:
+salir=Eixir
+seleccion_alpha=Selecci\u00f3 de transpar\u00e8ncia
+Seleccionar_del_conjunto=Seleccionar del conjunt
+select_color=Seleccione un color
+si=s\u00ed
+siguiente=Seg\u00fcent
+subir=
+teclas=Tecles
+text_preview_text=Vista pr\u00e8via
+the_panel=el panell
+The_process_cant_be_cancelled=El proc\u00e9s no es pot cancel\u00b7lar
+The_process_cant_be_paused=El proc\u00e9s no es pot pausar.
+tiempo_transcurrido=Temps transcorregut
+title_cancel_incrementable=Confirmaci\u00f3
+ultimo=\u00daltim
+validate_expression=Validar expressi\u00f3
+validate_filter_expression_explanation=Validar o no l'expressi\u00f3 de filtre.
+Valores=Valors
+verdetalles=Veure detalls
+Warning=Av\u00eds
+write_here_a_filter_expression=Escriga ac\u00ed una expressi\u00f3 de filtratge.
+Yes=S\u00ed

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_ca.properties
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_pt.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_pt.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_pt.properties	(revision 38348)
@@ -0,0 +1,112 @@
+#Translations for language [pt]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=
+abrir...=
+aceptar=Aceitar
+Anadir_al_conjunto=Adicionar ao conjunto
+anterior=Anterior
+aplicar=Aplicar
+ayuda=
+ayuda_0=
+ayuda_1_5=
+ayuda_background=
+ayuda_c=
+ayuda_h=
+ayuda_more_less=
+ayuda_wheel=
+bajar=
+borrar_todos=Eliminar todos
+borrar_uno=Eliminar ponto seleccionado
+calendarBackOneMonth=Retrocede um m\u00eas
+calendarBackOneYear=Retrocede um ano
+calendarForwardOneMonth=Avan\u00e7a um m\u00eas
+calendarForwardOneYear=Avan\u00e7a um ano
+calendarSelectDate=Seleccionar data
+calendarTitle=Calend\u00e1rio
+Campos=Campos
+cancel=Cancelar
+cancelar=Cancelar
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Fechar
+date_button_explanation=Permite seleccionar uma data.
+de=of
+de\ 0=de 0
+deleteText=Eliminar texto
+deleteText_on_filter_use_explanation=Eliminar a express\u00e3o de filtro
+edit_copy=Copiar
+edit_cut=Cortar
+edit_delete=Eliminar
+edit_paste=Colar
+edit_redo=Refazer
+edit_select_all=Selecionar tudo
+edit_undo=Anular
+Error=
+errorMessageJComboBoxItemsSeekerConfigurable=Configura\u00e7\u00e3o do comportamento inv\u00e1lido.
+espere=Por favor, espere
+exportJOP2Title=Exportar para JOP2T
+Failed_pausing_the_process=
+Failed_resuming_the_process=
+Failed_the_process=
+fields_uppercase_first=
+filter_by_sentence=
+filter_of_Table=
+filterOnAWFSLayer=Filtro sobre um tema WFS
+filtros=
+guardar=Guardar
+Information=
+known_values=
+msg_cancel_incrementable=
+no=No
+No=
+no_image_available=
+nuevo=Novo
+Nuevo_conjunto=Novo conjunto
+numero_incorrecto=N\u00famero inv\u00e1lido
+ocultardetalles=
+ok=Aceitar
+Open=
+open_file=
+operator_and_explanation=Operador E (Intersecta os conjuntos como operador l\u00f3gico, d\u00e1 certo se ambos operandos s\u00e3o certos).
+operator_distinct_explanation=Operador DIFERENTE (Selecciona os elementos que nao coincidam entre ambos os conjuntos).
+operator_equal_explanation=Operador IGUAL (Selecciona os elementos que coincidam entre ambos os conjuntos).
+operator_equal_greater_explanation=Operador MAIOR OU IGUAL (Selecciona os elementos \u00e0 esquerda do operador que tem maior ou igual valor).
+operator_equal_smaller_explanation=Operador MENOR OU IGUAL (Selecciona os elementos \u00e0 direita do operador que tem menor ou igual valor).
+operator_greater_explanation=Operador MAIOR (Selecciona os elementos \u00e0 esquerda do operador).
+operator_not_explanation=Operador N\u00c3O (Complemento para conjuntos como operador l\u00f3gico, muda certo por falso ou vice-versa).
+operator_or_explanation=Operador OU (Uni\u00e3o em conjuntos como operador l\u00f3gico, d\u00e1 falso se ambos operadores s\u00e3o falsos).
+operator_smaller_explanation=Operador MENOR (Selecciona os elementos \u00e0 direita do operador).
+panel_adding_exception=
+panel_loading_exception=
+parenthesis_explanation=Adicionar os par\u00eanteses () (utilidade para agrupar opera\u00e7\u00f5es)
+pausar=
+Percent=
+primero=Primeiro
+Process_canceled=
+Process_failed=
+Process_finished=
+Process_finished_wont_be_cancelled=
+reanudar=
+registro=
+salir=Fechar
+seleccion_alpha=
+Seleccionar_del_conjunto=Seleccionar o conjunto
+select_color=
+si=Sim
+siguiente=Seguinte
+subir=
+teclas=
+text_preview_text=Pr\u00e9-visualizar
+the_panel=
+The_process_cant_be_cancelled=
+The_process_cant_be_paused=
+tiempo_transcurrido=
+title_cancel_incrementable=
+ultimo=Ultimo
+validate_expression=
+validate_filter_expression_explanation=
+Valores=Valores
+verdetalles=
+Warning=
+write_here_a_filter_expression=
+Yes=

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_pt.properties
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_sr.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_sr.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_sr.properties	(revision 38348)
@@ -0,0 +1,107 @@
+#Translations for language [sr]
+#Mon Nov 02 08:36:03 CET 2009
+a_panel=panel
+abrir...=
+aceptar=Prihvati
+Anadir_al_conjunto=Dodaj skupu
+anterior=Prethodni
+aplicar=Primeni
+ayuda=Pomo\u0107
+ayuda_0=Prostor, 0\: Pogledaj sve
+ayuda_1_5=1-5\: Zoom 1-5
+ayuda_background=B\: Prika\u017ei/Sakrij podlogu
+ayuda_c=C\: Centriraj
+ayuda_h=H\:Ova pomo\u0107
+ayuda_more_less=+/-\: Zoom +/-
+ayuda_wheel=To\u010dki\u0107 na mi\u0161u\: Zoom +/-
+bajar=
+borrar_todos=Izbri\u0161i sve ta\u010dke
+borrar_uno=Izbri\u0161i obele\u017eenu ta\u010dku
+calendarBackOneMonth=Jedan mesec unazad
+calendarBackOneYear=Godinu dana unazad
+calendarForwardOneMonth=Mesec dana unapred
+calendarForwardOneYear=Godinu dana unapred
+calendarSelectDate=Izaberi datum
+calendarTitle=Kalendar
+cancel=Odustani
+cancelar=Odustani
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Zatvori
+date_button_explanation=Omogu\u0107ava izbor datuma.
+de=od
+de\ 0=od 0
+deleteText=Izbri\u0161i tekst
+deleteText_on_filter_use_explanation=Izbri\u0161i re\u010denicu iz filtera.
+edit_copy=Iskopiraj
+edit_cut=Iseci
+edit_delete=Izbri\u0161i
+edit_paste=Nalepi
+edit_redo=Ponovi
+edit_select_all=Obele\u017ei sve
+edit_undo=Ponovi
+Error=Gre\u0161ka
+espere=Molimo, sa\u010dekajte
+Failed_pausing_the_process=Neuspe\u0161no zaustavljanje procesa.
+Failed_resuming_the_process=Neuspe\u0161no obnavljanje procesa.
+Failed_the_process=Neuspe\u0161an proces.
+fields_uppercase_first=Polja
+filter_by_sentence=Filtrirano po re\u010denici
+filter_of_Table=Filter tabele
+filtros=Filter
+guardar=Sa\u010duvaj
+Information=Podaci
+known_values=Poznate vrednosti
+msg_cancel_incrementable=Sigurno \u017eelite da odustanete od ovog procesa?
+no=Ne
+No=Ne
+no_image_available=Slika nije na raspolaganju.
+nuevo=Nov
+Nuevo_conjunto=Novi skup
+numero_incorrecto=Pogre\u0161na vrednost
+ocultardetalles=Prikrij detalje
+ok=ok
+Open=
+open_file=Otvori datoteku
+operator_and_explanation=Operater Y (Ima funkciju preseka u skupovima; kao logi\u010dki operater, funkcioni\u0161e ukoliko su oba operandusa ispravna).
+operator_distinct_explanation=Operater RAZLI\u010cITO OD. (Radi tako \u0161to obele\u017eava one elemente koji se ne podudaraju u oba skupa).
+operator_equal_explanation=Operater ISTO. (Radi tako \u0161to obele\u017eava one elemente koji se podudaraju u oba skupa).
+operator_equal_greater_explanation=Operator VE\u0106I OD ili ISTI KAO. (Radi tako \u0161to obele\u017eava one elemente operanduma/skupa sa leve strane operatora koji imaju ve\u0107u ili istovetnu vrednost od onog sa desne strane).
+operator_equal_smaller_explanation=Operator MANJI OD ili ISTI KAO. (Radi tako \u0161to obele\u017eava one elemente operanduma/skupa sa leve strane operatora koji imaju manju ili istovetnu vrednost od onog sa desne strane).
+operator_greater_explanation=Operator VE\u0106I OD. (Radi tako \u0161to obele\u017eava one elemente operanduma/skupa sa leve strane operatora koji imaju ve\u0107u vrednost od onog sa desne strane).
+operator_not_explanation=Operator NE. (Radi kao Komplementaran u skupovima; kao logi\u010dki operater, menja ispravno za pogre\u0161no ili obrnuto).
+operator_or_explanation=Operator ILI. (Radi kao Sveza u skupovima; kao logi\u010dki operater, daje pogre\u0161no ako su oba operandusa pogre\u0161na).
+operator_smaller_explanation=Operator MANJI OD. (Radi tako \u0161to obele\u017eava one elemente operanduma/skupa sa leve strane operatora koji imaju manju vrednost od onog sa desne strane).
+panel_adding_exception=Gre\u0161ka u dodavanju lejera\:
+panel_loading_exception=Gre\u0161ka pri u\u010ditavanju lejera\:
+parenthesis_explanation=Dodaj zagrade () (Korisno je za grupisanje operacija).
+pausar=Pauza
+Percent=Procenat
+primero=Prvi
+Process_canceled=Proces otkazan.
+Process_failed=Neuspe\u0161an proces.
+Process_finished=Proces je zavr\u0161en.
+Process_finished_wont_be_cancelled=Proces je zavr\u0161en, ne\u0107e biti otkazan.
+reanudar=Obnoviti 
+registro=Registar\:
+salir=Izla\u0111i
+seleccion_alpha=Izbor prozirnosti
+Seleccionar_del_conjunto=Izaberi iz skupa
+select_color=Izaberite boju
+si=da
+siguiente=Slede\u0107i
+subir=
+teclas=Tasteri
+text_preview_text=Prethodni pregled
+the_panel=Panel
+The_process_cant_be_cancelled=Ne mo\u017ee se odustati od procesa.
+The_process_cant_be_paused=Proces se ne mo\u017ee pauzirati.
+tiempo_transcurrido=Proteklo vreme
+title_cancel_incrementable=Potvrda
+ultimo=Poslednji
+validate_expression=Vrednovati izraz
+validate_filter_expression_explanation=Vrednovati ili ne vrednovati izraz filtera.
+verdetalles=Pogledaj detalje
+Warning=Upozorenje
+write_here_a_filter_expression=Zabele\u017ei ovde jedan izraz filtera.
+Yes=Da

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_sr.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_tr.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_tr.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_tr.properties	(revision 38348)
@@ -0,0 +1,107 @@
+#Translations for language [tr]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=
+abrir...=
+aceptar=Kabul et
+Anadir_al_conjunto=Tak\u0131ma ekle
+anterior=\u00d6nceki
+aplicar=Uygula
+ayuda=Yard\u0131m
+ayuda_0=
+ayuda_1_5=
+ayuda_background=
+ayuda_c=
+ayuda_h=
+ayuda_more_less=
+ayuda_wheel=
+bajar=
+borrar_todos=T\u00fcm\u00fcn\u00fc sil
+borrar_uno=Se\u00e7ilen noktay\u0131 sil
+calendarBackOneMonth=Bir ay geri
+calendarBackOneYear=Bir y\u0131l geri
+calendarForwardOneMonth=Bir ay ileri
+calendarForwardOneYear=Bir y\u0131l ileri
+calendarSelectDate=Tarihi se\u00e7
+calendarTitle=Takvim
+cancel=\u0130ptal
+cancelar=\u0130ptal
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Kapat
+date_button_explanation=
+de=
+de\ 0=
+deleteText=Metni sil
+deleteText_on_filter_use_explanation=
+edit_copy=Kopyala
+edit_cut=Kes
+edit_delete=Sil
+edit_paste=Yap\u0131\u015ft\u0131r
+edit_redo=Yinele
+edit_select_all=T\u00fcm\u00fcn\u00fc se\u00e7
+edit_undo=Geri al
+Error=Hata
+espere=L\u00fctfen bekleyin...
+Failed_pausing_the_process=
+Failed_resuming_the_process=
+Failed_the_process=\u0130\u015flemde hata
+fields_uppercase_first=
+filter_by_sentence=
+filter_of_Table=
+filtros=S\u00fczge\u00e7
+guardar=Kaydet
+Information=Bilgi
+known_values=
+msg_cancel_incrementable=
+no=Hay\u0131r
+No=
+no_image_available=
+nuevo=Yeni
+Nuevo_conjunto=Yeni tak\u0131m
+numero_incorrecto=Ge\u00e7ersiz de\u011fer
+ocultardetalles=
+ok=Tamam
+Open=
+open_file=
+operator_and_explanation=
+operator_distinct_explanation=
+operator_equal_explanation=
+operator_equal_greater_explanation=
+operator_equal_smaller_explanation=
+operator_greater_explanation=
+operator_not_explanation=
+operator_or_explanation=
+operator_smaller_explanation=
+panel_adding_exception=
+panel_loading_exception=
+parenthesis_explanation=
+pausar=
+Percent=Y\u00fczde
+primero=Birinci
+Process_canceled=\u0130\u015flem iptal edildi
+Process_failed=\u0130\u015flemde hata
+Process_finished=\u0130\u015flem tamamland\u0131
+Process_finished_wont_be_cancelled=
+reanudar=
+registro=
+salir=\u00c7\u0131k
+seleccion_alpha=
+Seleccionar_del_conjunto=
+select_color=Renk se\u00e7
+si=evet
+siguiente=Sonraki
+subir=
+teclas=
+text_preview_text=\u00d6ng\u00f6r\u00fcn\u00fc\u015f
+the_panel=
+The_process_cant_be_cancelled=
+The_process_cant_be_paused=
+tiempo_transcurrido=
+title_cancel_incrementable=
+ultimo=En son
+validate_expression=
+validate_filter_expression_explanation=
+verdetalles=
+Warning=Uyar\u0131
+write_here_a_filter_expression=
+Yes=Evet
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_ru.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_ru.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_ru.properties	(revision 38348)
@@ -0,0 +1,107 @@
+#Translations for language [ru]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=
+abrir...=
+aceptar=\u041e\u041a
+Anadir_al_conjunto=\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u043d\u0430\u0431\u043e\u0440\u0443
+anterior=\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439
+aplicar=
+ayuda=
+ayuda_0=
+ayuda_1_5=
+ayuda_background=
+ayuda_c=
+ayuda_h=
+ayuda_more_less=
+ayuda_wheel=
+bajar=
+borrar_todos=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0441\u0435
+borrar_uno=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438
+calendarBackOneMonth=\u041d\u0430 \u043c\u0435\u0441\u044f\u0446 \u043d\u0430\u0437\u0430\u0434
+calendarBackOneYear=\u041d\u0430 \u0433\u043e\u0434 \u043d\u0430\u0437\u0430\u0434
+calendarForwardOneMonth=\u041d\u0430 \u043c\u0435\u0441\u044f\u0446 \u0432\u043f\u0435\u0440\u0435\u0434
+calendarForwardOneYear=\u041d\u0430 \u0433\u043e\u0434 \u0432\u043f\u0435\u0440\u0435\u0434
+calendarSelectDate=\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u0430\u0442\u0443
+calendarTitle=\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c
+cancel=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c
+cancelar=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=\u0417\u0430\u043a\u0440\u044b\u0442\u044c
+date_button_explanation=\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u044b\u0431\u043e\u0440 \u0434\u0430\u0442\u044b
+de=\u0438\u0437
+de\ 0=\u0438\u0437 0
+deleteText=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442
+deleteText_on_filter_use_explanation=\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430
+edit_copy=\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c
+edit_cut=\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c
+edit_delete=\u0423\u0434\u0430\u043b\u0438\u0442\u044c
+edit_paste=\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c
+edit_redo=\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c
+edit_select_all=\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435
+edit_undo=\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c
+Error=
+espere=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435
+Failed_pausing_the_process=
+Failed_resuming_the_process=
+Failed_the_process=
+fields_uppercase_first=
+filter_by_sentence=
+filter_of_Table=
+filtros=
+guardar=\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c
+Information=
+known_values=
+msg_cancel_incrementable=
+no=\u041d\u0435\u0442
+No=
+no_image_available=
+nuevo=\u041d\u043e\u0432\u044b\u0439
+Nuevo_conjunto=\u041d\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440
+numero_incorrecto=\u041d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435
+ocultardetalles=
+ok=\u041e\u041a
+Open=
+open_file=
+operator_and_explanation=\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 AND  (\u0414\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u041f\u0435\u0440\u0435\u0441\u0435\u0447\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432; \u043a\u0430\u043a \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0418\u0441\u0442\u0438\u043d\u0430, \u0435\u0441\u043b\u0438 \u043e\u0431\u0430 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0418\u0441\u0442\u0438\u043d\u0430)
+operator_distinct_explanation=\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 DISTINCT (\u0414\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u044d\u0442\u0438\u0445 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432)
+operator_equal_explanation=\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 EQUAL (\u0414\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u044d\u0442\u0438\u0445 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432)
+operator_equal_greater_explanation=\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 EQUAL OR GREATER (\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043b\u0435\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430).
+operator_equal_smaller_explanation=\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 EQUAL OR SMALLER (\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043b\u0435\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0438\u043b\u0438 \u0440\u0430\u0432\u043d\u043e \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430).
+operator_greater_explanation=\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 GREATER (\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043b\u0435\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430).
+operator_not_explanation=\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 NOT (\u0414\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0414\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432; \u043a\u0430\u043a \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0418\u0441\u0442\u0438\u043d\u0430 \u043d\u0430 \u041b\u043e\u0436\u044c \u0438\u043b\u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442).
+operator_or_explanation=\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 OR (\u0414\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432; \u043a\u0430\u043a \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u041b\u043e\u0436\u044c, \u0435\u0441\u043b\u0438 \u043e\u0431\u0430 \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0438\u043c\u0435\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u041b\u043e\u0436\u044c)
+operator_smaller_explanation=\u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 SMALLER (\u0412\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043b\u0435\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u0430\u0432\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u043d\u0434\u0430 \u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430).
+panel_adding_exception=
+panel_loading_exception=
+parenthesis_explanation=\u041a\u0440\u0443\u0433\u043b\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 () (\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439)
+pausar=
+Percent=
+primero=\u041f\u0435\u0440\u0432\u044b\u0439
+Process_canceled=
+Process_failed=
+Process_finished=
+Process_finished_wont_be_cancelled=
+reanudar=
+registro=
+salir=\u0412\u044b\u0445\u043e\u0434
+seleccion_alpha=
+Seleccionar_del_conjunto=\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430
+select_color=
+si=\u0434\u0430
+siguiente=\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439
+subir=
+teclas=
+text_preview_text=\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440
+the_panel=
+The_process_cant_be_cancelled=
+The_process_cant_be_paused=
+tiempo_transcurrido=
+title_cancel_incrementable=
+ultimo=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439
+validate_expression=
+validate_filter_expression_explanation=
+verdetalles=
+Warning=
+write_here_a_filter_expression=
+Yes=
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_de.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_de.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_de.properties	(revision 38348)
@@ -0,0 +1,112 @@
+#Translations for language [de]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=Eingabefeld
+abrir...=
+aceptar=OK
+Anadir_al_conjunto=Zum Datensatz hinzuf\u00fcgen
+anterior=Zur\u00fcck
+aplicar=Anwenden
+ayuda=Hilfe
+ayuda_0=Leerzeichen, 0\: Alles anzeigen
+ayuda_1_5=1-5\: Zoom 1-5
+ayuda_background=B\: Anzeigen/Verbergen des Hintergrundes
+ayuda_c=C\: Zentrieren
+ayuda_h=H\: Diese Hilfe
+ayuda_more_less=+/-\: Zoom +/-
+ayuda_wheel=Rotierung mit Maus\: Zoom +/-
+bajar=nach unten
+borrar_todos=Alle Passpunkte l\u00f6schen
+borrar_uno=Ausgew\u00e4hlten Passpunkt l\u00f6schen
+calendarBackOneMonth=Einen Monat zur\u00fcck
+calendarBackOneYear=Ein Jahr zur\u00fcck
+calendarForwardOneMonth=Einen Monat vor
+calendarForwardOneYear=Ein Jahr vor
+calendarSelectDate=Datum ausw\u00e4hlen
+calendarTitle=Kalender
+Campos=Felder
+cancel=Abbrechen
+cancelar=Abbrechen
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=schlie\u00dfen
+date_button_explanation=Erm\u00f6glicht die Eingabe eines Datums 
+de=von
+de\ 0=von 0
+deleteText=Text l\u00f6schen
+deleteText_on_filter_use_explanation=Filterergebnisse l\u00f6schen
+edit_copy=Kopieren
+edit_cut=Ausschneiden
+edit_delete=L\u00f6schen
+edit_paste=Einf\u00fcgen
+edit_redo=Wiederholen
+edit_select_all=Alles ausw\u00e4hlen
+edit_undo=Zur\u00fccksetzen
+Error=Fehler
+errorMessageJComboBoxItemsSeekerConfigurable=Fehlerhaftes Verhalten der Konfiguration. 
+espere=Warten sie bitte.
+exportJOP2Title=Als JOP2T exportieren
+Failed_pausing_the_process=Vorgang konnte nicht angehalten werden.
+Failed_resuming_the_process=Fehler beim Wiederholen des Vorgangs.
+Failed_the_process=Vorgang abgebrochen
+fields_uppercase_first=Felder
+filter_by_sentence=Filter durch Ausdruck
+filter_of_Table=Filter f\u00fcr Tabelle
+filterOnAWFSLayer=Filter auf einen WFS Layer erzeugen
+filtros=Filter
+guardar=Speichern
+Information=Information
+known_values=Inhalte
+msg_cancel_incrementable=Sind Sie sicher, dass Sie diesen Prozess beenden m\u00f6chten?
+no=Nein
+No=Nein
+no_image_available=Kein Bild verf\u00fcgbar
+nuevo=Neu
+Nuevo_conjunto=Neuer Datensatz
+numero_incorrecto=Falsche Nummer
+ocultardetalles=Details ausblenden
+ok=Ok
+Open=
+open_file=Datei \u00f6ffnen
+operator_and_explanation=AND (logisches UND) Operator. (Gibt die Schnittmenge wieder; ist ein logischer Operator; zeigt"wahr", wenn beide Rechengr\u00f6\u00dfen wahr sind)
+operator_distinct_explanation=Ungleichheit (\!\=) Operator. (W\u00e4hlt diejenigen Elemente aus, die nicht zwischen zwei Mengen liegen)
+operator_equal_explanation=GLEICH (\=) Operator. (W\u00e4hlt diejenigen Elemente aus, die mit beiden Mengen \u00fcbereinstimmen)
+operator_equal_greater_explanation=GROESSER GLEICH (>\=) Operator. (W\u00e4hlt diejenigen Elemente der Rechengr\u00f6\u00dfe/Menge, die links vom Operator stehen und einen h\u00f6heren oder gleichen Wert haben, als der Wert rechts vom Operator) 
+operator_equal_smaller_explanation=KLEINER GLEICH (<\=)Operator.(W\u00e4hlt diejenigen Elemente der Rechengr\u00f6\u00dfe/Menge, die links vom Operator stehen und einen kleineren oder gleichen Wert haben, als der Wert rechts vom Operator)\t
+operator_greater_explanation=GROESSER ALS (>) Operator. (W\u00e4hlt diejenigen Elemente der Rechengr\u00f6\u00dfe/Menge, die links vom Operator stehen und einen h\u00f6heren Wert haben, als der Wert rechts vom Operator)
+operator_not_explanation=LOGISCHE NEGATION (not) Operator. (Verh\u00e4lt sich wie ein Komplement zwischen Mengen, ist ein logischer Operator, \u00e4ndert richtig in falsch und umgekehrt)
+operator_or_explanation=LOGISCHES ODER (||) Operator. (Vereinigung von Mengen; ist ein logischer Operator; zeigt "nicht wahr", wenn beide Rechengr\u00f6\u00dfen nicht wahr sind)\n
+operator_smaller_explanation=KLEINER ALS (<) Operator. (W\u00e4hlt diejenigen Elemente der Rechengr\u00f6\u00dfe/Menge, die links vom Operator stehen und einen niedrigeren Wert, als der Wert rechts vom Operator)
+panel_adding_exception=Fehler beim Hinzuf\u00fcgen eines Layers\:
+panel_loading_exception=Fehler beim Laden eines Layers\:
+parenthesis_explanation=Klammern hinzuf\u00fcgen () (Hilfreich  beim Zusammenfassen mehrerer Arbeitsabl\u00e4ufe).
+pausar=stoppen
+Percent=Prozent
+primero=Erster
+Process_canceled=Prozess wurde abgebrochen.
+Process_failed=Prozess fehlgeschlagen.
+Process_finished=Prozess beendet.
+Process_finished_wont_be_cancelled=Vorgang ist bereits beendet. Er wird nicht abgebrochen. 
+reanudar=neustarten
+registro=Datensatz\:
+salir=Schlie\u00dfen
+seleccion_alpha=Transparenz ausw\u00e4hlen
+Seleccionar_del_conjunto=Aus dem Datensatz ausw\u00e4hlen
+select_color=Farbe ausw\u00e4hlen
+si=ja
+siguiente=Weiter
+subir=
+teclas=Tasten\t
+text_preview_text=Vorschau
+the_panel=Die Eingabe
+The_process_cant_be_cancelled=Der Prozess kann nicht abgebrochen werden
+The_process_cant_be_paused=Der Prozess kann nicht angehalten werden
+tiempo_transcurrido=Zeit abgelaufen
+title_cancel_incrementable=Best\u00e4tigung
+ultimo=Letzte
+validate_expression=Ausdruck pr\u00fcfen
+validate_filter_expression_explanation=Pr\u00fcfen des Ausdrucks f\u00fcr den Filter. 
+Valores=Werte
+verdetalles=Details anzeigen
+Warning=Warnung
+write_here_a_filter_expression=Definieren Sie hier einen Ausdruck f\u00fcr den Filter. 
+Yes=Ja

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_de.properties
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_sw.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_sw.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_sw.properties	(revision 38348)
@@ -0,0 +1,107 @@
+#Translations for language [sw]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=
+abrir...=
+aceptar=Idhinisha
+Anadir_al_conjunto=Ongeza kwenye Seti
+anterior=ya awali (kabla)
+aplicar=
+ayuda=
+ayuda_0=
+ayuda_1_5=
+ayuda_background=
+ayuda_c=
+ayuda_h=
+ayuda_more_less=
+ayuda_wheel=
+bajar=
+borrar_todos=Futa Yote
+borrar_uno=Futa Pointi Iliyochaguliwa
+calendarBackOneMonth=Nyuma Mwezi Mmoja
+calendarBackOneYear=Nyuma Mwaka Mmoja
+calendarForwardOneMonth=Mbele Mwezi Mmoja
+calendarForwardOneYear=Mbele Mwaka Mmoja
+calendarSelectDate=Chagua Tarehe
+calendarTitle=Kalenda
+cancel=Futa
+cancelar=Futa
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Funga
+date_button_explanation=Maelezo ya Kitufe cha Tarehe
+de=ya
+de\ 0=ya 0
+deleteText=Futa Maandishi
+deleteText_on_filter_use_explanation=Futa Maandishi Kwenye Chujio Tumia Maelekezo
+edit_copy=Kivuli
+edit_cut=Kata
+edit_delete=Futa
+edit_paste=Gandamanisha
+edit_redo=Fanya Tena
+edit_select_all=Chagua Yote
+edit_undo=Tangua
+Error=
+espere=Tafahali Subiri
+Failed_pausing_the_process=
+Failed_resuming_the_process=
+Failed_the_process=
+fields_uppercase_first=
+filter_by_sentence=
+filter_of_Table=
+filtros=
+guardar=Weka Akiba
+Information=
+known_values=
+msg_cancel_incrementable=
+no=Hapana
+No=Hapana
+no_image_available=
+nuevo=Mpya
+Nuevo_conjunto=Seti Mpya
+numero_incorrecto=Kiwango ni Batili
+ocultardetalles=
+ok=ok
+Open=
+open_file=
+operator_and_explanation=Fanya Tendo na Kutoa Maelezo
+operator_distinct_explanation=Fanya Tendo na Kutoa Maelezo yakina
+operator_equal_explanation=Fanya Tendo na Kutoa Maelezo
+operator_equal_greater_explanation=Fanya Tendo sawa  na Maelezo
+operator_equal_smaller_explanation=Fanya Tendo  na Maelezo kiasi
+operator_greater_explanation=Fanya Tendo  na Maelezo ya Kutosha
+operator_not_explanation=Fanya Tendo bila ya  Maelezo
+operator_or_explanation=Fanya Tendo au  Maelezo
+operator_smaller_explanation=Fanya Tendo na Maelezo kidogo
+panel_adding_exception=
+panel_loading_exception=
+parenthesis_explanation=Maelezo ya Mabano
+pausar=
+Percent=
+primero=Kwanza
+Process_canceled=
+Process_failed=
+Process_finished=
+Process_finished_wont_be_cancelled=
+reanudar=
+registro=
+salir=Toka/Ondoka
+seleccion_alpha=
+Seleccionar_del_conjunto=Chagua Kutoka Kwenye Seti
+select_color=
+si=Ndio
+siguiente=Inayofuata
+subir=
+teclas=
+text_preview_text=Onyesho la Awali
+the_panel=
+The_process_cant_be_cancelled=
+The_process_cant_be_paused=
+tiempo_transcurrido=
+title_cancel_incrementable=
+ultimo=Ya Mwisho
+validate_expression=
+validate_filter_expression_explanation=
+verdetalles=
+Warning=
+write_here_a_filter_expression=
+Yes=

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_sw.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_el.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_el.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_el.properties	(revision 38348)
@@ -0,0 +1,107 @@
+#Translations for language [el]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=
+abrir...=
+aceptar=\u0391\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae
+Anadir_al_conjunto=\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03c3\u03c4\u03bf \u03c3\u03cd\u03bd\u03bf\u03bb\u03bf
+anterior=\u03a0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf\u03c2
+aplicar=
+ayuda=
+ayuda_0=
+ayuda_1_5=
+ayuda_background=
+ayuda_c=
+ayuda_h=
+ayuda_more_less=
+ayuda_wheel=
+bajar=
+borrar_todos=\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03cc\u03bb\u03c9\u03bd
+borrar_uno=\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c3\u03b7\u03bc\u03b5\u03af\u03bf\u03c5
+calendarBackOneMonth=\u03a0\u03af\u03c3\u03c9 \u03ad\u03bd\u03b1 \u03bc\u03ae\u03bd\u03b1
+calendarBackOneYear=\u03a0\u03af\u03c3\u03c9 \u03ad\u03bd\u03b1 \u03ad\u03c4\u03bf\u03c2
+calendarForwardOneMonth=\u039c\u03c0\u03c1\u03bf\u03c3\u03c4\u03ac \u03ad\u03bd\u03b1 \u03bc\u03ae\u03bd\u03b1
+calendarForwardOneYear=\u039c\u03c0\u03c1\u03bf\u03c3\u03c4\u03ac \u03ad\u03bd\u03b1 \u03ad\u03c4\u03bf\u03c2
+calendarSelectDate=\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1\u03c2
+calendarTitle=\u0397\u03bc\u03b5\u03c1\u03bf\u03bb\u03cc\u03b3\u03b9\u03bf
+cancel=\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7
+cancelar=\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=\u039a\u03bb\u03b5\u03af\u03c3\u03b9\u03bc\u03bf
+date_button_explanation=\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b7\u03bc\u03b5\u03c1\u03bf\u03bc\u03b7\u03bd\u03af\u03b1\u03c2
+de=\u03c4\u03bf\u03c5
+de\ 0=\u03c4\u03bf\u03c5 0
+deleteText=\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5
+deleteText_on_filter_use_explanation=\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae \u03c4\u03bf\u03c5 \u03b1\u03c0\u03bf\u03c4\u03b5\u03bb\u03ad\u03c3\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c4\u03bf\u03c5 \u03c6\u03af\u03bb\u03c4\u03c1\u03bf\u03c5
+edit_copy=\u0391\u03bd\u03c4\u03b9\u03b3\u03c1\u03b1\u03c6\u03ae
+edit_cut=\u0391\u03c0\u03bf\u03ba\u03bf\u03c0\u03ae
+edit_delete=\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae
+edit_paste=\u0395\u03c0\u03b9\u03ba\u03cc\u03bb\u03bb\u03b7\u03c3\u03b7
+edit_redo=\u0391\u03ba\u03cd\u03c1\u03c9\u03c3\u03b7 \u03b1\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7\u03c2
+edit_select_all=\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03cc\u03bb\u03c9\u03bd
+edit_undo=\u0391\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7
+Error=
+espere=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c0\u03b5\u03c1\u03b9\u03bc\u03ad\u03bd\u03b5\u03c4\u03b5
+Failed_pausing_the_process=
+Failed_resuming_the_process=
+Failed_the_process=
+fields_uppercase_first=
+filter_by_sentence=
+filter_of_Table=
+filtros=
+guardar=\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7
+Information=
+known_values=
+msg_cancel_incrementable=
+no=\u038c\u03c7\u03b9
+No=
+no_image_available=
+nuevo=\u039d\u03ad\u03bf
+Nuevo_conjunto=\u039d\u03ad\u03bf \u03c3\u03cd\u03bd\u03bf\u03bb\u03bf
+numero_incorrecto=\u0386\u03ba\u03c5\u03c1\u03b7 \u03c4\u03b9\u03bc\u03ae
+ocultardetalles=
+ok=\u0391\u03c0\u03bf\u03b4\u03bf\u03c7\u03ae
+Open=
+open_file=
+operator_and_explanation=\u03a4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u039a\u0391\u0399 (\u0395\u03bd\u03b5\u03c1\u03b3\u03b5\u03af \u03c3\u03b1\u03bd \u03bc\u03b9\u03b1 \u0394\u03b9\u03b1\u03c4\u03bf\u03bc\u03ae \u03c3\u03c5\u03bd\u03cc\u03bb\u03c9\u03bd; \u03c9\u03c2 \u03bb\u03bf\u03b3\u03b9\u03ba\u03cc\u03c2 \u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2, \u03b1\u03bb\u03b7\u03b8\u03b5\u03cd\u03b5\u03b9 \u03cc\u03c4\u03b1\u03bd \u03ba\u03b1\u03b9 \u03bf\u03b9 \u03b4\u03cd\u03bf \u03c3\u03c5\u03bd\u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ad\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03bb\u03b7\u03b8\u03b5\u03af\u03c2).
+operator_distinct_explanation=\u03a4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2  \u0394\u0399\u0391\u03a6\u039f\u03a1\u039f \u0391\u03a0\u039f. (\u0395\u03c0\u03b9\u03bb\u03ad\u03b3\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03b5\u03ba\u03b5\u03af\u03bd\u03b1 \u03c0\u03bf\u03c5 \u03b4\u03b5\u03bd \u03c3\u03c5\u03bc\u03c0\u03af\u03c0\u03c4\u03bf\u03c5\u03bd \u03bc\u03b5\u03c4\u03b1\u03be\u03cd \u03ba\u03b1\u03b9 \u03c4\u03c9\u03bd \u03b4\u03cd\u03bf \u03c3\u03c5\u03bd\u03cc\u03bb\u03c9\u03bd).
+operator_equal_explanation=\u03a4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u0399\u03a3\u039f\u03a3. (\u0395\u03c0\u03b9\u03bb\u03ad\u03b3\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03b5\u03ba\u03b5\u03af\u03bd\u03b1 \u03c0\u03bf\u03c5 \u03c3\u03c5\u03bc\u03c0\u03af\u03c0\u03c4\u03bf\u03c5\u03bd \u03bc\u03b5\u03c4\u03b1\u03be\u03cd \u03ba\u03b1\u03b9 \u03c4\u03c9\u03bd \u03b4\u03cd\u03bf \u03c3\u03c5\u03bd\u03cc\u03bb\u03c9\u03bd).
+operator_equal_greater_explanation=\u03a4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u039c\u0395\u0393\u0391\u039b\u03a5\u03a4\u0395\u03a1\u039f \u0389 \u0399\u03a3\u039f. (\u0395\u03c0\u03b9\u03bb\u03ad\u03b3\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03b5\u03ba\u03b5\u03af\u03bd\u03b1 \u03c4\u03bf\u03c5 \u03c4\u03b5\u03bb\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9/\u03c3\u03c5\u03bd\u03b4\u03c5\u03ac\u03b6\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c3\u03c4\u03b1 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c4\u03bf\u03c5 \u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae \u03ba\u03b1\u03b9 \u03c0\u03bf\u03c5 \u03ad\u03c7\u03bf\u03c5\u03bd \u03bc\u03b5\u03b3\u03b1\u03bb\u03cd\u03c4\u03b5\u03c1\u03b7 \u03b1\u03c0\u03cc \u03ae \u03af\u03c3\u03b7 \u03c4\u03b9\u03bc\u03ae \u03bc\u03b5 \u03b1\u03c5\u03c4\u03ac \u03c3\u03c4\u03b1 \u03b4\u03b5\u03be\u03b9\u03ac \u03c4\u03bf\u03c5).
+operator_equal_smaller_explanation=\u03a4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u039c\u0399\u039a\u03a1\u039f\u03a4\u0395\u03a1\u039f \u0397\u0384\u0399\u03a3\u039f. (\u0395\u03c0\u03b9\u03bb\u03ad\u03b3\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03b5\u03ba\u03b5\u03af\u03bd\u03b1 \u03c0\u03bf\u03c5 \u03c4\u03b5\u03bb\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9/\u03c3\u03c5\u03bd\u03b4\u03c5\u03ac\u03b6\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c3\u03c4\u03b1 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c4\u03bf\u03c5 \u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae \u03ba\u03b1\u03b9 \u03c0\u03bf\u03c5 \u03ad\u03c7\u03bf\u03c5\u03bd \u03bc\u03b9\u03ba\u03c1\u03cc\u03c4\u03b5\u03c1\u03b7 \u03b1\u03c0\u03cc \u03ae \u03af\u03c3\u03b7 \u03c4\u03b9\u03bc\u03ae \u03bc\u03b5 \u03b1\u03c5\u03c4\u03ac \u03c3\u03c4\u03b1 \u03b4\u03b5\u03be\u03b9\u03ac \u03c4\u03bf\u03c5).
+operator_greater_explanation=\u03a4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u039c\u0395\u0393\u0391\u039b\u03a5\u03a4\u0395\u03a1\u039f\u03a3 \u0391\u03a0\u039f. (\u0395\u03c0\u03b9\u03bb\u03ad\u03b3\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03b5\u03ba\u03b5\u03af\u03bd\u03b1 \u03c0\u03bf\u03c5 \u03c4\u03b5\u03bb\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9/\u03c3\u03c5\u03bd\u03b4\u03c5\u03ac\u03b6\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c3\u03c4\u03b1 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c4\u03bf\u03c5 \u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae \u03ba\u03b1\u03b9 \u03c0\u03bf\u03c5 \u03ad\u03c7\u03bf\u03c5\u03bd \u03bc\u03b5\u03b3\u03b1\u03bb\u03cd\u03c4\u03b5\u03c1\u03b7 \u03c4\u03b9\u03bc\u03ae \u03b1\u03c0\u03cc \u03b1\u03c5\u03c4\u03ac \u03c3\u03c4\u03b1 \u03b4\u03b5\u03be\u03b9\u03ac \u03c4\u03bf\u03c5).
+operator_not_explanation=\u03a4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u039f\u03a7\u0399 (\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c9\u03c2 \u03bf \u03c3\u03c5\u03bc\u03c0\u03bb\u03b7\u03c1\u03c9\u03bc\u03b1\u03c4\u03b9\u03ba\u03cc\u03c2 \u03c3\u03b5 \u03c3\u03cd\u03bd\u03bf\u03bb\u03b1;  \u03c9\u03c2 \u03bb\u03bf\u03b3\u03b9\u03ba\u03cc\u03c2 \u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2, \u03b1\u03bb\u03bb\u03ac\u03b6\u03b5\u03b9 \u03c3\u03b5 \u03b1\u03bb\u03b7\u03b8\u03ae\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf\u03bd \u03c8\u03b5\u03c5\u03b4\u03ae \u03ae \u03b1\u03bd\u03c4\u03af\u03c3\u03c4\u03c1\u03bf\u03c6\u03b1).
+operator_or_explanation=\u03a4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u0389 (\u039b\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b5\u03af \u03c9\u03c2 \u03ad\u03bd\u03c9\u03c3\u03b7 \u03c3\u03b5 \u03c3\u03cd\u03bd\u03bf\u03bb\u03b1; \u03c9\u03c2 \u03bb\u03bf\u03b3\u03b9\u03ba\u03cc\u03c2 \u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2, \u03b4\u03af\u03bd\u03b5\u03b9 \u03c8\u03b5\u03c5\u03b4\u03ad\u03c2 \u03b1\u03bd \u03ba\u03b1\u03b9 \u03bf\u03b9 \u03b4\u03cd\u03bf \u03c3\u03c5\u03bd\u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ad\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c8\u03b5\u03c5\u03b4\u03b5\u03af\u03c2).
+operator_smaller_explanation=\u03a4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae\u03c2 \u039c\u0399\u039a\u03a1\u039f\u03a4\u0395\u03a1\u039f\u03a3 \u0391\u03a0\u039f. (\u0395\u03c0\u03b9\u03bb\u03ad\u03b3\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c4\u03b1 \u03c3\u03c4\u03bf\u03b9\u03c7\u03b5\u03af\u03b1 \u03b5\u03ba\u03b5\u03af\u03bd\u03b1 \u03c0\u03bf\u03c5 \u03c4\u03b5\u03bb\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9/\u03c3\u03c5\u03bd\u03b4\u03c5\u03ac\u03b6\u03bf\u03bd\u03c4\u03b1\u03b9 \u03c3\u03c4\u03b1 \u03b1\u03c1\u03b9\u03c3\u03c4\u03b5\u03c1\u03ac \u03c4\u03bf\u03c5 \u03c4\u03b5\u03bb\u03b5\u03c3\u03c4\u03ae \u03ba\u03b1\u03b9 \u03c0\u03bf\u03c5 \u03ad\u03c7\u03bf\u03c5\u03bd \u03bc\u03b9\u03ba\u03c1\u03cc\u03c4\u03b5\u03c1\u03b7 \u03c4\u03b9\u03bc\u03ae \u03b1\u03c0\u03cc \u03b1\u03c5\u03c4\u03ac \u03c3\u03c4\u03b1 \u03b4\u03b5\u03be\u03b9\u03ac \u03c4\u03bf\u03c5).
+panel_adding_exception=
+panel_loading_exception=
+parenthesis_explanation=\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03c0\u03b1\u03c1\u03b5\u03bd\u03b8\u03ad\u03c3\u03b5\u03c9\u03bd () (\u03a7\u03c1\u03ae\u03c3\u03b9\u03bc\u03bf \u03c3\u03c4\u03b7\u03bd \u03bf\u03bc\u03b1\u03b4\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 \u03bb\u03b5\u03b9\u03c4\u03bf\u03c5\u03c1\u03b3\u03b9\u03ce\u03bd).
+pausar=
+Percent=
+primero=\u03a0\u03c1\u03ce\u03c4\u03bf\u03c2
+Process_canceled=
+Process_failed=
+Process_finished=
+Process_finished_wont_be_cancelled=
+reanudar=
+registro=
+salir=\u0388\u03be\u03bf\u03b4\u03bf\u03c2
+seleccion_alpha=
+Seleccionar_del_conjunto=\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b1\u03c0\u03cc \u03c3\u03cd\u03bd\u03bf\u03bb\u03bf
+select_color=
+si=\u03bd\u03b1\u03b9
+siguiente=\u0395\u03c0\u03cc\u03bc\u03b5\u03bd\u03bf
+subir=
+teclas=
+text_preview_text=\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7
+the_panel=
+The_process_cant_be_cancelled=
+The_process_cant_be_paused=
+tiempo_transcurrido=
+title_cancel_incrementable=
+ultimo=\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03bf\u03c2
+validate_expression=
+validate_filter_expression_explanation=
+verdetalles=
+Warning=
+write_here_a_filter_expression=
+Yes=
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_en.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_en.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_en.properties	(revision 38348)
@@ -0,0 +1,119 @@
+#Translations for language [en]
+#Mon Nov 02 08:36:03 CET 2009
+a_panel=a panel
+abrir...=
+aceptar=Accept
+Anadir_al_conjunto=Add to set
+anterior=Previous
+aplicar=Apply
+apply=Apply
+ayuda=Help
+ayuda_0=spacebar, 0\: View all
+ayuda_1_5=1-5\: Zoom levels
+ayuda_background=b\: Show/hide background
+ayuda_c=c\: Centre
+ayuda_h=h\: This help
+ayuda_more_less=+/-\: Zoom in/out
+ayuda_wheel=Mouse wheel\: Zoom in/out
+bajar=Down
+borrar_todos=Delete all
+borrar_uno=Delete selected point
+calendarBackOneMonth=Back one month
+calendarBackOneYear=Back one year
+calendarForwardOneMonth=Forward one month
+calendarForwardOneYear=Forward one year
+calendarSelectDate=Select date
+calendarTitle=Calendar
+Campos=Fields
+cancel=Cancel
+cancelar=Cancel
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Close
+date_button_explanation=Allows date selection
+de=of
+de\ 0=of 0
+deleteText=Delete text
+deleteText_on_filter_use_explanation=Delete filter rule
+edit_copy=Copy
+edit_cut=Cut
+edit_delete=Delete
+edit_paste=Paste
+edit_redo=Redo
+edit_select_all=Select all
+edit_undo=Undo
+Error=Error
+errorMessageJComboBoxItemsSeekerConfigurable=Invalid behaviour configuration.
+espere=\=Wait a moment, please...
+exportJOP2Title=Export to JOP2T
+Failed_pausing_the_process=Failed to pause processing.
+Failed_resuming_the_process=Failed to resume processing.
+Failed_the_process=The process failed
+fields_uppercase_first=Fields
+filter_by_sentence=Filter by phrase
+filter_of_Table=Table filter
+filterOnALayer=Filter on a layer
+filterOnAWFSLayer=Filter on a WFS layer
+filtros=Filter
+guardar=Save
+Information=Information
+known_values=Contents
+ladoVentana=Window side
+msg_cancel_incrementable=Cancel the computation?
+no=No
+No=No
+no_image_available=Image not available.
+nuevo=New
+Nuevo_conjunto=New set
+numero_incorrecto=Invalid value
+ocultardetalles=Hide details
+ok=Ok
+Open=
+open_file=Open file
+operator_and_explanation=AND operator.\nCalculates set intersection;\nUsed as a logical operator, "A AND B " returns "true" \nif both "A" and "B" are true.
+operator_distinct_explanation=NOT EQUAL operator.\nFilters out those records for which the value \nin the field on the left-hand side is\nnot equal to the right-hand side value.
+operator_equal_explanation=EQUAL operator.\nFilters out those records for which the value \nin the field on the left-hand side is\nequal to the right-hand side value.
+operator_equal_greater_explanation=GREATER OR EQUAL operator.\nFilters out those records for which the value \nin the field on the left-hand side is\ngreater than or equal to the right-hand side value.
+operator_equal_smaller_explanation=SMALLER OR EQUAL operator.\nFilters out those records for which the value \nin the field on the left-hand side is\nsmaller than or equal to the right-hand side value.
+operator_greater_explanation=GREATER THAN operator.\nFilters out those records for which the value \nin the field on the left-hand side is\ngreater than the value on the right-hand side.
+operator_not_explanation=NOT operator.\nCalculates set complement;\nUsed as a logical operator, "NOT A " returns "true" \nif "A" is false and vice versa.
+operator_or_explanation=OR operator.\nCalculates set union;\nUsed as a logical operator, "A OR B " returns "true" \nif either "A" or "B" is true and returns "false" if both\nare false .
+operator_smaller_explanation=SMALLER THAN operator.\nFilters out those records for which the value \nin the field on the left-hand side is\nsmaller than the value on the right-hand side.
+outputType=Data type
+panel_adding_exception=Error adding layer\:
+panel_loading_exception=Error loading layer\:
+parenthesis_explanation=Add parentheses to group operations.
+pausar=Pause
+Percent=Percent
+primero=First
+Process_canceled=Process canceled
+Process_failed=Process failed
+Process_finished=Process finished
+Process_finished_wont_be_cancelled=Process has already finished. Will not be cancelled.
+reanudar=Resume
+registro=Register\:
+salir=Exit
+saturation=Saturation
+seleccion_alpha=Transparency setting
+Seleccionar_del_conjunto=Select from set
+select_color=Select color
+si=yes
+sideLong=Window side
+siguiente=Next
+subir=Up
+teclas=Keys
+text_preview_text=Preview
+the_panel=the panel
+The_process_cant_be_cancelled=Operation cannot be cancelled.
+The_process_cant_be_paused=Operation cannot be paused.
+tiempo_transcurrido=Elapsed time
+title_cancel_incrementable=Confirmation
+ultimo=Last
+validate_expression=Validate expression
+validate_filter_expression_explanation=Choose whether to validate filter expression
+Valores=Values
+verdetalles=Show details
+Warning=Warning
+write_here_a_filter_expression=Enter an SQL WHERE style expression manually or use the buttons to compose one.
+yellow=Yellow
+Yes=Yes

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_en.properties
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_gl.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_gl.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_gl.properties	(revision 38348)
@@ -0,0 +1,112 @@
+#Translations for language [gl]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=un panel
+abrir...=
+aceptar=Aceptar
+Anadir_al_conjunto=Engadir ao conxunto
+anterior=Anterior
+aplicar=Aplicar
+ayuda=Axuda
+ayuda_0=Espacio, 0\: Ver todo
+ayuda_1_5=1-5\: Zoom 1-5
+ayuda_background=B\: Amosar/Ocultar fondo
+ayuda_c=C\: Centrar
+ayuda_h=H\: Esta axuda
+ayuda_more_less=+/-\: Zoom +/-
+ayuda_wheel=Roda rato\: Zoom +/-
+bajar=
+borrar_todos=Borrar todos os puntos
+borrar_uno=Borrar punto seleccionado
+calendarBackOneMonth=Retrocede un mes
+calendarBackOneYear=Retrocede un ano
+calendarForwardOneMonth=Avanza un mes
+calendarForwardOneYear=Avanza un ano
+calendarSelectDate=Seleccione unha data.
+calendarTitle=Calendario
+Campos=Campos
+cancel=Cancelar
+cancelar=Cancelar
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Pechar
+date_button_explanation=Permite seleccionar unha data.
+de=de
+de\ 0=de 0
+deleteText=Borrar texto
+deleteText_on_filter_use_explanation=Borra a sentencia de filtrado.
+edit_copy=Copiar
+edit_cut=Cortar
+edit_delete=Eliminar
+edit_paste=Colar
+edit_redo=Refacer
+edit_select_all=Seleccionar todo
+edit_undo=Desfacer
+Error=Erro
+errorMessageJComboBoxItemsSeekerConfigurable=Configuraci\u00f3n do comportamento non v\u00e1lida.
+espere=Por favor, espere
+exportJOP2Title=Exportar a JOP2T
+Failed_pausing_the_process=Erro ao pausar o proxecto.
+Failed_resuming_the_process=Erro ao reanudar o proceso.
+Failed_the_process=Erro no proceso.
+fields_uppercase_first=Campos
+filter_by_sentence=Filtrado por sentencia
+filter_of_Table=Filtro de T\u00e1boa
+filterOnAWFSLayer=Filtro sobre unha capa WFS
+filtros=Filtros
+guardar=Gardar
+Information=Informaci\u00f3n
+known_values=Valores co\u00f1ecidos
+msg_cancel_incrementable=\u00bfEst\u00e1 seguro de que desexa cancelar este proceso?
+no=Non
+No=Non
+no_image_available=Imaxe non dispo\u00f1ible.
+nuevo=Novo
+Nuevo_conjunto=Novo conxunto
+numero_incorrecto=N\u00famero incorrecto
+ocultardetalles=Ocultar detalles
+ok=Aceptar
+Open=
+open_file=Abrir Arquivo
+operator_and_explanation=Operador Y.\nAct\u00faa coma unha intersecci\u00f3n en conxuntos;\nse non, coma operador l\u00f3xico, da certo si\nambos operandos son certos.
+operator_distinct_explanation=Operador DISINTO DE.\nAct\u00faa seleccionando aqueles elementos que\nnon coinciden entrambos conxuntos.
+operator_equal_explanation=Operador IGUAL.\nAct\u00faa seleccionando aqueles elementos\nque coinciden entrambos conxuntos.
+operator_equal_greater_explanation=Operador MAIOR OU IGUAL QUE.\n Act\u00faa seleccionando aqueles elementos do\n operando/conxunto \u00e1 esquerda do operador\n que te\u00f1en maior ou igual valor que o da s\u00faa dereita.
+operator_equal_smaller_explanation=Operador MENOR OU IGUAL QUE.\n Act\u00faa seleccionando aqueles elementos do\n operando/conxunto \u00e1 esquerda do operador\n que te\u00f1en menor ou igual valor que o da s\u00faa dereita.
+operator_greater_explanation=Operador MAIOR QUE.\n Act\u00faa seleccionando aqueles elementos do\n operando/conxunto \u00e1 esquerda do operador\n que te\u00f1en maiorl valor que o da s\u00faa dereita.
+operator_not_explanation=Operador NON.\n Act\u00faa como un complementario en conxuntos;\n se non, coma operador l\u00f3xico, cambia certo\n por falso e viceversa.
+operator_or_explanation=Act\u00faa coma unha uni\u00f3n en conxuntos;\nse non, coma operador l\u00f3xico, da falso si\nambos operandos son falsos.
+operator_smaller_explanation=Operador MENOR QUE.\n Act\u00faa seleccionando aqueles elementos do\n operando/conxunto \u00e1 esquerda do operador\n que te\u00f1en menor valor que o da s\u00faa dereita.
+panel_adding_exception=Erro ao agregar capa\:
+panel_loading_exception=Erro ao cargar capa\:
+parenthesis_explanation=Engade os s\u00edmbolos par\u00e9ntesis.\n (\u00datil para agrupar operaci\u00f3ns).
+pausar=Pausar
+Percent=Porcentaxe
+primero=Primeiro
+Process_canceled=Proceso cancelado.
+Process_failed=Fallou o proceso.
+Process_finished=Proceso rematado.
+Process_finished_wont_be_cancelled=O proceso rematou, non se cancelar\u00e1.
+reanudar=Reanudar
+registro=Rexistro\:
+salir=Sa\u00edr
+seleccion_alpha=Selecci\u00f3n de Transparencia
+Seleccionar_del_conjunto=Seleccionar do conxunto
+select_color=Seleccione unha cor
+si=s\u00ed
+siguiente=Seguinte
+subir=
+teclas=Tecras
+text_preview_text=Vista previa
+the_panel=o panel
+The_process_cant_be_cancelled=O proceso non se pode cancelar.
+The_process_cant_be_paused=O proceso non se pode pausar.
+tiempo_transcurrido=Tempo transcurrido
+title_cancel_incrementable=Confirmaci\u00f3n
+ultimo=Derradeiro
+validate_expression=Validar expresi\u00f3n
+validate_filter_expression_explanation=Validar ou non a expresi\u00f3n de filtro.
+Valores=Valores
+verdetalles=Ver detalles
+Warning=Aviso
+write_here_a_filter_expression=Escriba aqu\u00ed unha expresion de filtro.
+Yes=Si

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_gl.properties
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_cs.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_cs.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_cs.properties	(revision 38348)
@@ -0,0 +1,112 @@
+#Translations for language [cs]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=
+abrir...=
+aceptar=Budi\u017e
+Anadir_al_conjunto=P\u0159idat do mno\u017einy
+anterior=P\u0159edchoz\u00ed
+aplicar=Pou\u017e\u00edt
+ayuda=
+ayuda_0=
+ayuda_1_5=
+ayuda_background=
+ayuda_c=
+ayuda_h=
+ayuda_more_less=
+ayuda_wheel=
+bajar=
+borrar_todos=Sma\u017e v\u0161e
+borrar_uno=Sma\u017e vybran\u00e9 body
+calendarBackOneMonth=
+calendarBackOneYear=
+calendarForwardOneMonth=
+calendarForwardOneYear=
+calendarSelectDate=
+calendarTitle=
+Campos=Pole
+cancel=Zru\u0161it
+cancelar=Zru\u0161it
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Zav\u0159\u00edt
+date_button_explanation=
+de=of
+de\ 0=z ()
+deleteText=
+deleteText_on_filter_use_explanation=
+edit_copy=Kop\u00edrovat
+edit_cut=Vyjmout
+edit_delete=Smazat
+edit_paste=Vlo\u017e
+edit_redo=Dal\u0161\u00ed zm\u011bna
+edit_select_all=Vyber v\u0161e
+edit_undo=Vra\u0165 zm\u011bnu
+Error=
+errorMessageJComboBoxItemsSeekerConfigurable=Chybn\u00e1 konfigurace chov\u00e1n\u00ed.
+espere=Pros\u00edm \u010dekejte
+exportJOP2Title=
+Failed_pausing_the_process=
+Failed_resuming_the_process=
+Failed_the_process=
+fields_uppercase_first=
+filter_by_sentence=
+filter_of_Table=
+filterOnAWFSLayer=
+filtros=
+guardar=Ulo\u017eit
+Information=
+known_values=
+msg_cancel_incrementable=
+no=No
+No=
+no_image_available=
+nuevo=Nov\u00fd
+Nuevo_conjunto=Nov\u00e1 skupina
+numero_incorrecto=Neplatn\u00e1 hodnota
+ocultardetalles=
+ok=Budi\u017e
+Open=
+open_file=
+operator_and_explanation=
+operator_distinct_explanation=
+operator_equal_explanation=
+operator_equal_greater_explanation=
+operator_equal_smaller_explanation=
+operator_greater_explanation=
+operator_not_explanation=
+operator_or_explanation=
+operator_smaller_explanation=
+panel_adding_exception=
+panel_loading_exception=
+parenthesis_explanation=
+pausar=
+Percent=
+primero=Prvn\u00ed
+Process_canceled=
+Process_failed=
+Process_finished=
+Process_finished_wont_be_cancelled=
+reanudar=
+registro=
+salir=Konec
+seleccion_alpha=
+Seleccionar_del_conjunto=Vybrat ze sady
+select_color=
+si=ano
+siguiente=Dal\u0161\u00ed
+subir=
+teclas=
+text_preview_text=
+the_panel=
+The_process_cant_be_cancelled=
+The_process_cant_be_paused=
+tiempo_transcurrido=
+title_cancel_incrementable=
+ultimo=Posledn\u00ed
+validate_expression=
+validate_filter_expression_explanation=
+Valores=Hodnoty
+verdetalles=
+Warning=
+write_here_a_filter_expression=
+Yes=

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_cs.properties
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_pt_BR.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_pt_BR.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_pt_BR.properties	(revision 38348)
@@ -0,0 +1,107 @@
+#Translations for language [pt_BR]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=Painel
+abrir...=
+aceptar=aceitar
+Anadir_al_conjunto=Adicionar ao conjunto
+anterior=Anterior
+aplicar=aplicar
+ayuda=ajuda
+ayuda_0=Espa\u00e7o, 0\: Ver tudo
+ayuda_1_5=1-5\: Zoom 1-5
+ayuda_background=B\: Mostrar/Ocultar fundo
+ayuda_c=C\: Centrar
+ayuda_h=H\: Esta ajuda
+ayuda_more_less=+/-\: Zoom +/-
+ayuda_wheel=Rolagem do mouse\: Zoom +/-
+bajar=
+borrar_todos=Apagar tudo
+borrar_uno=Apagar ponto selecionado
+calendarBackOneMonth=Retrocede um m\u00eas
+calendarBackOneYear=Retrocede um ano
+calendarForwardOneMonth=Avan\u00e7a um m\u00eas
+calendarForwardOneYear=Avan\u00e7a um ano
+calendarSelectDate=Selecionar data
+calendarTitle=Calend\u00e1rio
+cancel=Cancelar
+cancelar=Cancelar
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Fechar
+date_button_explanation=Permite selecionar uma data.
+de=de
+de\ 0=de 0
+deleteText=Apagar texto
+deleteText_on_filter_use_explanation=Apagar a express\u00e3o de filtro
+edit_copy=Copiar
+edit_cut=Cortar
+edit_delete=Apagar
+edit_paste=Colar
+edit_redo=Refazer
+edit_select_all=Selecionar tudo
+edit_undo=Anular
+Error=Erro
+espere=Por favor, espere
+Failed_pausing_the_process=Falha pausando o processo.
+Failed_resuming_the_process=Falha reanulando o processo.
+Failed_the_process=Falha no processo.
+fields_uppercase_first=Campos
+filter_by_sentence=Filtrado por senten\u00e7a
+filter_of_Table=Filtro da tabela
+filtros=Filtros
+guardar=Salvar
+Information=Informa\u00e7\u00e3o
+known_values=Valores conhecidos
+msg_cancel_incrementable=Tem certeza que deseja cancelar este processo?
+no=N\u00e3o
+No=
+no_image_available=Imagem indispon\u00edvel.
+nuevo=Novo
+Nuevo_conjunto=Novo conjunto
+numero_incorrecto=N\u00famero inv\u00e1lido
+ocultardetalles=Ocultar detalhes
+ok=Aceitar
+Open=
+open_file=Abrir arquivo
+operator_and_explanation=Operador E (Intersecta os conjuntos como operador l\u00f3gico, d\u00e1 certo se ambos operandos s\u00e3o certos).
+operator_distinct_explanation=Operador DIFERENTE (Seleciona os elementos que n\u00e3o coincidam entre ambos os conjuntos).
+operator_equal_explanation=Operador IGUAL (Seleciona os elementos que coincidam entre ambos os conjuntos).
+operator_equal_greater_explanation=Operador MAIOR OU IGUAL (Seleciona os elementos \u00e0 esquerda do operador que tem maior ou igual valor).
+operator_equal_smaller_explanation=Operador MENOR OU IGUAL (Seleciona os elementos \u00e0 direita do operador que tem menor ou igual valor).
+operator_greater_explanation=Operador MAIOR (Seleciona os elementos \u00e0 esquerda do operador).
+operator_not_explanation=Operador N\u00c3O (Complemento para conjuntos como operador l\u00f3gico, muda certo por falso ou vice-versa).
+operator_or_explanation=Operador OU (Uni\u00e3o em conjuntos como operador l\u00f3gico, d\u00e1 falso se ambos operadores s\u00e3o falsos).
+operator_smaller_explanation=Operador MENOR (Seleciona os elementos \u00e0 direita do operador).
+panel_adding_exception=Erro agregando o plano de informa\u00e7\u00e3o\:
+panel_loading_exception=Erro carregando plano de informa\u00e7\u00e3o\:
+parenthesis_explanation=Adicionar os par\u00eanteses () (utilidade para agrupar opera\u00e7\u00f5es)
+pausar=Pausar
+Percent=Porcentagem
+primero=Primeiro
+Process_canceled=Processo cancelado.
+Process_failed=Falha no processo.
+Process_finished=Processo finalizado.
+Process_finished_wont_be_cancelled=O processo finalizou, n\u00e3o ser\u00e1 cancelado.
+reanudar=Resumo
+registro=Registro\:
+salir=Fechar
+seleccion_alpha=Sele\u00e7\u00e3o de transpar\u00eancia
+Seleccionar_del_conjunto=Selecionar o conjunto
+select_color=Selecione uma cor
+si=Sim
+siguiente=Pr\u00f3ximo
+subir=
+teclas=Teclas
+text_preview_text=Pr\u00e9-visualizar
+the_panel=Painel
+The_process_cant_be_cancelled=O processo n\u00e3o pdoe ser cancelado
+The_process_cant_be_paused=O processo n\u00e3o pode parar.
+tiempo_transcurrido=Tempo transcurrido
+title_cancel_incrementable=Confirma\u00e7\u00e3o
+ultimo=\u00daltimo
+validate_expression=Validar expre\u00e7\u00e3o
+validate_filter_expression_explanation=Validar ou n\u00e3o a expre\u00e7\u00e3o do filtro.
+verdetalles=Ver detalhes
+Warning=Aviso
+write_here_a_filter_expression=Escreva aqui uma expre\u00e7\u00e3o de filtro
+Yes=Sim
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_fr.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_fr.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_fr.properties	(revision 38348)
@@ -0,0 +1,112 @@
+#Translations for language [fr]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=un panneau
+abrir...=
+aceptar=Accepter
+Anadir_al_conjunto=Ajouter \u00e0 la s\u00e9lection
+anterior=Pr\u00e9c\u00e9dent
+aplicar=Appliquer
+ayuda=Aide
+ayuda_0=Espace, 0 \: tout voir
+ayuda_1_5=1-5 \: niveaux de zoom
+ayuda_background=B \: afficher/cacher le fond
+ayuda_c=C \: centrer
+ayuda_h=H \: aide
+ayuda_more_less=+/- \: zoom +/-
+ayuda_wheel=Molette de souris \: zoom +/-
+bajar=
+borrar_todos=Supprimer tous les amers
+borrar_uno=Supprimer l'amer s\u00e9lectionn\u00e9
+calendarBackOneMonth=Mois pr\u00e9c\u00e9dent
+calendarBackOneYear=Ann\u00e9e pr\u00e9c\u00e9dente
+calendarForwardOneMonth=Mois suivant
+calendarForwardOneYear=Ann\u00e9e suivante
+calendarSelectDate=S\u00e9lectionner une date
+calendarTitle=Calendrier
+Campos=Champs
+cancel=Annuler
+cancelar=Annuler
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Fermer
+date_button_explanation=S\u00e9lectionner une date
+de=de
+de\ 0=de 0
+deleteText=Effacer le texte
+deleteText_on_filter_use_explanation=Supprimer le filtre
+edit_copy=Copier
+edit_cut=Couper
+edit_delete=Supprimer
+edit_paste=Coller
+edit_redo=R\u00e9p\u00e9ter
+edit_select_all=Tout s\u00e9lectionner
+edit_undo=Annuler
+Error=Erreur
+errorMessageJComboBoxItemsSeekerConfigurable=Configuration du comportement incorrecte
+espere=Patientez s.v.p.
+exportJOP2Title=Exporter vers JOP2T
+Failed_pausing_the_process=Echec lors de la mise en pause du traitement.
+Failed_resuming_the_process=Echec lors du red\u00e9marrage du traitement.
+Failed_the_process=Le traitement a \u00e9chou\u00e9.
+fields_uppercase_first=Champs
+filter_by_sentence=Filtre par phrase
+filter_of_Table=Requ\u00eate de filtre
+filterOnAWFSLayer=Filtre sur une couche WFS
+filtros=Filtres
+guardar=Enregistrer
+Information=Information
+known_values=Valeurs connues
+msg_cancel_incrementable=Voulez-vous annuler le traitement ?
+no=Non
+No=No
+no_image_available=Aucune image disponible.
+nuevo=Nouvel amer
+Nuevo_conjunto=Nouvelle s\u00e9lection
+numero_incorrecto=Nombre incorrect
+ocultardetalles=Cacher d\u00e9tails
+ok=Accepter
+Open=
+open_file=Ouvrir fichier
+operator_and_explanation=Op\u00e9rateur ET
+operator_distinct_explanation=Op\u00e9rateur DIFFERENT DE
+operator_equal_explanation=Op\u00e9rateur EGAL
+operator_equal_greater_explanation=Op\u00e9rateur SUPERIEUR OU EGAL
+operator_equal_smaller_explanation=Op\u00e9rateur INFERIEUR OU EGAL
+operator_greater_explanation=Op\u00e9rateur PLUS GRAND QUE
+operator_not_explanation=Op\u00e9rateur NUL
+operator_or_explanation=Op\u00e9rateur OU
+operator_smaller_explanation=Op\u00e9rateur PLUS PETIT QUE
+panel_adding_exception=Erreur lors de l'ajout de la couche \:
+panel_loading_exception=Erreur de chargement  \:
+parenthesis_explanation=Ajout de parenth\u00e8ses pour regrouper les op\u00e9rations
+pausar=Pause
+Percent=Pourcentage
+primero=Aller au premier amer
+Process_canceled=Traitement annul\u00e9
+Process_failed=Le traitement \u00e0 \u00e9chou\u00e9
+Process_finished=Traitement termin\u00e9
+Process_finished_wont_be_cancelled=Le traitement est termin\u00e9 et ne peut \u00eatre annul\u00e9
+reanudar=Reprendre
+registro=Enregistrements
+salir=Quitter
+seleccion_alpha=Transparence
+Seleccionar_del_conjunto=S\u00e9lection parmi les objets s\u00e9lectionn\u00e9s
+select_color=S\u00e9lection de couleur
+si=oui
+siguiente=Suivant
+subir=
+teclas=Teclas
+text_preview_text=Pr\u00e9c\u00e9dent
+the_panel=le panneau
+The_process_cant_be_cancelled=Le traitement ne peut \u00eatre annul\u00e9
+The_process_cant_be_paused=Le traitement ne peut \u00eatre stopp\u00e9.
+tiempo_transcurrido=D\u00e9lai \u00e9coul\u00e9
+title_cancel_incrementable=Valider
+ultimo=Aller au dernier amer
+validate_expression=Valider
+validate_filter_expression_explanation=Valider l'expression du filtre.
+Valores=Valeurs
+verdetalles=Voir les d\u00e9tails
+Warning=Attention
+write_here_a_filter_expression=Ecrire une expression de filtre.
+Yes=Oui

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_fr.properties
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_en_US.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_en_US.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_en_US.properties	(revision 38348)
@@ -0,0 +1,108 @@
+#Translations for language [en_US]
+#Mon Nov 02 08:36:03 CET 2009
+a_panel=a panel
+abrir...=
+aceptar=Ok
+Anadir_al_conjunto=Add to selection
+anterior=Previous
+aplicar=Apply
+ayuda=Help
+ayuda_0=spacebar, 0\: View all
+ayuda_1_5=1-5\: Zoom levels
+ayuda_background=b\: Show/hide background
+ayuda_c=c\: Center
+ayuda_h=h\: This help
+ayuda_more_less=+/-\: Zoom in/out
+ayuda_wheel=Mouse wheel\: Zoom in/out
+bajar=Down
+borrar_todos=Delete all points
+borrar_uno=Delete selected point
+calendarBackOneMonth=Back one month
+calendarBackOneYear=Back one year
+calendarForwardOneMonth=Forward one month
+calendarForwardOneYear=Forward one year
+calendarSelectDate=Select date
+calendarTitle=Calendar
+cancel=Cancel
+cancelar=Cancel
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Close
+date_button_explanation=Allows date selection
+de=of
+de\ 0=of 0
+deleteText=Delete
+deleteText_on_filter_use_explanation=Delete filter rule
+edit_copy=Copy
+edit_cut=Cut
+edit_delete=Delete
+edit_paste=Paste
+edit_redo=Redo
+edit_select_all=Select all
+edit_undo=Undo
+Error=Error
+espere=Please wait
+Failed_pausing_the_process=Failed to pause processing.
+Failed_resuming_the_process=Failed to resume processing.
+Failed_the_process=The process failed.
+fields_uppercase_first=Fields
+filter_by_sentence=Filter by phrase
+filter_of_Table=Table filter
+filtros=Filters
+guardar=Save
+Information=Information
+known_values=Contents
+msg_cancel_incrementable=Cancel the computation?
+no=No
+No=No
+no_image_available=Image not available.
+nuevo=New
+Nuevo_conjunto=New selection
+numero_incorrecto=Incorrect number.
+ocultardetalles=Hide details
+ok=Ok
+Open=
+open_file=Open file
+operator_and_explanation=AND operator.\nCalculates set intersection;\nUsed as a logical operator, "A AND B " returns "true" \nif both "A" and "B" are true.
+operator_distinct_explanation=NOT EQUAL operator.\nFilters out those records for which the value \nin the field on the left-hand side is\nnot equal to the right-hand side value.
+operator_equal_explanation=EQUAL operator.\nFilters out those records for which the value \nin the field on the left-hand side is\nequal to the right-hand side value.
+operator_equal_greater_explanation=GREATER OR EQUAL operator.\nFilters out those records for which the value \nin the field on the left-hand side is\ngreater than or equal to the right-hand side value.
+operator_equal_smaller_explanation=SMALLER OR EQUAL operator.\nFilters out those records for which the value \nin the field on the left-hand side is\nsmaller than or equal to the right-hand side value.
+operator_greater_explanation=GREATER THAN operator.\nFilters out those records for which the value \nin the field on the left-hand side is\ngreater than the value on the right-hand side.
+operator_not_explanation=NOT operator.\nCalculates set complement;\nUsed as a logical operator, "NOT A " returns "true" \nif "A" is false and vice versa.
+operator_or_explanation=OR operator.\nCalculates set union;\nUsed as a logical operator, "A OR B " returns "true" \nif either "A" or "B" is true and returns "false" if both\nare false .
+operator_smaller_explanation=SMALLER THAN operator.\nFilters out those records for which the value \nin the field on the left-hand side is\nsmaller than the value on the right-hand side.
+panel_adding_exception=Error adding layer\:
+panel_loading_exception=Error loading layer\:
+parenthesis_explanation=Add parentheses to group operations.
+pausar=Pause
+Percent=Percent
+primero=First
+Process_canceled=Process canceled.
+Process_failed=Process failed.
+Process_finished=Process finished.
+Process_finished_wont_be_cancelled=Process has already finished. Will not be canceled.
+reanudar=Resume
+registro=Register\:
+salir=Exit
+seleccion_alpha=Transparency setting
+Seleccionar_del_conjunto=Subtract from selection
+select_color=Select color
+si=Yes
+sideLong=Window side
+siguiente=Next
+subir=Up
+teclas=Keys
+text_preview_text=Preview
+the_panel=the panel
+The_process_cant_be_cancelled=Operation cannot be canceled.
+The_process_cant_be_paused=Operation cannot be paused.
+tiempo_transcurrido=Elapsed time
+title_cancel_incrementable=Confirmation
+ultimo=Last
+validate_expression=Validate expression
+validate_filter_expression_explanation=Choose whether to validate filter expression
+verdetalles=Show details
+Warning=Warning
+write_here_a_filter_expression=Enter an SQL WHERE style expression manually or use the buttons to compose one.
+Yes=Yes
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_eu.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_eu.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_eu.properties	(revision 38348)
@@ -0,0 +1,112 @@
+#Translations for language [eu]
+#Mon Sep 21 10:02:19 CEST 2009
+a_panel=panela
+abrir...=
+aceptar=Ados
+Anadir_al_conjunto=Gehitu multzoari
+anterior=Aurrekoa
+aplicar=Aplikatu
+ayuda=Laguntza
+ayuda_0=Lekua, 0\: Dena ikusi
+ayuda_1_5=1-5\: 1-5 Zooma
+ayuda_background=B\: Erakutsi/Ezkutatu atzeko planoa
+ayuda_c=C\: Zentratu
+ayuda_h=H\: Laguntza hau
+ayuda_more_less=+/-\: +/- Zooma
+ayuda_wheel=Saguaren gurpila\: +/- Zooma
+bajar=
+borrar_todos=Ezabatu puntu guztiak
+borrar_uno=Ezabatu hautatutako puntua
+calendarBackOneMonth=Atzeratu hile bat
+calendarBackOneYear=Atzeratu urte bat
+calendarForwardOneMonth=Aurreratu hile bat
+calendarForwardOneYear=Aurreratu urte bat
+calendarSelectDate=Hautatu data bat
+calendarTitle=Egutegia
+Campos=Eremuak
+cancel=Utzi
+cancelar=Utzi
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=Itxi
+date_button_explanation=Data aukeratu daiteke
+de=hemendik
+de\ 0=de 0
+deleteText=Ezabatu testua
+deleteText_on_filter_use_explanation=Ezabatu iragazkiaren espresioa
+edit_copy=Kopiatu
+edit_cut=Ebaki
+edit_delete=Ezabatu
+edit_paste=Itsatsi
+edit_redo=Berregin
+edit_select_all=Hautatu dena
+edit_undo=Desegin
+Error=Errorea
+errorMessageJComboBoxItemsSeekerConfigurable=Portaeraren konfigurazio okerra
+espere=Itxaron, mesedez
+exportJOP2Title=JOP2Tra esportatu
+Failed_pausing_the_process=Hutsegitea prozesua pausatzean.
+Failed_resuming_the_process=Hutsegitea prozesuari berrekitean
+Failed_the_process=Hutsegitea prozesuan.
+fields_uppercase_first=Eremuak
+filter_by_sentence=Sententzia bidezko iragazkia
+filter_of_Table=Taula-iragazkia
+filterOnAWFSLayer=WFS geruza-iragazkia
+filtros=Iragazkiak
+guardar=Gorde
+Information=Informazioa
+known_values=Balio ezagunak
+msg_cancel_incrementable=Prozesua ezeztatu nahi duzu?
+no=Ez
+No=Ez
+no_image_available=Irudia ez dago erabilgarri
+nuevo=Berria
+Nuevo_conjunto=Multzo berria
+numero_incorrecto=Zenbakia ez da zuzena
+ocultardetalles=Ezkutatu xehetasunak
+ok=Ados
+Open=
+open_file=Ireki fitxategia
+operator_and_explanation=ETA eragilea.\nMultzoen ebaketa bat da;\neragile logiko honek emaitza egiazkotzat \nhartuko du bi eragileak baieztatzen direnean.
+operator_distinct_explanation=DESBERDIN eragilea.\nMultzoen artean parekotasunik ez duten \nelementuak hautatzeko balio du eragile honek. 
+operator_equal_explanation=BERDIN eragilea.\nMultzoen artean parekotasuna duten \nelementuak hautatzeko balio du eragile honek. 
+operator_equal_greater_explanation=HANDIAGO EDO BERDINA eragilea.\nEragilearen eskumako balioa baino handiagoa \nedo berdina duten ezker-multzoko \nelementuak hautatzeko balio du eragile honek. 
+operator_equal_smaller_explanation=TXIKIAGO EDO BERDINA eragilea.\nEragilearen eskumako balioa baino txikiagoa \nedo berdina duten ezker-multzoko \nelementuak hautatzeko balio du eragile honek. 
+operator_greater_explanation=HANDIAGOA eragilea.\nEragilearen eskumako balioa baino handiagoa \nduten ezker-multzoko elementuak hautatzeko\nbalio du eragile honek. 
+operator_not_explanation=EZ eragilea.\nMultzoen osagarri bat da;\neragile logiko honek emaitza egiazkoak\nfaltsutzat hartuko ditu eta alderantziz.
+operator_or_explanation=EDO eragilea.\nMultzoen elkarketa bat da;\neragile logiko honek emaitza faltsutzat \nhartuko du bi eragileak ezeztatzen direnean.
+operator_smaller_explanation=TXIKIAGOA eragilea.\nEragilearen eskumako balioa baino txikiagoa \nduten ezker-multzoko elementuak hautatzeko\nbalio du eragile honek. 
+panel_adding_exception=Errorea geruza gehitzean\:
+panel_loading_exception=Errorea geruza kargatzean\:
+parenthesis_explanation=Gehitu parentesi ikurrak.\n(Eragiketak taldekatzeko erabilgarria)
+pausar=Pausatu
+Percent=Ehunekoa
+primero=Lehenengoa
+Process_canceled=Prozesua bertan behera utzi da.
+Process_failed=Prozesuak huts egin du.
+Process_finished=Prozesua amaituta
+Process_finished_wont_be_cancelled=Prozesua amaitu da, ez da ezeztatuko.
+reanudar=Berrekin
+registro=Erregistroa\:
+salir=Irten
+seleccion_alpha=Gardentasunaren hautaketa
+Seleccionar_del_conjunto=Multzotik hautatu
+select_color=Hautatu kolore bat
+si=bai
+siguiente=Hurrengoa
+subir=
+teclas=Teklak
+text_preview_text=Aurrebista
+the_panel=Panela
+The_process_cant_be_cancelled=Prozesua ezin da utzi.
+The_process_cant_be_paused=Prozesua ezin da gelditu.
+tiempo_transcurrido=Igarotako denbora
+title_cancel_incrementable=Baieztapena
+ultimo=Azkena
+validate_expression=Balidatu espresioa
+validate_filter_expression_explanation=Iragazkiaren espresioa onartu ala ez onartu
+Valores=Balioak
+verdetalles=Ikusi xehetasunak
+Warning=Oharra
+write_here_a_filter_expression=Idatzi hemen iragazteko espresio bat
+Yes=Bai

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_eu.properties
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_nl.properties
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_nl.properties	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_nl.properties	(revision 38348)
@@ -0,0 +1,107 @@
+#Translations for language [nl]
+#Tue Aug 11 10:49:16 CEST 2009
+a_panel=
+abrir...=
+aceptar=
+Anadir_al_conjunto=
+anterior=Vorige
+aplicar=
+ayuda=
+ayuda_0=
+ayuda_1_5=
+ayuda_background=
+ayuda_c=
+ayuda_h=
+ayuda_more_less=
+ayuda_wheel=
+bajar=
+borrar_todos=
+borrar_uno=
+calendarBackOneMonth=
+calendarBackOneYear=
+calendarForwardOneMonth=
+calendarForwardOneYear=
+calendarSelectDate=
+calendarTitle=
+cancel=Afbreken
+cancelar=
+cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead=
+cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead=
+cerrar=
+date_button_explanation=
+de=
+de\ 0=
+deleteText=
+deleteText_on_filter_use_explanation=
+edit_copy=
+edit_cut=
+edit_delete=
+edit_paste=
+edit_redo=
+edit_select_all=
+edit_undo=
+Error=
+espere=
+Failed_pausing_the_process=
+Failed_resuming_the_process=
+Failed_the_process=
+fields_uppercase_first=
+filter_by_sentence=
+filter_of_Table=
+filtros=
+guardar=
+Information=
+known_values=
+msg_cancel_incrementable=
+no=
+No=
+no_image_available=
+nuevo=
+Nuevo_conjunto=
+numero_incorrecto=
+ocultardetalles=
+ok=Ok
+Open=
+open_file=
+operator_and_explanation=
+operator_distinct_explanation=
+operator_equal_explanation=
+operator_equal_greater_explanation=
+operator_equal_smaller_explanation=
+operator_greater_explanation=
+operator_not_explanation=
+operator_or_explanation=
+operator_smaller_explanation=
+panel_adding_exception=
+panel_loading_exception=
+parenthesis_explanation=
+pausar=
+Percent=
+primero=
+Process_canceled=
+Process_failed=
+Process_finished=
+Process_finished_wont_be_cancelled=
+reanudar=
+registro=
+salir=
+seleccion_alpha=
+Seleccionar_del_conjunto=
+select_color=
+si=
+siguiente=Volgende
+subir=
+teclas=
+text_preview_text=
+the_panel=
+The_process_cant_be_cancelled=
+The_process_cant_be_paused=
+tiempo_transcurrido=
+title_cancel_incrementable=
+ultimo=
+validate_expression=
+validate_filter_expression_explanation=
+verdetalles=
+Warning=
+write_here_a_filter_expression=
+Yes=

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/config/text_nl.properties
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/doc/contents.html
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/doc/contents.html	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/doc/contents.html	(revision 38348)
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=iso-8859-15">
+	<TITLE></TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.3  (Linux)">
+	<META NAME="CREATED" CONTENT="20060322;9174300">
+	<META NAME="CHANGED" CONTENT="20060322;10202100">
+	<STYLE>
+	<!--
+		@page { size: 21cm 29.7cm; margin: 2cm }
+		P { margin-bottom: 0.21cm }
+		A:link { color: #000080; text-decoration: underline }
+		A:visited { color: #800000; text-decoration: underline }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en-US" LINK="#000080" VLINK="#800000" DIR="LTR">
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=3 STYLE="font-size: 13pt"><B>PRESENT
+BEANS.</B></FONT></FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><FONT SIZE=2><B>DefaultBean.java
+(extends JPanel (standard in Swing)):</B><SPAN STYLE="font-weight: medium">
+Just a JPanel with addListener(BeanListener l),
+removeListener(BeanListener l), and callValueChange(Object value)
+methods for adding listeners, removing listeners, and firing
+BeanValueChange events.</SPAN></FONT></FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><FONT SIZE=2><B>Pager.java
+(extends DefaultBean.java)</B>: this is an
+AcrobatReader-page-browser-like bean that allows you to easy browse a
+list of values. Each time you drag the slider, click a button or type
+a number an Integer value is produced and a BeanValueChanged event is
+fired returning an Object value. Catch this event and cast the value
+produced to a Integer (or even an int) and use it to move your list
+pointer to this position. An example of use can be found in
+<B>SamplePanel.java</B></FONT></FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=3 STYLE="font-size: 13pt"><B>PRESENT
+CONTROLS.</B></FONT></FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2><B>package
+org.gvsig.gui.beans.controls</B></FONT></FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><FONT SIZE=2><B>MultilineTooltip.java
+(extends JToolTip (standard in Swing)): </B><SPAN STYLE="font-weight: medium">Allows
+using more than one line length tooltips. It also automatically
+calculates the size of the screen rectangle used and the preferred
+sized up on the contained text. It does NOT format the text to fit
+within a given size. The user must provide the text as she/he wishes
+to show it. It means that new line characters must be placed in the
+string as well as it was a System.out.println statement.</SPAN></FONT></FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2><B>package
+org.gvsig.gui.beans.controls.dnd</B></FONT></FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><FONT SIZE=2><B>JDnDList
+(extends JList (standard in Swing)): </B><SPAN STYLE="font-weight: medium">A
+JList that allows drag'n'drop elements. It accepts changing position
+of one or more elements within the list, adding other from other
+JDnDList's,  removing sets of selected items, and other features. In
+order to use this features you have to use a JDnDListModel as the
+list's model.</SPAN></FONT></FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><FONT SIZE=2><B>JDnDListModel
+(extends AbstractListModel (standard in Swing)): </B><SPAN STYLE="font-weight: medium">List
+model to use in junction the JDnDList. Contains some useful tools.</SPAN></FONT></FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Monospace"><FONT SIZE=2><B>package
+org.gvsig.gui.geans.listeners</B></FONT></FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm"><FONT FACE="Times, serif"><FONT SIZE=2><B>BeanListener.java:
+</B><SPAN STYLE="font-weight: medium">Defines an object which listens
+for changes in the value produced by a bean. It is used, for example,
+in</SPAN><B> DefaultBean.java.</B></FONT></FONT></P>
+<P STYLE="margin-bottom: 0cm"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm; font-weight: medium"><BR>
+</P>
+<P STYLE="margin-bottom: 0cm; font-weight: medium"><FONT FACE="Courier, monospace"><FONT SIZE=2>by
+Jaume Dom&iacute;nguez Faus (:S)</FONT></FONT></P>
+</BODY>
+</HTML>
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/doc/contents.html
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native
Added: svn:executable
   + *

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/DefaultColorTables.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/DefaultColorTables.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/DefaultColorTables.java	(revision 38348)
@@ -0,0 +1,112 @@
+package org.gvsig.gui;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+public class DefaultColorTables implements IColorTables {
+
+	private class DefaultColorTablePaint implements IColorTablePaint {
+
+		private class ColorItem {
+			Color color = null;
+			double value =0;
+			
+			ColorItem(double value, Color color) {
+				this.color = color;
+				this.value = value;
+			}
+			
+			Color getColor() {
+				return color;
+			}
+			
+			double getValue() {
+				return value;
+			}
+		}
+		
+		List<ColorItem> colorItems = null;
+		
+		DefaultColorTablePaint() {
+			this.colorItems = new ArrayList<DefaultColorTables.DefaultColorTablePaint.ColorItem>();
+			int n = 256;
+			for( int i=0; i<n; i++) {
+	                Color color = Color.getHSBColor((float) i / (float) n, 0.85f, 1.0f);
+	                this.colorItems.add( new ColorItem(i,color));
+	        }
+
+		}
+		
+		public void setInterpolated(boolean value) {
+			// This method is not supported, ignore it
+		}
+
+		public Color[] getColors() {
+			Color[] colors = new Color[colorItems.size()];
+			for (int i = 0; i < colors.length; i++) {
+				colors[i] = ((ColorItem) colorItems.get(i)).getColor();
+			}
+			return colors;	
+		}
+
+		public void paint(Graphics2D g, boolean isSelected, Rectangle bounds) {
+			Rectangle area = bounds;
+			area.y=0;
+			area.x=0;
+			int x1 = area.x;
+			int x2 = area.x + area.width - 1;
+
+			if( this.colorItems.size() > 0 ) {
+				double min = colorItems.get(0).getValue();
+                double max = colorItems.get(colorItems.size() - 1).getValue();
+                for (int i = area.x; i < (area.x + area.width - 1); i++) {
+					double pos = min + (((max - min) * (i - area.x)) / (area.width - 2));
+					g.setColor(this.colorItems.get((int) pos).getColor());
+					g.drawLine(i, area.y, i, area.y + area.height);
+				}
+			} else {
+				g.setColor(new Color(224, 224, 224));
+				g.fillRect(x1, area.y, x2 - x1, area.height - 1);
+			}
+			if (isSelected) {
+				g.setColor(Color.black);
+			} else {
+				g.setColor(new Color(96, 96, 96));
+			}
+			g.drawRect(x1, area.y, x2 - x1, area.height - 1);
+		}
+
+		public String getTableName() {
+			return "Default colot table";
+		}
+		
+	}
+	
+	private List<IColorTablePaint> colorTables = null;
+	
+	public DefaultColorTables() {
+		this.colorTables = new ArrayList<IColorTables.IColorTablePaint>();
+		this.colorTables.add(new DefaultColorTablePaint());
+	}
+	
+	public void load(String palettesPath, boolean interpolateValues) {
+		// DefaultColorTables don't support load of color tables.
+	}
+
+	public IColorTablePaint get(int i) {
+		return this.colorTables.get(i);
+	}
+
+	public int size() {
+		return this.colorTables.size();
+	}
+
+	public Iterator iterator() {
+		return this.colorTables.iterator();
+	}
+	
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/DefaultColorTables.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/IColorTables.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/IColorTables.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/IColorTables.java	(revision 38348)
@@ -0,0 +1,43 @@
+package org.gvsig.gui;
+
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.util.Iterator;
+
+
+public interface IColorTables {
+
+	public abstract void load(String palettesPath, boolean interpolateValues);
+
+	public abstract IColorTablePaint get(int i);
+
+	public abstract int size();
+
+	public abstract Iterator iterator();
+
+	public interface IColorTablePaint {
+
+		/**
+		 * Defines if the values are interpolated between them or not.
+		 *
+		 * @param value
+		 */
+		public abstract void setInterpolated(boolean value);
+
+		public abstract Color[] getColors();
+
+		/**
+		 * Method to paint the color table
+		 *
+		 * @param g
+		 * @param isSelected
+		 */
+		public abstract void paint(Graphics2D g, boolean isSelected,
+				Rectangle bounds);
+
+		public abstract String getTableName();
+
+	}
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/IColorTables.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/listeners/GraphicListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/listeners/GraphicListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/listeners/GraphicListener.java	(revision 38348)
@@ -0,0 +1,99 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.graphic.listeners;
+
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+
+import javax.swing.JLabel;
+/**
+ * @author Nacho Brodin <brodin_ign@gva.es>
+ */
+public class GraphicListener implements MouseListener, MouseMotionListener {
+	private boolean move  = false;
+	private JLabel  left  = null;
+	private JLabel  right = null;
+
+	public GraphicListener() {
+	}
+
+	public void setLabels(JLabel left, JLabel right){
+		this.left = left;
+		this.right = right;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
+	 */
+	public void mouseDragged(MouseEvent e) {
+		if (move) {
+			if (e.getSource() == left)
+				left.setLocation(left.getLocation().x + e.getX(), left.getLocation().y);
+
+			if (e.getSource() == right)
+				right.setLocation(right.getLocation().x + e.getX(), right.getLocation().y);
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+	 */
+	public void mousePressed(MouseEvent e) {
+		move = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
+	 */
+	public void mouseReleased(MouseEvent e) {
+		move = false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+	 */
+	public void mouseClicked(MouseEvent e) {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
+	 */
+	public void mouseEntered(MouseEvent e) {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
+	 */
+	public void mouseExited(MouseEvent e) {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
+	 */
+	public void mouseMoved(MouseEvent e) {
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/listeners/GraphicListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native
Added: svn:executable
   + *

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicChartPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicChartPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicChartPanel.java	(revision 38348)
@@ -0,0 +1,205 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.graphic;
+
+import java.awt.BasicStroke;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Image;
+
+import javax.swing.BorderFactory;
+import javax.swing.ImageIcon;
+import javax.swing.JPanel;
+
+import org.jfree.chart.ChartFactory;
+import org.jfree.chart.ChartPanel;
+import org.jfree.chart.JFreeChart;
+import org.jfree.chart.plot.Plot;
+import org.jfree.chart.plot.PlotOrientation;
+import org.jfree.chart.plot.XYPlot;
+import org.jfree.data.xy.XYSeries;
+import org.jfree.data.xy.XYSeriesCollection;
+/**
+ * Componente gr�fico de JFree
+ * 
+ * @version 05/04/2007
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class GraphicChartPanel extends JPanel {
+	private static final long serialVersionUID = 7328137487119964665L;
+	private JFreeChart         chart       = null;
+	private ChartPanel         jPanelChart = null;
+	private XYSeries           series[]    = new XYSeries[0];
+	private XYSeriesCollection dataset     = null;
+
+	private int                viewType    = 0;
+
+	public GraphicChartPanel() {
+		dataset = new XYSeriesCollection();
+
+		createChart();
+
+		initialize();
+
+		Plot plot = this.jPanelChart.getChart().getPlot();
+		plot.setOutlineStroke(new BasicStroke(1));
+		plot.setOutlinePaint(Color.black);
+
+		chart.setBackgroundPaint(Color.white);
+		plot.setBackgroundPaint(new Color(245, 245, 245));
+	}
+
+	/**
+	 * This method initializes this
+	 */
+	private void initialize() {
+		this.setLayout(new BorderLayout());
+		this.add(getChart(), BorderLayout.CENTER);
+	}
+
+	/**
+	 * @return
+	 */
+	public ChartPanel getChart() {
+		if (jPanelChart == null) {
+			jPanelChart = new ChartPanel(chart);
+			jPanelChart.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+		}
+		return jPanelChart;
+	}
+
+	/**
+	 * Creates a chart.
+	 * @param dataset the dataset.
+	 * @return A chart.
+	 */
+	private void createChart() {
+		chart = ChartFactory.createXYLineChart(null, null, null, dataset,
+							PlotOrientation.VERTICAL, false, true, true);
+
+		// Definir la lista de colores
+		XYPlot plot = chart.getXYPlot();
+		plot.getRenderer().setSeriesPaint(0, Color.red);
+		plot.getRenderer().setSeriesPaint(1, Color.green);
+		plot.getRenderer().setSeriesPaint(2, Color.blue);
+		plot.getRenderer().setSeriesPaint(3, Color.cyan);
+		plot.getRenderer().setSeriesPaint(4, Color.black);
+		plot.getRenderer().setSeriesPaint(5, Color.darkGray);
+		plot.getRenderer().setSeriesPaint(6, Color.gray);
+		plot.getRenderer().setSeriesPaint(7, Color.magenta);
+		plot.getRenderer().setSeriesPaint(8, Color.yellow);
+		plot.getRenderer().setSeriesPaint(9, Color.orange);
+
+		Image img = new ImageIcon(getClass().getResource("images/splash.png")).getImage();
+		plot.setBackgroundPaint(null);
+		plot.setBackgroundImageAlpha(0.18f);
+		plot.setBackgroundImage(img);
+	}
+
+	/**
+	 * Asigna nuevos valores para la gr�fica
+	 * @param values Matriz de [n�mero de gr�ficas][Valores por gr�fica]
+	 */
+	public void setNewChart(int[][] values, String names[]) {
+		series = new XYSeries[values.length];
+		for (int iGraf = 0; iGraf < values.length; iGraf++) {
+			series[iGraf] = new XYSeries(names[iGraf]);
+			for (int i = 0; i < values[iGraf].length; i++) {
+				series[iGraf].add(new Integer(i), new Integer(values[iGraf][i]));
+			}
+		}
+		reloadGraphic();
+	}
+
+	/**
+	 * Asigna nuevos valores para la gr�fica
+	 * @param values Matriz de [n�mero de gr�ficas][Valores por gr�fica]
+	 */
+	public void setNewChart(double[][][] values, String names[]) {
+		series = new XYSeries[values.length];
+		for (int iGraf = 0; iGraf < values.length; iGraf++) {
+			series[iGraf] = new XYSeries(names[iGraf]);
+			for (int i = 0; i < values[iGraf].length; i++) {
+				series[iGraf].add(values[iGraf][i][0], values[iGraf][i][1]);
+			}
+		}
+		reloadGraphic();
+	}
+
+	/**
+	 * Define el tipo de visualizacion para la grafica.
+	 * Valores: 0 - Normal, 1 - Acumulado, 2 - Logaritmico
+	 * @param type
+	 */
+	public void setViewType(int type) {
+		this.viewType = type;
+		reloadGraphic();
+	}
+
+	/**
+	 * Recarga los datos de la grafica dependiendo del tipo de visualizacion
+	 */
+	private void reloadGraphic() {
+		dataset.removeAllSeries();
+		switch (viewType) {
+			case 0: // Normal
+				for (int i = 0; i < series.length; i++)
+					dataset.addSeries(series[i]);
+				break;
+			case 1: // Acumulado
+				XYSeries[] seriesAcum = new XYSeries[series.length];
+				for (int i = 0; i < series.length; i++) {
+					seriesAcum[i] = new XYSeries(series[i].getKey());
+					double total = 0;
+					for (int j = 0; j < series[i].getItemCount(); j++) {
+						total += series[i].getY(j).doubleValue();
+						seriesAcum[i].add(series[i].getX(j), total);
+					}
+					dataset.addSeries(seriesAcum[i]);
+				}
+				break;
+			case 2: // Logaritmico
+				XYSeries[] seriesLog = new XYSeries[series.length];
+
+				double minim = Double.MAX_VALUE;
+				for (int i = 0; i < series.length; i++)
+					for (int j = 0; j < series[i].getItemCount(); j++)
+						if (minim > series[i].getY(j).doubleValue())
+							minim = series[i].getY(j).doubleValue();
+				
+				for (int i = 0; i < series.length; i++) {
+					seriesLog[i] = new XYSeries(series[i].getKey());
+					for (int j = 0; j < series[i].getItemCount(); j++)
+						seriesLog[i].add(series[i].getX(j), java.lang.Math.log(series[i].getY(j).doubleValue() - minim + 1.0));
+					dataset.addSeries(seriesLog[i]);
+				}
+				break;
+		}
+		jPanelChart.repaint();
+	}
+
+	/**
+	 * Limpia la gr�fica
+	 */
+	public void cleanChart() {
+		series = new XYSeries[0];
+		reloadGraphic();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicChartPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicEvent.java	(revision 38348)
@@ -0,0 +1,29 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.graphic;
+
+import java.util.EventObject;
+
+public class GraphicEvent extends EventObject {
+	private static final long serialVersionUID = -684281519921935004L;
+
+	public GraphicEvent(Object source) {
+		super(source);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicEvent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/BoxesPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/BoxesPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/BoxesPanel.java	(revision 38348)
@@ -0,0 +1,131 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.graphic;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.textincreaser.TextIncreaserContainer;
+
+/**
+ *
+ * Nacho Brodin (brodin_ign@gva.es)
+ */
+
+public class BoxesPanel extends JPanel {
+	private static final long serialVersionUID = -4117483555280497312L;
+	private JPanel pLeft = null;
+	private JPanel pRight = null;
+	private TextIncreaserContainer controlLeft = null;
+	private TextIncreaserContainer controlRight = null;
+	public BoxesPanel() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * This method initializes this
+	 *
+	 */
+	private void initialize() {
+		this.setLayout(new BorderLayout());
+		this.add(getPLeft(), BorderLayout.WEST);
+		this.add(getPRight(), BorderLayout.EAST);
+	}
+
+	/**
+	 * This method initializes jPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getPLeft() {
+		if (pLeft == null) {
+			FlowLayout flowLayout1 = new FlowLayout();
+			flowLayout1.setHgap(0);
+			flowLayout1.setAlignment(FlowLayout.LEFT);
+			flowLayout1.setVgap(0);
+			pLeft = new JPanel();
+			pLeft.setLayout(flowLayout1);
+			pLeft.add(getControlLeft(), null);
+			pLeft.setPreferredSize(new Dimension(100, 30));
+		}
+		return pLeft;
+	}
+
+	/**
+	 * This method initializes jPanel1
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getPRight() {
+		if (pRight == null) {
+			FlowLayout flowLayout2 = new FlowLayout();
+			flowLayout2.setHgap(0);
+			flowLayout2.setAlignment(FlowLayout.RIGHT);
+			flowLayout2.setVgap(0);
+			pRight = new JPanel();
+			pRight.setLayout(flowLayout2);
+			pRight.add(getControlRight(), null);
+			pRight.setPreferredSize(new Dimension(100, 30));
+		}
+		return pRight;
+	}
+
+	/**
+	 * This method initializes jPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	public TextIncreaserContainer getControlLeft() {
+		if (controlLeft == null) {
+			controlLeft = new TextIncreaserContainer(70, 0, 100, 0.0, true);
+		}
+		return controlLeft;
+	}
+
+	/**
+	 * This method initializes jPanel1
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	public TextIncreaserContainer getControlRight() {
+		if (controlRight == null) {
+			controlRight = new TextIncreaserContainer(70, 0, 100, 100.0, false);
+		}
+		return controlRight;
+	}
+
+	//****************************************************
+	//M�TODOS DEL CONTROL
+
+	/**
+	 * Obtiene el valor de los controles.
+	 * @return Array con los valores de ambos controles. El primer valor del array es el control de la derecha
+	 * y el segundo el de la izquierda.
+	 */
+	public double[] getBoxesValues(){
+		double[] v = new double[2];
+		v[0] = getControlRight().getValue();
+		v[1] = getControlLeft().getValue();
+		return v;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/BoxesPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicContainer.java	(revision 38348)
@@ -0,0 +1,223 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.graphic;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.doubleslider.DoubleSlider;
+import org.gvsig.gui.beans.doubleslider.DoubleSliderEvent;
+import org.gvsig.gui.beans.doubleslider.DoubleSliderListener;
+import org.gvsig.gui.beans.textincreaser.TextIncreaserEvent;
+import org.gvsig.gui.beans.textincreaser.TextIncreaserListener;
+/**
+ * Control para el manejo de un gr�fico.
+ * 
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class GraphicContainer extends JPanel implements DoubleSliderListener, TextIncreaserListener {
+	private static final long serialVersionUID = -6230083498345786500L;
+	private ArrayList actionCommandListeners = new ArrayList();
+
+	private JPanel            pGeneral         = null;
+	private GraphicChartPanel pGraphic         = null;
+	private JPanel            panelSlider      = null;
+	private BoxesPanel        pBoxes           = null;
+	private DoubleSlider      doubleSlider     = null;
+
+	private boolean           bDoCallListeners = true;
+	static private int        eventId          = Integer.MIN_VALUE;
+
+	public GraphicContainer() {
+		initialize();
+	}
+
+	public GraphicContainer(boolean showSlider) {
+		getPDoubleSlider().setVisible(showSlider);
+		initialize();
+	}
+
+
+	private void initialize() {
+		this.setLayout(new BorderLayout(0, 4));
+		this.add(getPGraphic(), BorderLayout.CENTER);
+		this.add(getPGeneral(), BorderLayout.SOUTH);
+	}
+
+	/**
+	 * This method initializes jPanel1	
+	 * 	
+	 * @return javax.swing.JPanel	
+	 */
+	private JPanel getPGeneral() {
+		if (pGeneral == null) {
+			pGeneral = new JPanel();
+			pGeneral.setLayout(new BorderLayout(0, 2));
+			getPDoubleSlider().setPreferredSize(new Dimension(50, 25));
+			pGeneral.add(getPDoubleSlider(), BorderLayout.NORTH);
+			pGeneral.add(getPBoxes(), BorderLayout.SOUTH);
+		}
+		return pGeneral;
+	}
+
+	/**
+	 * This method initializes jPanel1	
+	 * 	
+	 * @return javax.swing.JPanel	
+	 */
+	public GraphicChartPanel getPGraphic() {
+		if (pGraphic == null) {
+			pGraphic = new GraphicChartPanel();
+		}
+		return pGraphic;
+	}
+
+	/**
+	 * This method initializes jPanel1	
+	 * 	
+	 * @return javax.swing.JPanel	
+	 */
+	private JComponent getPDoubleSlider() {
+		if (panelSlider == null) {
+			panelSlider = new JPanel();
+			panelSlider.setLayout(new BorderLayout());
+			panelSlider.add(getDoubleSlider(), BorderLayout.CENTER);
+		}
+		return panelSlider;
+	}
+	
+	/**
+	 * Devuelve el componente DoubleSlider
+	 * @return
+	 */
+	private DoubleSlider getDoubleSlider() {
+		if (doubleSlider == null) {
+			doubleSlider = new DoubleSlider();
+			doubleSlider.addValueChangedListener(this);
+		}
+		return doubleSlider;
+	}
+
+	/**
+	 * This method initializes jPanel1	
+	 * 	
+	 * @return javax.swing.JPanel	
+	 */
+	private BoxesPanel getPBoxes() {
+		if (pBoxes == null) {
+			pBoxes = new BoxesPanel();
+			pBoxes.getControlLeft().addValueChangedListener(this);
+			pBoxes.getControlRight().addValueChangedListener(this);
+		}
+		return pBoxes;
+	}
+
+	//****************************************************
+	//M�TODOS DEL CONTROL
+
+	public double getX1() {
+		double value = getPBoxes().getControlLeft().getValue();
+		
+		if (value > 100)
+			value = 100;
+
+		if (value < 0)
+			value = 0;
+
+		return value;
+	}
+
+	public double getX2() {
+		double value = getPBoxes().getControlRight().getValue();
+
+		if (value > 100)
+			value = 100;
+
+		if (value < 0)
+			value = 0;
+
+		return value;
+	}
+
+	public void actionValueChanged(TextIncreaserEvent e) {
+		if (e.getSource() == getPBoxes().getControlLeft()) {
+			if (getPBoxes().getControlLeft().getValue() > getPBoxes().getControlRight().getValue())
+				getPBoxes().getControlRight().setValue(getPBoxes().getControlLeft().getValue());
+		}
+		if (e.getSource() == getPBoxes().getControlRight()) {
+			if (getPBoxes().getControlRight().getValue() < getPBoxes().getControlLeft().getValue())
+				getPBoxes().getControlLeft().setValue(getPBoxes().getControlRight().getValue());
+		}
+		getDoubleSlider().setX1((int) getPBoxes().getControlLeft().getValue());
+		getDoubleSlider().setX2((int) getPBoxes().getControlRight().getValue());
+		callValueChangedListeners();
+	}
+
+	public void addValueChangedListener(GraphicListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	public void removeValueChangedListener(GraphicListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	private void callValueChangedListeners() {
+		if (!bDoCallListeners)
+			return;
+		Iterator acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			GraphicListener listener = (GraphicListener) acIterator.next();
+			listener.actionValueChanged(new GraphicEvent(this));
+		}
+		eventId++;
+	}
+
+	public void setBandVisible(int band, boolean visible) {
+		getPGraphic().getChart().getChart().getXYPlot().getRenderer().setSeriesVisible(band, Boolean.valueOf(visible));
+	}
+
+	public void setBandColor(int band, Color color) {
+		getPGraphic().getChart().getChart().getXYPlot().getRenderer().setSeriesPaint(band, color);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.doubleslider.DoubleSliderListener#actionValueChanged(java.util.EventObject)
+	 */
+	public void actionValueChanged(DoubleSliderEvent e) {
+		getPBoxes().getControlLeft().setValue(((DoubleSlider) e.getSource()).getX1());
+		getPBoxes().getControlRight().setValue(((DoubleSlider) e.getSource()).getX2());
+		callValueChangedListeners();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.doubleslider.DoubleSliderListener#actionValueDragged(java.util.EventObject)
+	 */
+	public void actionValueDragged(DoubleSliderEvent e) {
+		actionValueChanged(e);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicContainer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicListener.java	(revision 38348)
@@ -0,0 +1,25 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.graphic;
+
+import java.util.EventListener;
+
+public interface GraphicListener extends EventListener {
+  public void actionValueChanged(GraphicEvent e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/images/splash.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/graphic/images/splash.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanel.java	(revision 38348)
@@ -0,0 +1,368 @@
+package org.gvsig.gui.beans.buttonspanel;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.swing.JButton;
+
+/**
+ * <code>ButtonsPanel</code> ofrece un widget con un conjunto de botones
+ * preestablecidos, aunque tambi�n se pueden a�adir botones con el m�todo
+ * {@link #addButton(String, int)}
+ *
+ * @version 09/05/2008
+ *
+ * @author BorSanZa - Borja Sanchez Zamorano (borja.sanchez@iver.es)
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class ButtonsPanel extends JPanel {
+	private static final long serialVersionUID = -1660559792086305063L;
+
+	private ArrayList<ButtonsPanelListener> actionCommandListeners = new ArrayList<ButtonsPanelListener>();
+	private ArrayList<JButton> buttonsList = new ArrayList<JButton>();
+
+	static private int      eventId                   = Integer.MIN_VALUE;
+
+	public static final int BUTTON_ACCEPT             = 1;
+	public static final int BUTTON_CANCEL             = 2;
+	public static final int BUTTON_APPLY              = 3;
+	public static final int BUTTON_YES                = 4;
+	public static final int BUTTON_NO                 = 5;
+	public static final int BUTTON_CLOSE              = 6;
+	public static final int BUTTON_EXIT               = 7;
+	public static final int BUTTON_SEEDETAILS         = 8;
+	public static final int BUTTON_HIDEDETAILS        = 9;
+	public static final int BUTTON_PAUSE              = 10;
+	public static final int BUTTON_RESTART            = 11;
+	public static final int BUTTON_SAVE               = 12;
+	/**
+	 * Sirve para cuando se crean botones nuevos, saber el �ltimo n�mero usado
+	 * internamente, as� '<code>new_id = BUTTON_LAST + 1;</code>' podr�a ser
+	 * el �ndice del nuevo bot�n.
+	 */
+	public static final int BUTTON_LAST               = 12;
+	public static final int BUTTONS_ACCEPT            = 1;
+	public static final int BUTTONS_ACCEPTCANCEL      = 2;
+	public static final int BUTTONS_ACCEPTCANCELAPPLY = 3;
+	public static final int BUTTONS_CANCEL            = 4;
+	public static final int BUTTONS_YESNO             = 5;
+	public static final int BUTTONS_CLOSE             = 6;
+	public static final int BUTTONS_EXIT              = 7;
+	public static final int BUTTONS_NONE              = 8;
+	public static final int BUTTONS_APPLYCLOSE        = 9;
+
+	/**
+	 * Crea un ButtonsPanel con un Layout por defecto.
+	 */
+	public ButtonsPanel() {
+		initialize();
+	}
+
+	private void initialize() {
+		setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 2, 0));
+		setBorder(javax.swing.BorderFactory.createEmptyBorder(4, 0, 0, 0));
+	}
+	/**
+	 * Crea un ButtonsPanel con un Layout por defecto.
+	 * @param items Que botones vamos a usar en la creaci�n.
+	 */
+	public ButtonsPanel(int items) {
+		initialize();
+		switch (items) {
+			case BUTTONS_ACCEPT:
+				addAccept();
+				break;
+			case BUTTONS_ACCEPTCANCEL:
+				addAccept();
+				addCancel();
+				break;
+			case BUTTONS_ACCEPTCANCELAPPLY:
+				addApply();
+				addAccept();
+				addCancel();
+				break;
+			case BUTTONS_APPLYCLOSE:
+				addApply();
+				addClose();
+				break;
+			case BUTTONS_CANCEL:
+				addCancel();
+				break;
+			case BUTTONS_YESNO:
+				addYes();
+				addNo();
+				break;
+			case BUTTONS_CLOSE:
+				addClose();
+				break;
+			case BUTTONS_EXIT:
+				addExit();
+				break;
+			case BUTTONS_NONE:
+				break;
+		}
+	}
+
+	/**
+	 * A�adir el disparador de cuando se pulsa un bot�n.
+	 * @param listener
+	 */
+	public void addButtonPressedListener(ButtonsPanelListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Devuelve el array de listeners del componente
+	 * @return
+	 */
+	public Object[] getButtonPressedListeners() {
+		return actionCommandListeners.toArray();
+	}
+
+	/**
+	 * Borrar el disparador de eventos de los botones.
+	 * @param listener
+	 */
+	public void removeButtonPressedListener(ButtonsPanelListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	private void callActionCommandListeners(int buttonID) {
+		Iterator<ButtonsPanelListener> acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			ButtonsPanelListener listener = (ButtonsPanelListener) acIterator.next();
+			listener.actionButtonPressed(new ButtonsPanelEvent(this, buttonID));
+		}
+		eventId++;
+	}
+
+	/**
+	 * A�adir el boton Aceptar.
+	 */
+	public void addAccept() {
+		addButton(Messages.getText("aceptar"), BUTTON_ACCEPT);
+	}
+
+	/**
+	 * A�adir el boton Guardar.
+	 */
+	public void addSave() {
+		addButton(Messages.getText("guardar"), BUTTON_SAVE);
+	}
+
+	/**
+	 * A�adir el boton Cancelar.
+	 */
+	public void addCancel() {
+		addButton(Messages.getText("cancelar"), BUTTON_CANCEL);
+	}
+
+	/**
+	 * A�adir el boton S�.
+	 */
+	public void addYes() {
+		addButton(Messages.getText("si"), BUTTON_YES);
+	}
+
+	/**
+	 * A�adir el boton No.
+	 */
+	public void addNo() {
+		addButton(Messages.getText("no"), BUTTON_NO);
+	}
+
+	/**
+	 * A�adir el boton Aplicar.
+	 */
+	public void addApply() {
+		addButton(Messages.getText("aplicar"), BUTTON_APPLY);
+	}
+
+	/**
+	 * A�adir el boton Cerrar.
+	 */
+	public void addClose() {
+		addButton(Messages.getText("cerrar"), BUTTON_CLOSE);
+	}
+
+	/**
+	 * A�adir el boton Salir.
+	 */
+	public void addExit() {
+		addButton(Messages.getText("salir"), BUTTON_EXIT);
+	}
+
+	/**
+	 * A�adir el boton Ver detalles.
+	 */
+	public void addSeeDetails() {
+		addButton(Messages.getText("verdetalles"), BUTTON_SEEDETAILS);
+	}
+
+	/**
+	 * A�adir el boton Ocultar detalles.
+	 */
+	public void addHideDetails() {
+		addButton(Messages.getText("ocultardetalles"), BUTTON_HIDEDETAILS);
+	}
+
+	/**
+	 * A�adir el boton Pausar.
+	 */
+	public void addPause() {
+		addButton(Messages.getText("pausar"), BUTTON_PAUSE);
+	}
+
+	/**
+	 * A�adir el boton Reanudar.
+	 */
+	public void addRestart() {
+		addButton(Messages.getText("reanudar"), BUTTON_RESTART);
+	}
+
+	/**
+	 * A�adimos un bot�n definido por el usuario.
+	 *
+	 * @param text Texto que contendr� el bot�n
+	 * @param id Entero para identificar los eventos del bot�n
+	 */
+	public void addButton(String text, int id) {
+		JButton button = new JButton();
+		button.setText(text);
+
+		buttonsList.add(button);
+		button.setActionCommand(id + "");
+		button.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				callActionCommandListeners(Integer.parseInt(e.getActionCommand()));
+			}
+		});
+
+		add(button);
+	}
+
+	/**
+	 * Obtener un bot�n por su Entero
+	 * @param id N�mero del disparador del bot�n
+	 * @return El bot�n especificado o <code>null</code> si no se encontr� el bot�n.
+	 */
+	public JButton getButton(int id) {
+		Iterator<JButton> acIterator = buttonsList.iterator();
+		while (acIterator.hasNext()) {
+			JButton button = (JButton) acIterator.next();
+			if (Integer.parseInt(button.getActionCommand()) == id)
+				return button;
+		}
+		return null;
+	}
+
+	/**
+	 * <p>Removes the button identified by <code>id</code>.</p>
+	 * 
+	 * @param id identifier of the button
+	 * @return <code>true</code> if has removed the button; otherwise <code>false</code>
+	 */
+	public boolean removeButton(int id) {
+		String b_text = getButtonText(id);
+		
+		Iterator<JButton> acIterator = buttonsList.iterator();
+		while (acIterator.hasNext()) {
+			JButton button = (JButton) acIterator.next();
+			if (button.getText().compareTo(b_text) == 0) {
+				buttonsList.remove(button);
+				return true;
+			}
+		}
+		
+		return false;
+	}
+	
+	/**
+	 * <p>Returns the text of the button identified by <code>id</code>.</p>
+	 * 
+	 * @param id identifier of the button
+	 * 
+	 * @return text of the identified button
+	 */
+	protected String getButtonText(int id) {
+		switch (id) {
+			case BUTTON_ACCEPT:
+				return Messages.getText("aceptar");
+			case BUTTON_CANCEL:
+				return Messages.getText("cancelar");
+			case BUTTON_APPLY:
+				return Messages.getText("aplicar");
+			case BUTTON_YES:
+				return Messages.getText("si");
+			case BUTTON_NO:
+				return Messages.getText("no");
+			case BUTTON_CLOSE:
+				return Messages.getText("cerrar");
+			case BUTTON_EXIT:
+				return Messages.getText("salir");
+			case BUTTON_SEEDETAILS:
+				return Messages.getText("verdetalles");
+			case BUTTON_HIDEDETAILS:
+				return Messages.getText("ocultardetalles");
+			case BUTTON_PAUSE:
+				return Messages.getText("pausar");
+			case BUTTON_RESTART:
+				return Messages.getText("reanudar");
+			case BUTTON_SAVE:
+				return Messages.getText("guardar");
+		}
+
+		return null;
+	}
+
+	/**
+	 * <p>Enables (or disables) the button identified by <code>id</code>.</p>
+	 * 
+	 * @param id identifier of the button
+	 * @param b <code>true</code> to enable the button, otherwise <code>false</code>
+	 * 
+	 * @return <code>true</code> if there was a button of that kind in this group, otherwise <code>false</code>
+	 */
+	public boolean setEnabled(int id, boolean b) {
+		String b_text = getButtonText(id);
+		
+		Iterator<JButton> acIterator = buttonsList.iterator();
+		while (acIterator.hasNext()) {
+			JButton button = (JButton) acIterator.next();
+			if (button.getText().compareTo(b_text) == 0) {
+				button.setEnabled(b);
+				return true;
+			}
+		}
+		
+		return false;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanelEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanelEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanelEvent.java	(revision 38348)
@@ -0,0 +1,46 @@
+package org.gvsig.gui.beans.buttonspanel;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+import java.util.EventObject;
+
+/**
+ *
+ * @version 09/05/2008
+ *
+ * @author BorSanZa - Borja Sanchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ButtonsPanelEvent extends EventObject {
+	private static final long serialVersionUID = 4275588038151358375L;
+
+	int button = 0;
+
+	public ButtonsPanelEvent(Object source, int button) {
+		super(source);
+		this.button = button;
+	}
+	
+	public int getButton() {
+		return button;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanelEvent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanelListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanelListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanelListener.java	(revision 38348)
@@ -0,0 +1,35 @@
+package org.gvsig.gui.beans.buttonspanel;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ *  
+ */
+
+import java.util.EventListener;
+
+/**
+ *
+ * @version 09/05/2008
+ *
+ * @author BorSanZa - Borja Sanchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface ButtonsPanelListener extends EventListener {
+  public void actionButtonPressed(ButtonsPanelEvent e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/ButtonsPanelListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/IButtonsPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/IButtonsPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonspanel/IButtonsPanel.java	(revision 38348)
@@ -0,0 +1,263 @@
+package org.gvsig.gui.beans.buttonspanel;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+/**
+ * <p>Interface for adding support to enable/disable the necessary buttons of a {@link ButtonsPanel ButtonsPanel} component.</p>
+ * <p>For example, if our panel has only the <i>accept</i> and <i>cancel</i> buttons, 
+ *  will only need to have implemented the methods related with them. And, even, only one (the set...) of them,
+ *   if, for instance, we don't need to know if a particular button is or isn't enabled.</p>    
+ * 
+ * @version 09/05/2008
+ *
+ * @author BorSanZa - Borja Sanchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface IButtonsPanel {
+	/**
+	 * <p>Enables (or disables) the <i>accept button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>accept button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledAcceptButton()
+	 */
+	public void setEnabledAcceptButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>accept button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>accept button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledAcceptButton(boolean)
+	 */
+	public boolean isEnabledAcceptButton();
+
+	/**
+	 * <p>Enables (or disables) the <i>cancel button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>cancel button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledCancelButton()
+	 */
+	public void setEnabledCancelButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>cancel button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>cancel button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledCancelButton(boolean)
+	 */
+	public boolean isEnabledCancelButton();
+
+	/**
+	 * <p>Enables (or disables) the <i>apply button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>apply button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledApplyButton()
+	 */
+	public void setEnabledApplyButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>apply button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>apply button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledApplyButton(boolean)
+	 */
+	public boolean isEnabledApplyButton();
+
+	/**
+	 * <p>Enables (or disables) the <i>yes button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>yes button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledYesButton()
+	 */
+	public void setEnabledYesButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>yes button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>yes button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledYesButton(boolean)
+	 */
+	public boolean isEnabledYesButton();
+
+	/**
+	 * <p>Enables (or disables) the <i>no button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>no button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledNoButton()
+	 */
+	public void setEnabledNoButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>no button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>no button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledNoButton(boolean)
+	 */
+	public boolean isEnabledNoButton();
+
+	/**
+	 * <p>Enables (or disables) the <i>close button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>close button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledCloseButton()
+	 */
+	public void setEnabledCloseButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>close button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>close button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledCloseButton(boolean)
+	 */
+	public boolean isEnabledCloseButton();
+
+	/**
+	 * <p>Enables (or disables) the <i>exit button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>exit button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledExitButton()
+	 */
+	public void setEnabledExitButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>exit button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>exit button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledExitButton(boolean)
+	 */
+	public boolean isEnabledExitButton();
+
+	/**
+	 * <p>Enables (or disables) the <i>see details button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>see details button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledSeeDetailsButton()
+	 */
+	public void setEnabledSeeDetailsButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>see details button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>see details button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledSeeDetailsButton(boolean)
+	 */
+	public boolean isEnabledSeeDetailsButton();
+
+	/**
+	 * <p>Enables (or disables) the <i>hide details button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>hide details button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledHideDetailsButton()
+	 */
+	public void setEnabledHideDetailsButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>hide details button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>hide details button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledHideDetailsButton(boolean)
+	 */
+	public boolean isEnabledHideDetailsButton();
+
+	/**
+	 * <p>Enables (or disables) the <i>pause button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>pause button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledPauseButton()
+	 */
+	public void setEnabledPauseButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>pause button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>pause button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledPauseButton(boolean)
+	 */
+	public boolean isEnabledPauseButton();
+
+	/**
+	 * <p>Enables (or disables) the <i>restart button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>restart button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledRestartButton()
+	 */
+	public void setEnabledRestartButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>restart button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>restart button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledRestartButton(boolean)
+	 */
+	public boolean isEnabledRestartButton();
+
+	/**
+	 * <p>Enables (or disables) the <i>save button</i>.</p>
+	 * 
+	 * @param b <code>true</code> to enable the <i>save button</i>, otherwise <code>false</code>
+	 * 
+	 * @see #isEnabledSaveButton()
+	 */
+	public void setEnabledSaveButton(boolean b);
+
+	/**
+	 * <p>Determines whether the <i>save button</i> is enabled. An enabled component can respond
+	 *  to user input and generate events.</p>
+	 * 
+	 * @return <code>true</code> if the <i>save button</i> is enabled, <code>false</code> otherwise
+	 * 
+	 * @see #setEnabledSaveButton(boolean)
+	 */
+	public boolean isEnabledSaveButton();
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/Pager.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/Pager.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/Pager.java	(revision 38348)
@@ -0,0 +1,507 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.2  2007-09-12 16:28:23  bsanchez
+ * *** empty log message ***
+ *
+ * Revision 1.1  2007/08/20 08:34:45  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.1  2006/03/22 11:18:29  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.4  2006/02/28 15:25:14  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.2.2.6  2006/02/23 10:36:30  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.2.2.5  2006/02/16 10:36:41  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.1  2006/02/16 09:09:05  caballero
+ * PAger de Jaume
+ *
+ * Revision 1.2.2.4  2006/02/10 13:23:18  jaume
+ * page value can now be set externally
+ *
+ * Revision 1.2.2.3  2006/01/31 16:25:24  jaume
+ * correcciones de bugs
+ *
+ * Revision 1.3  2006/01/26 16:07:14  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.2.2.1  2006/01/26 12:59:32  jaume
+ * 0.5
+ *
+ * Revision 1.2  2006/01/24 14:36:33  jaume
+ * This is the new version
+ *
+ * Revision 1.1.2.5  2006/01/19 16:09:30  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.1.2.4  2006/01/17 17:05:39  jaume
+ * fixed crazy buttons behavior :-P
+ *
+ * Revision 1.1.2.3  2006/01/17 17:01:55  jaume
+ * fixed crazy buttons behavior :-P
+ *
+ * Revision 1.1.2.2  2006/01/11 12:20:30  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.1.2.1  2006/01/10 13:11:38  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.1.2.1  2006/01/10 11:33:31  jaume
+ * Time dimension working against Jet Propulsion Laboratory's WMS server
+ *
+ * Revision 1.1.2.3  2006/01/09 18:10:38  jaume
+ * casi con el time dimension
+ *
+ * Revision 1.1.2.2  2006/01/02 18:08:01  jaume
+ * Tree de estilos
+ *
+ * Revision 1.1.2.1  2005/12/30 08:56:19  jaume
+ * *** empty log message ***
+ *
+ *
+ */
+/**
+ *
+ */
+package org.gvsig.gui.beans;
+
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JSlider;
+import javax.swing.JTextField;
+
+
+
+/**
+ * Bean that is useful to browse a very large list of data. It
+ * includes a set of navigation buttons to step ahead or behind
+ * by one or going to the first and last element of the list as
+ * well as an slider and a text field for directly focus on a
+ * list item.
+ *
+ * @author jaume dominguez faus
+ *
+ */
+public class Pager extends DefaultBean {
+  private static final long serialVersionUID = 1997136221292929382L;
+	private JPanel buttonsPanel = null;
+	private JButton btnFastBackward = null;
+	private JButton btnBackward = null;
+	private JTextField txtItemCountDisplay = null;
+	private JButton btnForward = null;
+	private JButton btnFastForward = null;
+	private JPanel sliderPanel = null;
+	private JSlider slider = null;
+	private int itemCount;
+	private int lowLimit;
+	private int currentValue = -1;
+	private int orientation;
+	private boolean refreshing = false;
+	public static int HORIZONTAL=0;
+	public static int VERTICAL=1;
+	/**
+	 * This is the default constructor. Creates a new instance of ItemBrowser with
+	 * zero items.
+	 */
+	public Pager(int orientation){
+		super();
+		this.orientation=orientation;
+		initialize(0, 0);
+	}
+	
+	/**
+	 * Creates a new instance of ItemBrowser defining its edges
+	 * @param lowIndex, the lowest edge.
+	 * @param itemCount, the highest edge.
+	 */
+	public Pager(int lowIndex, int itemCount,int orientation) {
+		super();
+		this.orientation=orientation;
+		initialize(lowIndex, itemCount);
+	}
+	
+	/**
+	 * This method initializes this
+	 *
+	 * @return void
+	 */
+	private void initialize(int lowIndex, int itemCount) {
+		setItemCount(itemCount);
+		this.lowLimit = lowIndex;
+		this.setLayout(null);
+		if (orientation==VERTICAL){
+			this.setSize(45,305);
+			this.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray,1));
+			this.setPreferredSize(new Dimension(40,300));
+		}else{
+			this.setSize(240, 50);
+			this.setPreferredSize(new Dimension(190,50));
+		}
+		
+		this.add(getSliderPanel(), null);
+		this.add(getButtonsPanel(), null);
+	}
+	
+	/**
+	 * This method initializes buttonsPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getButtonsPanel() {
+		if (buttonsPanel == null) {
+			buttonsPanel = new JPanel();
+			buttonsPanel.setLayout(null);
+			buttonsPanel.setName("buttonsPanel");
+			buttonsPanel.setPreferredSize(new java.awt.Dimension(173,50));
+			if (orientation==VERTICAL){
+				buttonsPanel.setBounds(3, 182, 35,115);
+			}else{
+				buttonsPanel.setBounds(5, 25, 240, 25);
+			}
+			
+			buttonsPanel.add(getBtnFastBackward(), null);
+			buttonsPanel.add(getBtnBackward(), null);
+			buttonsPanel.add(getTxtItemCountDisplay(), null);
+			buttonsPanel.add(getBtnForward(), null);
+			buttonsPanel.add(getBtnFastForward(), null);
+		}
+		return buttonsPanel;
+	}
+	
+	/**
+	 * This method initializes btnFastBackWard
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private JButton getBtnFastBackward() {
+		if (btnFastBackward == null) {
+			btnFastBackward = new JButton();
+			if (orientation==VERTICAL){
+				btnFastBackward.setBounds(7, 1, 20, 24);
+			}else{
+				btnFastBackward.setBounds(2, 1, 20, 24);
+			}
+			
+			btnFastBackward.setEnabled(itemCount!=0);
+			btnFastBackward.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (currentValue != lowLimit){
+						setValue(lowLimit, true);
+					}
+				}});
+			btnFastBackward.setIcon(new ImageIcon(getClass().getResource("images/fastbackward.png")));
+		}
+		return btnFastBackward;
+	}
+	
+	/**
+	 * This method initializes btnBackward
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private JButton getBtnBackward() {
+		if (btnBackward == null) {
+			btnBackward = new JButton();
+			if (orientation==VERTICAL){
+				btnBackward.setBounds(7, 21, 20, 24);
+			}else{
+				btnBackward.setBounds(21, 1, 20, 24);
+			}
+			
+			btnBackward.setEnabled(itemCount!=0);
+			btnBackward.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (currentValue > lowLimit ){
+						setValue(currentValue-1, true);
+					}
+				}});
+			btnBackward.setIcon(new ImageIcon(getClass().getResource("images/backward.png")));
+		}
+		return btnBackward;
+	}
+	
+	/**
+	 * This method initializes txtItemCountDisplay
+	 *
+	 * @return javax.swing.JTextField
+	 */
+	private JTextField getTxtItemCountDisplay() {
+		if (txtItemCountDisplay == null) {
+			txtItemCountDisplay = new JTextField();
+			txtItemCountDisplay.setEnabled(itemCount!=0);
+			txtItemCountDisplay.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+			if (orientation==VERTICAL){
+				txtItemCountDisplay.setBounds(2,43, 33, 23);
+			} else {
+				txtItemCountDisplay.setBounds(43, 2, 144, 23);
+			}
+			
+			txtItemCountDisplay.setText(lowLimit+" / "+itemCount);
+			txtItemCountDisplay.addMouseListener(new java.awt.event.MouseAdapter() {
+				public void mouseClicked(java.awt.event.MouseEvent e) {
+					txtItemCountDisplay.setText(currentValue+"");
+					txtItemCountDisplay.setSelectionStart(0);
+					txtItemCountDisplay.setSelectionEnd(txtItemCountDisplay.getText().length());
+				}
+			});
+			txtItemCountDisplay.addActionListener(new java.awt.event.ActionListener() {
+				public void actionPerformed(java.awt.event.ActionEvent e) {
+					try {
+						int v = Integer.parseInt(txtItemCountDisplay.getText());
+						v = (v>itemCount) ? itemCount : v;
+						setValue(v, true);
+					} catch (Exception ex){
+						refreshText(currentValue);
+					}
+					txtItemCountDisplay.transferFocusDownCycle();
+				}
+			});
+			txtItemCountDisplay.setEnabled(false);
+		}
+		return txtItemCountDisplay;
+	}
+	
+	/**
+	 * This, sets the bean value and triggers an event that can be captured
+	 * by a listener.
+	 * @param number
+	 * @param fireEvent, if true then this method will fire the event. If false,
+	 * then the value will be changed silently.
+	 *
+	 */
+	public void setValue(int number, boolean fireEvent) {
+		if (number < lowLimit)
+			number = lowLimit;
+		if (number > itemCount-1)
+			number = itemCount;
+		if (number != currentValue) {
+			currentValue = number;
+			refreshControls();
+			if (fireEvent)
+				callValueChanged(new Integer(currentValue));
+		}
+	}
+	
+	/**
+	 * Refreshes all the mutable controls in this component.
+	 */
+	private void refreshControls() {
+		int normalizedValue = (int) ((currentValue / (float) itemCount)*100);
+		refreshSlider(normalizedValue);
+		refreshText(currentValue);
+	}
+	
+	/**
+	 * Sets the slider to the correct (scaled) position.
+	 * @param normalizedValue
+	 */
+	private void refreshSlider(int normalizedValue) {
+		refreshing = true;
+		getSlider().setValue(normalizedValue);
+		refreshing = false;
+	}
+	
+	/**
+	 * @param string
+	 */
+	private void refreshText(int value) {
+		String newText = (value+1) +" / "+itemCount;
+		
+		if (!getTxtItemCountDisplay().getText().equals(newText))
+			getTxtItemCountDisplay().setText(newText);
+	}
+	
+	/**
+	 * This method initializes btnForward
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private JButton getBtnForward() {
+		if (btnForward == null) {
+			btnForward = new JButton();
+			if (orientation==VERTICAL){
+				btnForward.setBounds(7, 67, 20, 24);
+			}else{
+				btnForward.setBounds(189, 1, 20, 24);
+			}
+			
+			btnForward.setEnabled(itemCount!=0);
+			btnForward.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (currentValue < itemCount-1){
+						setValue(currentValue+1, true);
+					}
+				}});
+			btnForward.setIcon(new ImageIcon(getClass().getResource("images/forward.png")));
+		}
+		return btnForward;
+	}
+	
+	/**
+	 * This method initializes btnFastForward
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private JButton getBtnFastForward() {
+		if (btnFastForward == null) {
+			btnFastForward = new JButton();
+			if (orientation==VERTICAL){
+				btnFastForward.setBounds(7, 91, 20, 24);
+			}else{
+				btnFastForward.setBounds(208, 1, 20, 24);
+			}
+			
+			btnFastForward.setEnabled(itemCount!=0);
+			btnFastForward.addActionListener(new ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					if (currentValue < itemCount-1){
+						setValue(itemCount-1, true);
+					}
+				}});
+			btnFastForward.setIcon(new ImageIcon(getClass().getResource("images/fastforward.png")));
+		}
+		return btnFastForward;
+	}
+	
+	/**
+	 * This method initializes sliderPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getSliderPanel() {
+		if (sliderPanel == null) {
+			sliderPanel = new JPanel();
+			sliderPanel.setLayout(null);
+			sliderPanel.setName("sliderPanel");
+			if (orientation==VERTICAL){
+				sliderPanel.setBounds(3, 0, 35, 181);
+			}else{
+				sliderPanel.setBounds(5, 0, 300, 26);
+			}
+			sliderPanel.setEnabled(false);
+			sliderPanel.add(getSlider(), null);
+		}
+		return sliderPanel;
+	}
+	
+	/**
+	 * This method initializes slider
+	 *
+	 * @return javax.swing.JSlider
+	 */
+	private JSlider getSlider() {
+		if (slider == null) {
+			slider = new JSlider();
+			slider.setValue(0);
+			if (orientation==VERTICAL){
+				slider.setOrientation(JSlider.VERTICAL);
+				slider.setSize(24, 230);
+			}else{
+				slider.setOrientation(JSlider.HORIZONTAL);
+				slider.setSize(230, 24);
+			}
+			
+			slider.setLocation(0, 1);
+			slider.setEnabled(itemCount!=0);
+			slider.addMouseListener(new java.awt.event.MouseAdapter() {
+				public void mouseReleased(java.awt.event.MouseEvent e) {
+					int value = (int) (getSlider().getValue() * itemCount * 0.01);
+					if (value >= itemCount)
+						value = itemCount - 1;
+					refreshText(value);
+					setValue(value, false);
+				}
+			});
+			slider.addChangeListener(new javax.swing.event.ChangeListener() {
+				public void stateChanged(javax.swing.event.ChangeEvent e) {
+					int value = (int) (getSlider().getValue() * itemCount * 0.01);
+					if (value >= itemCount)
+						value = itemCount - 1;
+					refreshText(value);
+					if (!refreshing)
+						callValueChanged(new Integer(value));
+				}
+			});
+		}
+		return slider;
+	}
+	
+	/**
+	 * Sets the amount of items that this component will handle.
+	 * @param count
+	 */
+	public void setItemCount(int count){
+		itemCount = count;
+		getSlider().setEnabled(count != 0);
+		getBtnFastBackward().setEnabled(count != 0);
+		getBtnBackward().setEnabled(count != 0);
+		getTxtItemCountDisplay().setEnabled(count != 0);
+		getBtnForward().setEnabled(count != 0);
+		getBtnFastForward().setEnabled(count != 0);
+	}
+	
+	/**
+	 * Sets the starting point if none is defined the pager will start from 0.
+	 * @param initial position
+	 */
+	public void setStartingPosition(int initialPosition) {
+		lowLimit = initialPosition;
+	}
+	
+	public void setCurrentPosition(int pos) {
+		setValue(pos, true);
+	}
+}  //  @jve:decl-index=0:visual-constraint="10,15"

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/Pager.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/SamplePanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/SamplePanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/SamplePanel.java	(revision 38348)
@@ -0,0 +1,162 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.3  2007-09-12 16:28:23  bsanchez
+ * *** empty log message ***
+ *
+ * Revision 1.2  2007/08/21 08:39:05  bsanchez
+ * - Sustituir "deprecated" show por setVisible
+ *
+ * Revision 1.1  2007/08/20 08:34:45  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.1  2006/03/22 11:18:29  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.6  2006/02/28 15:25:14  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.4.2.4  2006/02/16 10:36:41  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.4.2.3  2006/01/31 16:25:24  jaume
+ * correcciones de bugs
+ *
+ * Revision 1.5  2006/01/26 16:07:14  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.4.2.1  2006/01/26 12:59:32  jaume
+ * 0.5
+ *
+ * Revision 1.4  2006/01/26 12:50:20  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.3  2006/01/25 15:14:02  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.2  2006/01/24 14:36:33  jaume
+ * This is the new version
+ *
+ * Revision 1.1.2.5  2006/01/10 13:11:38  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.1.2.4  2006/01/10 11:33:31  jaume
+ * Time dimension working against Jet Propulsion Laboratory's WMS server
+ *
+ * Revision 1.1.2.3  2006/01/09 18:10:38  jaume
+ * casi con el time dimension
+ *
+ * Revision 1.1.2.2  2006/01/02 18:08:01  jaume
+ * Tree de estilos
+ *
+ * Revision 1.1.2.1  2005/12/30 08:56:19  jaume
+ * *** empty log message ***
+ *
+ *
+ */
+/**
+ * 
+ */
+package org.gvsig.gui.beans;
+
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.listeners.BeanListener;
+/**
+ * Sample class for see how to use BeanListeners.
+ * <p>
+ * Have fun! ;-)
+ * </p>
+ * @author jaume
+ */
+public class SamplePanel extends JPanel {
+  private static final long serialVersionUID = 3663247043945556938L;
+		private Pager ep;
+    /**
+     * This is the default constructor
+     */
+    public SamplePanel() {
+        super();
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     * 
+     * @return void
+     */
+    private void initialize() {
+        this.setSize(300, 200);
+        this.setLayout(null);
+        
+        this.add(getEditionPanel(), null);
+        
+    }
+
+    private Pager getEditionPanel(){
+        if (ep == null){
+            ep = new Pager(0, 20, Pager.HORIZONTAL);
+            ep.addListener(new BeanListener(){
+
+                public void beanValueChanged(Object value) {
+                    System.out.println("("+((Integer) value).intValue()+")");
+                }
+                
+            });
+        }
+        return ep;
+    }
+    
+    public static void main(String[] args){
+        //dim = new TimeDimension("units", "unitSymbol", "2004-12-24/2005-12-18/P1D");
+        
+        JFrame frame = new JFrame();
+        frame.getContentPane().add(new SamplePanel());
+        frame.setBounds(0, 0, 279, 63);
+        frame.pack();
+        frame.setVisible(true);
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/SamplePanel.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/simplecombobox/SimpleComboBox.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/simplecombobox/SimpleComboBox.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/simplecombobox/SimpleComboBox.java	(revision 38348)
@@ -0,0 +1,142 @@
+package org.gvsig.gui.beans.simplecombobox;
+
+import javax.swing.JComboBox;
+
+
+
+/**
+ * <p>Simple ComboBox component to add items with an associated code.
+ * Typical usage would be adding Strings items and associated action
+ * codes. Example</p>
+ * <pre>SimpleComboBox combo = new SimpleComboBox();
+ * combo.addItem("Left", TextComponent.ALIGN_LEFT);
+ * combo.addItem("Right", TextComponent.ALIGN_RIGHT;
+ * combo.addItem("Center", TextComponent.ALIGN_CENTER);
+ * combo.addItem("Justify", TextComponent.ALIGN_JUSTIFY);
+ * . . .
+ * int textAlign = combo.getSelectedCode();
+ * textComponent.align(textAlign);
+ * </pre>
+ * <p>This component provides a basic selection autocompletion when the user
+ * presses a key (while the combo has the focus).</p>
+ * 
+ * @author Cesar Martinez Izquierdo <cesar.martinez@iver.es>
+ *
+ */
+public class SimpleComboBox extends JComboBox {
+	private static final long serialVersionUID = 5805274299238455334L;
+
+	public SimpleComboBox() {
+        super();
+    }
+    
+	/**
+	 * <p>Invalid method, do not use it. Use
+	 * {@link #addItem(Object, int)} instead.</p>
+	 */
+	public void addItem(Object anObject) {
+		throw new RuntimeException("Invalid method: use addItem(Object anObject, int code) instead or regular Swing JComboBox");
+	}
+
+    public void addItem(Object anObject, int code) {
+    	ComboItem item = new ComboItem(anObject, code);
+    	super.addItem(item);
+    }
+
+    public Object getItemAt(int index) {
+    	ComboItem item = (ComboItem) super.getItemAt(index);
+    	if (item!=null) {
+    		return item.getObject();
+    	}
+    	return null;
+    }
+
+    public Object getSelectedItem() {
+    	ComboItem item = (ComboItem) super.getSelectedItem();
+    	if (item!=null) {
+    		return item.getObject();
+    	}
+    	return null;
+    }
+
+    public void setSelectedIndex(int anIndex) {
+        int size = dataModel.getSize();
+        if ( anIndex == -1 ) {
+            setSelectedItem( null );
+        } else if ( anIndex < -1 || anIndex >= size ) {
+            throw new IllegalArgumentException("setSelectedIndex: " + anIndex + " out of bounds");
+        } else {
+        	Object item = dataModel.getElementAt(anIndex);
+            super.setSelectedItem(item);
+        }
+    }
+
+    public void setSelectedItem(Object anObject) {
+    	ComboItem item;
+    	for (int i=0; i<getItemCount(); i++) {
+    		item = (ComboItem) super.getItemAt(i);
+    		if (item.getObject().equals(anObject)) {
+    			super.setSelectedItem(item);    			
+    		}
+    	}
+    }
+
+    public void setSelectedCode(int code) {
+    	ComboItem item;
+    	for (int i=0; i<getItemCount(); i++) {
+    		item = (ComboItem) super.getItemAt(i);
+    		if (item.getCode()==code) {
+    			super.setSelectedItem(item);    			
+    		}
+    	}
+    }
+
+    public Object[] getSelectedObjects() {
+    	Object obj = getSelectedItem();
+    	if (obj!=null) {
+    		return new Object[]{obj};
+    	}
+    	else {
+    		return new Object[0];
+    	}
+    }
+
+    /**
+     * Gets the code associated to the selected item
+     * @return
+     */
+    public int getSelectedCode() {
+    	ComboItem item = (ComboItem) super.getSelectedItem();
+    	if (item!=null) {
+    		return item.getCode();
+    	}
+    	return -1;
+    }
+
+    private class ComboItem {
+    	private Object theObject;
+    	private int code;
+
+    	public ComboItem(Object object, int code) {
+    		this.theObject = object;
+    		this.code = code;
+    	}
+ 
+		public void setObject(Object theObject) {
+			this.theObject = theObject;
+		}
+		public Object getObject() {
+			return theObject;
+		}
+		public void setCode(int code) {
+			this.code = code;
+		}
+		public int getCode() {
+			return code;
+		}
+
+		public String toString() {
+			return theObject.toString();
+		}
+    }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/simplecombobox/SimpleComboBox.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/DefaultComboBoxConfigurableLookUpModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/DefaultComboBoxConfigurableLookUpModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/DefaultComboBoxConfigurableLookUpModel.java	(revision 38348)
@@ -0,0 +1,963 @@
+package org.gvsig.gui.beans.comboboxconfigurablelookup;
+/* DefaultComboBoxModel.java --
+   Copyright (C) 2002, 2004, 2005, 2006, Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+import java.io.Serializable;
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Vector;
+
+import javax.swing.AbstractListModel;
+import javax.swing.ComboBoxModel;
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.MutableComboBoxModel;
+
+import org.gvsig.gui.beans.comboboxconfigurablelookup.agents.StartsWithLookUpAgent;
+
+/**
+ * <p>Re-implementation of {@link DefaultComboBoxModel} adapted for the behavior needed to look up items.</p>
+ * 
+ * <p>This model has configurable behaviour using flags.</p>
+ * 
+ * <p><code>DefaultComboBoxConfigurableLookUpModel</code> represents the model used by a {@link JComboBoxLookUpConfigurable JComboBoxLookUpConfigurable},
+ *  according the MVC (Model-View-Controller) pattern.</p>
+ * 
+ * <p>Flags:
+ * <ul>
+ *  <li><b>ItemsOrder:</b> order in which items will be showed: maintain position (according the items were introduced); alphabetical order (according the local rules); or disordered.<br>
+ *   + <b><i>MAINTAIN_POSITION</i></b>: in the same position as they are stored.<br>
+ *   + <b><i>ALPHABETICAL_ORDERED</i></b>: in alphabetical order (according a local language rules).<br>
+ *   + <b><i>MAINTAIN_AGENT_POSITIONS</i></b>: in the same position as the are returned by the look up agent.
+ *  </li>   
+ *  <li><b>ShowAllItemsInListBox:</b> show all items in list box always, or only items that match with the text written according the <code>ILookUp</code> agent.<br>
+ *   + <b><i>SHOW_ALL_ITEMS</i></b>: shows all items of the model always.<br>
+ *   + <b><i>SHOW_ONLY_MATCHES</i></b>: shows only the items , or only items that match with the text written according the <code>ILookUp</code> agent.
+ *  </li>
+ *  <li><b>LanguageRules:</b> language rules (es_ES, en_US, fr_FR, ...)</li>  
+ *  <li><b>CaseSensitive:</b> consider or ignore the case sensitive looking up the items with the <code>ILookUp</code> agent.<br>
+ *   + <b><i>CASE_SENSITIVE</i></b>: discriminates between lower and upper cases.<br>
+ *   + <b><i>CASE_INSENSITIVE</i></b>: doesn't discriminate between lower and upper cases.
+ *  </li>  
+ * </ul>
+ * </p>
+ * 
+ * <p>Default flag values are:
+ *  <ul>
+ *   <li><b>ItemsOrder:</b> <i>MAINTAIN_AGENT_POSITIONS</i>.</li>
+ *   <li><b>ShowAllItemsInListBox:</b> <i>false (that's equal to ''SHOW_ONLY_MATCHES'').</li>
+ *   <li><b>LanguageRules:</b> <i>en_EN (English from England)</i>.</li>
+ *   <li><b>CaseSensitive:</b> <i>true (that's equal to ''CASE_SENSITIVE'')</i>.</li>
+ *  </ul>
+ * </p>
+ * 
+ * @see javax.swing.DefaultComboBoxModel
+ * @see JComboBoxConfigurableLookUp
+ *  
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ * @version 07/02/2008
+ */
+public class DefaultComboBoxConfigurableLookUpModel extends AbstractListModel implements ComboBoxModel, MutableComboBoxModel, Serializable, IComboBoxLookUp {
+	private static final long serialVersionUID = 3514664640086791882L;
+
+	/**
+     * <p>Storage for the elements in the model's objects.</p>
+     * 
+     * <p>All items will be stored according they are introduced.</p>
+     */
+    private Vector<Object> objects;
+ 
+    /**
+     * <p>Stores the elements of 'objects' in alphabetical order.</p>
+     * 
+     * <p>This attribute will be used in the searches.</p>
+     */
+    private Vector<Object> alphabeticallyOrdered;
+  
+    /**
+     * <p>The selected item (<code>null</code> indicates no selection).</p>
+     */
+    private Object selectedObject = null;
+    
+    ///// NEW ATTRIBUTES /////
+
+	/**
+	 * <p>Items that will be visible (displayed).</p>
+	 */
+	private List<Object> visibleList;
+
+	/**
+	 * <p>Text written.</p>
+	 */
+	private String textWritten;
+	
+	/**
+	 * <p>Agent with the logic for looking up the items of this model, considering the text written.</p>
+	 */
+	private ILookUp lookUpAgent;
+	
+	/**
+	 * <p>Object with utilities for managing vectors.</p>
+	 */
+	private VectorUtilities vectorUtilities;
+
+	/**
+	 * <p>Determines if will notify all events produced.</p>
+	 */
+	private boolean eventNotificationEnabled = true; // by default -> true
+
+    ///// END NEW ATTRIBUTES /////
+	
+	// CONSTANTS FOR CONFIGURE THE BEHAVIOR
+	public static final int MAINTAIN_POSITION = 0;
+	public static final int ALPHABETICAL_ORDERED = 1;
+	public static final int MAINTAIN_AGENT_POSITIONS = 2;
+	public static final boolean SHOW_ALL_ITEMS = true;
+	public static final boolean SHOW_ONLY_MATCHES = false;
+	public static final boolean CASE_SENSITIVE = true;
+	public static final boolean CASE_INSENSITIVE = false;
+	
+	public static final int DEFAULT_ITEMS_ORDER_CONFIGURATION = MAINTAIN_AGENT_POSITIONS;
+	public static final boolean DEFAULT_SHOW_ALL_ITEMS_IN_LIST_BOX_CONFIGURATION = SHOW_ONLY_MATCHES;
+	
+	public static final String DEFAULT_LANGUAGE_RULES_CONFIGURATION = "en_EN";
+	public static final boolean DEFAULT_CASE_SENSITIVE_CONFIGURATION = CASE_SENSITIVE;
+	// END CONSTANTS FOR CONFIGURE THE BEHAVIOR
+	
+	// CONFIGURATION FLAGS
+	/**
+	 * <p>Flag: order in which items will be showed: maintain position (according the items were introduced); alphabetical order (according the local rules); or maintain the elements in
+	 *  the positions the look up agent returned.</p>
+	 */
+	private int itemsOrder;
+	
+	/**
+	 * <p>Flag: show all items in list box always, or only items that match with the text written according the <code>ILookUp</code> agent.</p>
+	 */
+	private boolean showAllItemsInListBox;
+
+	/**
+	 * <p>Flag: locale rules (es_ES, en_US, fr_FR, ...).</p>
+	 */
+	private String localeRules;
+
+	/**
+	 * <p>Object that allows compare strings. Stores a flag:</p>
+	 * 
+	 * <p>Flag: consider or ignore the case sensitive looking up the items that match with the text written according the <code>ILookUp</code> agent.</p>
+	 */
+	private StringComparator stringComparator;
+	// END FLAGS
+
+    /**
+     * @see javax.swing.DefaultComboBoxModel#DefaultComboBoxModel()
+     */
+    public DefaultComboBoxConfigurableLookUpModel()
+    {
+    	objects = new Vector<Object>();
+      
+    	initialize();
+    }
+  
+	/**
+     * @see javax.swing.DefaultComboBoxModel#DefaultComboBoxModel(java.lang.Object[])
+     */
+    public DefaultComboBoxConfigurableLookUpModel(final Object items[])
+    {
+    	objects = new Vector<Object>(Arrays.asList(items));
+
+    	initialize();
+    }
+  
+	/**
+     * @see javax.swing.DefaultComboBoxModel#DefaultComboBoxModel(java.util.Vector)
+     */
+    public DefaultComboBoxConfigurableLookUpModel(Vector<Object> vector)
+    {
+    	this.objects = new Vector<Object>(vector);
+ 
+    	initialize();
+    }
+	
+	///// REIMPLEMENTATION OF METHODS /////
+ 
+    /**
+     * @see javax.swing.DefaultComboBoxModel#addElement(java.lang.Object)
+     */
+	public void addElement(Object object)
+	{
+		objects.addElement(object);
+		vectorUtilities.addAlphabeticallyOrdered(alphabeticallyOrdered, object, stringComparator);
+     
+		int index = objects.size() - 1;
+		
+		updateVisibleList();
+ 		
+		if (eventNotificationEnabled)
+			fireIntervalAdded(this, index, index);
+ 	}
+ 
+	/**
+	 * @see javax.swing.DefaultComboBoxModel#removeElementAt(int)
+	 */
+	public void removeElementAt(int index)
+	{
+		if ( getElementAt( index ) == selectedObject )
+		{
+			if ( index == 0 ) {
+				setSelectedItem( getSize() == 1 ? null : getElementAt( index + 1) );
+			}
+			else {
+				setSelectedItem( getElementAt( index - 1 ) );
+			}
+		}
+		
+		Object obj = objects.get(index);
+		
+		alphabeticallyOrdered.remove(obj);
+		objects.removeElementAt(index);
+		
+		updateVisibleList();
+
+		if (eventNotificationEnabled)
+			fireIntervalRemoved(this, index, index);
+	}
+ 
+	/**
+	 * @see javax.swing.DefaultComboBoxModel#insertElementAt(java.lang.Object, int)
+	 */
+	public void insertElementAt(Object object, int index)
+	{
+		objects.insertElementAt(object, index);
+		vectorUtilities.addAlphabeticallyOrdered(alphabeticallyOrdered, object, stringComparator);
+		
+		updateVisibleList();
+
+		if (eventNotificationEnabled)
+			fireIntervalAdded(this, index, index);
+	}
+ 
+	/**
+	 * @see javax.swing.DefaultComboBoxModel#removeElement(java.lang.Object)
+	 */
+	public void removeElement(Object object)
+	{
+		int index = getIndexOf(object);
+		
+		if (index != -1) {
+			removeElementAt(index);
+		}
+	}
+ 
+	/**
+	 * @see javax.swing.DefaultComboBoxModel#removeAllElements()
+	 */
+	public void removeAllElements()
+	{
+		selectedObject = null;
+		int size = objects.size();
+
+		if (size > 0)
+		{
+			objects.removeAllElements();
+			alphabeticallyOrdered.removeAllElements();
+			
+			updateVisibleList();
+	 		
+			if (eventNotificationEnabled)
+				fireIntervalRemoved(this, 0, size - 1);
+		}
+	}
+
+	/**
+	 * @see javax.swing.DefaultComboBoxModel#getSize()
+	 */
+	public int getSize()
+	{		
+		if (visibleList == null)
+			return 0;
+		else
+			return visibleList.size();
+	}
+	
+	/**
+	 * @see javax.swing.DefaultComboBoxModel#setSelectedItem(java.lang.Object)
+	 */
+	public void setSelectedItem(Object anObject)
+	{
+		// No item is selected and object is null, so no change required.
+		if (selectedObject == null && anObject == null)
+			return;
+		
+		if ( ((selectedObject != null) && (!selectedObject.equals(anObject)))
+				|| ((selectedObject == null) && (anObject != null)) ) {
+		
+			// Here we know that object is either an item in the objects or null.
+	 
+			// Handle the three change cases: selectedObject is null, object is
+			// non-null; selectedObject is non-null, object is null;
+			// selectedObject is non-null, object is non-null and they're not
+			// equal.
+			selectedObject = anObject;
+			
+			if (anObject == null)
+				textWritten = null;
+			else
+				textWritten = anObject.toString();
+			
+			updateVisibleList();
+			
+			if (eventNotificationEnabled)
+				fireContentsChanged(this, -1, -1);
+		}
+	}
+ 
+	/**
+	 * @see javax.swing.DefaultComboBoxModel#getSelectedItem()
+	 */
+	public Object getSelectedItem()
+	{
+		return selectedObject;
+	}
+ 
+	/**
+	 * @see javax.swing.DefaultComboBoxModel#getElementAt(int)
+	 */
+	public Object getElementAt(int index)
+	{		
+		if (visibleList == null)
+			return null;
+		
+		if (index >= 0 && index < visibleList.size())
+			return visibleList.get(index);
+		else
+			return null;
+	}
+	
+	/**
+	 * @see javax.swing.DefaultComboBoxModel#getIndexOf(java.lang.Object)
+	 */
+	public int getIndexOf(Object object)
+	{
+		if (visibleList == null)
+			return -1;
+    	
+		return visibleList.indexOf(object);
+	}
+
+	///// END REIMPLEMENTATION OF METHODS /////    
+    
+	///// METHODS FOR THE BEHAVIOR FLAGS  /////
+	/**
+	 * <p>Returns the 'itemsOrder' configuration value of this component. Configuration values are:
+	 *  <ul>
+	 *   <li>MAINTAIN_POSITION: all items will be shown in the order programmer did.</li>
+	 *   <li>ALPHABETICAL_ORDERED: all items will be shown in alphabetical order.</li>
+	 *   <li>MAINTAIN_AGENT_POSITIONS: all items will be shown in the order the look up agent did.</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @return 'itemsOrder' configuration
+	 */
+	public int getItemsOrder() {
+		return itemsOrder;
+	}
+
+	/**
+	 * <p>Sets the 'itemsOrder' configuration value for this component. Configuration values are:
+	 *  <ul>
+	 *   <li>MAINTAIN_POSITION: all items will be shown in the order programmer did.</li>
+	 *   <li>ALPHABETICAL_ORDERED: all items will be shown in alphabetical order.</li>
+	 *   <li>MAINTAIN_AGENT_POSITIONS: all items will be shown in the order the look up agent did.</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @param An integer value for 'itemsOrder' configuration flag
+	 */
+	public void setItemsOrder(int itemsOrder) {
+		this.itemsOrder = itemsOrder;
+	}
+	
+	/**
+	 * <p>Returns the 'showAllItemsInListBox' configuration value of this component. Configuration values are:
+	 *  <ul>
+	 *   <li>SHOW_ALL_ITEMS: shows all items in the list box.</li>
+	 *   <li>SHOW_ONLY_MATCHES: shows only the items that match with the text written according the <code>ILookUp</code> agent.</li>
+	 *  </ul> 
+	 * </p>
+	 * 
+	 * @return 'showAllItemsInListBox' configuration
+	 */
+	public boolean isShowAllItemsInListBox() {
+		return showAllItemsInListBox;
+	}
+	
+	/**
+	 * <p>Sets the 'showAllItemsInListBox' configuration value for this component. Configuration values are:
+	 *  <ul>
+	 *   <li>SHOW_ALL_ITEMS: shows all items in the list box.</li>
+	 *   <li>SHOW_ONLY_MATCHES: shows only the items that match with the text written according the <code>ILookUp</code> agent.</li>
+	 *  </ul> 
+	 * </p>
+	 * 
+	 * @param A boolean value for 'showAllItemsInListBox' configuration flag
+	 */
+	public void setShowAllItemsInListBox(boolean itemsShownInListBox) {
+		this.showAllItemsInListBox = itemsShownInListBox;
+	}
+	
+	/**
+	 * <p>Returns the 'localeRules' configuration value of this component. The language code values could be consulted at: <br>
+	 *  <i><a href="http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt">http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt</a></i><br>
+	 *  <i><a href="http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html">http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html</a></i>
+	 * </p>
+	 * 
+	 * @see {@Locale}
+	 * 
+	 * @return 'localeRules' configuration
+	 */
+	public String getLocaleRules() {
+		return localeRules;
+	}
+	
+	/**
+	 * <p>Sets the 'localeRules' configuration value for this component. Configuration values are: <br>
+	 *  <i><a href="http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt">http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt</a></i><br>
+	 *  <i><a href="http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html">http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html</a></i>
+	 * </p>
+	 * 
+	 * @see {@Locale}
+	 * 
+	 * @param An String value for 'localeRules' configuration flag
+	 */
+	public void setLocaleRules(String localeRules) {
+		this.localeRules = localeRules;
+		
+		stringComparator.setLocaleRules(stringComparator.new LocaleRules(true, Collator.getInstance(new Locale(this.localeRules))));
+		Collections.sort(alphabeticallyOrdered.subList(0, alphabeticallyOrdered.size()), stringComparator); 
+		
+		updateVisibleList();
+	}
+	
+	/**
+	 * <p>Returns the 'caseSensitive' configuration value of this component. Configuration values are:
+	 *  <ul>
+	 *   <li>CASE_SENSITIVE: discriminates between small letters and capital letters.</li>
+	 *   <li>CASE_INSENSITIVE: doesn't discriminates between small letters and capital letters.</li>
+	 *  </ul> 
+	 * </p>
+	 *  
+	 * @return 'caseSensitive' configuration
+	 */
+	public boolean isCaseSensitive() {
+		return stringComparator.isCaseSensitive();
+	}
+	
+	/**
+	 * <p>Sets the 'caseSensitive' configuration value for this component. Configuration values are:
+	 *  <ul>
+	 *   <li>CASE_SENSITIVE: discriminates between small letters and capital letters.</li>
+	 *   <li>CASE_INSENSITIVE: doesn't discriminates between small letters and capital letters.</li>
+	 *  </ul> 
+	 * </p>
+	 *  
+	 * @param A boolean value for 'caseSensitive' configuration flag
+	 */
+	public void setCaseSensitive(boolean caseSensitive) {
+		stringComparator.setCaseSensitive(caseSensitive);
+		Collections.sort(alphabeticallyOrdered.subList(0, alphabeticallyOrdered.size()), stringComparator); 
+
+		updateVisibleList();
+	}
+	///// END METHODS FOR THE BEHAVIOR FLAGS  /////
+    
+   ///// NEW METHODS /////
+   
+	/**
+	 * <p>Initializes some attributes.</p>
+	 */
+	protected void initialize() {
+		textWritten = "";
+		
+		// Creates an object for doing ordering operations with vectors
+		vectorUtilities = new VectorUtilities();
+		
+		// Creates the agent that will execute the look up on the items of this model
+		lookUpAgent = new StartsWithLookUpAgent();
+		
+		// Initializes the StringComparator -> use spanish alphabetical rules, and case sensitive
+		stringComparator = new StringComparator();
+		stringComparator.setCaseSensitive(DEFAULT_CASE_SENSITIVE_CONFIGURATION);
+		stringComparator.setLocaleRules(stringComparator.new LocaleRules(true, Collator.getInstance(new Locale(DEFAULT_LANGUAGE_RULES_CONFIGURATION))));
+		
+		// Set default flags configuration
+		this.setDefaultBehaviorFlagsConfiguration();		
+		
+		alphabeticallyOrdered = new Vector<Object>(objects.subList(0, objects.size()));
+		Collections.sort(alphabeticallyOrdered.subList(0, alphabeticallyOrdered.size()), stringComparator); // Use an algorithm of comparision which implements the rules of the language.
+		
+		visibleList = new ArrayList<Object>();
+		updateVisibleList();
+	}
+	
+	/**
+	 * <p>Sets the default values of the flags.</p>
+	 */
+	protected void setDefaultBehaviorFlagsConfiguration() {
+		itemsOrder = DEFAULT_ITEMS_ORDER_CONFIGURATION;
+		showAllItemsInListBox = DEFAULT_SHOW_ALL_ITEMS_IN_LIST_BOX_CONFIGURATION;
+		localeRules = DEFAULT_LANGUAGE_RULES_CONFIGURATION;
+		stringComparator.setCaseSensitive(DEFAULT_CASE_SENSITIVE_CONFIGURATION);
+	}
+
+	/**
+	 * <p>Returns all elements stored in this model, according the order they were added.</p>
+	 * 
+	 * @return data stored in this model.
+	 */
+	public Vector<Object> getData() {
+		return objects;
+	}
+
+	/**
+	 * <p>Gets the data stored in this model according the criterion of the <i>itemsOrder</i> parameter.</p>
+	 * <p>Always returns all items stored.</p>
+	 * 
+	 * @return data stored in this model according the criterion of the <i>itemsOrder</i> parameter
+	 */
+	public Vector<Object> getDataAccordingItemsOrder() {
+		switch(itemsOrder) {
+			case MAINTAIN_POSITION:
+				return objects;
+	     	case ALPHABETICAL_ORDERED:
+	     		// Do nothing because items are already alphabetically ordered
+	     		return alphabeticallyOrdered;
+	     	case MAINTAIN_AGENT_POSITIONS:
+	     		List<Object> list;
+	     		
+	     		// "" forces to return all items stored
+	    		if (stringComparator.isCaseSensitive()) {
+	    			list = lookUpAgent.doLookUpConsideringCaseSensitive("", alphabeticallyOrdered, stringComparator);
+	    		}
+	    		else {
+	    			list = lookUpAgent.doLookUpIgnoringCaseSensitive("", alphabeticallyOrdered, stringComparator);
+	    		}
+	    		
+	    		return new Vector<Object>(list.subList(0, list.size()));
+	     	default:
+	     		// Default case: ALPHABETICAL_ORDERED
+	     		// Do nothing because items are already alphabetically ordered
+	     		return alphabeticallyOrdered;
+		}
+	}
+	
+	/**
+	 * <p>Updates the list with the results of the look up by the agent, and its configuration.</p>
+	 */
+	protected void updateVisibleList() {
+		if (!eventNotificationEnabled)
+			return;
+		
+		if (objects.size() == 0) {
+			visibleList = alphabeticallyOrdered.subList(0, 0);
+			return;
+		}
+		
+		if (showAllItemsInListBox) {
+			switch (itemsOrder) {
+				case MAINTAIN_POSITION:
+					visibleList = objects.subList(0, objects.size());
+		     		break;
+		     	case ALPHABETICAL_ORDERED:
+		     		visibleList = alphabeticallyOrdered.subList(0, alphabeticallyOrdered.size());
+		     	    break;
+		     	case MAINTAIN_AGENT_POSITIONS:
+		     		// "" forces to return all items stored
+		    		if (stringComparator.isCaseSensitive()) {
+		    			visibleList = lookUpAgent.doLookUpConsideringCaseSensitive("", alphabeticallyOrdered, stringComparator);
+		    		}
+		    		else {
+		    			visibleList = lookUpAgent.doLookUpIgnoringCaseSensitive("", alphabeticallyOrdered, stringComparator);
+		    		}
+		     		break;
+		     	default:
+		     		// Default case: ALPHABETICAL_ORDERED
+		     		visibleList = alphabeticallyOrdered.subList(0, alphabeticallyOrdered.size());
+			}
+
+			if ((visibleList != null) && (visibleList.size() > 0)) {
+				List<Object> list = lookUp();
+
+				if ((list != null) && (list.size() > 0)) {
+					selectedObject = list.get(0);
+					textWritten = selectedObject.toString(); // ?
+				}
+				else {
+					selectedObject = null;
+				}
+			}
+		}
+		else {
+			visibleList = lookUp();
+			
+			switch (itemsOrder) {
+				case MAINTAIN_POSITION:
+					if (visibleList != null) {
+						Vector<Object> aux = new Vector<Object>(objects.subList(0, objects.size()));
+						int size = aux.size();
+						Object obj = new Object();
+
+						for (int i = (size - 1); i >= 0; i--) {
+							obj = aux.get(i);
+
+							if (visibleList.contains(obj)) {
+								visibleList.remove(obj);
+							}
+							else {
+								aux.remove(i);
+							}
+						}
+
+						visibleList = aux.subList(0, aux.size());
+					}
+		     		break;
+		     	case ALPHABETICAL_ORDERED:
+		     		if (visibleList != null)
+		     			Collections.sort(visibleList, stringComparator);
+		     		break;
+		     	case MAINTAIN_AGENT_POSITIONS:
+		     		// Do nothing because items are already ordered
+		     		break;
+		     	default:
+		     		// Default case: ALPHABETICAL_ORDERED
+		     		// Do nothing because items are already alphabetically ordered
+			}
+		}
+	}
+
+	/**
+	 * <p>Invokes the agent to execute its search on all items alphabetically sort ordered,
+	 *  considering the <i>text written</i> and the <i>case sensitive</i> configuration. The agent will use a <p>Comparator</p> that
+	 *  includes the <i>locale language rules</i> and the <i>case sensitive</i> in the rule that uses to compare.</p>.
+	 * 
+	 * @return java.util.List
+	 */
+	protected List<Object> lookUp() {
+		if (stringComparator.isCaseSensitive()) {
+			return lookUpAgent.doLookUpConsideringCaseSensitive(textWritten, alphabeticallyOrdered, stringComparator);
+		}
+		else {
+			return lookUpAgent.doLookUpIgnoringCaseSensitive(textWritten, alphabeticallyOrdered, stringComparator);
+		}
+	}
+
+	/**
+	 * <p>Gets the agent used with the logic for looking up the items of this model, considering
+	 *  the text written.</p>
+	 *  
+	 * @return the agent used with the logic for looking up the items of this model
+	 */
+	public ILookUp getLookUpAgent() {
+		return lookUpAgent;
+	}
+
+	/**
+	 * <p>Sets the agent with the logic for looking up the items of this model, considering
+	 *  the text written.</p>
+	 *  
+	 * @param agent the agent used with the logic for looking up the items of this model
+	 */
+	public void setLookUpAgent(ILookUp agent) {
+		lookUpAgent = agent;
+		
+		// Updates the list using the new agent
+		updateVisibleList();
+		
+	}
+
+	/**
+	 * <p>Sets enabled or disabled the notification of events in this model.</p>
+	 * 
+	 * @param b <code>true</code> to enable, <code>false</code> to disable
+	 */
+	public void setEventNotificationEnabled(boolean b) {
+		eventNotificationEnabled = b;
+	}
+
+	/**
+	 * <p>Gets if the notification of events in this model is enabled.</p>
+	 * 
+	 * @return <code>true</code> is its enabled; <code>false</code> otherwise
+	 */
+	public boolean getEventNotificationEnabled() {
+		return eventNotificationEnabled;
+	}
+	
+	///// END NEW METHODS /////
+
+	///// REIMPLEMENTATION OF METHODS OF THE INTERFACE IComboBoxLookUp /////
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.comboboxconfigurablelookup.IComboBoxLookUp#setTextWritten(java.lang.String)
+	 */
+	public void setTextWritten(String text) {
+		textWritten = text;
+		updateVisibleList();
+	}
+
+	///// END REIMPLEMENTATION OF METHODS OF THE INTERFACE IComboBoxLookUp /////
+	
+	/**
+	 * <p>New functionality to work with vectors (of elements).</p>
+	 *
+	 * <p>This class is a copy of a class with the same name located in <i>libIverUtiles</i>.
+	 * 
+	 * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+	 */
+	public class VectorUtilities {
+		/**
+		 * <p>Creates a new instance of the class <code>VectorUtilities</code>.</p>
+		 */
+		public VectorUtilities() {
+		}
+		
+		/**
+		 * <p>Adds an item in alphabetical order.</p>
+		 * 
+		 * @param v java.util.Vector in alphabetical order.
+		 * @param obj java.lang.Object
+		 */
+		public synchronized void addAlphabeticallyOrdered(Vector<Object> v, Object obj) {
+			int size = v.size();
+			int currentIteration = 0;
+			int index, aux_index;
+			int lowIndex = 0;
+			int highIndex = size -1;
+			int maxNumberOfIterations = (int) log2(size);
+			
+			// If there are no items
+			if (size == 0) {
+				v.add(obj);
+				return;
+			}
+			
+			while ((lowIndex <= highIndex) && (currentIteration <= maxNumberOfIterations)) {
+				index = ( lowIndex + highIndex ) / 2;
+
+				// If the item in the index position has the same value as obj 
+				if (v.get(index).toString().compareTo(obj.toString()) == 0) {
+					v.add(index, obj);
+					return;
+				}
+
+				// If the item in the index position has a lower value than the obj
+				if (v.get(index).toString().compareTo(obj.toString()) < 0) {
+					aux_index = index + 1;
+					
+					if ((aux_index) >= size) {
+						v.add(v.size() , obj);
+						return;
+					}
+
+					if (v.get(aux_index).toString().compareTo(obj.toString()) > 0) {
+						v.add(aux_index, obj);
+						return;
+					}
+
+					lowIndex = aux_index;
+				}
+				else {
+					// If the item in the index position has a higher value than the obj
+					if (v.get(index).toString().compareTo(obj.toString()) > 0) {
+						aux_index = index - 1;
+						
+						if ((aux_index) < 0) {
+							v.add(0 , obj);
+							return;
+						}
+						
+						if (v.get(aux_index).toString().compareTo(obj.toString()) < 0) {
+							v.add(index, obj);
+							return;
+						}
+						
+						highIndex = aux_index;
+					}
+				}
+				
+				currentIteration ++;
+			}		 
+		}
+		
+		/**
+		 * <p>Adds an item in alphabetic order using a comparator for compare the objects. The objects must be alhabetically ordered.</p>
+		 *
+		 * @param v java.util.Vector in alphabetical order.
+		 * @param obj java.lang.Object
+		 * @param comp java.util.Comparator
+		 */
+		public synchronized void addAlphabeticallyOrdered(Vector<Object> v, Object obj, Comparator<Object> comp) {
+			int size = v.size();
+			int currentIteration = 0;
+			int index, aux_index;
+			int lowIndex = 0;
+			int highIndex = size -1;
+			int maxNumberOfIterations = (int) log2(size);
+			
+			// If there are no items
+			if (size == 0) {
+				v.add(obj);
+				return;
+			}
+			
+			while ((lowIndex <= highIndex) && (currentIteration <= maxNumberOfIterations)) {
+				index = ( lowIndex + highIndex ) / 2;
+				
+				// If the item in the index position has the same value as obj 
+				if (comp.compare(v.get(index), obj) == 0) {
+					v.add(index, obj);
+					return;
+				}
+				
+				// If the item in the index position has a lower value than the obj
+				if (comp.compare(v.get(index), obj) < 0) {
+					aux_index = index + 1;
+					
+					if ((aux_index) >= size) {
+						v.add(v.size() , obj);
+						return;
+					}
+					
+					if (comp.compare(v.get(aux_index), obj) > 0) {
+						v.add(aux_index, obj);
+						return;
+					}
+					
+					lowIndex = aux_index;
+				}
+				else {
+					// If the item in the index position has a higher value than the obj
+					if (comp.compare(v.get(index), obj) > 0) {
+						aux_index = index - 1;
+						
+						if ((aux_index) < 0) {
+							v.add(0 , obj);
+							return;
+						}
+						
+						if (comp.compare(v.get(aux_index), obj) < 0) {
+							v.add(index, obj);
+							return;
+						}
+						
+						highIndex = aux_index;
+					}
+				}
+				
+				currentIteration ++;
+			}
+		}
+
+		///// MATHEMATICAL OPERATIONS /////
+		/**
+		 * <p>2-base logarithm of a</p>
+		 * 
+		 * @param a The value to do the calculations
+		 * @return Logarithm in 2 base of 'a'
+		 */
+		public double log2(double a) {
+			return (Math.log(a) / Math.log(2));
+		}
+		
+		/**
+		 * <p>2-base logarithm of a, but the result doesn't have decimals (approximated to the integer number most near by below)</p>
+		 * 
+		 * @param a The value to do the calculations
+		 * @return Logarithm in 2 base of 'a', as an integer
+		 */
+		public int log2Integer(double a) {
+			return (int) Math.floor(log2(a));
+		}
+		///// END MATHEMATICAL OPERATIONS /////
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/IComboBoxLookUp.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/IComboBoxLookUp.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/IComboBoxLookUp.java	(revision 38348)
@@ -0,0 +1,55 @@
+package org.gvsig.gui.beans.comboboxconfigurablelookup;
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * <p>Interface for all the models which will allow look up items
+ *  using a text.</p>
+ * 
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ * @version 07/02/2008
+ */
+public interface IComboBoxLookUp {
+	/**
+	 * <p>Sets the text for search items.</p>
+	 */
+	public void setTextWritten(String text);
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/JComboBoxConfigurableLookUp.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/JComboBoxConfigurableLookUp.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/JComboBoxConfigurableLookUp.java	(revision 38348)
@@ -0,0 +1,1671 @@
+package org.gvsig.gui.beans.comboboxconfigurablelookup;
+
+import java.awt.Color;
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.util.Vector;
+
+import javax.accessibility.Accessible;
+import javax.swing.ComboBoxEditor;
+import javax.swing.ComboBoxModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.MutableComboBoxModel;
+import javax.swing.event.DocumentListener;
+import javax.swing.event.PopupMenuEvent;
+import javax.swing.event.PopupMenuListener;
+import javax.swing.event.UndoableEditListener;
+import javax.swing.plaf.ComponentUI;
+import javax.swing.plaf.basic.BasicComboBoxUI;
+import javax.swing.plaf.basic.BasicComboPopup;
+import javax.swing.plaf.basic.ComboPopup;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.JTextComponent;
+import javax.swing.text.PlainDocument;
+
+import org.gvsig.gui.beans.editabletextcomponent.IEditableText;
+import org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditEvent;
+import org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+
+/** VERSION: BETA
+ * <p>A configurable combo box component that lists items that carry out with the criterions of a <code>ILookUp</code> agent,
+ *  considering the text in its inner editor.</p>
+ * 
+ * <p>Key features:
+ *  <ul>
+ *   <li>Allows configure it's behaviour.</li>
+ * 	 <li>Inherits from JComboBox.</li>
+ * 	 <li>Has 6 flags to configure its behaviour.</li>
+ * 	 <li>It's made according the MVC (Model-View-Controller) pattern.</li>
+ * 	 <li>Uses a {@link DefaultComboBoxConfigurableLookUpModel DefaultComboBoxConfigurableLookUpModel} as a dataModel, which it's also configurable.</li>
+ *  </ul>
+ * </p>
+ * 
+ * <p>Configuration flags:
+ *  <ul>
+ *   <li><b>OnlyOneColorOnText:</b> uses red if there is no item or only items that matches with the text written according the <code>ILookUp</code> agent, or uses always black color.</li>
+ *   <li><b>BeepEnabled:</b> rings a beep sound if there is no item that matches with the text written according the <code>ILookUp</code> agent, or not.</li>
+ *   <li><b>HidePopupIfThereAreNoItems:</b> hides popup (list box) if there is no item that matches with the text written according the <code>ILookUp</code> agent, or uses the default (JComboBox and more) behaviour.</li>
+ *   <li><b>ToForceSelectAnItem:</b> forces to select an item (if the component looses the focus or user presses the Enter keyboard key), or uses the default (JComboBox and more) behaviour.</li>
+ *   <li><b>CompleteArrowKeySelection:</b> writes in the editor the value of the element selected by the arrow keys (up or down) if its enabled, otherwise holds the previous text.</li>
+ *   <li><b>DisplayAllItemsWithArrowButton:</b> <i>true</i>: displays all this component's dataModel items if its <i>popup</i> it's hided, and this component's dataModel listed only the matches
+ *    <i>(flag: <code>DefaultComboBoxConfigurableLookUpModel.showAllItemsInListBox == false</code>)</i>; otherwise, if this flag isn't enabled,
+ *    won't display all items in that situation.</li>
+ *  </ul>
+ * </p>
+ * 
+ * <p>Default flag values are:
+ *  <ul>
+ *   <li><b>OnlyOneColorOnText:</b> <i>false</i>.</li>
+ *   <li><b>BeepEnabled:</b> <i>false</i>.</li>
+ *   <li><b>HidePopupIfThereAreNoItems:</b> <i>true</i>.</li>
+ *   <li><b>ToForceSelectAnItem:</b> <i>true</i>.</li>
+ *   <li><b>CompleteArrowKeySelection:</b> <i>false</i>.</li>
+ *   <li><b>DisplayAllItemsWithArrowButton:</b> <i>true</i>.</li>
+ *  </ul>
+ * </p>
+ * 
+ * <p><i>More information about the behaviour of it's dataModel in {@link DefaultComboBoxConfigurableLookUpModel DefaultComboBoxConfigurableLookUpModel} .</i></p>
+ * 
+ * @see JComboBox
+ * @see DefaultComboBoxConfigurableLookUpModel
+ * 
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ * @version 07/02/2008
+ */
+public class JComboBoxConfigurableLookUp extends JComboBox implements java.io.Serializable {
+
+
+	// CONSTANTS FOR CONFIGURE THE BEHAVIOR
+	public static final boolean DEFAULT_ONLY_ONE_COLOR_ON_TEXT_CONFIGURATION = false;
+	public static final boolean DEFAULT_BEEP_ENABLED_CONFIGURATION = false;
+	public static final boolean DEFAULT_HIDE_POPUP_IF_THERE_ARE_NO_ITEMS_CONFIGURATION = true;
+	public static final boolean DEFAULT_TO_FORCE_SELECT_AN_ITEM_CONFIGURATION = true;
+	public static final boolean DEFAULT_COMPLETE_ARROW_KEY_SELECTION_CONFIGURATION = false;
+	public static final boolean DEFAULT_DISPLAY_ALL_ITEMS_WITH_ARROW_BUTTON_CONFIGURATION = true;
+	// END CONSTANTS FOR CONFIGURE THE BEHAVIOR
+	
+	// EDITOR DOCUMENT REFERENCE
+	/**
+	 * <p>A reference to the document of this component.</p> 
+	 */
+	private PlainDocumentTextFormatter document;
+	// END EDITOR DOCUMENT REFERENCE
+	
+	// NEW ATTRIBUTES 
+	/**
+	 * <p>A reference to the dataModel of this component (according to the MVC <i>(Model-View-Controller)</i> pattern).</p>
+	 */
+	private DefaultComboBoxConfigurableLookUpModel model;
+
+	/**
+	 * <p>Has or not to hide the popup on focus loss.</p>
+	 */
+	private boolean hidePopupOnFocusLoss;
+
+	/**
+	 * <p>Has an item of the popup been selected or not by the user.</p>
+	 */
+	private boolean popupItemSelected;
+	
+	/**
+	 * <p>Determines if an arrow key (meanwhile down or up) has been pressed.</p>
+	 */
+	private boolean arrowKeyPressed;
+
+	/**
+	 * <p>Determines if the arrow button of the GUI has been clicked.</p>
+	 */
+	private boolean arrowButtonClicked;
+
+	/**
+	 * <p>Determines if is showing all items temporally in the GUI .</p>
+	 */
+	private boolean showingAllItemsTemporally;
+
+	/**
+	 * <p>Flag to ensure the we don't get multiple ActionEvents on item selection.</p>
+	 */
+	private boolean selectingItem = false;
+	
+	/**
+	 * <p>Last item selected.</p>
+	 */
+	private Object previousSelected;
+
+	/**
+	 * <p>Determines if the UI of this component has been updated.</p>
+	 * <p>This parameter is used by the listener that shows all items when user presses the <i>arrow button</i>
+	 *  and its enabled the flag <code>displayAllItemsWithArrowButton</code>.</p>
+	 */
+	private boolean updatedUI = true;
+	
+	private boolean blockPopupHided = false;
+	// END NEW ATTRIBUTES
+	
+	// LISTENERS
+	/**
+	 * <p>Listener for the editor key.</p> 
+	 */
+	private KeyListener editorKeyListener;
+	
+	/**
+	 * <p>Listener for the editor focus.</p>
+	 */
+	private FocusListener editorFocusListener;
+	
+	/**
+	 * <p>Listener for the popup menu.</p> 
+	 */
+	private PopupMenuListener popupMenuListener;
+	
+	/**
+	 * <p>Listener for the arrow button.</p>
+	 */
+	private MouseListener arrowMouseListener;
+	// END LISTENERS
+	
+	// CONFIGURATION FLAGS
+	/**
+	 * <p>Flag: use red if there is no item that matches with the text written according the <code>ILookUp</code> agent, or uses always black colour.</p>
+	 */
+	private boolean onlyOneColorOnText;
+	
+	/**
+	 * <p>Flag: rings a beep sound if there is no item that matches with the text written according the <code>ILookUp</code> agent, otherwise no.</p>
+	 */
+	private boolean beepEnabled;
+	
+	/**
+	 * <p>Flag: hide popup (list box) if there is no item that matches with the text written according the <code>ILookUp</code> agent, or uses the default (JComboBox and more) behaviour.</p>
+	 */
+	private boolean hidePopupIfThereAreNoItems;
+	
+	/**
+	 * <p>Flag: forces to select an item (if the component looses the focus or user presses the Enter keyboard key), or uses the default (JComboBox and more) behaviour.</p>
+	 */
+	private boolean toForceSelectAnItem;
+
+	/**
+	 * <p>Flag: determines if has to write in the editor the value of the element selected by the 
+	 * arrow keys (up or down) if its enabled, or hold the previous text if isn't.</p>
+	 */
+	private boolean completeArrowKeySelection;
+	
+	/**
+	 * <p>Flag: displays all this component's dataModel items if its <i>popup</i> it's hided, this component's dataModel displayed only the matches, and this flag enabled; if this flag isn't enabled,
+	 *  won't display all items in that situation.</p>
+	 */
+	private boolean displayAllItemsWithArrowButton;
+	// END FLAGS
+	
+	/**
+	 * <p>Default constructor without parameters.</p>
+	 */
+	public JComboBoxConfigurableLookUp() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * <p>Default constructor with a {@link DefaultComboBoxConfigurableLookUpModel} as parameter.</p>
+	 * 
+	 * @param aModel javax.swing.ComboBoxModel
+	 */
+	public JComboBoxConfigurableLookUp(DefaultComboBoxConfigurableLookUpModel aModel) {
+		super(aModel);
+
+		initialize();
+	}	
+
+	/**
+	 * <p>Default constructor with an array of objects as parameter.</p>
+	 * 
+	 * @param items An array of objects. All them must implement a <i>'String toStrin()'</i> method
+	 */
+	public JComboBoxConfigurableLookUp(Object[] items) {
+		super(items);
+
+		initialize();
+	}
+
+	/**
+	 * <p>Default constructor with a Vector of objects as parameter.</p>
+	 * 
+	 * @param items A {@link Vector} of objects. All them must implement a <i>'String toStrin()'</i> method
+	 */
+	public JComboBoxConfigurableLookUp(Vector<Object> items) {
+		super(items);
+
+		initialize();
+	}
+	
+	///// NEW METHODS /////
+	
+	/**
+	 * <p>This method sets the start values of inner attributes and creates the necessary inner objects.</p>
+	 * 
+	 * @param dataModel dataModel used by this combo box instance
+	 */
+	protected void initialize() {
+		// By default user hasn't selected an item of the popup
+		popupItemSelected = false;
+		
+		// By default no arrow key has been pressed
+		arrowKeyPressed = false;
+		
+		// By default the arrow button of the GUI hasn't been clicked
+		arrowButtonClicked = false;
+		
+		// By default isn't showing all items temporally in the GUI
+		showingAllItemsTemporally = false;
+		
+		// By default no item has been selected
+		previousSelected = null;
+
+		// Set default flags configuration
+		this.setDefaultBehaviorFlagsConfiguration();
+
+		// Allows user to edit on the combobox
+		super.setEditable(true);
+				
+		// Other configuration tasks
+		configure();
+
+		// If there are items -> select the first
+		if ((toForceSelectAnItem) && (model.getData().size() > 0)) {
+			model.setSelectedItem(model.getData().elementAt(0));
+		}
+
+		// Resets the UI property to a value from the current look and feel
+		updateUI();
+	}
+	
+	/**
+	 * <p>Configures the component and some of its elements.</p>
+	 */
+	protected void configure() {
+		// Defines a key listener for the editor of this component
+		defineEditorKeyListener(this);
+
+		// Defines a focus listener for the editor of this component
+		defineEditorFocusListener(this);
+				
+		// Configures the document of the editor of this component
+		configureDocument();
+		
+		// Configures the editor (ComboBoxEditor) of this component
+		configureEditor(this.getEditor());
+		
+		// Configures the popup of this component
+		configurePopUp(this);
+	}
+	
+	/**
+	 * <p>Configures the editor ( {@link ComboBoxEditor} ) of this component.</p>
+	 * 
+	 * @param newEditor The new editor to configure
+	 */
+	protected void configureEditor(ComboBoxEditor newEditor) {
+		if (newEditor != null) {
+			JTextComponent jTextComponentOfEditor = (JTextComponent) newEditor.getEditorComponent();
+
+			// Adds the new document (tries to remove it if it existed before)
+			jTextComponentOfEditor.setDocument(this.document);
+
+			// Adds the new Key Listener (tries to remove it if it existed before)
+			jTextComponentOfEditor.removeKeyListener(this.editorKeyListener);
+			jTextComponentOfEditor.addKeyListener(this.editorKeyListener);
+
+			// Adds the new Focus Listener (tries to remove it if it existed before)
+			jTextComponentOfEditor.removeFocusListener(this.editorFocusListener);
+			jTextComponentOfEditor.addFocusListener(this.editorFocusListener);
+		}
+	}
+
+	/**
+	 * <p>Configures the document of the editor of this component.</p>
+	 */
+	protected void configureDocument() {
+		// Creates the document of the editor of this component
+		document = new PlainDocumentTextFormatter();
+
+		// Set reference to the container component
+		document.setJComboBoxReference(this);
+	}
+
+	/**
+	 * <p>Configures the popup of this component.</p>
+	 *
+	 * @param comboBox A reference of this component
+	 */
+	protected void configurePopUp(JComboBoxConfigurableLookUp comboBox) {
+		final JComboBoxConfigurableLookUp comboBoxReference = comboBox;
+		this.addPopupMenuListener(this.popupMenuListener);
+				
+		BasicComboBoxUI comboBoxUi = (BasicComboBoxUI)comboBoxReference.getUI();
+		Accessible aC = comboBoxUi.getAccessibleChild(comboBoxReference, 0);
+
+		if (aC instanceof ComboPopup) {
+			JList jlist = ((ComboPopup)aC).getList();
+
+			jlist.addMouseListener(new MouseAdapter() {
+				/*
+				 *  (non-Javadoc)
+				 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+				 */
+				public void mousePressed(MouseEvent e) {
+					// User selects an item of the popup using the mouse
+					popupItemSelected = true;
+					System.out.println("Pulsado");
+				}
+			});
+				
+			if (aC instanceof BasicComboPopup) {
+				((BasicComboPopup)aC).addPopupMenuListener(new PopupMenuListener() {
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.PopupMenuListener#popupMenuCanceled(javax.swing.event.PopupMenuEvent)
+					 */
+					public void popupMenuCanceled(PopupMenuEvent e) {
+						if (arrowButtonClicked) {
+							arrowButtonClicked = false;
+						}
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.PopupMenuListener#popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent)
+					 */
+					public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
+						if (arrowButtonClicked) {
+							arrowButtonClicked = false;
+						}
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.PopupMenuListener#popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent)
+					 */
+					public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
+						if (arrowButtonClicked) {
+							arrowButtonClicked = false;
+						}
+					}
+				});
+			}
+		}
+	}
+
+	/**
+	 * <p>Returns the listener invoked when user presses the arrow button of this <code>JComboBox</code>.</p>
+	 * 
+	 * @return java.awt.event.MouseListener
+	 */
+	public MouseListener getArrowMouseListener() {
+		if (arrowMouseListener == null) {
+			// New mouse listener
+			arrowMouseListener = new MouseAdapter() {
+				/*
+				 * (non-Javadoc)
+				 * @see java.awt.event.MouseAdapter#mousePressed(java.awt.event.MouseEvent)
+				 */
+				public void mousePressed(MouseEvent e) {
+					arrowButtonClicked = true;
+					
+					// Avoids a bug: when the component is created an shown, first time the arrow button is pressed, the method
+					// #isPopupVisible() returns 'true' instead of returning 'false'
+					boolean popupVisible;
+					
+					if (updatedUI) {
+						popupVisible = false;
+					}
+					else {
+						popupVisible = isPopupVisible();
+					}
+		
+					// Shows all items temporally in the GUI
+					if ((! model.isShowAllItemsInListBox()) && (displayAllItemsWithArrowButton) && (! popupVisible)) {
+						showingAllItemsTemporally = true;
+						
+						// Stores the configuration of the flags	    	    	
+						int itemsOrderFlag = model.getItemsOrder();
+						String languageRules = model.getLocaleRules();
+						boolean caseSensitive = model.isCaseSensitive();
+						ILookUp lookUpAgent = model.getLookUpAgent();
+						
+						// Must replace the dataModel for update the data in the popup correctly
+						setModel(new DefaultComboBoxConfigurableLookUpModel(model.getData()));
+						
+						// Restores the configuration of the flags
+						model.setItemsOrder(itemsOrderFlag);
+						model.setShowAllItemsInListBox(true);
+						model.setLocaleRules(languageRules);
+						model.setCaseSensitive(caseSensitive);
+						model.setLookUpAgent(lookUpAgent);
+		
+						model.setTextWritten(document.textWritten);
+						
+						if (updatedUI) {
+							updatedUI = false;
+							showPopup();
+						}
+					}
+				}
+			};
+		}
+		
+		return arrowMouseListener;
+	}
+	
+	/**
+	 * <p>Sets the default values of the flags.</p>
+	 */
+	protected void setDefaultBehaviorFlagsConfiguration() {
+		onlyOneColorOnText = DEFAULT_ONLY_ONE_COLOR_ON_TEXT_CONFIGURATION;
+		beepEnabled = DEFAULT_BEEP_ENABLED_CONFIGURATION;
+		hidePopupIfThereAreNoItems = DEFAULT_HIDE_POPUP_IF_THERE_ARE_NO_ITEMS_CONFIGURATION;
+		toForceSelectAnItem = DEFAULT_TO_FORCE_SELECT_AN_ITEM_CONFIGURATION;
+		completeArrowKeySelection = DEFAULT_COMPLETE_ARROW_KEY_SELECTION_CONFIGURATION;
+		displayAllItemsWithArrowButton = DEFAULT_DISPLAY_ALL_ITEMS_WITH_ARROW_BUTTON_CONFIGURATION;
+	}
+	
+	/**
+	 * <p>Defines a key listener for the editor of this component.</p>
+	 * 
+	 * <p><b>Warning:</b><i>This method is another important difference from the JComboBox; and could work badly with some key-maps.</i></p>
+	 * 
+	 * @param comboBox A reference of this component
+	 */
+	private void defineEditorKeyListener(JComboBoxConfigurableLookUp comboBox) {
+		final JComboBoxConfigurableLookUp comboBoxReference = comboBox;
+		
+		editorKeyListener = new KeyAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * @see java.awt.event.KeyAdapter#keyPressed(java.awt.event.KeyEvent)
+			 */
+			public void keyPressed(KeyEvent ke)  // Executed on the Start view state or Search view state
+			{
+				// Restore the status if was showing all items temporally
+				if (showingAllItemsTemporally) {
+					showingAllItemsTemporally = false;
+					
+					// Stores the configuration of the flags	    	    	
+					int itemsOrderFlag = model.getItemsOrder();
+					String languageRules = model.getLocaleRules();
+					boolean caseSensitive = model.isCaseSensitive();
+					ILookUp lookUpAgent = model.getLookUpAgent();
+					
+					// Must replace the dataModel for update the data in the popup correctly
+					comboBoxReference.setModel(new DefaultComboBoxConfigurableLookUpModel(model.getData()));
+					
+					// Restores the configuration of the flags
+					model.setItemsOrder(itemsOrderFlag);
+					model.setShowAllItemsInListBox(false);
+					model.setLocaleRules(languageRules);
+					model.setCaseSensitive(caseSensitive);
+					model.setLookUpAgent(lookUpAgent);
+					model.setTextWritten(document.textWritten);
+				}
+				
+				// According the key pressed, do some actions or others
+				switch (ke.getKeyCode())
+				{
+					case KeyEvent.VK_ENTER :
+						// Don't allow execute the default instructions because they have a bug (first time we remove some characters, no item will be displayed in the popup)
+						ke.consume();
+
+						// Sets the caret position of the text in the document to the end:
+						((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setCaretPosition(document.getLength());
+
+						final DefaultComboBoxConfigurableLookUpModel c_model = (DefaultComboBoxConfigurableLookUpModel)comboBoxReference.getModel();
+						
+						if (toForceSelectAnItem) {
+							if (c_model.isShowAllItemsInListBox()) {
+								// Select now the first item or the previous selected
+								if (c_model.getSelectedItem() == null) {
+									if (c_model.getData().size() > 0) {
+										if (previousSelected == null)
+											previousSelected = c_model.getDataAccordingItemsOrder().elementAt(0);
+										else {
+											((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setText(previousSelected.toString());
+										}
+									}
+									else {
+										previousSelected = null;
+									}
+								}
+								else {								
+									previousSelected = c_model.getSelectedItem();									
+									comboBoxReference.setSelectedItem(previousSelected);
+									
+									((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setText(previousSelected.toString());
+								}
+							}
+							else {
+								// Select now the first item or the previous selected
+								switch (comboBoxReference.getModel().getSize()) {
+									case 0:
+										if (previousSelected == null) {
+											if (c_model.getData().size() > 0) {
+												previousSelected = c_model.getDataAccordingItemsOrder().elementAt(0);
+											}
+											else {
+												previousSelected = null;
+											}
+										}
+										
+										((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setText(previousSelected.toString());
+										break;
+									case 1:
+										// If there is only one item -> select it
+										previousSelected = comboBoxReference.getItemAt(0); // Select the first
+										comboBoxReference.setSelectedIndex(0);
+										break;
+									default:
+										if (previousSelected == null) {
+											previousSelected = comboBoxReference.getItemAt(0); // Select the first
+											comboBoxReference.setSelectedIndex(0);
+										}
+										else
+											((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setText(previousSelected.toString());
+								}
+							}
+						}						
+						
+						// Hide the popup
+						comboBoxReference.hidePopup();
+						
+						// Force select one item
+						if (completeArrowKeySelection) {
+							model.setTextWritten(document.textWritten);
+						}
+						break;
+						
+					case KeyEvent.VK_UP: case KeyEvent.VK_DOWN:
+						// User selects an item of the popup using the mouse
+						popupItemSelected = true;
+						arrowKeyPressed = true;
+						break;
+				}
+			}
+		};
+	}
+	
+	/**
+	 * <p>Defines a focus listener for the editor of this component.</p>
+	 * 
+	 * @param comboBox A reference of this component
+	 */
+	private void defineEditorFocusListener(JComboBoxConfigurableLookUp comboBox) {
+		final JComboBoxConfigurableLookUp comboBoxReference = comboBox;
+		
+		// Bug 5100422 on Java 1.5: Editable JComboBox won't hide popup when tabbing out		
+		hidePopupOnFocusLoss = System.getProperty("java.version").startsWith("1.5");
+		
+		// Highlight whole text when gaining focus
+		editorFocusListener = new FocusAdapter() {
+			/*
+			 *  (non-Javadoc)
+			 * @see java.awt.event.FocusListener#focusLost(java.awt.event.FocusEvent)
+			 */
+			public void focusLost(FocusEvent e) {
+				// Restore the status if was showing all items temporally
+				if (showingAllItemsTemporally) {
+					showingAllItemsTemporally = false;
+					
+					// Stores the configuration of the flags	    	    	
+					int itemsOrderFlag = model.getItemsOrder();
+					String languageRules = model.getLocaleRules();
+					boolean caseSensitive = model.isCaseSensitive();
+					ILookUp lookUpAgent = model.getLookUpAgent();
+					
+					// Must replace the dataModel for update the data in the popup correctly
+					comboBoxReference.setModel(new DefaultComboBoxConfigurableLookUpModel(model.getData()));
+					
+					// Restores the configuration of the flags
+					model.setItemsOrder(itemsOrderFlag);
+					model.setShowAllItemsInListBox(false);
+					model.setLocaleRules(languageRules);
+					model.setCaseSensitive(caseSensitive);
+					model.setLookUpAgent(lookUpAgent);
+					model.setTextWritten(document.textWritten);
+				}
+				
+				
+				// Sets the caret position of the text in the document to the end:
+				((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setCaretPosition(document.getLength());
+
+				final DefaultComboBoxConfigurableLookUpModel c_model = (DefaultComboBoxConfigurableLookUpModel)comboBoxReference.getModel();
+
+				if (toForceSelectAnItem) {
+					if (c_model.isShowAllItemsInListBox()) {
+						// Select now the first item or the previous selected
+						if (c_model.getSelectedItem() == null) {
+							if (c_model.getData().size() > 0) {
+								if (previousSelected == null)
+									previousSelected = c_model.getDataAccordingItemsOrder().elementAt(0);
+								else {
+									((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setText(previousSelected.toString());
+								}
+							}
+							else {
+								previousSelected = null;
+							}
+						}
+						else {								
+							previousSelected = c_model.getSelectedItem();									
+							comboBoxReference.setSelectedItem(previousSelected);
+						}
+
+						((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setText(previousSelected.toString());
+					}
+					else {
+						// Select now the first item or the previous selected
+						switch (model.getData().size()) {
+							case 0:
+								if (previousSelected == null) {
+									if (c_model.getData().size() > 0) {
+										previousSelected = c_model.getDataAccordingItemsOrder().elementAt(0);
+
+										((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setText(previousSelected.toString());
+									}
+									else {
+										previousSelected = null;
+									}
+								}
+								break;
+							default:
+								if (previousSelected == null) {
+									previousSelected = comboBoxReference.getItemAt(0); // Select the first
+									comboBoxReference.setSelectedIndex(0);
+								}
+								else
+									((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setText(previousSelected.toString());
+						}
+					}
+				}
+
+				comboBoxReference.hidePopup();
+
+				// Workaround for Bug 5100422 - Hide Popup on focus loss
+				if (hidePopupOnFocusLoss)
+					comboBoxReference.setPopupVisible(false);
+			}			
+		};
+	}
+	
+	///// END NEW METHODS /////
+	
+	///// REIMPLEMENTATION OF METHODS OF 'JComboBox' /////
+	
+	/**
+	 * <p>Sets the editor used to paint and edit the selected item in the 
+     * <code>JComboBox</code> field.  The editor is used only if the
+     * receiving <code>JComboBox</code> is editable. If not editable,
+     * the combo box uses the renderer to paint the selected item.</p>
+     * 
+     * <p>The editor must be a <code>JTextComponent</code>, and its document a <code>PlainDocument</code> object.</p>
+     *  
+     * @param anEditor  the <code>ComboBoxEditor</code> that
+     *			displays the selected item
+     * @see #setRenderer
+     * @beaninfo
+     *     bound: true
+     *    expert: true
+     *  description: The editor that combo box uses to edit the current value
+	 */
+	public void setEditor(ComboBoxEditor anEditor) {
+		if (anEditor == null) {
+			super.setEditor(anEditor);
+			return;
+		}
+		
+		JTextComponent jTextComponentOfEditor = (JTextComponent) anEditor.getEditorComponent();
+
+		// Adds the new ''PlainDocumentTextFormatter'', adding the listeners of the new editor's document
+		PlainDocument old_document = ((PlainDocument)jTextComponentOfEditor.getDocument());
+		
+		DocumentListener[] documentListeners = old_document.getDocumentListeners();
+		UndoableEditListener[] undoableEditListeners = old_document.getUndoableEditListeners();
+		
+		// Defines a key listener for the editor of this component
+		defineEditorKeyListener(this);
+		jTextComponentOfEditor.addKeyListener(editorKeyListener);
+		
+		// Defines a focus listener for the editor of this component
+		defineEditorFocusListener(this);
+		jTextComponentOfEditor.addFocusListener(editorFocusListener);
+		
+		document = new PlainDocumentTextFormatter();
+				
+		// Set reference to the container component
+		document.setJComboBoxReference(this);
+			
+		// Removes all previous 'document' and 'undoableEdit' listeners
+		DocumentListener[] removableDocumentListeners = document.getDocumentListeners();
+		for (DocumentListener dL : removableDocumentListeners)
+			document.removeDocumentListener(dL);
+
+		UndoableEditListener[] removableUndoableEditListeners = document.getUndoableEditListeners();
+		for (UndoableEditListener dUEL : removableUndoableEditListeners)
+			document.removeUndoableEditListener(dUEL);
+
+		for (DocumentListener rdL : documentListeners)
+			document.addDocumentListener(rdL);
+		
+		// The undo-redo listeners fail
+		for (UndoableEditListener uEL : undoableEditListeners) 
+			document.addUndoableEditListener(uEL);
+		
+		if (undoableEditListeners.length > 0) {
+			if (jTextComponentOfEditor instanceof IEditableText) {
+				((IEditableText)jTextComponentOfEditor).addUndoRedoEditListener(new UndoRedoEditListener() {
+					/*
+					 * (non-Javadoc)
+					 * @see org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener#operationExecuted(org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditEvent)
+					 */
+					public void operationExecuted(UndoRedoEditEvent e) {
+						model.setTextWritten(e.getNewText());
+						document.updateOnlyTextColor();
+					}
+				});
+			}
+		}
+
+		jTextComponentOfEditor.setDocument(document);
+		
+		super.setEditor(anEditor);
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.JComboBox#setModel(javax.swing.ComboBoxModel)
+	 */
+	public void setModel(ComboBoxModel aModel) {
+		// If model isn't DefaultComboBoxConfigurableLookUpModel, sets as model a new DefaultComboBoxConfigurableLookUpModel, with the data
+		//  of ''aModel'':
+		if (! (aModel instanceof DefaultComboBoxConfigurableLookUpModel) ) {
+			Vector<Object> data = new Vector<Object>(aModel.getSize());
+			
+			for (int i = 0; i < aModel.getSize(); i++) {
+				data.add(aModel.getElementAt(i));
+			}
+			
+			aModel = new DefaultComboBoxConfigurableLookUpModel(data);
+		}
+		
+		super.setModel(aModel);
+		
+		model = (DefaultComboBoxConfigurableLookUpModel)super.getModel();
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.JComboBox#setSelectedIndex(int)
+	 */
+	public void setSelectedIndex(int anIndex) {
+		if (anIndex < -1 || anIndex >= model.getSize())
+			// Fails because index is out of bounds.
+			throw new IllegalArgumentException("setSelectedIndex: " + anIndex + " out of bounds");
+		else
+			// Selects the item at the given index or clears the selection if the
+			// index value is -1.
+			setSelectedItem((anIndex == -1) ? null : model.getElementAt(anIndex));
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.JComboBox#setSelectedItem(java.lang.Object)
+	 */
+	public void setSelectedItem(Object anObject) {		
+		if ((selectedItemReminder == null) || (!selectedItemReminder.equals(anObject))) {
+			if (arrowKeyPressed) {
+				
+				selectingItem = true;
+				model.setSelectedItem(anObject);
+				selectingItem = false;
+				
+				if (model.getSize() > 0)
+					previousSelected = anObject;
+			}
+			else {
+				selectingItem = true;
+				model.setSelectedItem(anObject);
+				selectingItem = false;
+				
+				editor.setItem(anObject);
+				
+				if (model.getSize() > 0)
+					previousSelected = anObject;
+			}
+			
+			if (selectedItemReminder != model.getSelectedItem()) {
+				// In case a users implementation of ComboBoxModel
+				// doesn't fire a ListDataEvent when the selection
+				// changes.
+				selectedItemChanged();
+			}
+		}			
+		fireActionEvent();
+		document.updateOnlyTextColor();
+	}
+
+	/*
+	 * <p>Unsupported operation. A <code>JComboBoxConfigurableLookUp</code> is always editable.</p>
+	 *
+	 * (non-Javadoc)
+	 * @see javax.swing.JComboBox#setEditable(boolean)
+	 */
+	public void setEditable(boolean b) {
+		throw new UnsupportedOperationException();
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComboBox#removeAllItems()
+	 */
+	public void removeAllItems() {
+		if ( !(model instanceof MutableComboBoxModel) )
+			throw new RuntimeException("Cannot use this method with a non-Mutable data dataModel.");
+
+		//if ( model instanceof DefaultComboBoxConfigurableLookUpModel ) {
+		model.setTextWritten("");
+		((DefaultComboBoxConfigurableLookUpModel)model).removeAllElements();
+
+		selectedItemReminder = null;
+
+		if (isEditable()) {
+			editor.setItem(null);
+		}
+		
+		document.updateTextColorAndRingBeep();
+	}
+	
+	public void addItem(Object anObject) {
+		super.addItem(anObject);
+
+		if ((toForceSelectAnItem) && (getSelectedIndex() == -1))
+			setSelectedIndex(0);
+		
+		document.updateTextColorAndRingBeep();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComboBox#removeItem(java.lang.Object)
+	 */
+	public void removeItem(Object anObject) {
+		super.removeItem(anObject);
+		
+		document.updateTextColorAndRingBeep();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComboBox#removeItemAt(int)
+	 */
+	public void removeItemAt(int anIndex) {
+		super.removeItemAt(anIndex);
+		
+		document.updateTextColorAndRingBeep();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#setUI(javax.swing.plaf.ComponentUI)
+	 */
+	protected void setUI(ComponentUI newUI) {
+		super.setUI(newUI);
+		ComponentUI oldUI = newUI;
+		
+		// Remove the default key selection manager
+		super.setKeySelectionManager(null);
+		
+        firePropertyChange("UI", oldUI, newUI);
+        revalidate();
+        repaint();
+	}
+
+	/*
+	 * <p>Unsupported operation.</p>
+	 * 
+	 * (non-Javadoc)
+	 * @see javax.swing.JComboBox#selectWithKeyChar(char)
+	 */
+	public boolean selectWithKeyChar(char keyChar) {
+		throw new UnsupportedOperationException();
+	}
+
+	/*
+	 * <p>Unsupported operation.</p>
+	 * 
+	 * (non-Javadoc)
+	 * @see javax.swing.JComboBox#processKeyEvent(java.awt.event.KeyEvent)
+	 */
+	public void processKeyEvent(KeyEvent e) {
+		throw new UnsupportedOperationException();
+	}
+
+	/*
+	 * <p>Unsupported operation.</p>
+	 * 
+	 * (non-Javadoc)
+	 * @see javax.swing.JComboBox#createDefaultKeySelectionManager()
+	 */
+	protected KeySelectionManager createDefaultKeySelectionManager() {
+		throw new UnsupportedOperationException();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComboBox#paramString()
+	 */
+	protected String paramString() {
+		return super.paramString() +
+		  "onlyOneColorOnText" + onlyOneColorOnText +
+		  "beepEnabled" + beepEnabled +
+		  "hidePopupIfThereAreNoItems" + hidePopupIfThereAreNoItems +
+		  "toForceSelectAnItem" + toForceSelectAnItem +
+		  "completeArrowKeySelection" + completeArrowKeySelection +
+		  "displayAllItemsWithArrowButton" + displayAllItemsWithArrowButton +
+		  "itemsOrder" + model.getItemsOrder() +
+		  "showAllItemsInListBox" + model.isShowAllItemsInListBox() +
+		  "localeRules" + model.getLocaleRules() +
+		  "caseSensitive" + model.isCaseSensitive();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComboBox#updateUI()
+	 */
+	public void updateUI() {
+		super.updateUI();
+		
+		// Force to hide the popup
+		updatedUI = true;
+
+		for (int i = 0; i < getComponentCount(); i++) {
+			if (getComponent(i) instanceof JButton) {
+				((JButton)getComponent(i)).addMouseListener(getArrowMouseListener());
+				return;
+			}
+		}
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComboBox#showPopup()
+	 */
+	public void showPopup() {
+		if (this.isShowing() && (!blockPopupHided))
+			setPopupVisible(true);
+	}
+
+	/**
+	 * <p>Sets if the popup of this component will always remain hided, or can be shown when is invoked.</p>
+	 * 
+	 * @param b <code>true</code> if will remain blocked; <code>false</code> if can be shown 
+	 */
+	public void setBlockPopupHided(boolean b) {
+		blockPopupHided = b;
+	}
+	
+
+	/**
+	 * <p>Determines if the popup of this component will always remain hided.</p>
+	 * 
+	 * @param b <code>true</code> if will remain blocked; <code>false</code> if can be shown 
+	 */
+	public boolean isBlockPopupHided() {
+		return blockPopupHided;
+	}
+	///// END REIMPLEMENTATION OF METHODS OF 'JComboBox' /////    
+	
+	////// METHODS FOR THE BEHAVIOR FLAGS  //////
+	/**
+	 * <p>Returns the 'only_One_Color_On_Text' configuration value of this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: always uses black colour on text.</li>
+	 *   <li><i>false</i>: by default uses black colour on text, but if text written by user doesn't match with any item according the <code>ILookUp</code> agent, text will be on red colour.</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @return 'only_One_Color_On_Text' configuration
+	 */
+	public boolean isOnlyOneColorOnText() {
+		return onlyOneColorOnText;
+	}
+	
+	/**
+	 * <p>Sets the 'only_One_Color_On_Text' configuration value for this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: always uses black colour on text.</li>
+	 *   <li><i>false</i>: by default uses black colour on text, but if text written by user doesn't match with any item according the <code>ILookUp</code> agent, text will be on red colour.</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @param b value for 'only_One_Color_On_Text' configuration flag
+	 */
+	public void setOnlyOneColorOnText(boolean b) {
+		onlyOneColorOnText = b;
+	}
+
+	/**
+	 * <p>Returns the 'beep_Enabled' configuration value of this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: a beep-sound is listened when no item matches with the text written according the <code>ILookUp</code> agent.</li>
+	 *   <li><i>false</i>: no sound is listened.</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @return 'beep_Enabled' configuration
+	 */
+	public boolean isBeepEnabled() {
+		return beepEnabled;
+	}
+	
+	/**
+	 * <p>Sets the 'beep_Enabled' configuration value for this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: a beep-sound is listened when no item matches with the text written according the <code>ILookUp</code> agent.</li>
+	 *   <li><i>false</i>: no sound is listened.</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @param b value for 'beep_Enabled' configuration flag
+	 */
+	public void setBeepEnabled(boolean b) {
+		beepEnabled = b;
+	}	
+
+	/**
+	 * <p>Returns the 'hidePopupIfThereAreNoItems' configuration value of this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: hides the popup if there are no items when you write.</li>
+	 *   <li><i>false</i>: default behaviour (if there are no items when you write, popup remains visible) .</li>
+	 *  <ul>
+	 * </p>
+	 * 
+	 * @return 'hidePopupIfThereAreNoItems' configuration
+	 */
+	public boolean isHidePopupIfThereAreNoItems() {
+		return hidePopupIfThereAreNoItems;
+	}
+	
+	/**
+	 * <p>Sets the 'hidePopupIfThereAreNoItems' configuration value for this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: hides the popup if there are no items when you write.</li>
+	 *   <li><i>false</i>: default behaviour (if there are no items when you write, popup remains visible) .</li>
+	 *  <ul>
+	 * </p>
+	 * 
+	 * @param b value for 'hidePopupIfThereAreNoItems' configuration flag
+	 */
+	public void setHidePopupIfThereAreNoItems(boolean b) {
+		hidePopupIfThereAreNoItems = b;
+	}
+
+	/**
+	 * <p>Returns the 'toForceSelectAnItem' configuration value of this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: selects the previous selected item or the first of the list when user presses the Enter key or when the component loses the focus .</li>
+	 *   <li><i>false</i>: default behaviour .</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @return 'toForceSelectAnItem' configuration
+	 */
+	public boolean isToForceSelectAnItem() {
+		return toForceSelectAnItem;
+	}
+	
+	/**
+	 * <p>Sets the 'toForceSelectAnItem' configuration value for this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: selects the previous selected item or the first of the list when user presses the Enter key or when the component loses the focus .</li>
+	 *   <li><i>false</i>: default behaviour .</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @param value for 'toForceSelectAnItem' configuration flag
+	 */
+	public void setToForceSelectAnItem(boolean b) {
+		toForceSelectAnItem = b;
+	}
+
+	/**
+	 * <p>Returns the 'completeArrowKeySelection' configuration value of this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: writes in the editor the value of the element selected by the arrow keys (up or down).</li>
+	 *   <li><i>false</i>: holds the previous text written .</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @return 'completeArrowKeySelection' configuration
+	 */
+	public boolean isCompleteArrowKeySelection() {
+		return completeArrowKeySelection;
+	}
+
+	/**
+	 * <p>Sets the 'completeArrowKeySelection' configuration value for this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: writes in the editor the value of the element selected by the arrow keys (up or down).</li>
+	 *   <li><i>false</i>: holds the previous text written .</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @param b value for 'completeArrowKeySelection' configuration flag
+	 */
+	public void setCompleteArrowKeySelection(boolean b) {
+		completeArrowKeySelection = b;
+	}
+
+	/**
+	 * <p>Returns the 'displayAllItemsWithArrowButton' configuration value of this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: displays all this component's dataModel items if its <i>popup</i> it's hided, and this component's dataModel
+	 *    listed only the matches <i>(flag: <code>DefaultComboBoxConfigurableLookUpModel.showAllItemsInListBox == false</code>)</i>.</li>
+	 *   <li><i>false</i>: normal behaviour according the other <i>flags</i>.</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @return 'displayAllItemsWithArrowButton' configuration
+	 */
+	public boolean isDisplayAllItemsWithArrowButton() {
+		return displayAllItemsWithArrowButton;
+	}
+	
+	/**
+	 * <p>Sets the 'toForceSelectAnItem' configuration value for this component. Configuration values are:
+	 *  <ul>
+	 *   <li><i>true</i>: displays all this component's dataModel items if its <i>popup</i> it's hided, and this component's dataModel
+	 *    listed only the matches <i>(flag: <code>DefaultComboBoxConfigurableLookUpModel.showAllItemsInListBox == false</code>)</i>.</li>
+	 *   <li><i>false</i>: normal behaviour according the other <i>flags</i>.</li>
+	 *  </ul>
+	 * </p>
+	 * 
+	 * @param value for 'displayAllItemsWithArrowButton' configuration flag
+	 */
+	public void setDisplayAllItemsWithArrowButton(boolean b) {
+		displayAllItemsWithArrowButton = b;
+	}
+
+	////// END METHODS FOR THE BEHAVIOR FLAGS  //////
+
+
+	/**
+	 * <p>Inner class that inherits of the class PlainDocument, and is used for manipulate the textWritten that has the document of the editor of this component.</p>
+	 * 
+	 * <p>This class is also optimized for items look up process.</p>
+	 * 
+	 * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+	 */
+	public class PlainDocumentTextFormatter extends PlainDocument {
+		private static final long serialVersionUID = -1858441733547527816L;
+		private JComboBoxConfigurableLookUp comboBoxReference;
+		private String textWritten;
+		private boolean updatedModel;
+		private String textOfReplacement;
+		private boolean textInRedColor;
+		private int old_caretPosition;
+		private String completeArrowKeySelectionValue;
+
+		/**
+		 * <p>Default Constructor.</p>
+		 */
+		public PlainDocumentTextFormatter() {
+			super();
+			this.initialize();
+		}
+		
+		/**
+		 * <p>This method makes some initialize operations.</p> 
+		 */
+		protected void initialize() {
+			textWritten = "";
+			textOfReplacement = "";
+			textInRedColor = false;
+			completeArrowKeySelectionValue = null;
+		}
+
+		/**
+		 * <p>Sets a reference of this component.</p>
+		 * 
+		 * @param comboBox A reference to the class that contains this.
+		 */
+		protected void setJComboBoxReference(JComboBoxConfigurableLookUp comboBox) {
+			comboBoxReference = comboBox;
+		}
+
+		/*
+		 *  (non-Javadoc)
+		 * @see javax.swing.text.Document#insertString(int, java.lang.String, javax.swing.text.AttributeSet)
+		 */
+		public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
+			if (updatedModel) {
+				model.setTextWritten(textWritten);
+				super.insertString(offs, textWritten, a);
+				
+				return;
+			}
+
+			hidePopup();
+			
+			boolean caretToEnd = true;
+			
+			if (textWritten.length() > 0) {
+				if (offs < textWritten.length()) {
+					String old_textWritten = textWritten;
+					
+					// End of the text
+					textWritten = textWritten.substring(offs, textWritten.length());
+					
+					// Beginning of the text
+					if (offs > 0) {
+						// Reset (without text written)
+						textWritten = old_textWritten.substring(0, offs) + str + textWritten;
+					}
+					else {
+						
+						if (offs == 0) {
+							caretToEnd = false;
+						}
+						
+						textWritten = str + textWritten;
+					}
+				}
+				else {
+					textWritten = textWritten.substring(0, offs) + str;
+				}
+			}
+			else {
+				textWritten =  str;
+			}
+				
+			if (completeArrowKeySelectionValue == null) {
+				model.setTextWritten(textWritten);
+			}
+			else {
+				model.setTextWritten(completeArrowKeySelectionValue);
+			}
+			
+			super.insertString(offs, str, a);
+
+			// Update the color of the text
+			updateTextColorAndRingBeep();
+		
+			if (model.getSize() > 0) {
+				if (isShowing()) {
+					showPopup();
+				}
+			}
+			else {
+				if ((textWritten.compareTo("") != 0) && (!hidePopupIfThereAreNoItems)) {
+					showPopup();	
+				}
+			}
+			
+			if (caretToEnd) {
+				// Update the caret position -> at the same place it was or at the end
+				updateCaretPosition(textWritten.length());
+			}
+			else {
+				// Update the caret position -> at the same place it was or at the end
+				updateCaretPosition(str.length());
+			}
+		}
+		
+		/*
+		 *  (non-Javadoc)
+		 * @see javax.swing.text.AbstractDocument#replace(int, int, java.lang.String, javax.swing.text.AttributeSet)
+		 */
+		public void replace(int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
+			String old_textWritten;
+
+			if (arrowKeyPressed) {
+				if (!model.isShowAllItemsInListBox()) {
+					if (completeArrowKeySelection) {
+						String currentText = ((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).getText();
+						
+						old_textWritten = textWritten;
+						old_caretPosition = ((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).getCaretPosition() + text.length();
+								
+						textWritten = "";
+
+						super.remove(0, old_textWritten.length());
+		
+						if ((completeArrowKeySelectionValue == null) || (!currentText.equals(old_textWritten))) 
+							completeArrowKeySelectionValue = old_textWritten;
+
+						insertString(0, text, null);
+					}
+					else {
+						insertString(0, "", null);
+					}
+				}
+
+				previousSelected = text;
+				arrowKeyPressed = false;
+
+				return;
+			}
+
+			completeArrowKeySelectionValue = null;
+			
+			// Avoid two replaces for the same operation
+			if ((text.compareTo("") == 0) && (length == textWritten.length()))
+				return;
+			
+			// Only remove if there is text to be replaced (text selected)
+			if (length > 0) {
+
+				textOfReplacement = text;
+				remove(offset, length);
+			}
+			else {
+				if ((offset > 0) && (offset != textWritten.length())) {
+					// Must replace the dataModel for update the data in the popup correctly
+						
+					// There is a bug that when text has been removed, the elements in the popup aren seen.
+					// The solution to this bug is add them as a new dataModel
+					hidePopup();
+
+					updatedModel = true;
+
+					old_textWritten = textWritten;
+					old_caretPosition = ((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).getCaretPosition() + text.length();
+					
+					textWritten = "";
+					model.setTextWritten(textWritten);
+
+					super.remove(0, old_textWritten.length());
+				
+					// Stores the configuration of the flags	    	    	
+					int itemsOrderFlag = model.getItemsOrder();
+					boolean showAllItemsInListBox = model.isShowAllItemsInListBox();
+					String languageRules = model.getLocaleRules();
+					boolean caseSensitive = model.isCaseSensitive();
+					ILookUp lookUpAgent = model.getLookUpAgent();
+					
+					// Must replace the dataModel for update the data in the popup correctly
+					comboBoxReference.setModel(new DefaultComboBoxConfigurableLookUpModel(model.getData()));
+					
+					// Restores the configuration of the flags
+					model.setItemsOrder(itemsOrderFlag);
+					model.setShowAllItemsInListBox(showAllItemsInListBox);
+					model.setLocaleRules(languageRules);
+					model.setCaseSensitive(caseSensitive);
+					model.setLookUpAgent(lookUpAgent);
+					
+					// Reset (without text written)
+					insertString(0, textWritten, null);
+					
+					// Insert the new text
+					textWritten = old_textWritten.substring(0, offset) + text + old_textWritten.substring(offset, old_textWritten.length());
+					
+					insertString(0, textWritten, null);
+
+					updatedModel = false;
+
+					// Update the color of the text
+					updateTextColorAndRingBeep();
+					
+					// Update the caret position -> at the same place it was or at the end
+					updateCaretPosition(old_caretPosition);
+					
+					// Only show the popup if there are items to show
+					if (model.getSize() > 0) {
+						 showPopup();
+					}
+					else {
+						if ((textWritten.compareTo("") != 0) && (!hidePopupIfThereAreNoItems)) {
+							showPopup();	
+						}
+					}
+				}
+				else {
+					// Default replacement
+					super.replace(offset, length, text, attrs);
+				}
+			}
+		}
+			
+		/*
+		 *  (non-Javadoc)
+		 * @see javax.swing.text.Document#remove(int, int)
+		 */
+		public void remove(int offs, int len) throws BadLocationException {
+			String old_textWritten;
+				
+			// There is a bug that when text has been removed, the elements in the popup aren seen.
+			// The solution to this bug is add them as a new dataModel
+			hidePopup();
+
+			updatedModel = true;
+
+			old_textWritten = textWritten;
+			
+			old_caretPosition = Math.min(((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).getCaretPosition(), offs);
+			
+			textWritten = "";
+			model.setTextWritten(textWritten);
+
+			super.remove(0, old_textWritten.length());
+			
+			int itemsOrderFlag = model.getItemsOrder();
+			boolean showAllItemsInListBox = model.isShowAllItemsInListBox();
+			String languageRules = model.getLocaleRules();
+			boolean caseSensitive = model.isCaseSensitive();
+			ILookUp lookUpAgent = model.getLookUpAgent();
+		
+			// Must replace the dataModel for update the data in the popup correctly
+			comboBoxReference.setModel(new DefaultComboBoxConfigurableLookUpModel(model.getData()));
+			
+			// Restores the configuration of the flags
+			model.setItemsOrder(itemsOrderFlag);
+			model.setShowAllItemsInListBox(showAllItemsInListBox);
+			model.setLocaleRules(languageRules);
+			model.setCaseSensitive(caseSensitive);
+			model.setLookUpAgent(lookUpAgent);
+
+			// Reset (without text written)
+			insertString(0, textWritten, null);
+			
+			// Insert the new text
+			textWritten = old_textWritten.substring(0, offs) + textOfReplacement + old_textWritten.substring(offs + len, old_textWritten.length());
+
+			insertString(0, textWritten, null);
+			
+			updatedModel = false;
+			
+			// Update the color of the text
+			updateTextColorAndRingBeep();
+			
+			// Only show the popup if there are items to show
+			if (model.getSize() > 0) {
+				 showPopup();
+			}
+			else {
+				if ((textWritten.compareTo("") != 0) && (!hidePopupIfThereAreNoItems)) {
+					showPopup();	
+				}
+			}
+	
+//			if (old_caretPosition == 0) {
+//				// Set the caret position to the end of the text
+//				updateCaretPosition(textWritten.length());
+//			}
+//			else {
+				// Update the caret position -> at the same place it was or at the end
+				updateCaretPosition(old_caretPosition + textOfReplacement.length());
+//			}
+			
+			textOfReplacement = "";
+		}
+
+		/**
+		 * <p>Updates the color of the text in the {@link ComboBoxEditor} of this component, and
+		 *  rings a beep if there is no item.</p>
+		 * 
+		 * <ul>
+		 *  <li><i>Text in <u>red color</u></i>: if no item matches with the text written according the <code>ILookUp</code> agent.</li>
+		 *  <li><i>Text in <u>black color</u></i>: if there is at least one item matches with the text written according the <code>ILookUp</code> agent.</li>
+		 * </ul>
+		 */
+		public void updateTextColorAndRingBeep() {
+			if (! comboBoxReference.isOnlyOneColorOnText()) {
+				if (model.isShowAllItemsInListBox()) {
+					// Set text into red color if no items matches with the text written, or in black color if it was in red
+					//   color and now there is almost one element that starts with the characteres written by the user
+					if (textWritten.compareTo("") != 0) {
+						if (model.getSelectedItem() == null) {
+							comboBoxReference.getEditor().getEditorComponent().setForeground(Color.RED);
+							textInRedColor = true;
+								 
+								 // Rings a beep if allowed
+						if (beepEnabled)
+							comboBoxReference.getToolkit().beep(); // when available use: UIManager.getLookAndFeel().provideErrorFeedback(comboBox);
+						}
+						else {
+							comboBoxReference.getEditor().getEditorComponent().setForeground(Color.BLACK);
+							textInRedColor = false;
+						}
+					}
+					else {
+						if (textInRedColor) {
+							comboBoxReference.getEditor().getEditorComponent().setForeground(Color.BLACK);
+							textInRedColor = false;
+						}
+					}
+				}
+				else {
+					// Set text into red color if no items matches with the text written, or in black color if it was in red
+					//   color and now there is almost one element that starts with the characteres written by the user
+					if (textWritten.compareTo("") != 0) {
+						if (model.getSize() == 0) {
+							comboBoxReference.getEditor().getEditorComponent().setForeground(Color.RED);
+							textInRedColor = true;
+								 
+								 // Rings a beep if allowed
+						if (beepEnabled)
+							comboBoxReference.getToolkit().beep(); // when available use: UIManager.getLookAndFeel().provideErrorFeedback(comboBox);
+						}
+						else {
+							comboBoxReference.getEditor().getEditorComponent().setForeground(Color.BLACK);
+							textInRedColor = false;
+						}
+					}
+					else {
+						if (textInRedColor) {
+							comboBoxReference.getEditor().getEditorComponent().setForeground(Color.BLACK);
+							textInRedColor = false;
+						}
+					}
+				}
+			}
+			else {
+				// Rings a beep if no there is no item, and if it's allowed
+				if ((textWritten.compareTo("") != 0) && (model.getSize() == 0)) {
+					if (beepEnabled)
+						comboBoxReference.getToolkit().beep(); // when available use: UIManager.getLookAndFeel().provideErrorFeedback(comboBox);
+				}
+			}
+		}
+		
+		/**
+		 * <p>Updates the position of the caret in the {@link ComboBoxEditor} of this component.</p>
+		 * 
+		 * @param position the new position of the caret.
+		 */
+		public void updateCaretPosition(int position) {
+			// If user has selected an item of the popup (using the mouse) -> set the caret position to the end of the text
+			if (popupItemSelected) {
+				((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setCaretPosition(textWritten.length());
+				popupItemSelected = false;
+				return;
+			}
+			
+			if (position > textWritten.length())
+				((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setCaretPosition(textWritten.length());
+			else {
+				((JTextComponent) comboBoxReference.getEditor().getEditorComponent()).setCaretPosition(position);
+			}
+		}
+
+		/**
+		 * <p>Updates the color of the text in this document.</p>
+		 * 
+		 * <p>Sets text to red color if there is no item in the visible list that the <i>look up</i> agent
+		 *  returned with that text and the items of the dataModel, and, being enabled the second color in
+		 *  the configuration the the <code>JcomboBoxConfigurableLookUp</code> agent. Otherwise, the foreground color
+		 *  of the text will be black.</p>
+		 * 
+		 * <p>This method disables the <i>beep</i> during the process of updating the color of the text, and
+		 *  restores it after.</p>
+		 */
+		public void updateOnlyTextColor() {
+			boolean isBeepEnabled = isBeepEnabled();
+			setBeepEnabled(false);
+			
+			updateTextColorAndRingBeep();
+				
+			setBeepEnabled(isBeepEnabled);
+		}
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/StringComparator.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/StringComparator.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/StringComparator.java	(revision 38348)
@@ -0,0 +1,206 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.comboboxconfigurablelookup;
+
+import java.text.Collator;
+import java.util.Comparator;
+
+/**
+ * <p>Compares two chain of characters alphabetically.</p>
+ *
+ * <p>This class is a copy of a class with the same name located in <i>libIverUtiles</i>.</p>
+ * 
+ * @author Fernando Gonz�lez Cort�s
+ * @author Pablo Piqueras Bartolom� <pablo.piqueras@iver.es)
+ */
+public class StringComparator implements Comparator<Object> {
+	private boolean caseSensitive = true;
+	private LocaleRules localeRules = null;
+
+    /**
+     * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
+     */
+    public int compare(Object o1, Object o2) {
+        String s1 = o1.toString();
+        String s2 = o2.toString();
+
+        // If localeRules is null -> use the default rules
+        if (localeRules == null) {
+        	if (caseSensitive) {
+        		return s1.compareTo(s2);
+        	}
+        	else {
+        		return s1.compareToIgnoreCase(s2);
+        	}
+        }
+        else {
+        	if (localeRules.isUseLocaleRules()) {
+        		Collator collator = localeRules.getCollator();
+        		
+        		if (caseSensitive) {
+        			return collator.compare(s1, s2);
+        		}
+        		else {
+        			return collator.compare(s1.toLowerCase(), s2.toLowerCase());
+        		}
+        	}
+        	else {
+            	if (caseSensitive) {
+            		return s1.compareTo(s2);
+            	}
+            	else {
+            		return s1.compareToIgnoreCase(s2);
+            	}
+        	}
+        }
+    }
+
+    /**
+     * Determines if the comparator is sensitive to upper case and down case characters or not.
+     *
+     * @return <code>true</code> if the comparator is sensitive to upper case and down case characters; 
+     *  otherwise not
+     */
+    public boolean isCaseSensitive() {
+        return caseSensitive;
+    }
+
+    /**
+     * Sets the comparator sensitive or insensitive to upper case and down case characters.
+     *
+     * @param b <code>true</code> if the comparator is sensitive to upper case and down case characters;
+     *  <code>false</code> if not
+     */
+    public void setCaseSensitive(boolean b) {
+        caseSensitive = b;
+    }
+
+    /**
+     * Gets an object with the information for use the locale rules in comparison between strings.
+     * <ul>
+     * <li>A boolean value -> if want or not use the locale rules</li>
+     * <li>A reference to the locale rules</li>
+     * </ul>
+     * 
+     * @return @see LocaleRules
+     */
+    public LocaleRules getLocaleRules() {
+    	return localeRules;
+    }    
+    /**
+     * Sets an object with the information for use the locale rules in comparison between strings.
+     * <ul>
+     * <li>A boolean value -> if want or not use the locale rules.</li>
+     * <li>A reference to the locale rules.</li>
+     * </ul>
+     * 
+     * @param @see LocaleRules
+     */
+    public void setLocaleRules(LocaleRules locRules) {
+    	localeRules = locRules;
+    }
+    
+    /**
+     * Represents the information needed by <i>StringComparator</i> for use or not locale-sensitive String
+     *  comparison-rules in the <b><i>compare</i></b> method.
+     * 
+     * @author Pablo Piqueras Bartolom�
+     */
+    public class LocaleRules {
+    	 private boolean useLocaleRules;
+    	 private Collator _collator;
+    	 
+    	 /**
+    	  * Default constructor without parameters.
+    	  */
+    	 public LocaleRules() {
+    		 useLocaleRules = false;
+    		 _collator = null;
+    	 }
+    	 
+    	 /**
+    	  * Default constructor with two parameters.
+    	  * 
+    	  * @param b Use locale rules
+    	  * @param collator A reference to an object configurated for locale-sensitive String comparison
+    	  */
+    	 public LocaleRules(boolean b, Collator collator) {
+    		 useLocaleRules = b;
+    		 _collator = collator;
+    	 }
+    	 
+ 		/**
+ 		 * Gets the value of the inner attribute <i>_collator</i>.
+ 		 * 
+ 		 * @return Returns A reference to an object configurated for locale-sensitive String comparison
+ 		 */
+ 		public Collator getCollator() {
+ 			return _collator;
+ 		}
+
+ 		/**
+ 		 * Sets a value to the inner attribute <i>_collator</i>.
+ 		 * 
+ 		 * @param collator A reference to an object configurated for locale-sensitive String comparison
+ 		 */
+ 		public void setCollator(Collator collator) {
+ 			this._collator = collator;
+ 		}
+
+		/**
+		 * Gets the value of the inner attribute <i>useLocaleRules</i>.
+		 * 
+		 * @return Returns the useLocaleRules.
+		 */
+		public boolean isUseLocaleRules() {
+			return useLocaleRules;
+		}
+
+		/**
+		 * Sets a value to the inner attribute <i>useLocaleRules</i>.
+		 * 
+		 * @param useLocaleRules The useLocaleRules to set.
+		 */
+		public void setUseLocaleRules(boolean useLocaleRules) {
+			this.useLocaleRules = useLocaleRules;
+		}
+    }
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/agents/StartsWithLookUpAgent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/agents/StartsWithLookUpAgent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/agents/StartsWithLookUpAgent.java	(revision 38348)
@@ -0,0 +1,119 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.comboboxconfigurablelookup.agents;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Vector;
+
+import org.gvsig.gui.beans.comboboxconfigurablelookup.ILookUp;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.StringComparator;
+
+/**
+ * <p>Agent that looks up items of an locale-rules alphabetically sort ordered <code>Vector</code> that
+ *  start with a text. Those items will be returned as a {@link List List}.</p>
+ * 
+ * <p>Supports two versions: with or without considering case sensitive.</p>
+ * 
+ * @version 07/02/2008
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class StartsWithLookUpAgent implements ILookUp {
+	/**
+	 * <p>Creates a new instance of the class <code>StartsWithLookUpAgent</code>.</p>
+	 */
+	public StartsWithLookUpAgent() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.comboboxconfigurablelookup.ILookUp#doLookUpConsideringCaseSensitive(java.lang.String, java.util.Vector, org.gvsig.gui.beans.comboboxconfigurablelookup.StringComparator)
+	 */
+	public synchronized List<Object> doLookUpConsideringCaseSensitive(String text, Vector<Object> sortOrderedItems, StringComparator comp) {
+		if (text == null)
+			return null;
+		
+		List<Object> results_list = doLookUpIgnoringCaseSensitive(text, sortOrderedItems, comp);
+
+		if (results_list == null)
+			return null;
+
+		List<Object> results = new ArrayList<Object>();
+
+		for (int i = 0; i < (results_list.size()); i++) {
+			if (results_list.get(i).toString().startsWith(text)) {
+				results.add(results_list.get(i));
+			}
+		}
+
+		return results;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.comboboxconfigurablelookup.ILookUp#doLookUpIgnoringCaseSensitive(java.lang.String, java.util.Vector, org.gvsig.gui.beans.comboboxconfigurablelookup.StringComparator)
+	 */
+	public synchronized List<Object> doLookUpIgnoringCaseSensitive(String text, Vector<Object> sortOrderedItems, StringComparator comp) {
+		if (text == null)
+			return null;
+		
+		int currentIteration = 0;
+		int size = sortOrderedItems.size();
+		int maxNumberOfIterations = (int) (Math.log(size) / Math.log(2));
+		int lowIndex = 0;
+		int highIndex = sortOrderedItems.size() - 1;
+		int mIndx;
+		
+		while ((lowIndex <= highIndex) && (currentIteration <= maxNumberOfIterations)) {
+			mIndx = ( lowIndex + highIndex ) / 2;
+
+			if ( sortOrderedItems.get( mIndx ).toString().toLowerCase().startsWith( text.toLowerCase() ) ) {
+				lowIndex = highIndex = mIndx;
+				highIndex ++;
+				
+				// Expand the rank to up
+				while ( ( highIndex < size ) && ( sortOrderedItems.get( highIndex ).toString().toLowerCase().startsWith( text.toLowerCase() ) ) ) {
+					highIndex ++;
+				}
+
+				// Expand the rank to down
+				while ( ( (lowIndex - 1) > -1 ) && ( sortOrderedItems.get( (lowIndex - 1) ).toString().toLowerCase().startsWith( text.toLowerCase() ) ) ) {
+					lowIndex --;
+				}
+				
+				// Returns all items in the rank			
+				return Arrays.asList((sortOrderedItems.subList(lowIndex, highIndex)).toArray()); // Breaks the loop
+			}
+			else {
+				if ( comp.compare(sortOrderedItems.get( mIndx ).toString().toLowerCase(), text.toLowerCase() ) > 0 ) {
+					highIndex = mIndx - 1;
+				}
+				else {
+					lowIndex = mIndx + 1;
+				}
+			}
+			
+			currentIteration ++;
+		}
+		
+		return null;
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/ILookUp.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/ILookUp.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/comboboxconfigurablelookup/ILookUp.java	(revision 38348)
@@ -0,0 +1,76 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.comboboxconfigurablelookup;
+
+import java.util.List;
+import java.util.Vector;
+
+/**
+ * <p>Interface for implementing algorithms that get a sublist of items that match with a text written according
+ *  an orthographical rules and particular search requirements.</p>
+ * 
+ * <p>There are two possibilities, considering or ignoring case sensitive.</p>
+ * 
+ * <p>The particular implementation will be useful to integrate customized algorithms as the <i>look up</i>
+ *  logic in the {@link JComboBoxConfigurableLookUp JComboBoxConfigurableLookUp} model.</p> 
+ * 
+ * @version 07/02/2008
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public interface ILookUp {
+	/**
+	 * <p>This method should be used when is wanted to distinguish small letters from capital letters during the search.</p>
+	 *   
+	 * <p>It's necessary that all items of the array implement the {@link Comparable} interface.</p>
+	 * 
+	 * <p>It's also necessary that the value returned by the <i>toString()</i> method of each item (supposing 
+	 *   they inherit from Object) would be the expected value user saw (that would be used to compare the items).</p>
+	 * 
+	 * <p>And elements of the <code>Vector</code> should be sort ordered by a <code>StringComparator</code> with the same configuration as <code>comp</code>.</p>
+	 * 
+	 * @param text java.lang.String
+	 * @param sortOrderedItems java.util.Vector
+	 * @param comp An <code>StringComparator</code> object which implements the <i><b>compareTo()</b><i> method. Must have the same configuration that was
+	 *  used to sort order the items of <code>sortOrderedItems</code>.
+	 *  
+	 * @return A sublist with all items that carry out with the particular search algorithm requirements
+	 */
+	public List<Object> doLookUpConsideringCaseSensitive(String text, Vector<Object> sortOrderedItems, StringComparator comp);
+
+	/**
+	 * <p>This method should be used when is wanted not to distinguish small letters from capital letters during the search, and the comparison of items
+	 *   done according an algorithm we define.</p>
+	 *   
+	 * <p>It's necessary that all items of the array implement the {@link Comparable} interface.</p>
+	 * 
+	 * <p>It's also necessary that the value returned by the <i>toString()</i> method of each item (supposing 
+	 *   they inherit from Object) would be the expected value user saw (that would be used to compare the items).</p>
+	 * 
+	 * <p>And elements of the <code>Vector</code> should be sort ordered by a <code>StringComparator</code> with the same configuration as <code>comp</code>.</p>
+	 * 
+	 * @param text java.lang.String
+	 * @param sortOrderedItems java.util.Vector
+	 * @param comp An <code>StringComparator</code> object which implements the <i><b>compareTo()</b><i> method. Must have the same configuration that was
+	 *  used to sort order the items of <code>sortOrderedItems</code>.
+	 *  
+	 * @return A sublist with all items that carry out with the particular search algorithm requirements
+	 */
+	public List<Object> doLookUpIgnoringCaseSensitive(String text, Vector<Object> sortOrderedItems, StringComparator comp);
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/defaultbuttonspanel/DefaultButtonsPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/defaultbuttonspanel/DefaultButtonsPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/defaultbuttonspanel/DefaultButtonsPanel.java	(revision 38348)
@@ -0,0 +1,179 @@
+package org.gvsig.gui.beans.defaultbuttonspanel;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.LayoutManager;
+import java.awt.Window;
+
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
+
+/**
+ * <code>DefaultButtonsPanel</code> es un Panel que hereda de <code>JPanel</code> con
+ * el a�adido de poder definir una botonera por defecto.
+ *
+ * @version 20/08/2008
+ *
+ * @author BorSanZa - Borja Sanchez Zamorano (borja.sanchez@iver.es)
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class DefaultButtonsPanel extends JPanel {
+	private static final long serialVersionUID = 1536590395737700551L;
+	ButtonsPanel              bp               = null;
+	JPanel                    content          = null;
+	private int               margin           = 4;
+	
+	/**
+	 * Crea el <code>DefaultButtonsPanel</code> con los botones por defecto.
+	 */
+	public DefaultButtonsPanel() {
+		super.setLayout(new java.awt.BorderLayout(0, 0));
+		getButtonsPanel().addAccept();
+		getButtonsPanel().addCancel();
+		getButtonsPanel().addApply();
+		super.add(getButtonsPanel(), java.awt.BorderLayout.SOUTH);
+		super.add(getContent(), java.awt.BorderLayout.CENTER);
+		this.setBorder(javax.swing.BorderFactory.createEmptyBorder(margin, margin, margin, margin));
+	}
+
+	/**
+	 * Crea el <code>DialogPanel</code> con los botones que definamos de la clase
+	 * <code>ButtonsPanel</code>
+	 *
+	 * @param buttons Constante para definir que botones se crear�n
+	 */
+	public DefaultButtonsPanel(int buttons) {
+		super.setLayout(new java.awt.BorderLayout(0, 0));
+		bp = new ButtonsPanel(buttons);
+		super.add(getButtonsPanel(), java.awt.BorderLayout.SOUTH);
+		super.add(getContent(), java.awt.BorderLayout.CENTER);
+		this.setBorder(javax.swing.BorderFactory.createEmptyBorder(margin, margin, margin, margin));
+	}
+
+	/**
+	 * Obtener el objeto <code>ButtonsPanel</code> del <code>DialogPanel</code>.
+	 * En caso de no estar creado, lo crear�.
+	 *
+	 * @return El componente bp
+	 */
+	public ButtonsPanel getButtonsPanel() {
+		if (bp == null)
+			bp = new ButtonsPanel();
+		return bp;
+	}
+
+	/**
+	 * Obtener el contenido del <code>DialogPanel</code>. En caso de no estar creado,
+	 * lo crear�.
+	 *
+	 * @return El componente content
+	 */
+	public JPanel getContent() {
+		if (content == null)
+			content = new JPanel();
+		return content;
+	}
+
+	public void addButtonPressedListener(ButtonsPanelListener listener) {
+		getButtonsPanel().addButtonPressedListener(listener);
+	}
+
+	public void removeButtonPressedListener(ButtonsPanelListener listener) {
+		getButtonsPanel().removeButtonPressedListener(listener);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.Container#getLayout()
+	 */
+	public LayoutManager getLayout() {
+		return getContent().getLayout();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.Container#setLayout(java.awt.LayoutManager)
+	 */
+	public void setLayout(LayoutManager mgr) {
+		getContent().setLayout(mgr);
+	}
+
+	/**
+	 * Devuelve el Window que contiene dicha ventana o null en caso de que no sea
+	 * asi
+	 * @return
+	 */
+	public Window getWindow() {
+		Container container = getParent();
+		while (container != null) {
+			if (container instanceof Window)
+				return (Window) container;
+			container = container.getParent();
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.Container#add(java.awt.Component)
+	 */
+	public Component add(Component comp) {
+		return getContent().add(comp);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.Container#add(java.awt.Component, int)
+	 */
+	public Component add(Component comp, int index) {
+		return getContent().add(comp, index);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.Container#add(java.awt.Component, java.lang.Object)
+	 */
+	public void add(Component comp, Object constraints) {
+		getContent().add(comp, constraints);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.Container#add(java.awt.Component, java.lang.Object, int)
+	 */
+	public void add(Component comp, Object constraints, int index) {
+		getContent().add(comp, constraints, index);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.Container#add(java.lang.String, java.awt.Component)
+	 */
+	public Component add(String name, Component comp) {
+		return getContent().add(name, comp);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/defaultbuttonspanel/DefaultButtonsPanel.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:executable
   + *
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/checkslidertext/CheckColorSliderTextContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/checkslidertext/CheckColorSliderTextContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/checkslidertext/CheckColorSliderTextContainer.java	(revision 38348)
@@ -0,0 +1,140 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.checkslidertext;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.slidertext.ColorSliderTextContainer;
+/**
+ * A�ade un check al componente Slider ajustando el tama�o del componente a la
+ * longitud del check. Al redimensionar el componente varia el tama�o del slider
+ *
+ * @version 08/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class CheckColorSliderTextContainer extends ColorSliderTextContainer implements ActionListener {
+	private static final long	serialVersionUID	= 7047604405777061995L;
+	public JCheckBox check = null;
+	private JPanel pLabel = null;
+	private String	text = null;
+
+	/**
+	 * Constructor
+	 * @param min Valor m�nimo del slider
+	 * @param max Valor m�ximo del slider
+	 * @param defaultPos Posici�n inicial
+	 * @param txt Texto de la etiqueta del check
+	 * @param active Valor por defecto del control.True activo y false desactivo
+	 */
+	public CheckColorSliderTextContainer(int min, int max, int defaultPos, String txt, boolean active) {
+		super(min, max, defaultPos);
+		text = txt;
+		add(getPCheck(), BorderLayout.WEST);
+		check.addActionListener(this);
+		check.setSelected(active);
+		setControlEnabled(active);
+
+		this.setMaximumSize(new Dimension(32767, 31));
+		this.setMinimumSize(new Dimension(250, 31));
+	}
+
+	/**
+	 * This method initializes jPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getPCheck() {
+		if (pLabel == null) {
+			pLabel = new JPanel();
+			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+			gridBagConstraints1.insets = new java.awt.Insets(0, 0, 13, 0);
+			pLabel.setLayout(new GridBagLayout());
+			pLabel.add(getCheck(), gridBagConstraints1);
+			pLabel.add(new JLabel(text), gridBagConstraints1);
+		}
+		return pLabel;
+	}
+
+	/**
+	 * This method initializes JLabel
+	 * @return
+	 */
+	private JCheckBox getCheck() {
+		if (check == null)
+			check = new JCheckBox();
+		return check;
+	}
+
+	/**
+	 * Activa o desactiva el control del panel
+	 * @param active
+	 */
+	public void setChecked(boolean active) {
+		getCheck().setSelected(active);
+		super.setControlEnabled(active);
+	}
+
+	/**
+	 * Hace visible el checkbox o no del componente
+	 * @param value
+	 */
+	public void setCheckboxVisible(boolean value) {
+		if (!value)
+			setChecked(true);
+		getCheck().setVisible(value);
+	}
+
+	/**
+	 * Devuelve si el control esta activo
+	 * @param active
+	 */
+	public boolean isChecked() {
+		return getCheck().isSelected();
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		if (e.getSource() == check) {
+			setControlEnabled(check.isSelected());
+			callChangeValue();
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.swing.JComponent#setEnabled(boolean)
+	 */
+	public void setEnabled(boolean enabled) {
+		super.setEnabled(enabled);
+		getCheck().setEnabled(enabled);
+
+		if (!getCheck().isSelected())
+			enabled = false;
+
+		getSlider().setEnabled(enabled);
+		getJSpinner().setEnabled(enabled);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/checkslidertext/CheckColorSliderTextContainer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/checkslidertext/CheckSliderTextContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/checkslidertext/CheckSliderTextContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/checkslidertext/CheckSliderTextContainer.java	(revision 38348)
@@ -0,0 +1,159 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.checkslidertext;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.slidertext.SliderTextContainer;
+/**
+ * A�ade un check al componente Slider ajustando el tama�o del componente
+ * a la longitud del check. Al redimensionar el componente varia el tama�o
+ * del slider
+ * 
+ * @author Nacho Brodin(nachobrodin@gmail.com) 
+ */
+public class CheckSliderTextContainer extends SliderTextContainer implements ActionListener{
+	private static final long serialVersionUID  = -542842897847364459L;
+	public JCheckBox          check             = null;
+	private JPanel            pLabel            = null;
+	private String            text              = null;
+	private boolean           showCheck         = true;
+	private JLabel            labelWithoutCheck = null;
+
+	/**
+	 * Constructor	
+	 * @param min Valor m�nimo del slider
+	 * @param max Valor m�ximo del slider
+	 * @param defaultPos Posici�n inicial
+	 * @param up Si es true el texto se coloca sobre el componente y si es false a la izquierda 
+	 * @param txt Texto de la etiqueta del check
+	 * @param active Valor por defecto del control.True activo y false desactivo
+	 * @deprecated Es recomendable el uso del constructor con el par�metro border. Tiene la misma funcionalidad 
+	 * si se pone ese par�metro a true. Se mantiene este constructor por compatibilidad con versiones 
+	 * anteriores.
+	 */
+	public CheckSliderTextContainer(int min, int max, int defaultPos, boolean up, String txt, boolean active){
+		this(min, max, defaultPos, up, txt, active, false, true);
+	}
+	
+	/**
+	 * Constructor	
+	 * @param min Valor m�nimo del slider
+	 * @param max Valor m�ximo del slider
+	 * @param defaultPos Posici�n inicial
+	 * @param up Si es true el texto se coloca sobre el componente y si es false a la izquierda 
+	 * @param txt Texto de la etiqueta del check
+	 * @param active Valor por defecto del control.True activo y false desactivo
+	 * @param border True para mostrar el borde al control y false para ocultarlo
+	 * @param showCheck True para mostrar el checkbox de activaci�n y desactivaci�n. False para ocultarlo
+	 */
+	public CheckSliderTextContainer(int min, int max, int defaultPos, boolean up, String txt, boolean active, boolean border, boolean showCheck) {
+		super(min, max, defaultPos, border);
+		this.showCheck = showCheck;
+		text = txt;
+		GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+		gridBagConstraints1.insets = new Insets(0,0,0,0);
+		if(!up)
+			super.add(getPCheck(up), BorderLayout.WEST);
+		else
+			super.add(getPCheck(up), BorderLayout.NORTH);
+		if(showCheck) {
+			check.addActionListener(this);
+			check.setSelected(active);
+		}
+		setControlEnabled(active);
+	}
+
+	/**
+	 * This method initializes jPanel	
+	 * 	
+	 * @return javax.swing.JPanel	
+	 */
+	private JPanel getPCheck(boolean up) {
+		if (pLabel == null) {
+			pLabel = new JPanel();
+			if (!up) {
+				GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+				pLabel.setLayout(new GridBagLayout());
+				if(showCheck) {
+					gridBagConstraints1.insets = new java.awt.Insets(0, 10, 13, 0);
+					pLabel.add(getCheck(), gridBagConstraints1);
+				} else {
+					gridBagConstraints1.insets = new java.awt.Insets(0, 0, 13, 0);
+					labelWithoutCheck = new JLabel(text); 
+					pLabel.add(labelWithoutCheck, gridBagConstraints1);
+				}
+			} else {
+				FlowLayout fl = new FlowLayout();
+				fl.setAlignment(FlowLayout.LEFT);
+				pLabel.setLayout(fl);
+				if(showCheck)
+					pLabel.add(getCheck(), null);
+				else {
+					labelWithoutCheck = new JLabel(text); 
+					pLabel.add(labelWithoutCheck, null);
+				}
+			}
+		}
+		return pLabel;
+	}
+
+	/**
+	 * This method initializes JLabel
+	 * @return
+	 */
+	public JCheckBox getCheck() {
+		if(check == null)
+			check = new JCheckBox(text);
+		return check;
+	}
+
+	/**
+	 * Activa o desactiva el control del panel
+	 * @param active
+	 */
+	public void setControlEnabled(boolean active) {
+		if(showCheck)
+			getCheck().setSelected(active);
+		if(labelWithoutCheck != null)
+			labelWithoutCheck.setEnabled(active);
+		super.setControlEnabled(active);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+	 */
+	public void actionPerformed(ActionEvent e) {
+		if (e.getSource() == check) {
+			setControlEnabled(check.isSelected());
+			callChangeValue(true);
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/checkslidertext/CheckSliderTextContainer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/listeners/SliderEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/listeners/SliderEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/listeners/SliderEvent.java	(revision 38348)
@@ -0,0 +1,38 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.slidertext.listeners;
+
+import java.util.EventObject;
+/**
+ * Evento b�sico para un ColorSliderTextContainer
+ *
+ * @version 03/08/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class SliderEvent extends EventObject {
+	private static final long serialVersionUID = -128111523373280522L;
+
+	/**
+	 * Construye un SliderEvent
+	 * @param source
+	 */
+	public SliderEvent(Object source) {
+		super(source);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/listeners/SliderEvent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/listeners/SliderListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/listeners/SliderListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/listeners/SliderListener.java	(revision 38348)
@@ -0,0 +1,37 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.slidertext.listeners;
+
+import java.util.EventListener;
+
+public interface SliderListener extends EventListener {
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente. Nunca
+	 * se dispara mientras se hace un dragged con el rat�n.
+	 * @param e
+	 */
+	public void actionValueChanged(SliderEvent e);
+
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente mientras se
+	 * hace un dragged con el rat�n.
+	 * @param e
+	 */
+	public void actionValueDragged(SliderEvent e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/listeners/SliderListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/ColorSliderTextContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/ColorSliderTextContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/ColorSliderTextContainer.java	(revision 38348)
@@ -0,0 +1,332 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.slidertext;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.JPanel;
+import javax.swing.JSpinner;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.gui.beans.doubleslider.DoubleSlider;
+import org.gvsig.gui.beans.doubleslider.DoubleSliderEvent;
+import org.gvsig.gui.beans.doubleslider.DoubleSliderListener;
+/**
+ * Barra de deslizamiento con una ventana de texto que tiene el valor de la
+ * posici�n de la barra. En este control podr� controlarse mediante la entrada
+ * de datos por la caja de texto la posibilidad de introducir valores decimales.
+ *
+ * @version 15/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ColorSliderTextContainer extends JPanel implements ChangeListener, DoubleSliderListener {
+	private static final long serialVersionUID = 1876415954410511634L;
+	private ArrayList<DoubleSliderListener> actionCommandListeners = new ArrayList<DoubleSliderListener>();
+
+	private JPanel       pText            = null;
+	private DoubleSlider slider           = null;
+	private JSpinner     jSpinner         = null;
+	private int          min              = 0;
+	private int          max              = 255;
+	private int          defaultPos       = 0;
+
+	/**
+	 * Contructor
+	 * @param min Valor m�nimo de la barra
+	 * @param max Valor m�ximo de la barra
+	 * @param defaultPos Posici�n por defecto
+	 */
+	public ColorSliderTextContainer(int min, int max, int defaultPos) {
+		super();
+		this.min = min;
+		this.max = max;
+		this.defaultPos = defaultPos;
+
+		initialize();
+		slider.setTwoSliders(false);
+	}
+
+	/**
+	 * Constructor vacio
+	 */
+	public ColorSliderTextContainer() {
+		this(0, 100, 0);
+	}
+
+	/**
+	 * This method initializes this
+	 *
+	 */
+	private void initialize() {
+		this.setLayout(new BorderLayout(5, 5));
+		this.add(getSlider(), BorderLayout.CENTER);
+		this.add(getPText(), BorderLayout.EAST);
+	}
+
+	/**
+	 * This method initializes jPanel1
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getPText() {
+		if (pText == null) {
+			pText = new JPanel();
+			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+			gridBagConstraints1.insets = new java.awt.Insets(0, 10, 8, 0);
+			pText.setLayout(new GridBagLayout());
+			pText.add(getJSpinner(), gridBagConstraints1);
+		}
+		return pText;
+	}
+
+	/**
+	 * This method initializes jSlider
+	 *
+	 * @return javax.swing.JSlider
+	 */
+	public DoubleSlider getSlider() {
+		if (slider == null) {
+			slider = new DoubleSlider();
+			slider.setMinimum(min);
+			slider.setMaximum(max);
+			slider.setValue(defaultPos);
+			slider.addValueChangedListener(this);
+		}
+		return slider;
+	}
+
+	/**
+	 * This method initializes jTextField
+	 *
+	 * @return javax.swing.JTextField
+	 */
+	public JSpinner getJSpinner() {
+		if (jSpinner == null) {
+			jSpinner = new JSpinner();
+			jSpinner.setValue(new Integer(defaultPos));
+			jSpinner.setPreferredSize(new Dimension(50, 26));
+			jSpinner.setMinimumSize(new Dimension(50, 26));
+			jSpinner.addChangeListener(this);
+		}
+		return jSpinner;
+	}
+
+	public void setComponentSize(int w, int h){
+	}
+
+	/**
+	 * Obtiene el valor del control.
+	 * @return Valor del control en formato double.
+	 */
+	public int getValue() {
+		return new Integer(getJSpinner().getValue() + "").intValue();
+	}
+
+	/**
+	 * Asigna el valor del control.
+	 * @return Valor del control en formato double.
+	 */
+	public void setValue(int value) {
+		getJSpinner().setValue(new Integer(value));
+		getSlider().setValue(value);
+	}
+
+	/**
+	 * Activa o desactiva el control del panel
+	 * @param active
+	 */
+	public void setControlEnabled(boolean active){
+		getSlider().setEnabled(active);
+		getJSpinner().setEnabled(active);
+	}
+
+	/**
+	 * Obtiene el valor m�ximo del slider
+	 * @return Entero con el valor m�ximo
+	 */
+	public int getMax() {
+		return max;
+	}
+
+	/**
+	 * Asigna el valor m�ximo del slider
+	 * @param Entero con el valor m�ximo
+	 * @deprecated Usar setMaximum en su lugar
+	 */
+	public void setMax(int max) {
+		this.setMaximum(max);
+	}
+
+	/**
+	 * Asigna el valor m�ximo del slider
+	 * @param Entero con el valor m�ximo
+	 */
+	public void setMaximum(int max) {
+		this.max = max;
+		updateInterval();
+	}
+
+	/**
+	 * Obtiene el valor m�nimo del slider
+	 * @return Entero con el valor m�nimo
+	 */
+	public int getMin() {
+		return min;
+	}
+
+	/**
+	 * Asigna el valor m�nimo del slider
+	 * @param Entero con el valor m�nimo
+	 * @deprecated Usar setMinimum
+	 */
+	public void setMin(int min) {
+		this.setMinimum(min);
+	}
+
+	/**
+	 * Asigna el valor m�nimo del slider
+	 * @param Entero con el valor m�nimo
+	 */
+	public void setMinimum(int min) {
+		this.min = min;
+		updateInterval();
+	}
+
+	private void updateInterval() {
+		int aux = this.getValue();
+		getSlider().setMinimum(min);
+		getSlider().setMaximum(max);
+		setValue(aux);
+	}
+
+	/**
+	 * Especificar el color izquierdo del control
+	 * @param color
+	 */
+	public void setColor1(Color color, boolean refresh) {
+		slider.setColor1(color, refresh);
+	}
+
+	/**
+	 * Especificar el color derecho del control
+	 * @param color
+	 */
+	public void setColor2(Color color, boolean refresh) {
+		slider.setColor2(color, refresh);
+	}
+
+	/**
+	 * Controla cuando cambia el spinner
+	 */
+	public void stateChanged(ChangeEvent e) {
+		int value = new Integer(getJSpinner().getValue().toString()).intValue();
+		if (value != getSlider().getValue())
+			getSlider().setValue(value);
+		if (new Integer(getJSpinner().getValue().toString()).intValue() != getSlider().getValue())
+			getJSpinner().setValue(new Integer(getSlider().getValue()));
+
+		if (spinnerEvent)
+			callChangeValue();
+	}
+
+	/**
+	 * Dispara el evento del cambio del control
+	 */
+	protected void callChangeValue() {
+		Iterator<DoubleSliderListener> iterator = actionCommandListeners.iterator();
+		while (iterator.hasNext()) {
+			DoubleSliderListener listener = iterator.next();
+			listener.actionValueChanged(new DoubleSliderEvent(this));
+		}
+	}
+
+	/**
+	 * Dispara el evento del cambio del control
+	 */
+	protected void callDraggedValue() {
+		Iterator<DoubleSliderListener> iterator = actionCommandListeners.iterator();
+		while (iterator.hasNext()) {
+			DoubleSliderListener listener = iterator.next();
+			listener.actionValueDragged(new DoubleSliderEvent(this));
+		}
+	}
+
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addValueChangedListener(DoubleSliderListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeValueChangedListener(DoubleSliderListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.swing.JComponent#setEnabled(boolean)
+	 */
+	public void setEnabled(boolean enabled) {
+		super.setEnabled(enabled);
+		jSpinner.setEnabled(enabled);
+		slider.setEnabled(enabled);
+	}
+
+	/**
+	 * Controla cuando cambia el slider
+	 */
+	public void actionValueChanged(DoubleSliderEvent e) {
+		int value = getSlider().getValue();
+		getJSpinner().setValue(new Integer(value));
+
+		if (isEnabled())
+			callChangeValue();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.doubleslider.DoubleSliderListener#actionValueDragged(java.util.EventObject)
+	 */
+	boolean spinnerEvent = true;
+	int lastDragged = -1;
+	public void actionValueDragged(DoubleSliderEvent e) {
+		int value = getSlider().getValue();
+		if (lastDragged != value) {
+			lastDragged = value;
+			spinnerEvent = false;
+			getJSpinner().setValue(new Integer(value));
+			spinnerEvent = true;
+
+			if (isEnabled())
+				callDraggedValue();
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/ColorSliderTextContainer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/SliderTextContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/SliderTextContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/SliderTextContainer.java	(revision 38348)
@@ -0,0 +1,452 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.slidertext;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+import javax.swing.JSlider;
+import javax.swing.JTextField;
+import javax.swing.border.TitledBorder;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.gui.beans.slidertext.listeners.SliderEvent;
+import org.gvsig.gui.beans.slidertext.listeners.SliderListener;
+/**
+ * Barra de deslizamiento con una ventana de texto que tiene el valor de la
+ * posici�n de la barra. En este control podr� controlarse mediante la entrada
+ * de datos por la caja de texto la posibilidad de introducir valores decimales.
+ *
+ * Nacho Brodin (nachobrodin@gmail.com)
+ */
+public class SliderTextContainer extends JPanel implements ChangeListener, FocusListener, KeyListener, MouseListener {
+	private static final long serialVersionUID = 1876415954410511634L;
+	private ArrayList<SliderListener> actionCommandListeners = new ArrayList<SliderListener>();
+	private JPanel     pText           = null;
+	private JSlider    slider          = null;
+	private JTextField text            = null;
+	private int        min             = 0;
+	private int        max             = 255;
+	private double     interval        = 1.0;
+	private int        defaultPos      = 0;
+	private boolean    decimal         = false;
+	private boolean    disconnectEvent = false;
+	private boolean    dragged         = false;
+	private boolean    showBorder      = false;
+
+	/**
+	 * Contructor
+	 * @param min Valor m�nimo de la barra
+	 * @param max Valor m�ximo de la barra
+	 * @param defaultPos Posici�n por defecto
+	 * @deprecated Es recomendable el uso del constructor con el par�metro border. Tiene la misma funcionalidad 
+	 * si se pone ese par�metro a true. Se mantiene este constructor por compatibilidad con versiones 
+	 * anteriores.
+	 */
+	public SliderTextContainer(int min, int max, int defaultPos) {
+		this(min, max, defaultPos, false);
+	}
+	
+	/**
+	 * Contructor
+	 * @param min Valor m�nimo de la barra
+	 * @param max Valor m�ximo de la barra
+	 * @param defaultPos Posici�n por defecto
+	 * @param border Flag que obliga a mostrar u ocultar el borde
+	 */
+	public SliderTextContainer(int min, int max, int defaultPos, boolean border) {
+		super();
+		this.min = min;
+		this.max = max;
+		this.defaultPos = defaultPos;
+		this.showBorder = border;
+		initialize();
+	}
+
+
+	/**
+	 * Constructor vacio
+	 */
+	public SliderTextContainer() {
+		this(0, 100, 0);
+	}
+
+	/**
+	 * Dispara el evento del cambio del control
+	 */
+	protected void callChangeValue(boolean forceEvent) {
+		if (!getSlider().isEnabled() && !forceEvent)
+			return;
+		Iterator<SliderListener> acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			SliderListener listener = (SliderListener) acIterator.next();
+			listener.actionValueChanged(new SliderEvent(this));
+		}
+	}
+
+	/**
+	 * Dispara el evento del cambio del control
+	 */
+	protected void callDraggedValue() {
+		Iterator<SliderListener> acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			SliderListener listener = (SliderListener) acIterator.next();
+			listener.actionValueDragged(new SliderEvent(this));
+		}
+	}
+
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addValueChangedListener(SliderListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeValueChangedListener(SliderListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	/**
+	 * Asigna un borde al componente con el texto pasado como
+	 * par�metro
+	 * @param name
+	 */
+	public void setBorder(String name){
+		setBorder(BorderFactory.createTitledBorder(null, name, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
+	}
+
+	/**
+	 * This method initializes this
+	 *
+	 */
+	private void initialize() {
+		this.setLayout(new BorderLayout());
+		this.add(getSlider(), BorderLayout.CENTER);
+		this.add(getPText(), BorderLayout.EAST);
+		if(showBorder)
+			this.setBorder(BorderFactory.createLineBorder(java.awt.Color.gray,1));
+	}
+
+	/**
+	 * This method initializes jPanel1
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getPText() {
+		if (pText == null) {
+			pText = new JPanel();
+			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+			gridBagConstraints1.insets = new java.awt.Insets(0, 10, 8, 0);
+			pText.setLayout(new GridBagLayout());
+			pText.add(getTextField(), gridBagConstraints1);
+		}
+		return pText;
+	}
+
+	/**
+	 * This method initializes jSlider
+	 *
+	 * @return javax.swing.JSlider
+	 */
+	public JSlider getSlider() {
+		if (slider == null) {
+			slider = new JSlider();
+			slider.setMinimum(0);
+			slider.setMaximum((int) ((max - min) / interval));
+			slider.setValue((int) ((defaultPos - min) / interval));
+			updateTicks();
+			slider.addChangeListener(this);
+			slider.addMouseListener(this);
+		}
+		return slider;
+	}
+
+	/**
+	 * This method initializes jTextField
+	 *
+	 * @return javax.swing.JTextField
+	 */
+	public JTextField getTextField() {
+		if (text == null) {
+			text = new JTextField();
+			text.setText(defaultPos + "");
+			text.setPreferredSize(new Dimension(40, 26));
+			text.setMinimumSize(new Dimension(40, 26));
+			text.addFocusListener(this);
+			text.addKeyListener(this);
+		}
+		return text;
+	}
+
+	public void setComponentSize(int w, int h){
+	}
+
+	/**
+	 * Obtiene el valor del control.
+	 * @return Valor del control en formato double.
+	 */
+	public double getValue() {
+		return new Double(getTextField().getText()).doubleValue();
+	}
+
+	/**
+	 * Asigna el valor del control.
+	 * @return Valor del control en formato double.
+	 */
+	public void setValue(double value){
+		if(decimal)
+			getTextField().setText(String.valueOf(value));
+		else
+			getTextField().setText(String.valueOf((int)value));
+		getSlider().setValue((int) ((value - min) / interval));
+	}
+
+	/**
+	 * Activa o desactiva el control del panel
+	 * @param active
+	 */
+	public void setControlEnabled(boolean active){
+		getSlider().setEnabled(active);
+		getTextField().setEnabled(active);
+		if (active == false) {
+			getTextField().setBackground(pText.getBackground());
+		} else {
+			getTextField().setBackground(java.awt.Color.white);
+		}
+	}
+
+	/**
+	 * Asigna el flag que dice si el valor del campo de texto ser�
+	 * decimal o entero
+	 * @param dec true si se admiten valores decimales y false si no se admiten
+	 */
+	public void setDecimal (boolean dec){
+		decimal = dec;
+		String s = getTextField().getText();
+		if(dec)
+			getTextField().setText((s +".0"));
+		else{
+			int index = s.lastIndexOf(".");
+			if(index == -1 || index == 0)
+				index = s.length() - 1;
+			getTextField().setText(s.substring(0, index + 1));
+		}
+	}
+
+	/**
+	 * Obtiene el flag que dice si el valor del campo de texto es
+	 * decimal o entero
+	 * @return true si se admiten valores decimales y false si no se admiten
+	 */
+	public boolean getDecimal (){
+		return decimal;
+	}
+
+	/**
+	 * Obtiene el valor m�ximo del slider
+	 * @return Entero con el valor m�ximo
+	 */
+	public int getMax() {
+		return max;
+	}
+
+	/**
+	 * Asigna el valor m�ximo del slider
+	 * @param Entero con el valor m�ximo
+	 * @deprecated Usar setMaximum en su lugar
+	 */
+	public void setMax(int max) {
+		this.setMaximum(max);
+	}
+
+	/**
+	 * Asigna el valor m�ximo del slider
+	 * @param Entero con el valor m�ximo
+	 */
+	public void setMaximum(int max) {
+		this.max = max;
+		updateInterval();
+	}
+
+	/**
+	 * Obtiene el valor m�nimo del slider
+	 * @return Entero con el valor m�nimo
+	 */
+	public int getMin() {
+		return min;
+	}
+
+	/**
+	 * Asigna el valor m�nimo del slider
+	 * @param Entero con el valor m�nimo
+	 * @deprecated Usar setMinimum
+	 */
+	public void setMin(int min) {
+		this.setMinimum(min);
+	}
+
+	/**
+	 * Asigna el valor m�nimo del slider
+	 * @param Entero con el valor m�nimo
+	 */
+	public void setMinimum(int min) {
+		this.min = min;
+		updateInterval();
+	}
+
+	/**
+	 * Actualizar la separacion entre los Ticks
+	 */
+	private void updateTicks() {
+		int ticks = (int) ((max-min)/interval) / 40;
+		getSlider().setMajorTickSpacing(ticks * 4);
+		slider.setPaintTicks(true);
+		getSlider().setMinorTickSpacing(ticks);
+	}
+
+	private void updateInterval() {
+		double aux = this.getValue();
+		getSlider().setMinimum(0);
+		getSlider().setMaximum((int) ((max - min) / interval));
+		setValue(aux);
+		updateTicks();
+	}
+	/**
+	 * Definir un intervalo para el slider
+	 * @param value
+	 */
+	public void setInterval(double value) {
+		interval = value;
+		updateInterval();
+	}
+
+	/**
+	 * Obtener el intervalo definido para el slider
+	 * @return
+	 */
+	public double getInterval() {
+		return interval;
+	}
+
+	/**
+	 * Controla que si el formato introducido en el textfield es numerico. Si lo
+	 * es se actualiza la posici�n del slider
+	 */
+	private void checkDecimalTextAndUpdateSlider() {
+		String text = getTextField().getText();
+		double value = 0;
+		disconnectEvent = true;
+
+		try {
+			if (!text.equals("")) {
+				value = (Double.parseDouble(text) * 100) / (double) (getMax() - getMin());
+				value = Double.valueOf(text).doubleValue();
+				if (value < getMin())
+					value = getMin();
+				if (value > getMax())
+					value = getMax();
+			}
+			setValue(value);
+			callChangeValue(true);
+		} catch (NumberFormatException exc) {
+			setValue(getSlider().getValue()*interval + min);
+		}
+	}
+
+	/**
+	 * Control del evento de cambio en la posici�n del slider. Este cambio
+	 * actualiza el valor de la caja de texto y ejecuta el m�todo stateChanged de
+	 * los listener registrados.
+	 */
+	public void stateChanged(ChangeEvent e) {
+		//Modificamos la caja de texto con el valor de la posici�n del slider
+		if (!disconnectEvent) {
+			double value = (getSlider().getValue() * getInterval()) + getMin();
+			if (!getDecimal())
+				getTextField().setText(((int) value) + "");
+			else
+				getTextField().setText(((int) (value * 10)) / 10.0 + "");
+			if (dragged)
+				callDraggedValue();
+			else
+				callChangeValue(true);
+		}
+		disconnectEvent = false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.FocusListener#focusLost(java.awt.event.FocusEvent)
+	 */
+	public void focusLost(FocusEvent e) {
+		checkDecimalTextAndUpdateSlider();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
+	 */
+	public void keyReleased(KeyEvent e) {
+		if (e.getKeyCode() == 10)
+			checkDecimalTextAndUpdateSlider();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+	 */
+	public void mousePressed(MouseEvent e) {
+		dragged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
+	 */
+	public void mouseReleased(MouseEvent e) {
+		dragged = false;
+		callChangeValue(false);
+	}
+
+	public void focusGained(FocusEvent e) {}
+	public void keyPressed(KeyEvent e) {}
+	public void keyTyped(KeyEvent e) {}
+	public void mouseClicked(MouseEvent e) {}
+	public void mouseEntered(MouseEvent e) {}
+	public void mouseExited(MouseEvent e) {}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/slidertext/SliderTextContainer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/Messages.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/Messages.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/Messages.java	(revision 38348)
@@ -0,0 +1,92 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+
+package org.gvsig.gui.beans;
+
+import java.util.Locale;
+
+/**
+ * Bridge class to provide internationalization services to the library.
+ * It uses the gvsig-i18n library as a backend, and includes its
+ * necessary initialization.
+ *
+ * @author Cesar Martinez Izquierdo
+ *
+ */
+public class Messages {
+	/**
+	 * Whether the class has been initialized
+	 */
+	private static boolean isInitialized = false;
+
+	/**
+	 * The name of the Java package containing this class
+	 */
+	private static final String packageName = Messages.class.getPackage().getName();
+
+	/**
+	 * Loads the translations in the dictionary. It initializes the backend
+	 * gvsig-i18n library
+	 *
+	 */
+	private static void init() {
+		if (!org.gvsig.i18n.Messages.hasLocales()) {
+			org.gvsig.i18n.Messages.addLocale(Locale.getDefault());
+		}
+		org.gvsig.i18n.Messages.addResourceFamily(packageName+".resources.translations.text", Messages.class.getClassLoader(), packageName);
+	}
+
+	/**
+	 * Gets the translation associated with the provided translation key.
+	 *
+	 * @param key The translation key which identifies the target text
+	 * @return The translation associated with the provided translation key.
+	 */
+	public static String getText(String key) {
+		if (isInitialized==false) {
+			init();
+			isInitialized = true;
+		}
+		return org.gvsig.i18n.Messages.getText(key, packageName);
+	}
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/Messages.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JBlank.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JBlank.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JBlank.java	(revision 38348)
@@ -0,0 +1,72 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id$
+* $Log$
+* Revision 1.2  2007-09-12 16:28:23  bsanchez
+* *** empty log message ***
+*
+* Revision 1.1  2007/08/20 08:34:46  evercher
+* He fusionado LibUI con LibUIComponents
+*
+* Revision 1.1  2006/10/23 09:53:07  jaume
+* *** empty log message ***
+*
+*
+*/
+package org.gvsig.gui.beans.swing;
+
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+
+public class JBlank extends JPanel {
+  private static final long serialVersionUID = -8119213961484182678L;
+
+	public JBlank(int width, int height) {
+		super();
+		Dimension dim = new Dimension(width, height);
+		setSize(dim);
+		setPreferredSize(dim);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JBlank.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/IMethodsForGraphicalCalendarComponents.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/IMethodsForGraphicalCalendarComponents.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/IMethodsForGraphicalCalendarComponents.java	(revision 38348)
@@ -0,0 +1,74 @@
+package org.gvsig.gui.beans.swing.textBoxWithCalendar;
+
+import java.util.Date;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * This interface defines some methods for grafical components that use a JCalendar
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public interface IMethodsForGraphicalCalendarComponents {
+	/**
+	 * Gets the date of the calendar 
+	 * 
+	 * @return Date
+	 */
+	public Date getDate();
+	
+	/**
+	 * Sets the date to the calendar
+	 * 
+	 * @param date
+	 */
+	public void setDate(Date date);
+	
+	/**
+	 * Returns the date selected, formatted
+	 * 
+	 * @return String The formatted date
+	 */
+	public String getFormattedDate();
+	
+	
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/IMethodsForGraphicalCalendarComponents.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarDateDialog.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarDateDialog.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarDateDialog.java	(revision 38348)
@@ -0,0 +1,422 @@
+package org.gvsig.gui.beans.swing.textBoxWithCalendar;
+
+import java.awt.Dimension;
+import java.awt.Toolkit;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+import javax.swing.JDialog;
+
+import org.freixas.jcalendar.DateEvent;
+import org.freixas.jcalendar.DateListener;
+import org.freixas.jcalendar.JCalendar;
+import org.gvsig.gui.beans.Messages;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Creates a Dialog that allows users to select the date they want
+ * This class is a version of JCalendarDatePanel
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class JCalendarDateDialog extends JDialog implements IMethodsForGraphicalCalendarComponents, Serializable {
+	private static final long serialVersionUID = -4265734997797240482L;
+	private JCalendar jCalendar = null;
+	private final int defaultWidth = 350;
+	private final int defaultHeight = 230;
+	private Dimension lastDimensionOfJDialog;
+	private Dimension minDimensionOfJDialog;
+	private Dimension maxDimensionOfJDialog;
+
+	/**
+	 * Default Constructor
+	 */
+	public JCalendarDateDialog() {
+		super();
+		
+		this.initialize();
+	}
+
+	/**
+	 * This is the default constructor with 2 parameters for set the size
+	 */
+	public JCalendarDateDialog(int width, int height) {
+		super();
+
+		this.initialize();			
+			
+		this.lastDimensionOfJDialog.width = width;
+		this.lastDimensionOfJDialog.height = height;
+	}
+	
+	/**
+	 * This method initializes this 
+	 */
+	private void initialize() {
+		this.setDefaultTitle();
+				
+		// Initialize the attribute 'lastDimensionOfJCalendar'
+		this.lastDimensionOfJDialog = new Dimension(this.defaultWidth, this.defaultHeight);
+		
+		// Resize this component to its initial size
+		this.setSizeResize(defaultWidth, defaultHeight);
+		
+		// Adds the jCalendar to this dialog
+		this.getContentPane().add(this.getJCalendar());
+
+		// By default there isn't maximun neither minimum dimensions
+		this.maxDimensionOfJDialog = new Dimension(-1, -1);
+		this.minDimensionOfJDialog = new Dimension(-1, -1);		
+		
+		// This allows authomatic revalidation while this component is been resized
+		Toolkit.getDefaultToolkit().setDynamicLayout(true);
+
+		// Listener for the redimension of this component:
+		// Dimension must be between the minimum and maximum
+		this.addComponentListener(new ComponentAdapter() {
+			/*
+			 *  (non-Javadoc)
+			 * @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
+			 */
+			public void componentResized(ComponentEvent e) {
+				boolean modified = false;
+				int width = getSize().width;
+				int height = getSize().height;
+				int new_width = 0;
+				int new_height = 0;
+				
+				// If there are a minimum dimension or a maximum dimension, check the current
+				//   dimension and resize if it's nessecary
+
+				// If this component hasn't been initialed yet
+				if ((height != 0) && (width != 0)) {
+					if (minDimensionOfJDialog.height != -1) {
+						if (height < minDimensionOfJDialog.height) {
+							new_width = width;
+							new_height = minDimensionOfJDialog.height;
+							modified = true;
+						}
+					}
+					
+					if (minDimensionOfJDialog.width != -1) {
+						if (width < minDimensionOfJDialog.width) {
+							new_width = minDimensionOfJDialog.width;
+							new_height = height;
+							modified = true;
+						}
+					}
+	
+					if (maxDimensionOfJDialog.height != -1) {
+						if (height > maxDimensionOfJDialog.height) {
+							new_width = width;
+							new_height = maxDimensionOfJDialog.height;
+							modified = true;
+						}
+					}
+	
+					if (maxDimensionOfJDialog.width != -1) {
+						if (width > maxDimensionOfJDialog.width) {
+							new_width = maxDimensionOfJDialog.width;
+							new_height = height;
+							modified = true;
+						}
+					}
+					
+					if (modified) {
+						setResizable(false);
+						setSize(new_width, new_height);
+						setResizable(true);
+						getJCalendar().revalidate();
+					}
+					
+					lastDimensionOfJDialog = getSize();
+				}
+			}
+		});
+	}
+
+	/**
+	 * Sets the initial size of this panel
+	 * 
+	 * @param width (the new Width for the panel)
+	 * @param height (the new Height for the panel)
+	 */
+	public void resizeToInitialSize()
+	{
+		getContentPane().setSize(this.defaultWidth, this.defaultHeight);
+		getJCalendar().revalidate();
+	}
+
+	/**
+	 * Sets the maximum width for this component, according a percentage of the width resolution of the screen
+	 * (If the parameter isn't > 0.0 neither -1.0 neither <= 1.0, this method doesn't apply the changes)
+	 * 
+	 * @param max_width_screen_percentage A float number > 0, or -1 if there is no limit
+	 */
+	public void setMaximumWidthScreenResolutionPercentage(double max_width_screen_percentage) {
+		int max_width = (int) Math.ceil(Toolkit.getDefaultToolkit().getScreenSize().width * max_width_screen_percentage);
+		
+		if ((max_width > 0) || (max_width == -1)) {
+			this.maxDimensionOfJDialog.width = max_width;
+		}
+	}
+	
+	/**
+	 * Sets the minimum width for this component, according a percentage of the width resolution of the screen
+	 * (If the parameter isn't > 0.0 neither -1.0 neither <= 1.0, this method doesn't apply the changes)
+	 * 
+	 * @param min_width_screen_percentage A float number > 0.0 neither -1.0 neither <= 1.0, or -1 if there is no limit
+	 */
+	public void setMinimumWidthScreenResolutionPercentage(double min_width_screen_percentage) {
+		int min_width = (int) Math.ceil(Toolkit.getDefaultToolkit().getScreenSize().width * min_width_screen_percentage);
+		
+		if ((min_width > 0) || (min_width == -1))
+			this.minDimensionOfJDialog.width = min_width;
+	}
+
+	/**
+	 * Sets the maximum height for this component, according a percentage of the height resolution of the screen
+	 * (If the parameter isn't > 0.0 neither -1.0 neither <= 1.0, this method doesn't apply the changes)
+	 * 
+	 * @param max_width_screen_percentage A float number > 0.0 neither -1.0 neither <= 1.0, or -1 if there is no limit
+	 */
+	public void setMaximumHeightScreenResolutionPercentage(double max_height_screen_percentage) {
+		if (((max_height_screen_percentage > 0.0) && (max_height_screen_percentage <= 1.0)) || (max_height_screen_percentage == -1.0)) {
+			int max_height = (int) Math.ceil(Toolkit.getDefaultToolkit().getScreenSize().height * max_height_screen_percentage);
+			this.maxDimensionOfJDialog.height = max_height;
+		}
+	}
+	
+	/**
+	 * Sets the minimum height for this component, according a percentage of the height resolution of the screen
+	 * (If the parameter isn't > 0.0 neither -1.0 neither <= 1.0, this method doesn't apply the changes)
+	 * 
+	 * @param min_width_screen_percentage A float number > 0.0 neither -1.0 neither <= 1.0, or -1 if there is no limit
+	 */
+	public void setMinimumHeightScreenResolutionPercentage(double min_height_screen_percentage) {
+		if (((min_height_screen_percentage > 0.0) && (min_height_screen_percentage <= 1.0)) || (min_height_screen_percentage == -1.0)) {
+			int min_height = (int) Math.ceil(Toolkit.getDefaultToolkit().getScreenSize().height * min_height_screen_percentage);
+			this.minDimensionOfJDialog.height = min_height;
+		}
+	}
+	
+	/**
+	 * Sets the maximum width for this component
+	 * (If the parameter isn't > 0 neither -1, this method doesn't apply the changes)
+	 * 
+	 * @param max_width A natural number > 0, or -1 if there is no limit
+	 */
+	public void setMaximumWidth(int max_width) {
+		if ((max_width > 0) || (max_width == -1)) {
+			this.maxDimensionOfJDialog.width = max_width;
+		}
+	}
+	
+	/**
+	 * Sets the minimum width for this component
+	 *  (If the parameter isn't > 0 neither -1, this method doesn't apply the changes)
+	 * 
+	 * @param min_width A natural number > 0, or -1 if there is no limit
+	 */
+	public void setMinimumWidth(int min_width) {
+		if ((min_width > 0) || (min_width == -1))
+			this.minDimensionOfJDialog.width = min_width;
+	}
+
+	/**
+	 * Sets the maximum height for this component
+	 * (If the parameter isn't > 0 neither -1, this method doesn't apply the changes)
+	 * 
+	 * @param max_width A natural number > 0, or -1 if there is no limit
+	 */
+	public void setMaximumHeight(int max_height) {
+		if ((max_height > 0) || (max_height == -1))
+			this.maxDimensionOfJDialog.height = max_height;
+	}
+	
+	/**
+	 * Sets the minimum height for this component
+	 *  (If the parameter isn't > 0 neither -1, this method doesn't apply the changes)
+	 * 
+	 * @param min_width A natural number > 0, or -1 if there is no limit
+	 */
+	public void setMinimumHeight(int min_height) {
+		if ((min_height > 0) || (min_height == -1))
+			this.minDimensionOfJDialog.height = min_height;
+	}
+
+	/**
+	 * Sets the size of this panel
+	 * 
+	 * @param width (the new Width for the panel)
+	 * @param height (the new Height for the panel)
+	 */
+	public void setSizeResize(int width, int height) {
+		this.setSize(new Dimension(width, height));
+		this.lastDimensionOfJDialog = this.getSize();
+		getJCalendar().revalidate();
+	}
+	
+	/**
+	 * Get the height of this panel
+	 */
+	public int getHeight()
+	{
+		return this.lastDimensionOfJDialog.height;
+	}
+	
+	/**
+	 * Get the width of this panel
+	 */
+	public int getWidth()
+	{
+		return this.lastDimensionOfJDialog.width;
+	}
+	
+	/**
+	 * This method initializes jCalendar	
+	 * 	
+	 * @return javax.swing.JCalendar	
+	 */
+	private JCalendar getJCalendar() {
+		if (jCalendar == null) {
+			jCalendar = new JCalendar();
+			jCalendar.setToolTipText(Messages.getText("calendarSelectDate"));
+
+			try
+			{
+				jCalendar.setToolTipTextToMonthDecrButton(Messages.getText("calendarBackOneMonth"));
+				jCalendar.setToolTipTextToMonthIncrButton(Messages.getText("calendarForwardOneMonth"));
+				jCalendar.setToolTipTextToYearDecrButton(Messages.getText("calendarBackOneYear"));
+				jCalendar.setToolTipTextToYearIncrButton(Messages.getText("calendarForwardOneYear"));
+
+				// Adds a date listener calendar
+				jCalendar.addDateListener(new DateListener(){
+					/*
+					 *  (non-Javadoc)
+					 * @see org.freixas.jcalendar.DateListener#dateChanged(org.freixas.jcalendar.DateEvent)
+					 */
+					public void dateChanged(DateEvent arg0) {
+						setVisible(false);
+					}				
+				});
+			}
+			catch(Exception e)
+			{
+				e.printStackTrace();
+			}
+		}
+		return jCalendar;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.swing.textBoxWithCalendar.IMethodsForGraphicalCalendarComponents#getDate()
+	 */	
+	public Date getDate() {		
+		return jCalendar.getDate();
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.swing.textBoxWithCalendar.IMethodsForGraphicalCalendarComponents#setDate(java.util.Date)
+	 */
+	public void setDate(Date date)
+	{
+		jCalendar.setDate(date);
+	}
+
+//	/**
+//	 * Returns the date formatted
+//	 * 
+//	 * @param Date
+//	 * @return String The formatted date
+//	 */
+//	private String getFormattedDate(Date d) {
+//		return new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(d);
+//	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.swing.textBoxWithCalendar.IMethodsForGraphicalCalendarComponents#getFormattedDate()
+	 */
+	public String getFormattedDate() {
+		return new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(this.getDate());
+	}
+
+	/**
+	 * Gets the title of the JDialog with the calendar component. The title is displayed in the JDialog's border.
+	 *
+	 * @return Title
+	 */
+	public String getTitle() {
+		return super.getTitle();
+	}
+	
+	/**
+	 * Sets the title of the JDialog with the calendar component. 
+	 * 
+	 * @param String
+	 */
+	public void setTitle(String title) {
+		super.setTitle(title);
+	}
+
+	/**
+	 * Sets the default title of the JDialog with the calendar component.
+	 */
+	public void setDefaultTitle() {
+		this.setTitle(Messages.getText("calendarTitle"));
+	}
+	
+	/**
+	 * @see java.awt.Dialog#setModal(boolean)
+	 */
+	public void setModal(boolean b) {
+		super.setModal(b);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarDateDialog.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarDatePanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarDatePanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarDatePanel.java	(revision 38348)
@@ -0,0 +1,289 @@
+package org.gvsig.gui.beans.swing.textBoxWithCalendar;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.event.ComponentListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JToolTip;
+import javax.swing.SwingConstants;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.controls.MultiLineToolTip;
+
+/**
+ * Creates a Panel for include in other panels -> this panel allows users to set the date they want
+ * The difference from this class to the JCalendarDatePanel is that in this class the user can move
+ *    the calendar with the mouse
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class JCalendarDatePanel extends JPanel implements IMethodsForGraphicalCalendarComponents, Serializable{
+	private static final long serialVersionUID = -5439270916098423256L;
+
+	private JButton jButton = null;
+	private JCalendarDateDialog jDialogCalendar = null;
+	private final int defaultWidth = 120;
+	private final int defaultHeight = 19;
+	private MouseListener mouseListener;	
+
+	/**
+	 * Default Constructor
+	 */
+	public JCalendarDatePanel() {
+	
+		try
+		{
+			this.setPreferredSize(new Dimension(defaultWidth, defaultHeight));
+			initialize();			
+		}
+		catch(Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * This is the default constructor with 2 parameters for set the size of the inner button
+	 */
+	public JCalendarDatePanel(int width, int height) {
+			
+		try
+		{			
+			this.setPreferredSize(new Dimension(defaultWidth, defaultHeight));
+			initialize();			
+		}
+		catch(Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * This method initializes this 
+	 */
+	private void initialize() {
+		// Set properties to the current panel
+		GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+		gridBagConstraints1.gridx = 1;
+		gridBagConstraints1.gridy = 0;		
+		
+		GridBagLayout gridBagLayout = new GridBagLayout();
+		this.setLayout(gridBagLayout);
+		
+		// Add components to this panel:
+		GridBagConstraints gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.gridy = 0;
+		gridBagConstraints.weightx = 1.0;
+		gridBagConstraints.gridx = 0;
+
+		// Add the JButton
+		this.add(getJButton(), gridBagConstraints1);
+		
+		// Defines the mouseLIstener
+		this.createMouseListener();
+		
+		// Adds the mouseListener to the jTextField and the jButton
+		jButton.addMouseListener(mouseListener);
+	}
+
+	/**
+	 * This method initializes jButton	
+	 * 	
+	 * @return javax.swing.JButton	
+	 */
+	private JButton getJButton() {
+		if (jButton == null) {
+			jButton = new JButton();
+			jButton.setPreferredSize(new Dimension(defaultWidth, defaultHeight));
+			jButton.setHorizontalTextPosition(SwingConstants.LEFT);
+			jButton.setBackground(Color.WHITE);
+			jButton.setText(this.getFormattedDate(this.getJCalendarDateDialog().getDate()));
+		}
+		return jButton;
+	}
+	
+	/**
+	 * This method initializes jDialogCalendar	
+	 * 	
+	 * @return javax.swing.JDialog	
+	 */
+	public JCalendarDateDialog getJCalendarDateDialog() {
+		if (jDialogCalendar == null) {
+			jDialogCalendar = new JCalendarDateDialog();
+			jDialogCalendar.addComponentListener(new ComponentAdapter() {
+				/*
+				 *  (non-Javadoc)
+				 * @see java.awt.event.ComponentListener#componentHidden(java.awt.event.ComponentEvent)
+				 */
+				public void componentHidden(ComponentEvent e) {
+					jButton.setText(getFormattedDate(jDialogCalendar.getDate()));
+				}
+			});
+		}
+		return jDialogCalendar;
+	}
+	
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.swing.textBoxWithCalendar.IMethodsForGraphicalCalendarComponents#getDate()
+	 */
+	public Date getDate() {		
+		return this.getJCalendarDateDialog().getDate();
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.swing.textBoxWithCalendar.IMethodsForGraphicalCalendarComponents#setDate(java.util.Date)
+	 */
+	public void setDate(Date date)
+	{
+		this.getJCalendarDateDialog().setDate(date);
+	}
+	
+	/**
+	 * Allows select the date
+	 */
+	public void enableCalendar() {
+		jButton.setEnabled(true);
+	}
+	
+	/**
+	 * Don't allow select the date
+	 */
+	public void disableCalendar() {
+		jButton.setEnabled(false);
+	}
+
+	/**
+	 * Returns the date formatted
+	 * 
+	 * @param Date
+	 * @return String The formatted date
+	 */
+	private String getFormattedDate(Date d) {
+		return new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(d);
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.swing.textBoxWithCalendar.IMethodsForGraphicalCalendarComponents#getFormattedDate()
+	 */
+	public String getFormattedDate() {
+		return new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(this.getDate());
+	}
+	
+	/**
+	 * Gets the title of the JDialog with the calendar component. The title is displayed in the JDialog's border.
+	 * @return Title
+	 */
+	public String getTitle() {
+		return this.getJCalendarDateDialog().getTitle();
+	}
+		
+	/**
+	 * Sets the title of the JDialog with the calendar component. 
+	 * 
+	 * @param String
+	 */
+	public void setTitle(String title) {
+		this.getJCalendarDateDialog().setTitle(title);
+	}
+
+	/**
+	 * Sets the default title of the JDialog with the calendar component.
+	 */
+	public void setDefaultTitle() {
+		this.getJCalendarDateDialog().setTitle(Messages.getText("calendarTitle"));
+	}	
+	
+	/**
+	 * @see java.awt.Dialog#setModal(boolean)
+	 */
+	public void setModal(boolean b) {
+		this.getJCalendarDateDialog().setModal(b);
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.JComponent#setPreferredSize(java.awt.Dimension)
+	 */
+	public void setPreferredSize(Dimension d) {
+		super.setPreferredSize(d);
+		getJButton().setPreferredSize(d);
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see java.awt.Component#setSize(int, int)
+	 */
+	public void setSize(int width, int height) {
+		super.setSize(width, height);
+		getJButton().setSize(width, height);		
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see java.awt.Component#setSize(java.awt.Dimension)
+	 */
+	public void setSize(Dimension d) {
+		super.setSize(d);
+		getJButton().setSize(d);		
+	}
+	
+	/**
+	 * Adds a component listener for the inner JDialog that cointins the calendar interface
+	 * 
+	 * @param componentListener
+	 */
+	public void addComponentListenerForJDialogCalendar(ComponentListener componentListener) {
+		getJCalendarDateDialog().addComponentListener(componentListener);
+	}	
+	
+	/**
+	 * This method creates a Mouse Listener object
+	 */
+	private void createMouseListener() {
+		
+		mouseListener = new MouseAdapter() {
+
+			/*
+			 *  (non-Javadoc)
+			 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+			 */
+			public void mouseClicked(MouseEvent e) {
+				// Show the JDialog
+				if (getJButton().isEnabled())
+				{
+					getJCalendarDateDialog().setLocationRelativeTo(jButton);
+					getJCalendarDateDialog().setVisible(true);
+				}				
+			}	
+		};
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#createToolTip()
+	 */
+    public JToolTip createToolTip() {
+    	// Multiline support
+    	MultiLineToolTip tip = new MultiLineToolTip();
+    	tip.setComponent(this);
+    	return tip;
+    }	
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarDatePanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarCDatePanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarCDatePanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarCDatePanel.java	(revision 38348)
@@ -0,0 +1,201 @@
+package org.gvsig.gui.beans.swing.textBoxWithCalendar;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+
+import javax.swing.JPanel;
+import javax.swing.JToolTip;
+
+import org.freixas.jcalendar.JCalendarCombo;
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.controls.MultiLineToolTip;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Creates a Panel for include in other panels -> this panel allows users to set the date they want
+ * The difference from this class to the JCalendarDatePanel is that in this class the user can move
+ *    the calendar with the mouse
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class JCalendarCDatePanel extends JPanel implements IMethodsForGraphicalCalendarComponents, java.io.Serializable {
+	private static final long serialVersionUID = -1698696825218186886L;
+
+	private final int defaultWidth = 120;
+	private final int defaultHeight = 19;
+	private JCalendarCombo calendar = null;
+	
+	/**
+	 * This is the default constructor: creates the panel with a JCalendar object
+	 */
+	public JCalendarCDatePanel() {
+			
+		try
+		{
+			// Set properties to the current panel
+			this.setPreferredSize(new Dimension(defaultWidth, defaultHeight));
+			this.setLayout(new BorderLayout());
+			
+		    // Adds the JCalendar to the current panel
+		    this.add(this.getJCalendarCombo());
+		}
+		catch(Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+	
+	/**
+	 * This is the default constructor with 2 parameters: creates the panel with a JCalendar object
+	 */
+	public JCalendarCDatePanel(int width, int height) {
+			
+		try {
+			
+			// Set properties to the current panel
+			this.setPreferredSize(new Dimension(width, height));
+			this.setLayout(new BorderLayout());			
+		    
+		    // Adds the JCalendar to the current panel
+		    this.add(this.getJCalendarCombo());
+		}
+		catch(Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * Returns a reference to the JCalendarCombo private attribute
+	 * 
+	 * @return A reference to the calendar
+	 */
+	private JCalendarCombo getJCalendarCombo() {
+		if (this.calendar == null) {
+			// Create a JCalendar
+			calendar = new JCalendarCombo(Calendar.getInstance(), Locale.getDefault(), JCalendarCombo.DISPLAY_DATE, true);
+			calendar.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
+		    calendar.setEditable(false);		    
+		    calendar.setBackground(Color.WHITE);
+		    calendar.setToolTipText(Messages.getText("calendarSelectDate"));
+		    calendar.setToolTipTextToMonthDecrButton(Messages.getText("calendarBackOneMonth"));
+		    calendar.setToolTipTextToMonthIncrButton(Messages.getText("calendarForwardOneMonth"));
+		    calendar.setToolTipTextToYearDecrButton(Messages.getText("calendarBackOneYear"));
+		    calendar.setToolTipTextToYearIncrButton(Messages.getText("calendarForwardOneYear"));
+		}
+		
+		return this.calendar;
+	}
+	
+	/**
+	 * Sets the size of the CalendarDatePanel for resize the JCalendarCommbo and this panel
+	 * 
+	 * @param width (the new Width for the panel)
+	 * @param height (the new Height for the panel)
+	 */
+	public void setPreferredSizeResize(int width, int height)
+	{
+		this.setPreferredSize(new Dimension(width, height));
+		calendar.setPreferredSize(new Dimension(width, height));		   
+		calendar.setSize(new Dimension(width, height));
+		this.revalidate();
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.swing.textBoxWithCalendar.IMethodsForGraphicalCalendarComponents#setDate(java.util.Date)
+	 */
+	public void setDate(Date date)
+	{
+		calendar.setDate(date);
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.swing.textBoxWithCalendar.IMethodsForGraphicalCalendarComponents#getDate()
+	 */
+	public Date getDate()
+	{
+		return calendar.getDate();
+	}
+	
+	/**
+	 * Allows select the date
+	 */
+	public void enableCalendar()
+	{
+		calendar.setEnabled(true);
+	}
+	
+	/**
+	 * Don't allow select the date
+	 */
+	public void disableCalendar()
+	{
+		calendar.setEnabled(false);
+	}	
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.swing.textBoxWithCalendar.IMethodsForGraphicalCalendarComponents#getFormattedDate()
+	 */
+	public String getFormattedDate() {
+		return new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(this.getDate());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#createToolTip()
+	 */
+    public JToolTip createToolTip() {
+    	// Multiline support
+    	MultiLineToolTip tip = new MultiLineToolTip();
+    	tip.setComponent(this);
+    	return tip;
+    }	
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/textBoxWithCalendar/JCalendarCDatePanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JButton.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JButton.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JButton.java	(revision 38348)
@@ -0,0 +1,177 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.swing;
+
+import java.awt.Dimension;
+
+import javax.swing.Icon;
+
+/**
+ * According to the gvSIG's GUI style sheet all the buttons in the application
+ * will have a normative size. No smaller than a concrete size, and big enough
+ * to contain the text and avoiding the "..." characters. The button will grow
+ * up in width by a set of widths defined in this style sheet, always choosing
+ * the smallest width that can contain the text. If the biggest width is not
+ * enought for this purpose then the button will automatically grow up to the
+ * smallest necessary width to fit the text.<br>
+ * <p>
+ * The button resizing is based on the <b>setText(String txt)</b> method.
+ * However, it is possible to use a custom size if you invoke one of
+ * <b>setSize(..)</b>, <b>setBorders(...)</b> or <b>setPreferredSize(...)</b>
+ * after invoking the <b>setText(...)<b> method.
+ * <p>
+ * This class is just a standard javax.swing.JButton that handles this issue.
+ * </p>
+ * 
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ * 
+ * @deprecated use the
+ *             org.gvsig.tools.swing.api.usability.UsabilitySwingManager.
+ *             createJButton() methods instead. You can get the instance of the
+ *             UsabilitySwingManager through the
+ *             org.gvsig.tools.swing.api.ToolsSwingLocator class.
+ * 
+ */
+public class JButton extends javax.swing.JButton {
+  private static final long serialVersionUID = -1635879317292710725L;
+
+	// TODO this should be initialized from a properties file or so.
+	private static int[][] buttonSizes = new int[][] {
+			new int[] { 90, 23},
+			new int[] {110, 23},
+			new int[] {135, 23},
+			new int[] {160, 23}
+	};
+
+	private String enableText;
+	private String toolTip;
+
+
+
+	/**
+	 * Creates a new empty instance of org.gvsig.gui.beans.swing.JButton.
+	 */
+	public JButton() {
+		super();
+	}
+
+	/**
+	 * Creates a new instance of org.gvsig.gui.beans.swing.JButton containing a text.
+	 * @param text
+	 */
+	public JButton(String text) {
+		super();
+		setText(text);
+	}
+
+	/**
+	 * Creates a new instance of org.gvsig.gui.beans.swing.JButton containing an image and
+	 * a text.
+	 * @param text
+	 * @param icon
+	 */
+	public JButton(String text, Icon icon) {
+		super(icon);
+		setText(text);
+	}
+
+	/**
+	 * Creates a new instance of org.gvsig.gui.beans.swing.JButton containing an image.
+	 */
+	public JButton(Icon icon) {
+		super(icon);
+	}
+
+
+	/**
+	 * Gets the text that appears in the tooltip when the button is disabled.
+	 * @return String
+	 */
+	public String getEnableText() {
+		return enableText;
+	}
+	/**
+	 * Sets the text that appears in the tooltip when the button is disabled.
+	 * @param enableText The enableText to set.
+	 */
+	public void setEnableText(String enableText) {
+		this.enableText = enableText;
+	}
+
+
+	public void setEnabled(boolean aFlag) {
+		super.setEnabled(aFlag);
+		if (aFlag){
+			setToolTipText(toolTip);
+		}else{
+			setToolTipText(enableText);
+		}
+	}
+
+	/**
+	 * Sets the text that appears in the tooltip when the button is enabled.
+	 */
+	public void setToolTip(String text) {
+		toolTip = text;
+	}
+
+	public void setText(String text) {
+		super.setText(text);
+		Dimension d = getUI().getMinimumSize(this);
+		int oldWidth = (int) d.getWidth(), newWidth = oldWidth;
+		int oldHeight = (int) d.getHeight(), newHeight = oldHeight;
+
+		// figure out the suitable width
+		for (int i = buttonSizes.length-1; i >= 0 ; i--)
+			if (oldWidth < buttonSizes[i][0])
+				newWidth = buttonSizes[i][0];
+
+		// figure out the suitable height
+		for (int i = buttonSizes.length-1; i >= 0 ; i--)
+			if (oldHeight < buttonSizes[i][1])
+				newHeight = buttonSizes[i][1];
+
+		Dimension sz = new Dimension(newWidth, newHeight);
+		super.setSize(sz);
+		super.setPreferredSize(sz);
+	}
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JButton.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JComboBoxFontSizes.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JComboBoxFontSizes.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JComboBoxFontSizes.java	(revision 38348)
@@ -0,0 +1,118 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.swing;
+
+import java.awt.Dimension;
+import java.util.ArrayList;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+
+/**
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ */
+public class JComboBoxFontSizes extends JComboBox {
+  private static final long serialVersionUID = 3256519971028107511L;
+		private static ArrayList sizes;
+    private static float DEFAULT_FONT_SIZE = 10;
+    public JComboBoxFontSizes() {
+        super();
+        if (sizes == null) {
+            sizes = new ArrayList();
+            sizes.add(new Integer(5));
+            sizes.add(new Integer(6));
+            sizes.add(new Integer(7));
+            sizes.add(new Integer(8));
+            sizes.add(new Integer(9));
+            sizes.add(new Integer(10));
+            sizes.add(new Integer(11));
+            sizes.add(new Integer(12));
+            sizes.add(new Integer(13));
+            sizes.add(new Integer(14));
+            sizes.add(new Integer(16));
+            sizes.add(new Integer(18));
+            sizes.add(new Integer(20));
+            sizes.add(new Integer(22));
+            sizes.add(new Integer(24));
+            sizes.add(new Integer(28));
+            sizes.add(new Integer(36));
+            sizes.add(new Integer(48));
+            sizes.add(new Integer(72));
+        }
+
+        setModel(new DefaultComboBoxModel((Integer[]) sizes.toArray(new Integer[sizes.size()])));
+        setSelectedIndex(7);
+        setEditable(true);
+        setPreferredSize(new Dimension(50, 20));
+    }
+
+    public float getSelectedValue() {
+        Object v = getSelectedItem();
+        if (v instanceof Integer) {
+            return ((Integer) v).floatValue();
+        }
+        if (v instanceof String) {
+            try{
+                return Float.parseFloat((String) v);
+            } catch (Exception e) {
+                return DEFAULT_FONT_SIZE;
+            }
+        }
+        if (v instanceof Double || v instanceof Float) {
+            return ((Double) v).floatValue();
+        }
+        return DEFAULT_FONT_SIZE;
+    }
+
+    public void setSelectedItem(Object anObject) {
+    	 if (anObject instanceof Double || anObject instanceof Float) {
+              if (((Double) anObject).doubleValue() == 10) {
+            	  super.setSelectedItem(new Integer(10));
+            	  return;
+              }
+              super.setSelectedItem(anObject);
+         } else if (anObject instanceof String) {
+        	 setSelectedItem( new Double((String)anObject));
+         } else {
+        	 super.setSelectedItem(anObject);
+         }
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JComboBoxFontSizes.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/AbstractTreeTableModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/AbstractTreeTableModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/AbstractTreeTableModel.java	(revision 38348)
@@ -0,0 +1,233 @@
+package org.gvsig.gui.beans.swing.treeTable;
+
+import javax.swing.event.EventListenerList;
+import javax.swing.event.TreeModelEvent;
+import javax.swing.event.TreeModelListener;
+import javax.swing.tree.TreePath;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.1  2007-08-20 08:34:46  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.3  2006/11/01 17:27:44  jorpiell
+ * Se elimina el nodo "virtual" de la raiz
+ *
+ * Revision 1.2  2006/10/23 11:13:55  jorpiell
+ * A�adida la posibilidad de recargar el �rbol tantas veces como queramos
+ *
+ * Revision 1.1  2006/10/23 08:18:39  jorpiell
+ * A�adida la clase treetable
+ *
+ *
+ */
+/**
+ * @author Jorge Piera Llodr� (piera_jor@gva.es)
+ */
+public abstract class AbstractTreeTableModel implements TreeTableModel {
+	protected Object root;     
+	protected EventListenerList listenerList = new EventListenerList();
+	
+	public AbstractTreeTableModel(Object root) {
+		setNodes(root);
+	}
+	
+	public void setNodes(Object root){
+		this.root = root; 		
+	}
+	
+	//
+	// Default implmentations for methods in the TreeModel interface. 
+	//
+	
+	public Object getRoot() {
+		return root;
+	}
+	
+	public boolean isLeaf(Object node) {
+		return getChildCount(node) == 0; 
+	}
+	
+	public void valueForPathChanged(TreePath path, Object newValue) {}
+	
+	// This is not called in the JTree's default mode: use a naive implementation. 
+	public int getIndexOfChild(Object parent, Object child) {
+		for (int i = 0; i < getChildCount(parent); i++) {
+			if (getChild(parent, i).equals(child)) { 
+				return i; 
+			}
+		}
+		return -1; 
+	}
+	
+	public void addTreeModelListener(TreeModelListener l) {
+		listenerList.add(TreeModelListener.class, l);
+	}
+	
+	public void removeTreeModelListener(TreeModelListener l) {
+		listenerList.remove(TreeModelListener.class, l);
+	}
+	
+	/*
+	 * Notify all listeners that have registered interest for
+	 * notification on this event type.  The event instance 
+	 * is lazily created using the parameters passed into 
+	 * the fire method.
+	 * @see EventListenerList
+	 */
+	protected void fireTreeNodesChanged(Object source, Object[] path, 
+			int[] childIndices, 
+			Object[] children) {
+		// Guaranteed to return a non-null array
+		Object[] listeners = listenerList.getListenerList();
+		TreeModelEvent e = null;
+		// Process the listeners last to first, notifying
+		// those that are interested in this event
+		for (int i = listeners.length-2; i>=0; i-=2) {
+			if (listeners[i]==TreeModelListener.class) {
+				// Lazily create the event:
+				if (e == null)
+					e = new TreeModelEvent(source, path, 
+							childIndices, children);
+				((TreeModelListener)listeners[i+1]).treeNodesChanged(e);
+			}          
+		}
+	}
+	
+	/*
+	 * Notify all listeners that have registered interest for
+	 * notification on this event type.  The event instance 
+	 * is lazily created using the parameters passed into 
+	 * the fire method.
+	 * @see EventListenerList
+	 */
+	protected void fireTreeNodesInserted(Object source, Object[] path, 
+			int[] childIndices, 
+			Object[] children) {
+		// Guaranteed to return a non-null array
+		Object[] listeners = listenerList.getListenerList();
+		TreeModelEvent e = null;
+		// Process the listeners last to first, notifying
+		// those that are interested in this event
+		for (int i = listeners.length-2; i>=0; i-=2) {
+			if (listeners[i]==TreeModelListener.class) {
+				// Lazily create the event:
+				if (e == null)
+					e = new TreeModelEvent(source, path, 
+							childIndices, children);
+				((TreeModelListener)listeners[i+1]).treeNodesInserted(e);
+			}          
+		}
+	}
+	
+	/*
+	 * Notify all listeners that have registered interest for
+	 * notification on this event type.  The event instance 
+	 * is lazily created using the parameters passed into 
+	 * the fire method.
+	 * @see EventListenerList
+	 */
+	protected void fireTreeNodesRemoved(Object source, Object[] path, 
+			int[] childIndices, 
+			Object[] children) {
+		// Guaranteed to return a non-null array
+		Object[] listeners = listenerList.getListenerList();
+		TreeModelEvent e = null;
+		// Process the listeners last to first, notifying
+		// those that are interested in this event
+		for (int i = listeners.length-2; i>=0; i-=2) {
+			if (listeners[i]==TreeModelListener.class) {
+				// Lazily create the event:
+				if (e == null)
+					e = new TreeModelEvent(source, path, 
+							childIndices, children);
+				((TreeModelListener)listeners[i+1]).treeNodesRemoved(e);
+			}          
+		}
+	}
+	
+	/*
+	 * Notify all listeners that have registered interest for
+	 * notification on this event type.  The event instance 
+	 * is lazily created using the parameters passed into 
+	 * the fire method.
+	 * @see EventListenerList
+	 */
+	protected void fireTreeStructureChanged(Object source, Object[] path, 
+			int[] childIndices, 
+			Object[] children) {
+		// Guaranteed to return a non-null array
+		Object[] listeners = listenerList.getListenerList();
+		TreeModelEvent e = null;
+		// Process the listeners last to first, notifying
+		// those that are interested in this event
+		for (int i = listeners.length-2; i>=0; i-=2) {
+			if (listeners[i]==TreeModelListener.class) {
+				// Lazily create the event:
+				if (e == null)
+					e = new TreeModelEvent(source, path, 
+							childIndices, children);
+				((TreeModelListener)listeners[i+1]).treeStructureChanged(e);
+			}          
+		}
+	}
+	
+	//
+	// Default impelmentations for methods in the TreeTableModel interface. 
+	//
+	
+	public Class getColumnClass(int column) { return Object.class; }
+	
+	/** By default, make the column with the Tree in it the only editable one. 
+	 *  Making this column editable causes the JTable to forward mouse 
+	 *  and keyboard events in the Tree column to the underlying JTree. 
+	 */ 
+	public boolean isCellEditable(Object node, int column) { 
+		return getColumnClass(column) == TreeTableModel.class; 
+	}
+	
+	public void setValueAt(Object aValue, Object node, int column) {}
+	}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/AbstractTreeTableModel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableCellEditor.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableCellEditor.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableCellEditor.java	(revision 38348)
@@ -0,0 +1,78 @@
+package org.gvsig.gui.beans.swing.treeTable;
+
+import java.awt.Component;
+
+import javax.swing.JTable;
+import javax.swing.table.TableCellEditor;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.1  2007-08-20 08:34:46  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.1  2006/10/23 08:18:39  jorpiell
+ * A�adida la clase treetable
+ *
+ *
+ */
+/**
+ * @author Jorge Piera Llodr� (piera_jor@gva.es)
+ */
+public class TreeTableCellEditor extends AbstractCellEditor implements TableCellEditor {
+	private TreeTable treeTable;
+	
+	public TreeTableCellEditor(TreeTable treeTable){
+		this.treeTable = treeTable;
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.table.TableCellEditor#getTableCellEditorComponent(javax.swing.JTable, java.lang.Object, boolean, int, int)
+	 */
+	public Component getTableCellEditorComponent(JTable table, Object value,
+			boolean isSelected, int r, int c) {
+		return treeTable.getTree();
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableCellEditor.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableCellRenderer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableCellRenderer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableCellRenderer.java	(revision 38348)
@@ -0,0 +1,116 @@
+package org.gvsig.gui.beans.swing.treeTable;
+
+import java.awt.Component;
+import java.awt.Graphics;
+
+import javax.swing.JTable;
+import javax.swing.JTree;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.tree.TreeCellEditor;
+import javax.swing.tree.TreeCellRenderer;
+import javax.swing.tree.TreeModel;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.3  2007-09-12 16:28:23  bsanchez
+ * *** empty log message ***
+ *
+ * Revision 1.2  2007/08/21 09:47:17  bsanchez
+ * - Quitados warnings en imports innecesarios
+ *
+ * Revision 1.1  2007/08/20 08:34:46  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.2  2006/10/25 14:45:52  jorpiell
+ * A�adidos los renderers al arbol
+ *
+ * Revision 1.1  2006/10/23 08:18:39  jorpiell
+ * A�adida la clase treetable
+ *
+ *
+ */
+/**
+ * @author Jorge Piera Llodr� (piera_jor@gva.es)
+ */
+public class TreeTableCellRenderer extends JTree implements TableCellRenderer {
+  private static final long serialVersionUID = 1017457033135612066L;
+	private int visibleRow;
+	private TreeTable treeTable;
+	
+	public TreeTableCellRenderer(TreeModel model,TreeTable treetable) { 
+		super(model); 		
+		this.treeTable = treetable;
+	}
+	
+	public TreeTableCellRenderer(TreeModel model,TreeTable treetable,TreeCellRenderer cellRenderer,TreeCellEditor cellEditor){ 
+		super(model); 
+		this.setCellRenderer(cellRenderer);
+		this.setCellEditor(cellEditor);
+		this.treeTable = treetable;		    
+	}
+	
+	public void setBounds(int x, int y, int w, int h) {
+		super.setBounds(x, 0, w, treeTable.getHeight());
+	}
+	
+	public void paint(Graphics g) {
+		g.translate(0, -visibleRow * getRowHeight());
+		super.paint(g);
+	}
+	
+	public Component getTableCellRendererComponent(JTable table,
+			Object value,
+			boolean isSelected,
+			boolean hasFocus,
+			int row, int column) {
+		if(isSelected)
+			setBackground(table.getSelectionBackground());
+		else
+			setBackground(table.getBackground());
+		
+		visibleRow = row;
+		return this;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableCellRenderer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/MergeSort.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/MergeSort.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/MergeSort.java	(revision 38348)
@@ -0,0 +1,115 @@
+package org.gvsig.gui.beans.swing.treeTable;
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.1  2007-08-20 08:34:46  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.1  2006/10/23 08:18:39  jorpiell
+ * A�adida la clase treetable
+ *
+ *
+ */
+/**
+ * @author Jorge Piera Llodr� (piera_jor@gva.es)
+ */
+public abstract class MergeSort extends Object {
+    protected Object           toSort[];
+    protected Object           swapSpace[];
+
+    public void sort(Object array[]) {
+	if(array != null && array.length > 1)
+	{
+	    int             maxLength;
+  
+	    maxLength = array.length;
+	    swapSpace = new Object[maxLength];
+	    toSort = array;
+	    this.mergeSort(0, maxLength - 1);
+	    swapSpace = null;
+	    toSort = null;
+	}
+    }
+
+    public abstract int compareElementsAt(int beginLoc, int endLoc);
+
+    protected void mergeSort(int begin, int end) {
+	if(begin != end)
+	{
+	    int           mid;
+
+	    mid = (begin + end) / 2;
+	    this.mergeSort(begin, mid);
+	    this.mergeSort(mid + 1, end);
+	    this.merge(begin, mid, end);
+	}
+    }
+
+    protected void merge(int begin, int middle, int end) {
+	int           firstHalf, secondHalf, count;
+
+	firstHalf = count = begin;
+	secondHalf = middle + 1;
+	while((firstHalf <= middle) && (secondHalf <= end))
+	{
+	    if(this.compareElementsAt(secondHalf, firstHalf) < 0)
+		swapSpace[count++] = toSort[secondHalf++];
+	    else
+		swapSpace[count++] = toSort[firstHalf++];
+	}
+	if(firstHalf <= middle)
+	{
+	    while(firstHalf <= middle)
+		swapSpace[count++] = toSort[firstHalf++];
+	}
+	else
+	{
+	    while(secondHalf <= end)
+		swapSpace[count++] = toSort[secondHalf++];
+	}
+	for(count = begin;count <= end;count++)
+	    toSort[count] = swapSpace[count];
+    }
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/MergeSort.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTable.java	(revision 38348)
@@ -0,0 +1,223 @@
+package org.gvsig.gui.beans.swing.treeTable;
+
+import java.awt.Component;
+import java.awt.Dimension;
+
+import javax.swing.Icon;
+import javax.swing.JTable;
+import javax.swing.table.TableCellEditor;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.DefaultTreeSelectionModel;
+import javax.swing.tree.TreeCellEditor;
+import javax.swing.tree.TreeCellRenderer;
+import javax.swing.tree.TreeModel;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.2  2007-09-12 16:28:23  bsanchez
+ * *** empty log message ***
+ *
+ * Revision 1.1  2007/08/20 08:34:46  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.4  2007/01/17 17:18:29  jorpiell
+ * A�adido un m�todo para expandir todo el �rbol
+ *
+ * Revision 1.3  2006/10/25 14:45:52  jorpiell
+ * A�adidos los renderers al arbol
+ *
+ * Revision 1.2  2006/10/23 11:13:55  jorpiell
+ * A�adida la posibilidad de recargar el �rbol tantas veces como queramos
+ *
+ * Revision 1.1  2006/10/23 08:18:39  jorpiell
+ * A�adida la clase treetable
+ *
+ *
+ */
+/**
+ * To create a new tree table it is necessary to create a new
+ * treetablemodel. See the ExampleModel.java.
+ * @author Jorge Piera Llodr� (piera_jor@gva.es)
+ */
+
+public class TreeTable extends JTable {
+  private static final long serialVersionUID = 6630322246955414756L;
+	protected TreeTableCellRenderer tree;
+		
+	public TreeTable(TreeTableModel treeTableModel) {
+		super();
+	    setModel(treeTableModel);  
+	}
+	
+	public TreeTable(TreeTableModel treeTableModel,TreeCellRenderer cellRenderer,TreeCellEditor cellEditor) {
+		super();
+	    setModel(treeTableModel,cellRenderer,cellEditor);  
+	}
+	
+	public void setModel(TreeTableModel treeTableModel,TreeCellRenderer cellRenderer,TreeCellEditor cellEditor){
+		tree = new TreeTableCellRenderer(treeTableModel,this,cellRenderer,cellEditor);
+		super.setModel(new TreeTableModelAdapter(treeTableModel, tree));
+		setModel();
+	}
+	
+	public void setModel(TreeTableModel treeTableModel){
+		tree = new TreeTableCellRenderer(treeTableModel,this); 
+		super.setModel(new TreeTableModelAdapter(treeTableModel, tree));
+		setModel();
+	}
+	
+	private void setModel(){
+		// Force the JTable and JTree to share their row selection models. 
+		tree.setSelectionModel(new DefaultTreeSelectionModel() { 
+      	private static final long serialVersionUID = 2719965083562067462L;
+			// Extend the implementation of the constructor, as if: 
+			/* public this() */ {
+				setSelectionModel(listSelectionModel); 
+			} 
+		}); 
+		// Make the tree and table row heights the same. 
+		tree.setRowHeight(getRowHeight());
+		
+		// Install the tree editor renderer and editor. 
+		setDefaultRenderer(TreeTableModel.class, tree); 
+		setDefaultEditor(TreeTableModel.class, new TreeTableCellEditor());  
+		
+		setShowGrid(false);
+		setIntercellSpacing(new Dimension(0, 0)); 
+	}
+	
+	/* Workaround for BasicTableUI anomaly. Make sure the UI never tries to 
+	 * paint the editor. The UI currently uses different techniques to 
+	 * paint the renderers and editors and overriding setBounds() below 
+	 * is not the right thing to do for an editor. Returning -1 for the 
+	 * editing row in this case, ensures the editor is never painted. 
+	 */
+	public int getEditingRow() {
+		return (getColumnClass(editingColumn) == TreeTableModel.class) ? -1 : editingRow;  
+	}
+
+	
+	public class TreeTableCellEditor extends AbstractCellEditor implements TableCellEditor {
+		public Component getTableCellEditorComponent(JTable table, Object value,
+				boolean isSelected, int r, int c) {
+			return tree;
+		}
+	}
+	
+	/**
+	 * Deletes all the tree icons
+	 *
+	 */
+	public void deleteIcons(){
+		setLeafIcon(null);
+	    setClosedIcon(null);
+	    setOpenIcon(null);
+	}
+	
+	/**
+	 * Sets the root visible
+	 */
+	public void setRootVisible(boolean rootVisible){
+		tree.setRootVisible(rootVisible);
+	}
+	
+	/**
+	 * Sets the leaftIcon
+	 * @param newIcon
+	 */
+	public void setLeafIcon(Icon newIcon){
+		TreeTableCellRenderer renderer = (TreeTableCellRenderer)getTree();
+		DefaultTreeCellRenderer treeRenderer = (DefaultTreeCellRenderer)renderer.getCellRenderer();
+		treeRenderer.setLeafIcon(newIcon);
+	}
+	
+	/**
+	 * Sets the open icon
+	 * @param newIcon
+	 */
+	public void setOpenIcon(Icon newIcon){
+		TreeTableCellRenderer renderer = (TreeTableCellRenderer)getTree();
+		DefaultTreeCellRenderer treeRenderer = (DefaultTreeCellRenderer)renderer.getCellRenderer();
+		treeRenderer.setOpenIcon(newIcon);
+	}
+	
+	/**
+	 * Sets the close icon
+	 * @param newIcon
+	 */
+	public void setClosedIcon(Icon newIcon){
+		TreeTableCellRenderer renderer = (TreeTableCellRenderer)getTree();
+		DefaultTreeCellRenderer treeRenderer = (DefaultTreeCellRenderer)renderer.getCellRenderer();
+		treeRenderer.setClosedIcon(newIcon);
+	}
+
+	public Component getTree() {
+		return tree;
+	}
+	
+	public int expandJTreeNode (Object node, int row){
+		TreeModel model = tree.getModel();
+		if (node != null  &&  !model.isLeaf(node)){
+			tree.expandRow(row);
+			for (int index = 0;	row + 1 < tree.getRowCount()  &&  index < model.getChildCount(node); index++){
+				row++;
+				Object child = model.getChild(node, index);
+				if (child == null)
+					break;
+				javax.swing.tree.TreePath path;
+				while ((path = tree.getPathForRow(row)) != null  &&	path.getLastPathComponent() != child){
+					tree.expandRow(row);
+					row++;					
+				}
+				if (path == null)
+					break;
+				row = expandJTreeNode(child, row);				
+			}
+		}
+		return row;
+	}
+	
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTable.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableModel.java	(revision 38348)
@@ -0,0 +1,95 @@
+package org.gvsig.gui.beans.swing.treeTable;
+
+import javax.swing.tree.TreeModel;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.1  2007-08-20 08:34:46  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.1  2006/10/23 08:18:39  jorpiell
+ * A�adida la clase treetable
+ *
+ *
+ */
+/**
+ * @author Jorge Piera Llodr� (piera_jor@gva.es)
+ */
+public interface TreeTableModel extends TreeModel
+{
+    /**
+     * Returns the number ofs availible column.
+     */
+    public int getColumnCount();
+
+    /**
+     * Returns the name for column number <code>column</code>.
+     */
+    public String getColumnName(int column);
+
+    /**
+     * Returns the type for column number <code>column</code>.
+     */
+    public Class getColumnClass(int column);
+
+    /**
+     * Returns the value to be displayed for node <code>node</code>, 
+     * at column number <code>column</code>.
+     */
+    public Object getValueAt(Object node, int column);
+
+    /**
+     * Indicates whether the the value for node <code>node</code>, 
+     * at column number <code>column</code> is editable.
+     */
+    public boolean isCellEditable(Object node, int column);
+
+    /**
+     * Sets the value for node <code>node</code>, 
+     * at column number <code>column</code>.
+     */
+    public void setValueAt(Object aValue, Object node, int column);
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableModel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableModelAdapter.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableModelAdapter.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableModelAdapter.java	(revision 38348)
@@ -0,0 +1,130 @@
+package org.gvsig.gui.beans.swing.treeTable;
+
+import javax.swing.JTree;
+import javax.swing.event.TreeExpansionEvent;
+import javax.swing.event.TreeExpansionListener;
+import javax.swing.table.AbstractTableModel;
+import javax.swing.tree.TreePath;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.2  2007-09-12 16:28:23  bsanchez
+ * *** empty log message ***
+ *
+ * Revision 1.1  2007/08/20 08:34:46  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.3  2006/10/25 14:45:52  jorpiell
+ * A�adidos los renderers al arbol
+ *
+ * Revision 1.2  2006/10/24 08:04:13  jorpiell
+ * nodeFroRow es ahora public
+ *
+ * Revision 1.1  2006/10/23 08:18:39  jorpiell
+ * A�adida la clase treetable
+ *
+ *
+ */
+/**
+ * @author Jorge Piera Llodr� (piera_jor@gva.es)
+ */
+public class TreeTableModelAdapter extends AbstractTableModel{
+  private static final long serialVersionUID = -5509267189480739255L;
+	JTree tree;
+	TreeTableModel treeTableModel;
+	
+	public TreeTableModelAdapter(TreeTableModel treeTableModel, JTree tree) {
+		this.tree = tree;
+		this.treeTableModel = treeTableModel;
+		
+		tree.addTreeExpansionListener(new TreeExpansionListener() {
+			// Don't use fireTableRowsInserted() here; 
+			// the selection model would get  updated twice. 
+			public void treeExpanded(TreeExpansionEvent event) {  
+				fireTableDataChanged(); 
+			}
+			public void treeCollapsed(TreeExpansionEvent event) {  
+				fireTableDataChanged(); 
+			}
+		});
+	}
+	
+	// Wrappers, implementing TableModel interface. 
+	
+	public int getColumnCount() {
+		return treeTableModel.getColumnCount();
+	}
+	
+	public String getColumnName(int column) {
+		return treeTableModel.getColumnName(column);
+	}
+	
+	public Class getColumnClass(int column) {
+		return treeTableModel.getColumnClass(column);
+	}
+	
+	public int getRowCount() {
+		return tree.getRowCount();
+	}
+	
+	public Object nodeForRow(int row) {
+		TreePath treePath = tree.getPathForRow(row);
+		return treePath.getLastPathComponent();         
+	}
+	
+	public Object getValueAt(int row, int column) {
+		return treeTableModel.getValueAt(nodeForRow(row), column);
+	}
+	
+	public boolean isCellEditable(int row, int column) {
+		return treeTableModel.isCellEditable(nodeForRow(row), column);
+	}
+	
+	public void setValueAt(Object value, int row, int column) {
+		treeTableModel.setValueAt(value, nodeForRow(row), column);
+	}
+}
+
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/TreeTableModelAdapter.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/AbstractCellEditor.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/AbstractCellEditor.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/AbstractCellEditor.java	(revision 38348)
@@ -0,0 +1,118 @@
+package org.gvsig.gui.beans.swing.treeTable;
+
+import java.util.EventObject;
+
+import javax.swing.CellEditor;
+import javax.swing.event.CellEditorListener;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.EventListenerList;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.1  2007-08-20 08:34:46  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.1  2006/10/23 08:18:39  jorpiell
+ * A�adida la clase treetable
+ *
+ *
+ */
+/**
+ * @author Jorge Piera Llodr� (piera_jor@gva.es)
+ */
+public class AbstractCellEditor implements CellEditor {
+	
+	protected EventListenerList listenerList = new EventListenerList();
+	
+	public Object getCellEditorValue() { return null; }
+	public boolean isCellEditable(EventObject e) { return true; }
+	public boolean shouldSelectCell(EventObject anEvent) { return false; }
+	public boolean stopCellEditing() { return true; }
+	public void cancelCellEditing() {}
+	
+	public void addCellEditorListener(CellEditorListener l) {
+		listenerList.add(CellEditorListener.class, l);
+	}
+	
+	public void removeCellEditorListener(CellEditorListener l) {
+		listenerList.remove(CellEditorListener.class, l);
+	}
+	
+	/**
+	 * Notify all listeners that have registered interest for
+	 * notification on this event type.  
+	 * @see EventListenerList
+	 */
+	protected void fireEditingStopped() {
+		// Guaranteed to return a non-null array
+		Object[] listeners = listenerList.getListenerList();
+		// Process the listeners last to first, notifying
+		// those that are interested in this event
+		for (int i = listeners.length-2; i>=0; i-=2) {
+			if (listeners[i]==CellEditorListener.class) {
+				((CellEditorListener)listeners[i+1]).editingStopped(new ChangeEvent(this));
+			}	       
+		}
+	}
+	
+	/**
+	 * Notify all listeners that have registered interest for
+	 * notification on this event type.  
+	 * @see EventListenerList
+	 */
+	protected void fireEditingCanceled() {
+		// Guaranteed to return a non-null array
+		Object[] listeners = listenerList.getListenerList();
+		// Process the listeners last to first, notifying
+		// those that are interested in this event
+		for (int i = listeners.length-2; i>=0; i-=2) {
+			if (listeners[i]==CellEditorListener.class) {
+				((CellEditorListener)listeners[i+1]).editingCanceled(new ChangeEvent(this));
+			}	       
+		}
+	}
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/treeTable/AbstractCellEditor.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JIncrementalNumberField.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JIncrementalNumberField.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JIncrementalNumberField.java	(revision 38348)
@@ -0,0 +1,446 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.swing;
+
+import java.awt.BasicStroke;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.EventListener;
+import java.util.Iterator;
+import java.util.Timer;
+import java.util.TimerTask;
+
+import javax.swing.BorderFactory;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.SwingConstants;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.swing.ValidatingTextField.Cleaner;
+import org.gvsig.gui.beans.swing.ValidatingTextField.Validator;
+
+/**
+ * This class represents a JTextField-like component that allows to input numbers
+ * and featuring a built-in increment or decrease of the number using the mouse.
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ */
+public class JIncrementalNumberField extends JPanel {
+
+	private static final long serialVersionUID = 5225633490545230468L;
+	private boolean acceptsDoubles;
+	private ValidatingTextField vtf;
+	private double step;
+	private double maxValue;
+	private double minValue;
+
+	private ActionListener propage = new ActionListener() {
+		public void actionPerformed(ActionEvent e) {
+			if (!isEnabled()) return;
+			if (acceptsDoubles) {
+				double v = getDouble();
+				if (v>maxValue)
+					v = maxValue;
+				if (v<minValue)
+					v = minValue;
+				setDouble(v);
+			} else {
+				int v = getInteger();
+				if (v>maxValue)
+					v = (int) maxValue;
+				if (v<minValue)
+					v = (int) minValue;
+				setInteger(v);
+			}
+			fireActionPerformed(e);
+		}
+	};
+
+	private FocusListener propageFocus = new FocusListener() {
+		public void focusGained(FocusEvent e) {
+			if (!isEnabled()) return;
+			Iterator<FocusListener> iter = Arrays.asList(JIncrementalNumberField.this.getFocusListeners()).iterator();
+			e.setSource(JIncrementalNumberField.this);
+			while (iter.hasNext()){
+				iter.next().focusGained(e);
+			}
+		}
+
+		public void focusLost(FocusEvent e) {
+			if (!isEnabled()) return;
+			if (acceptsDoubles) {
+				double v = getDouble();
+				if (v>maxValue)
+					v = maxValue;
+				if (v<minValue)
+					v = minValue;
+				setDouble(v);
+			} else {
+				int v = getInteger();
+				if (v>maxValue)
+					v = (int) maxValue;
+				if (v<minValue)
+					v = (int) minValue;
+				setInteger(v);
+			}
+			Iterator<FocusListener> iter = Arrays.asList(JIncrementalNumberField.this.getFocusListeners()).iterator();
+			e.setSource(JIncrementalNumberField.this);
+			while (iter.hasNext()){
+				iter.next().focusLost(e);
+			}
+		}
+	};
+
+
+	private ActionListener accum = new ActionListener() {
+		public void actionPerformed(ActionEvent e) {
+			if (!isEnabled()) return;
+			String command = e.getActionCommand();
+			if ("UP".equals(command)) {
+				if (acceptsDoubles) {
+					double v = getDouble() + step;
+					if (v>maxValue)
+						v = maxValue;
+					setDouble(v);
+				} else {
+					int v = getInteger() + (int) Math.round(step);
+					if (v>maxValue)
+						v = (int) maxValue;
+					setInteger(v);
+				}
+			} else if ("DOWN".equals(command)) {
+				if (acceptsDoubles) {
+					double v = getDouble();// - step;
+					v = v - step;
+					if (v<minValue)
+						v = minValue;
+					setDouble(v);
+
+				} else {
+					int v = getInteger() - (int) Math.round(step);
+					if (v<minValue)
+						v = (int) minValue;
+					setInteger(v);
+				}
+			}
+			fireActionPerformed();
+		}
+	};
+
+	private JButton down;
+	private JButton up;
+	private ArrayList<EventListener> listeners = new ArrayList<EventListener>();
+
+	private class MousePressedTask extends TimerTask {
+		private MouseEvent e;
+		private ButtonMouseListener ml;
+
+		private MousePressedTask(ButtonMouseListener ml, MouseEvent e){
+			super();
+			this.ml = ml;
+			this.e = e;
+		}
+
+		public void run() {
+			JButton b = (JButton) e.getComponent();
+
+			long time = System.currentTimeMillis();
+			long delay = 200;
+
+			while (ml.pressed) {
+				if (ml.in) {
+					accum.actionPerformed(new ActionEvent(b, 12431, b.getActionCommand()));
+
+					long currTime = System.currentTimeMillis();
+					if (delay > 5 && ((currTime - time) > 1000)) {
+						delay /= 2;
+						time = currTime;
+					}
+				} else time = System.currentTimeMillis();
+				try {
+					Thread.sleep(delay);
+				} catch (InterruptedException e1) {
+					e.consume();
+				}
+
+			}
+			e.consume();
+		}
+	}
+
+	private class ButtonMouseListener implements MouseListener{
+		boolean in = false;
+		boolean pressed = false;
+
+		public void mouseClicked(MouseEvent e) { /* nothing (managed by the ActionListener) */ }
+
+		public void mouseEntered(MouseEvent e) {
+			in = true;
+		}
+
+		public void mouseExited(MouseEvent e) {
+			in = false;
+		}
+
+		public void mousePressed(MouseEvent e) {
+			MousePressedTask task;
+			synchronized (this) {
+				pressed = true;
+				Timer timer = new Timer();
+				task = new MousePressedTask(this, e);
+				timer.schedule(task, 500);
+
+			}
+			if (!pressed) {
+				task.cancel();
+			}
+
+		}
+
+		public void mouseReleased(MouseEvent e) {
+			pressed = false;
+		}
+
+	};
+
+
+	public JIncrementalNumberField() {
+		this("");
+	}
+
+	public JIncrementalNumberField(String text) {
+		this(text, 7);
+	}
+
+	public JIncrementalNumberField(String text, int columns) {
+		this(text, columns, ValidatingTextField.DOUBLE_VALIDATOR, ValidatingTextField.NUMBER_CLEANER_2_DECIMALS, -Double.MAX_VALUE, Double.MAX_VALUE, 1);
+	}
+
+	public JIncrementalNumberField(String text, int columns, double minValue, double maxValue, double step) {
+		this(text, columns, ValidatingTextField.DOUBLE_VALIDATOR, ValidatingTextField.NUMBER_CLEANER_2_DECIMALS, minValue, maxValue, step);
+	}
+
+	public JIncrementalNumberField(String text, int columns, Validator validator, Cleaner cleaner, double minValue, double maxValue, double step) {
+		super();
+		if (text == null) text = "";
+
+		this.minValue = minValue;
+		this.maxValue = maxValue;
+		this.step = step;
+		acceptsDoubles = validator.getClass().equals(ValidatingTextField.DOUBLE_VALIDATOR.getClass());
+
+		JPanel lateralButtons = new JPanel();
+		Icon upIcon = new Icon() {
+
+			public int getIconHeight() {
+				return 5;
+			}
+
+			public int getIconWidth() {
+				return 9;
+			}
+
+			public void paintIcon(Component c, Graphics g, int x, int y) {
+				g.setColor( isEnabled() ? Color.DARK_GRAY : Color.RED);
+				((Graphics2D) g).setStroke(new BasicStroke(2));
+				g.drawLine(isEnabled() ? 3 : 1,
+						   isEnabled() ? 6 : 4,
+						   isEnabled() ? 5 : 3,
+						   isEnabled() ? 3 : 1);
+
+				g.drawLine(isEnabled() ? 5 : 3,
+						   isEnabled() ? 3 : 1,
+						   isEnabled() ? 8 : 6,
+						   isEnabled() ? 6 : 4);
+
+			}
+		};
+		Icon downIcon = new Icon() {
+			public int getIconHeight() {
+				return 5;
+			}
+
+			public int getIconWidth() {
+				return 9;
+			}
+
+			public void paintIcon(Component c, Graphics g, int x, int y) {
+				g.setColor(isEnabled() ? Color.DARK_GRAY : Color.RED);
+				((Graphics2D) g).setStroke(new BasicStroke(2));
+
+
+				g.drawLine(isEnabled() ? 3 : 1,
+						   isEnabled() ? 3 : 1,
+						   isEnabled() ? 5 : 3,
+						   isEnabled() ? 6 : 4);
+
+				g.drawLine(isEnabled() ? 5 : 3,
+						   isEnabled() ? 6 : 4,
+						   isEnabled() ? 8 : 6,
+						   isEnabled() ? 3 : 1);
+
+			}
+		};
+		up = new JButton(upIcon);
+		up.setActionCommand("UP");
+		up.addActionListener(accum);
+		up.addMouseListener(new ButtonMouseListener());
+		up.setBounds(0, 0, 11, 11);
+		up.setFocusable(false);
+
+		down = new JButton(downIcon);
+		down.setActionCommand("DOWN");
+		down.addActionListener(accum);
+		down.addMouseListener(new ButtonMouseListener());
+		down.setBounds(0, 11, 11, 11);
+		down.setFocusable(false);
+
+
+
+		lateralButtons.setLayout(null);
+		lateralButtons.setSize(13, 20);
+		lateralButtons.add(up);
+		lateralButtons.add(down);
+		lateralButtons.setSize(new Dimension(11, 22));
+		lateralButtons.setPreferredSize(new Dimension(11, 22));
+		lateralButtons.setBorder(BorderFactory.createLineBorder(Color.GREEN));
+		vtf = new ValidatingTextField(
+				text,
+				columns,
+				SwingConstants.RIGHT,
+				validator,
+				cleaner) ;
+		setLayout(new BorderLayout(0, 0));
+		vtf.addActionListener(propage);
+		vtf.addFocusListener(propageFocus);
+		add(vtf, BorderLayout.CENTER);
+		add(lateralButtons, BorderLayout.EAST);
+	}
+
+	public int getInteger() {
+		return vtf.getInteger();
+	}
+
+	public double getDouble() {
+		if (!acceptsDoubles)
+			throw new Error(Messages.getText(
+					"cannot_get_double_value_from_an_integer_number_field_use_getInteger()_instead"));
+		return vtf.getDouble();
+	}
+
+	public void setDouble(double v) {
+		if (!acceptsDoubles)
+			throw new Error(Messages.getText(
+					"cannot_set_a_double_value_from_an_integer_number_field_use_setInteger(int)_instead"));
+		vtf.setText(String.valueOf(v));
+	}
+
+	public void setInteger(int v) {
+		vtf.setText(String.valueOf(v));
+	}
+
+	public void addActionListener(ActionListener l) {
+//		vtf.addActionListener(l);
+		listeners.add(l);
+	}
+
+	public void removeActionListener(ActionListener l) {
+//		vtf.removeActionListener(l);
+		listeners.remove(l);
+	}
+
+	private void fireActionPerformed() {
+		ActionEvent evt = new ActionEvent(this, 0, null);
+		for (int i = 0; i < listeners.size(); i++) {
+			((ActionListener) listeners.get(i)).actionPerformed(evt);
+		}
+	}
+
+	private void fireActionPerformed(ActionEvent e) {
+		e.setSource(this);
+		for (int i = 0; i < listeners.size(); i++) {
+			((ActionListener) listeners.get(i)).actionPerformed(e);
+		}
+	}
+
+	public double getMaxValue() {
+		return maxValue;
+	}
+
+	public void setMaxValue(double maxValue) {
+		this.maxValue = maxValue;
+	}
+
+	public double getMinValue() {
+		return minValue;
+	}
+
+	public void setMinValue(double minValue) {
+		this.minValue = minValue;
+	}
+
+	public double getStep() {
+		return step;
+	}
+
+	public void setStep(double step) {
+		this.step = step;
+	}
+
+	public void setEnabled(boolean enabled) {
+		super.setEnabled(enabled);
+		up.setEnabled(enabled);
+		down.setEnabled(enabled);
+		vtf.setEnabled(enabled);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JIncrementalNumberField.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/celleditors/IntegerTableCellEditor.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/celleditors/IntegerTableCellEditor.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/celleditors/IntegerTableCellEditor.java	(revision 38348)
@@ -0,0 +1,106 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.swing.celleditors;
+
+import java.awt.Component;
+import java.util.ArrayList;
+import java.util.EventObject;
+
+import javax.swing.JTable;
+import javax.swing.event.CellEditorListener;
+import javax.swing.event.ChangeEvent;
+import javax.swing.table.TableCellEditor;
+
+import org.gvsig.gui.beans.swing.cellrenderers.NumberTableCellRenderer;
+
+/**
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ */
+public class IntegerTableCellEditor implements TableCellEditor {
+	private static NumberTableCellRenderer renderer = new NumberTableCellRenderer(true, false);
+	private ArrayList listeners = new ArrayList();
+
+	public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
+		if (value == null) return null;
+		return renderer.getTableCellRendererComponent(table, value, isSelected, false, row, column);
+	}
+
+
+	public void cancelCellEditing() {
+		for (int i = 0; i < listeners.size(); i++) {
+	        CellEditorListener l = (CellEditorListener) listeners.get(i);
+	        ChangeEvent evt = new ChangeEvent(this);
+	        l.editingCanceled(evt);
+	    }
+	}
+
+	public boolean stopCellEditing() {
+		for (int i = 0; i < listeners.size(); i++) {
+            CellEditorListener l = (CellEditorListener) listeners.get(i);
+            ChangeEvent evt = new ChangeEvent(this);
+            l.editingStopped(evt);
+        }
+        return true;
+	}
+
+
+	public Object getCellEditorValue() {
+		if (renderer!=null && renderer.getIncrementalNumberField()!=null)
+			return new Integer(renderer.getIncrementalNumberField().getInteger());
+		return null;
+	}
+
+	public boolean isCellEditable(EventObject anEvent) {
+		return true;
+	}
+
+	public boolean shouldSelectCell(EventObject anEvent) {
+		return false;
+	}
+
+	public void addCellEditorListener(CellEditorListener l) {
+		listeners.add(l);
+	}
+
+	public void removeCellEditorListener(CellEditorListener l) {
+		listeners.remove(l);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/celleditors/IntegerTableCellEditor.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/celleditors/BooleanTableCellEditor.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/celleditors/BooleanTableCellEditor.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/celleditors/BooleanTableCellEditor.java	(revision 38348)
@@ -0,0 +1,124 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.swing.celleditors;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.EventObject;
+
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.JTable;
+import javax.swing.event.CellEditorListener;
+import javax.swing.event.ChangeEvent;
+import javax.swing.table.TableCellEditor;
+
+import org.gvsig.gui.beans.swing.cellrenderers.BooleanTableCellRenderer;
+
+/**
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ */
+public class BooleanTableCellEditor implements TableCellEditor {
+	private BooleanTableCellRenderer renderer;
+	private ArrayList listeners = new ArrayList();
+
+
+	public BooleanTableCellEditor(final JTable ownerTable) {
+		renderer = new BooleanTableCellRenderer(true);
+	}
+
+	public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, int row, int column) {
+		if (value == null) return null;
+		JComponent aux = (JComponent) renderer.getTableCellRendererComponent(table, value, isSelected, false, row, column);
+		((JCheckBox) aux.getComponent(0)).addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				// Store the value to avoid the need of pressing ENTER
+				// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4139078
+				table.editingStopped(new ChangeEvent(table));
+			}
+		});
+		return aux;
+	}
+
+
+	public void cancelCellEditing() {
+		for (int i = 0; i < listeners.size(); i++) {
+	        CellEditorListener l = (CellEditorListener) listeners.get(i);
+	        ChangeEvent evt = new ChangeEvent(this);
+	        l.editingCanceled(evt);
+	    }
+	}
+
+	public boolean stopCellEditing() {
+		for (int i = 0; i < listeners.size(); i++) {
+            CellEditorListener l = (CellEditorListener) listeners.get(i);
+            ChangeEvent evt = new ChangeEvent(this);
+            l.editingStopped(evt);
+        }
+        return true;
+	}
+
+
+	public Object getCellEditorValue() {
+		if (renderer!=null && renderer.getCheck()!=null)
+			return new Boolean(renderer.getCheck().isSelected());
+		return null;
+	}
+
+	public boolean isCellEditable(EventObject anEvent) {
+		return true;
+	}
+
+	public boolean shouldSelectCell(EventObject anEvent) {
+		return true;
+	}
+
+	public void addCellEditorListener(CellEditorListener l) {
+		listeners.add(l);
+	}
+
+	public void removeCellEditorListener(CellEditorListener l) {
+		listeners.remove(l);
+	}
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/celleditors/BooleanTableCellEditor.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/celleditors/StringTableCellEditor.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/celleditors/StringTableCellEditor.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/celleditors/StringTableCellEditor.java	(revision 38348)
@@ -0,0 +1,121 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.swing.celleditors;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.EventObject;
+
+import javax.swing.JComponent;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.event.CellEditorListener;
+import javax.swing.event.ChangeEvent;
+import javax.swing.table.TableCellEditor;
+
+import org.gvsig.gui.beans.swing.cellrenderers.StringTableCellRenderer;
+
+public class StringTableCellEditor implements TableCellEditor {
+	private StringTableCellRenderer renderer;
+	private ArrayList listeners = new ArrayList();
+
+
+	public StringTableCellEditor(final JTable ownerTable) {
+		renderer = new StringTableCellRenderer();
+	}
+
+	public Component getTableCellEditorComponent(final JTable table, Object value, boolean isSelected, int row, int column) {
+		if (value == null) return null;
+		JComponent aux = (JComponent) renderer.getTableCellRendererComponent(table, value, isSelected, false, row, column);
+		((JTextField) aux).addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				// Store the value to avoid the need of pressing ENTER
+				// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4139078
+				table.editingStopped(new ChangeEvent(table));
+			}
+		});
+		return aux;
+	}
+
+
+	public void cancelCellEditing() {
+		for (int i = 0; i < listeners.size(); i++) {
+	        CellEditorListener l = (CellEditorListener) listeners.get(i);
+	        ChangeEvent evt = new ChangeEvent(this);
+	        l.editingCanceled(evt);
+	    }
+	}
+
+	public boolean stopCellEditing() {
+		for (int i = 0; i < listeners.size(); i++) {
+            CellEditorListener l = (CellEditorListener) listeners.get(i);
+            ChangeEvent evt = new ChangeEvent(this);
+            l.editingStopped(evt);
+        }
+        return true;
+	}
+
+
+	public Object getCellEditorValue() {
+		if (renderer!=null && renderer.getText()!=null)
+			return new Boolean(renderer.getText());
+		return null;
+	}
+
+	public boolean isCellEditable(EventObject anEvent) {
+		return true;
+	}
+
+	public boolean shouldSelectCell(EventObject anEvent) {
+		return true;
+	}
+
+	public void addCellEditorListener(CellEditorListener l) {
+		listeners.add(l);
+	}
+
+	public void removeCellEditorListener(CellEditorListener l) {
+		listeners.remove(l);
+	}
+
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/cellrenderers/BooleanTableCellRenderer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/cellrenderers/BooleanTableCellRenderer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/cellrenderers/BooleanTableCellRenderer.java	(revision 38348)
@@ -0,0 +1,115 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.swing.cellrenderers;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.LayoutManager;
+
+import javax.swing.BorderFactory;
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.JTable;
+import javax.swing.border.MatteBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+
+import org.jfree.layout.CenterLayout;
+
+/**
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ */
+public class BooleanTableCellRenderer extends DefaultTableCellRenderer {
+  private static final long serialVersionUID = 2121615214282741840L;
+
+	private JCheckBox chk;
+
+	private boolean isBordered;
+	private MatteBorder selectedBorder;
+	private MatteBorder unselectedBorder;
+
+
+	public BooleanTableCellRenderer(boolean bordered) {
+		this.isBordered = bordered;
+		setOpaque(true);
+	}
+
+	public JCheckBox getCheck() {
+		return chk;
+	}
+
+	public Component getTableCellRendererComponent(JTable table, Object value,
+			boolean isSelected, boolean hasFocus, int row, int column) {
+		if (value == null)
+			return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+
+		if (isBordered) {
+			if (isSelected) {
+				if (selectedBorder == null) {
+					selectedBorder = BorderFactory.createMatteBorder(2, 5, 2,
+							5, table.getSelectionBackground());
+				}
+
+				setBorder(selectedBorder);
+			} else {
+				if (unselectedBorder == null) {
+					unselectedBorder = BorderFactory.createMatteBorder(2, 5, 2,
+							5, table.getBackground());
+				}
+
+				setBorder(unselectedBorder);
+			}
+		}
+		try {
+			Boolean v = (Boolean) value;
+			JPanel content = new JPanel(new CenterLayout());
+			content.setBackground(table.getBackground());
+			chk = new JCheckBox("", v.booleanValue());
+			chk.setBackground(table.getBackground());
+			content.add(chk, BorderLayout.CENTER);
+			return content;
+		} catch (ClassCastException ccEx) {
+			throw new RuntimeException("Trying to use a Boolean cell renderer with a non-Boolean datatype");
+		}
+
+	}
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/cellrenderers/BooleanTableCellRenderer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/cellrenderers/StringTableCellRenderer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/cellrenderers/StringTableCellRenderer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/cellrenderers/StringTableCellRenderer.java	(revision 38348)
@@ -0,0 +1,102 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.swing.cellrenderers;
+
+import java.awt.Component;
+import java.awt.FlowLayout;
+
+import javax.swing.BorderFactory;
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.border.MatteBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+
+public class StringTableCellRenderer extends DefaultTableCellRenderer {
+	  private static final long serialVersionUID = 2121615214282741840L;
+
+		private JTextField txt;
+
+		private boolean isBordered;
+		private MatteBorder selectedBorder;
+		private MatteBorder unselectedBorder;
+
+
+
+		public JTextField getTextField() {
+			return txt;
+		}
+
+		public Component getTableCellRendererComponent(JTable table, Object value,
+				boolean isSelected, boolean hasFocus, int row, int column) {
+			if (value == null)
+				return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+
+			if (isBordered) {
+				if (isSelected) {
+					if (selectedBorder == null) {
+						selectedBorder = BorderFactory.createMatteBorder(2, 5, 2,
+								5, table.getSelectionBackground());
+					}
+
+					setBorder(selectedBorder);
+				} else {
+					if (unselectedBorder == null) {
+						unselectedBorder = BorderFactory.createMatteBorder(2, 5, 2,
+								5, table.getBackground());
+					}
+
+					setBorder(unselectedBorder);
+				}
+			}
+			try {
+				String v = (String) value;
+				txt = new JTextField(v);
+				txt.setBackground(table.getBackground());
+				return txt;
+			} catch (ClassCastException ccEx) {
+				throw new RuntimeException("Trying to use a Boolean cell renderer with a non-Boolean datatype");
+			}
+
+		}
+
+	}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/cellrenderers/NumberTableCellRenderer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/cellrenderers/NumberTableCellRenderer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/cellrenderers/NumberTableCellRenderer.java	(revision 38348)
@@ -0,0 +1,127 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.swing.cellrenderers;
+
+import java.awt.Component;
+import java.awt.FlowLayout;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+import javax.swing.JTable;
+import javax.swing.border.MatteBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+
+import org.gvsig.gui.beans.swing.JIncrementalNumberField;
+import org.gvsig.gui.beans.swing.ValidatingTextField;
+import org.gvsig.gui.beans.swing.ValidatingTextField.Validator;
+
+/**
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ */
+public class NumberTableCellRenderer extends DefaultTableCellRenderer {
+  private static final long serialVersionUID = -4551232953341602636L;
+
+	private JIncrementalNumberField txt;
+
+	private boolean isBordered;
+	private MatteBorder selectedBorder;
+	private MatteBorder unselectedBorder;
+
+	private boolean acceptsDoubles;
+
+
+
+	public NumberTableCellRenderer(boolean bordered, boolean acceptsDoubles) {
+		this.isBordered = bordered;
+		this.acceptsDoubles = acceptsDoubles;
+		setOpaque(true);
+	}
+
+	public JIncrementalNumberField getIncrementalNumberField() {
+		return txt;
+	}
+
+	public Component getTableCellRendererComponent(JTable table, Object value,
+			boolean isSelected, boolean hasFocus, int row, int column) {
+		if (value == null)
+			return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+
+		if (isBordered) {
+			if (isSelected) {
+				if (selectedBorder == null) {
+					selectedBorder = BorderFactory.createMatteBorder(2, 5, 2,
+							5, table.getSelectionBackground());
+				}
+
+				setBorder(selectedBorder);
+			} else {
+				if (unselectedBorder == null) {
+					unselectedBorder = BorderFactory.createMatteBorder(2, 5, 2,
+							5, table.getBackground());
+				}
+				setBorder(unselectedBorder);
+			}
+		}
+		try {
+
+			JPanel content = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
+			content.setBackground(table.getBackground());
+			Validator valid = acceptsDoubles ? ValidatingTextField.DOUBLE_VALIDATOR : ValidatingTextField.INTEGER_VALIDATOR;
+			txt = new JIncrementalNumberField("", 6,valid, ValidatingTextField.NUMBER_CLEANER, 0, 80, 1);
+			if (acceptsDoubles) {
+				txt.setDouble(((Double) value).doubleValue());
+			} else {
+				txt.setInteger(((Integer) value).intValue());
+			}
+
+			txt.setBackground(table.getBackground());
+			// TODO figure out a way to know the cell's width to fit in the editor
+//			txt.setPreferredSize(new Dimension(
+//					table.getColumnModel().getColumn(column).getPreferredWidth(),
+//					table.getRowHeight()));
+			content.add(txt);
+			return content;
+		} catch (ClassCastException ccEx) {
+			throw new RuntimeException("Trying to use a numeric cell renderer with a non-numeric datatype");
+		}
+
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/cellrenderers/NumberTableCellRenderer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JComboBoxFonts.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JComboBoxFonts.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JComboBoxFonts.java	(revision 38348)
@@ -0,0 +1,69 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.swing;
+
+import java.awt.GraphicsEnvironment;
+
+import javax.swing.JComboBox;
+
+/**
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ */
+public class JComboBoxFonts extends JComboBox{
+  private static final long serialVersionUID = -1096327332248927959L;
+
+	public JComboBoxFonts() {
+		super();
+		initialize();
+	}
+
+	private void initialize() {
+		//	Font info is obtained from the current graphics environment.
+		GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
+
+		// --- Get an array of font names (smaller than the number of fonts)
+		String[] fontNames = ge.getAvailableFontFamilyNames();
+		for (int i = 0; i < fontNames.length; i++) {
+			addItem(fontNames[i]);
+		};
+	}
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JComboBoxFonts.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JFileChooser.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JFileChooser.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JFileChooser.java	(revision 38348)
@@ -0,0 +1,224 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.swing;
+
+import java.awt.Component;
+import java.awt.HeadlessException;
+import java.io.File;
+import java.util.Hashtable;
+
+import javax.swing.filechooser.FileSystemView;
+
+/**
+ * 
+ * JFileChooser.java
+ * <p>JFileChooser that tracks the last visited directory for a given ID. It allows you to
+ * open the JFileChooser in the same directory where you were the last time you open a file
+ * in the file system.<br>
+ * </p>
+ * <p>
+ * It needs to specify a string defining the JFileChooser ID in order to know what kind of 
+ * files you are going to open. For example after creating a JFileChooser by doing this:<br>
+ * <b><code>new JFileChooser("TEMPLATES_FILECHOOSER", defaultDirectory);</code></b><br> each time
+ * you create another JFileChooser anywhere giving the same ID, it will point directly to
+ * the last directory where you opened a file using this JFileChooser with an equal ID.
+ * </p>
+ * 
+ * 
+ * @author jaume dominguez faus - jaume.dominguez@iver.es Dec 5, 2007
+ *
+ */
+public class JFileChooser extends javax.swing.JFileChooser {
+	private static final long serialVersionUID = -2419775752576400974L;
+	private static Hashtable<String, File> jfcLastPaths = new Hashtable<String, File>();
+	private String fileChooserID;
+	
+	/**
+	 * Creates a new JFileChooser with the remind last path feature. 
+	 * @param fileChooserID, the id that distinguishes the wanted files (i.e. "TEMPLATES_FILECHOOSER")
+	 * @param defaultDirectory, the default directory to go for the first time. It allows null, which
+	 *        means the user's home directory. 
+	 */
+	public JFileChooser(String fileChooserID, File defaultDirectory) {
+		super();
+		setDragEnabled(true);
+		if (fileChooserID == null) 
+			throw new IllegalArgumentException("JFileChooser's ID cannot be null");
+		
+		this.fileChooserID = fileChooserID;
+
+		setCurrentDirectory(getLastPath(fileChooserID, defaultDirectory));
+
+//		if (defaultDirectory == null)
+//			defaultDirectory = new File(System.getProperty("user.home"));
+//		File currentDirectory;
+//		if (jfcLastPaths.get(fileChooserID) != null)
+//			currentDirectory = new File(jfcLastPaths.get(fileChooserID));
+//		else
+//			currentDirectory = defaultDirectory;
+//		setCurrentDirectory(currentDirectory);
+//		if (defaultDirectory != null)
+//			jfcLastPaths.put(fileChooserID, currentDirectory.getAbsolutePath());
+	}
+
+	/**
+	 * Returns the Last Path for this fileChooserID
+	 * @param fileChooserID, the id that distinguishes the wanted files (i.e. "TEMPLATES_FILECHOOSER")
+	 * @param defaultDirectory, the default directory to go for the first time. It allows null, which
+	 *        means the user's home directory.
+	 * @return
+	 */
+	static public File getLastPath(String fileChooserID, File defaultDirectory) {
+		File path = jfcLastPaths.get(fileChooserID);
+
+		if (path != null)
+			return path;
+
+		if (defaultDirectory != null)
+			return defaultDirectory;
+
+		return FileSystemView.getFileSystemView().getHomeDirectory();
+	}
+
+	/**
+	 * Returns the Last Path for this JFileChooser
+	 * @param defaultDirectory, the default directory to go for the first time. It allows null, which
+	 *        means the user's home directory.
+	 * @return
+	 */
+	public File getLastPath(File defaultDirectory) {
+		return getLastPath(fileChooserID, defaultDirectory);
+	}
+
+	/**
+	 * Returns the Last Path for this JFileChooser
+	 * @return
+	 */
+	public File getLastPath() {
+		return getLastPath(fileChooserID, getCurrentDirectory());
+	}
+
+	/**
+	 * Save the Last Path for this fileChooserID
+	 * @param fileChooserID
+	 * @param path
+	 */
+	static public void setLastPath(String fileChooserID, File path) {
+		jfcLastPaths.put(fileChooserID, path);
+	}
+
+	/**
+	 * Save the Last Path for this JFileChooser
+	 * @param path
+	 */
+	public void setLastPath(File path) {
+		setLastPath(fileChooserID, path);
+	}
+
+	/**
+	 * Creates a new JFileChooser with the remind last path feature. 
+	 * @param fileChooserID, the id that distinguishes the wanted files (i.e. "TEMPLATES_FILECHOOSER")
+	 * @param defaultDirectory, the default directory to go for the first time. It allows null, which
+	 *        means the user's home directory. 
+	 */
+	public JFileChooser(String fileChooserID, String defaultDirectory) {
+		this(fileChooserID, defaultDirectory!=null ? new File(defaultDirectory) : null);
+	}
+
+    /**
+     * Constructs a <code>JFileChooser</code> using the given
+     * <code>FileSystemView</code>.
+     */
+    public JFileChooser(String fileChooserID, FileSystemView fsv) {
+	this(fileChooserID, (File) null, fsv);
+    }
+
+
+    /**
+     * Constructs a <code>JFileChooser</code> using the given current directory
+     * and <code>FileSystemView</code>.
+     */
+    public JFileChooser(String fileChooserID, File defaultDirectory, FileSystemView fsv) {
+    	this(fileChooserID, defaultDirectory);
+		setup(fsv);
+    }
+
+    /**
+     * Constructs a <code>JFileChooser</code> using the given current directory
+     * path and <code>FileSystemView</code>.
+     */
+    public JFileChooser(String fileChooserID, String defaultDirectoryPath, FileSystemView fsv) {
+	this(fileChooserID, new File(defaultDirectoryPath), fsv);
+		}
+
+	@Override
+	public int showDialog(Component parent, String approveButtonText) throws HeadlessException {       
+	    super.setCurrentDirectory(getLastPath());
+		int response = super.showDialog(parent, approveButtonText);
+		if ((getSelectedFile() != null) && (getSelectedFile().isDirectory()))
+			setLastPath(fileChooserID, getSelectedFile());
+		else
+			setLastPath(fileChooserID, getCurrentDirectory());
+
+			return response;
+		}
+
+/* with this version it only reminds when a file was choosen and accepted (ok button clicked)
+     @Override
+    public int showDialog(Component parent, String approveButtonText)
+    		throws HeadlessException {
+    	int response = super.showDialog(parent, approveButtonText);
+    	if (response == javax.swing.JFileChooser.APPROVE_OPTION) {
+    		File[] ff = super.getSelectedFiles();
+    		if (ff.length>0) {
+    			String theFilePath = ff[0].getAbsolutePath().
+    				substring(0, ff[0].getAbsolutePath().lastIndexOf(File.pathSeparator));
+    			jfcLastPaths.put(fileChooserID, theFilePath);
+    		} else if (super.getSelectedFile() != null) {
+    			File f = super.getSelectedFile() ;
+    			String theFilePath = f.getAbsolutePath().
+						substring(0, f.getAbsolutePath().lastIndexOf(File.separator));
+    			jfcLastPaths.put(fileChooserID, theFilePath);
+
+    		}
+    	}
+*/
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ComboBoxImageIconModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ComboBoxImageIconModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ComboBoxImageIconModel.java	(revision 38348)
@@ -0,0 +1,110 @@
+package org.gvsig.gui.beans.swing.jComboBoxWithImageIconItems;
+
+import java.io.Serializable;
+import java.util.Vector;
+
+import javax.swing.DefaultComboBoxModel;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+
+/**
+ * Model for 'JPanelWithJComboBoxImageIconItems', stores the attribute 'showImageIconAndText'
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class ComboBoxImageIconModel extends DefaultComboBoxModel implements Serializable {
+	private static final long serialVersionUID = -775510419199115805L;
+
+	public static final boolean DEFAULT_SHOW_IMAGE_ICON_AND_TEXT_PROPERTY = false;
+	
+	private boolean showImageIconAndText;
+
+	/**
+	 * @see DefaultComboBoxModel#DefaultComboBoxModel()
+	 */
+	public ComboBoxImageIconModel() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * @see DefaultComboBoxModel#DefaultComboBoxModel(Object[])
+	 */
+	public ComboBoxImageIconModel(Object[] items) {
+		super(items);
+		initialize();
+	}
+
+	/**
+	 * @see DefaultComboBoxModel#DefaultComboBoxModel(Vector)
+	 */
+	public ComboBoxImageIconModel(Vector v) {
+		super(v);
+		initialize();
+	}
+
+	/**
+	 * Initializes the new attribute of this model
+	 */
+	private void initialize() {
+		showImageIconAndText = DEFAULT_SHOW_IMAGE_ICON_AND_TEXT_PROPERTY;
+	}
+
+	/**
+	 * Sets the value of the inner attribute 'imageIconAndText'
+	 * 
+	 * @param b A boolean value
+	 */
+	public void setShowImageIconAndTextProperty(boolean b) {
+		showImageIconAndText = b;
+	}
+
+	/**
+	 * Returns the value of the inner attribute 'imageIconAndText'
+	 * 
+	 * @return A boolean value
+	 */
+	public boolean getShowImageIconAndTextProperty() {
+		return showImageIconAndText;
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ComboBoxImageIconModel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ImageIconItemInfo.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ImageIconItemInfo.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ImageIconItemInfo.java	(revision 38348)
@@ -0,0 +1,162 @@
+package org.gvsig.gui.beans.swing.jComboBoxWithImageIconItems;
+
+import java.io.Serializable;
+
+import javax.swing.ImageIcon;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+
+
+/**
+ * This class represents the necessary information about each image icon item of 'JPanelWithJComboBoxImageIconItems'
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class ImageIconItemInfo implements Serializable {
+	private static final long serialVersionUID = -7087121873703006781L;
+
+	private ImageIcon imageIcon;
+	private String toolTipText;
+	private Object itemValue; // An object value of the item like a item value of a JComboBox
+	
+	/* This other attribute it's necessary because it's possible that the image icon couldn't be
+	     loaded and then in this case could be impossible to know the path after */
+	private String path;
+
+	/**
+	 * Default constructor without parameters
+	 */
+	public ImageIconItemInfo() {
+		path = null;
+		imageIcon = null;
+		toolTipText = null;
+		itemValue = null;
+	}
+	
+	/**
+	 * Default constructor with two parameters
+	 * 
+	 * @param path Path to the image icon
+	 * @param image_Icon The image icon
+	 * @param text The tool tip text
+	 * @param item_Value A value associated to this item
+	 */
+	public ImageIconItemInfo(String image_Icon_Path, ImageIcon image_Icon, String text, Object item_Value) {
+		path = image_Icon_Path;
+		imageIcon = image_Icon;
+		toolTipText = text;
+		itemValue = item_Value;
+	}
+
+	/**
+	 * Gets the image icon object reference
+	 * 
+	 * @return the imageIcon
+	 */
+	public ImageIcon getImageIcon() {
+		return imageIcon;
+	}
+
+	/**
+	 * Sets the image icon object reference
+	 * 
+	 * @param imageIcon the imageIcon to set
+	 */
+	public void setImageIcon(ImageIcon imageIcon) {
+		this.imageIcon = imageIcon;
+	}
+
+	/**
+	 * Gets the path
+	 * 
+	 * @return the path
+	 */
+	public String getPath() {
+		return path;
+	}
+
+	/**
+	 * Sets the path
+	 * 
+	 * @param path the path to set
+	 */
+	public void setPath(String path) {
+		this.path = path;
+	}
+	
+	/**
+	 * Gets the tool tip text
+	 * 
+	 * @return text the tool tip text to this icon image
+	 */
+	public String getToolTipText() {
+		return this.toolTipText;
+	}
+	
+	/**
+	 * Sets the tool tip text
+	 * 
+	 * @param text the tool tip text to this icon image
+	 */
+	public void setToolTipText(String text) {
+		this.toolTipText = text;
+	}
+	
+	/**
+	 * Gets the associated item value
+	 * 
+	 * @return a value associated to this item
+	 */
+	public Object getItemValue() {
+		return this.itemValue;
+	}
+	
+	/**
+	 * Sets the associated item value
+	 * 
+	 * @param item_Value a value associated to this item
+	 */
+	public void setItemValue(Object item_Value) {
+		this.itemValue = item_Value;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ImageIconItemInfo.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ImageIconItemInfoUtils.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ImageIconItemInfoUtils.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ImageIconItemInfoUtils.java	(revision 38348)
@@ -0,0 +1,76 @@
+package org.gvsig.gui.beans.swing.jComboBoxWithImageIconItems;
+
+import javax.swing.ImageIcon;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * This class has an static method that is an utility to load an image icon
+ *
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class ImageIconItemInfoUtils {
+	// TRACE - DEBUG
+	final static private Logger logger = LoggerFactory.getLogger(ImageIconItemInfoUtils.class);
+	// END TRACE - DEBUG
+
+    /**
+     * Returns an ImageIcon, or null if the path from class reference was invalid.
+     *
+     * @param class_Reference A reference to a class which path will be the base to find the resource of the 'path' param
+     * @param path Path to the image to load
+     * @return javax.swing.ImageIcon
+     */
+    public static ImageIcon createImageIcon(Class class_Reference, String path) {
+    	java.net.URL imgURL = class_Reference.getResource(path);
+        if (imgURL != null) {
+            return new ImageIcon(imgURL);
+        } else {
+        	logger.debug("Couldn't find file: " + path);
+            return null;
+        }
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/ImageIconItemInfoUtils.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/JComboBoxWithImageIconItems.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/JComboBoxWithImageIconItems.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/JComboBoxWithImageIconItems.java	(revision 38348)
@@ -0,0 +1,403 @@
+package org.gvsig.gui.beans.swing.jComboBoxWithImageIconItems;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.io.Serializable;
+import java.util.Vector;
+
+import javax.swing.ImageIcon;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.ListCellRenderer;
+
+import org.gvsig.gui.beans.Messages;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * A JComboBox which items are ImageIcons.<br>
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class JComboBoxWithImageIconItems extends JComboBox implements Serializable {
+	private static final long serialVersionUID = -429261182461238958L;
+
+	public static final int DEFAULT_ROW_COUNT = 3;
+
+	private JComboBoxWithImageIconItems referenceToThisJComboBoxWithImageIconItems;
+
+    /**
+     * Default constructor
+     */
+    public JComboBoxWithImageIconItems() {
+    	super();
+    	initialize();
+    }
+
+    /**
+     * Default constructor with a 'ComboBoxImageIconModel' as parameter
+     * 
+     * @param aModel org.gvsig.gui.beans.swing.jComboBoxWithImageIconItems.JComboBoxWithImageIconItems.ComboBoxImageIconModel
+     */
+    public JComboBoxWithImageIconItems(ComboBoxImageIconModel aModel) {
+    	super();
+    	initialize();
+    }
+
+    /**
+     * Default constructor with an array of 'ImageIconItemInfo' as parameters
+     * 
+     * @param items Each item must be an 'ImageIconItemInfo' object
+     */
+    public JComboBoxWithImageIconItems(Object[] items) {
+    	super();
+    	initialize();
+    }
+
+    /**
+     * Default constructor with a Vector of 'ImageIconItemInfo' as parameter
+     * 
+     * @param items Each item must be an 'ImageIconItemInfo' object
+     */
+    public JComboBoxWithImageIconItems(Vector items) {
+    	super();
+    	initialize();
+    }
+
+    /**
+     * Initialize this component
+     */
+    private void initialize() {
+    	this.referenceToThisJComboBoxWithImageIconItems = this;
+    	this.setModel(new ComboBoxImageIconModel());
+		this.setRenderer(new ComboBoxImageIconRenderer());
+		this.setMaximumRowCount(DEFAULT_ROW_COUNT);
+    }
+
+    /**
+     * Adds an image icon URL path, image icon loaded (or null if not), tool tip text (tool tip text could be "") and if it's neccessary (it's optional)
+     *   another associated value to this item (if there is no associated value, the 'item_Value' param should be null) 
+     * 
+     * @param imageIconPath A path
+     * @param imageIcon An image icon loaded or null if haven't been loaded
+     * @param imageIconToolTipText Text
+     * @param item_Value Another extra value associated to the item added (null if no extra value)
+     */
+    public void addImageIconItem(String imageIconPath, ImageIcon imageIcon, String imageIconToolTipText, Object item_Value) {
+    	// Load the image and stor it into the model of the JComboBox
+    	this.addItem(new ImageIconItemInfo(imageIconPath, imageIcon, imageIconToolTipText, item_Value));
+    }
+    
+    /**
+     * Adds an image icon URL path, image icon loaded (or null if not), and tool tip text (tool tip text could be "")
+     * 
+     * @param imageIconItem Information for load an image icon and set its tool tip text
+     */
+    public void addImageIconItem(ImageIconItemInfo imageIconItem) {
+    	// Load the image and stor it into the model of the JComboBox
+    	this.addItem(imageIconItem);
+    }
+    
+    /**
+     * Adds an image icon URL path, tool tip text (tool tip text could be "") and the item value
+     * If no item matches, does nothing
+     * (The image icon parameter is ignored)
+     * 
+     * @param imageIconPath A path
+     * @param imageIconToolTipText Text
+     * @param item_Value An extra value
+     */
+    public void removeImageIconItem(String imageIconPath, String imageIconToolTipText, String item_Value) {
+    	int i = 0;
+    	ImageIconItemInfo iiii1;
+
+    	while (i < this.getItemCount()) {
+    		iiii1 = (ImageIconItemInfo)this.getItemAt(i);
+    		if ((iiii1.getPath().compareTo(imageIconPath) == 0) &&
+    				(iiii1.getToolTipText().compareTo(imageIconToolTipText) == 0) && 
+    				(((iiii1.getItemValue() == null) && (item_Value == null)) || (iiii1.getItemValue().equals(item_Value)))) {
+    			this.removeItemAt(i);
+    			return; // Only remove the first match
+    		}
+    		else {
+    			i ++;
+    		}
+    	}
+    }
+
+    /**
+     * Removes an image icon URL path, tool tip text (tool tip text could be "") and the item value
+     * If no item matches, does nothing
+     * (The image icon parameter is ignored)
+     * 
+     * @param imageIconPath Information for remove the item
+     */
+    public void removeImageIconItem(ImageIconItemInfo imageIconItem) {
+    	int i = 0;
+    	ImageIconItemInfo iiii1;
+    	
+    	while (i < this.getItemCount()) {
+    		iiii1 = (ImageIconItemInfo)this.getItemAt(i);
+    		if ((iiii1.getPath().compareTo(imageIconItem.getPath()) == 0) &&
+    				(iiii1.getToolTipText().compareTo(imageIconItem.getToolTipText()) == 0) && 
+    				(((iiii1.getItemValue() == null) && (imageIconItem.getItemValue() == null)) || (iiii1.getItemValue().equals(imageIconItem.getItemValue())))) {
+    			this.removeItemAt(i);
+    			return; // Only remove the first match
+    		}
+    		else {
+    			i ++;
+    		}
+    	}
+    }
+
+    /**
+     * Removes all image icons
+     */
+    public void removeAllImageIconItems() {
+    	this.removeAllItems();
+    }
+
+    /**
+     * Sets some image icons that their information to load is stored in an array of ImageIconItemInfo
+     * 
+     * @param imagePaths An array of ImageIconItemInfo with the URL path, image icon loaded (or null if not), and tool tip text to each image
+     */
+    public void addImageIconItems(ImageIconItemInfo[] imageIconItems) {    	
+    	// Load the images and store them into the model of the JComboBox
+    	for (int i = 0; i < imageIconItems.length; i++) {
+    		this.addItem(imageIconItems[i]);
+    	}
+    }
+
+    /**
+     * Sets some image icons that their information to load is stored in a Vector of ImageIconItemInfo
+     * 
+     * @param imagePaths A Vector of ImageIconItemInfo with the URL path, image icon loaded (or null if not), and tool tip text to each image
+     */    
+    public void addImageIconItems(Vector imageIconItems) {
+    	// Load the images and store them into the model of the JComboBox
+    	for (int i = 0; i < imageIconItems.size(); i++) {
+    		this.addItem(imageIconItems.get(i));
+    	}
+    }
+
+    /**
+     * Removes some image icons that their path, tool tip text and item value are stored in an array
+     * If no item matches, does nothing
+     * (The image icon parameter is ignored)
+     * 
+     * @param imageIconPaths An array with the ImageIconItemInfo
+     */
+    public void removeImageIconItems(ImageIconItemInfo[] imageIconItems) {
+       	int i, j;
+       	ImageIconItemInfo iiii1, iiii2;
+
+       	// For each item to remove
+       	for (i = 0; i < imageIconItems.length; i++) {
+       		j = 0;
+       		iiii1 = (ImageIconItemInfo)imageIconItems[i];
+       		// Finds first item that it's patch matches and removes it
+	    	while (j < this.getItemCount()) {
+	    		iiii2 = (ImageIconItemInfo)this.getItemAt(j);
+	    		if ((iiii1.getPath().compareTo(iiii2.getPath()) == 0) &&
+	    				(iiii1.getToolTipText().compareTo(iiii2.getToolTipText()) == 0) && 
+	    				(((iiii1.getItemValue() == null) && (iiii2.getItemValue() == null)) || (iiii1.getItemValue().equals(iiii2.getItemValue())))) {
+	    			this.removeItemAt(j);
+	    			break; // Only remove the first match
+	    		}
+	    		else {
+	    			j ++;
+	    		}
+	    	}
+       	}
+    }
+
+    /**
+     * Removes some image icons that their paths, tool tip text and item value are stored in a Vector
+     * (The image icon parameter is ignored)
+     * 
+     * @param imageIconPaths A Vector with the ImageIconItemInfo
+     */
+    public void removeImageIconItems(Vector imageIconItems) {
+       	int i, j;
+       	ImageIconItemInfo iiii1, iiii2;
+
+       	// For each item to remove
+       	for (i = 0; i < imageIconItems.size(); i++) {
+       		j = 0;
+       		iiii1 = (ImageIconItemInfo)imageIconItems.get(i);
+       		// Finds first item that it's patch matches and removes it
+	    	while (j < this.getItemCount()) {
+	    		iiii2 = (ImageIconItemInfo)this.getItemAt(j);
+	    		if ((iiii1.getPath().compareTo(iiii2.getPath()) == 0) &&
+	    				(iiii1.getToolTipText().compareTo(iiii2.getToolTipText()) == 0) && 
+	    				(((iiii1.getItemValue() == null) && (iiii2.getItemValue() == null)) || (iiii1.getItemValue().equals(iiii2.getItemValue())))) {
+	    			this.removeItemAt(j);
+	    			break; // Only remove the first match
+	    		}
+	    		else {
+	    			j ++;
+	    		}
+	    	}
+       	}    	
+    }
+    
+	/**
+	 * @see ComboBoxImageIconModel#setShowImageIconAndTextProperty(boolean)
+	 */
+	public void setShowImageIconAndTextProperty(boolean b) {
+		((ComboBoxImageIconModel)this.getModel()).setShowImageIconAndTextProperty(b);
+	}
+	
+	/**
+	 * @see ComboBoxImageIconModel#getShowImageIconAndTextProperty()
+	 */
+	public boolean getShowImageIconAndTextProperty() {
+		return ((ComboBoxImageIconModel)this.getModel()).getShowImageIconAndTextProperty();
+	}
+    
+	/**
+	 * @see ComboBoxRenderer#setPreferredSize(Dimension)
+	 */
+	public void setJComboBoxRendererPreferredSize (Dimension d) {
+		((ComboBoxImageIconRenderer)this.getRenderer()).setPreferredSize(d);
+	}
+	
+	/**
+	 * @see ComboBoxRenderer#getPreferredSize()
+	 */
+	public Dimension getJComboBoxRendererPreferredSize () {
+		return ((ComboBoxImageIconRenderer)this.getRenderer()).getPreferredSize();
+	}
+
+    /**
+     * This code has been extracted and modified from the Java Sun Microsystems's example: 'CustomComboBoxDemo.java'
+     *   in http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html
+     * 
+     * @author Sun Microsystems
+     * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+     */
+    private class ComboBoxImageIconRenderer extends JLabel implements ListCellRenderer, Serializable {
+		private static final long serialVersionUID = -7247546606502171953L;
+
+		private Font uhOhFont;
+
+    	/**
+    	 * Default constructor
+    	 */
+    	public ComboBoxImageIconRenderer() {
+    		setOpaque(true);
+    		setHorizontalAlignment(CENTER);
+    		setVerticalAlignment(CENTER);
+    	}
+
+    	/**
+    	 * This method finds the image and text corresponding
+    	 * to the selected value and returns the label, set up
+    	 * to display the text and image.
+    	 * 
+    	 * @see ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
+    	 */
+    	public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+    		if (value != null) {
+	    		if (isSelected) {
+	    			setBackground(list.getSelectionBackground());
+	    			setForeground(list.getSelectionForeground());
+	    		} else {
+	    			setBackground(list.getBackground());
+	    			setForeground(list.getForeground());
+	    		}
+	    		
+	    		ImageIcon icon = ((ImageIconItemInfo)value).getImageIcon();
+	    		String item = ((ImageIconItemInfo)value).getPath();
+	    		String toolTipText = ((ImageIconItemInfo)value).getToolTipText();
+	    		
+	    		setIcon(icon);
+	    		
+	    		if (toolTipText != null) {
+	    			setToolTipText(toolTipText);
+	    			referenceToThisJComboBoxWithImageIconItems.setToolTipText(toolTipText);
+	    		}
+	
+	    		if (getShowImageIconAndTextProperty()) {
+		    		if (icon != null) {
+		    			setText(item);
+		    			setFont(list.getFont());
+		    		} else {
+		    			setUhOhText(item + " (" + Messages.getText("no_image_available") + ")", list.getFont());
+		    		}
+	    		}
+	    		else {
+	    			 /* In this way we force to show anything in the Popup list 
+		   			      in order to user knew that no item has been loaded */
+		    		setText(" ");
+	    		}
+    		}
+    		else {
+    			// Empty previous information
+    			setIcon(null);
+    			setToolTipText("");
+    			referenceToThisJComboBoxWithImageIconItems.setToolTipText("");
+    			setText("");
+    		}
+    		
+    		return this;
+    	}
+
+    	/**
+    	 * Set the font and text when no image was found.
+    	 * 
+    	 * @param uhOhText Text
+    	 * @param normalFont Font type
+    	 */
+    	private void setUhOhText(String uhOhText, Font normalFont) {
+    		if (uhOhFont == null) { //lazily create this font
+    			uhOhFont = normalFont.deriveFont(Font.ITALIC);
+    		}
+
+    		setFont(uhOhFont);
+    		setText(uhOhText);
+    	}
+    }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/JComboBoxWithImageIconItems.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/GridBagLayoutPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/GridBagLayoutPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/GridBagLayoutPanel.java	(revision 38348)
@@ -0,0 +1,472 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id$
+* $Log$
+* Revision 1.2  2007-09-12 16:28:23  bsanchez
+* *** empty log message ***
+*
+* Revision 1.1  2007/08/20 08:34:46  evercher
+* He fusionado LibUI con LibUIComponents
+*
+* Revision 1.11  2006/10/23 09:53:07  jaume
+* *** empty log message ***
+*
+* Revision 1.10  2006/10/18 07:29:21  jaume
+* *** empty log message ***
+*
+* Revision 1.9  2006/08/23 07:33:32  jaume
+* *** empty log message ***
+*
+* Revision 1.8  2006/08/22 07:38:58  jaume
+* added support for detecting changes keyboard and mouse changes over the componenets added via addComponent methods
+*
+* Revision 1.7  2006/08/11 16:36:15  azabala
+* *** empty log message ***
+*
+* Revision 1.6  2006/08/07 14:45:14  azabala
+* added a convenience method to specify insets and gridbagconstraints
+*
+* Revision 1.5  2006/07/28 15:17:43  azabala
+* added the posibility to customize insets of the panel which has each row
+*
+* Revision 1.4  2006/07/12 11:23:56  jaume
+* *** empty log message ***
+*
+* Revision 1.3  2006/07/04 16:56:10  azabala
+* new method to add three componentes
+*
+* Revision 1.2  2006/07/03 09:29:09  jaume
+* javadoc
+*
+* Revision 1.1  2006/06/29 06:27:10  jaume
+* *** empty log message ***
+*
+*
+*/
+package org.gvsig.gui.beans.swing;
+
+import java.awt.Component;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.border.EmptyBorder;
+
+/**
+ * A panel designed for make the production of forms easier and faster.<br><br>
+ *
+ * It is a JPanel with a GridBagLayout that allows easily adding new components
+ * in rows that are automatically added and aligned by using the
+ * addComponent(...) methods.
+ *
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ *
+ */
+public class GridBagLayoutPanel extends JPanel{
+  private static final long serialVersionUID = -5583978286938513624L;
+	private GridBagLayout gridBag;
+	private boolean changed;
+	/**
+	 * The number of components already added to the layout manager.
+	 */
+	protected int y;
+	private MyValueChangeListener lst;
+
+
+	public GridBagLayoutPanel() {
+		setLayout(gridBag = new GridBagLayout());
+		lst = new MyValueChangeListener();
+	}
+
+	/**
+	 * Adds a labeled component to the option pane. Components are
+	 * added in a vertical fashion, one per row. The label is
+	 * displayed to the left of the component.
+	 * @param label The label
+	 * @param comp The component
+	 */
+	public void addComponent(String label, Component comp)
+	{
+		JLabel l = newLabel(label, comp);
+		l.setBorder(new EmptyBorder(0,0,0,12));
+		addComponent(l,comp,GridBagConstraints.BOTH);
+	}
+
+	/**
+	 * Adds a labeled component to the option pane. Components are
+	 * added in a vertical fashion, one per row. The label is
+	 * displayed to the left of the component.
+	 * @param label The label
+	 * @param comp The component
+	 * @param fill Fill parameter to GridBagConstraints for the right
+	 * component
+	 */
+	public void addComponent(String label, Component comp, int fill)
+	{
+		JLabel l = newLabel(label, comp);
+		l.setBorder(new EmptyBorder(0,0,0,12));
+		addComponent(l,comp,fill);
+	}
+
+
+	public void addComponent(String label, Component comp, Insets insets)
+	{
+		addComponent(label, comp, GridBagConstraints.BOTH, insets);
+	}
+
+	public void addComponent(String label, Component comp, int fill, Insets insets){
+		JLabel l = newLabel(label, comp);
+		l.setBorder(new EmptyBorder(0,0,0,12));
+		addComponent(l,comp, fill, insets);
+	}
+
+
+	/**
+	 * Adds a labeled component to the option pane. Components are
+	 * added in a vertical fashion, one per row. The label is
+	 * displayed to the left of the component.
+	 * @param comp1 The label
+	 * @param comp2 The component
+	 *
+	 * @since jEdit 4.1pre3
+	 */
+	public void addComponent(Component comp1, Component comp2)
+	{
+		addComponent(comp1,comp2,GridBagConstraints.BOTH);
+	}
+
+	/**
+	 * Adds two components in a single line using the default inset (borders of margin)
+	 * @param comp1
+	 * @param comp2
+	 * @param fill
+	 */
+	public void addComponent(Component comp1, Component comp2, int fill){
+		addComponent(comp1, comp2, fill, new Insets(1,0,1,0));
+	}
+	/**
+	 * Adds a labeled component to the option pane. Components are
+	 * added in a vertical fashion, one per row. The label is
+	 * displayed to the left of the component.
+	 * @param comp1 The label
+	 * @param comp2 The component
+	 * @param fill Fill parameter to GridBagConstraints for the right
+	 * component
+	 *
+	 * @since jEdit 4.1pre3
+	 */
+	public void addComponent(Component comp1, Component comp2, int fill, Insets insets)
+	{
+		copyToolTips(comp1, comp2);
+		GridBagConstraints cons = new GridBagConstraints();
+		cons.gridy = y++;
+		cons.gridheight = 1;
+		cons.gridwidth = 1;
+		cons.weightx = 0.0f;
+		cons.insets = insets;
+		cons.fill = GridBagConstraints.BOTH;
+
+		gridBag.setConstraints(comp1,cons);
+		add(comp1);
+
+		cons.fill = fill;
+		cons.gridx = 1;
+		cons.weightx = 1.0f;
+		gridBag.setConstraints(comp2,cons);
+		add(comp2);
+		comp1.addKeyListener(lst);
+		comp1.addMouseListener(lst);
+		comp2.addKeyListener(lst);
+		comp2.addMouseListener(lst);
+	}
+
+	/**
+	 * Adds three components in a line using the default insets
+	 * @param comp1
+	 * @param comp2
+	 * @param comp3
+	 * @param fill
+	 */
+	public void addComponent(Component comp1,
+			Component comp2,
+			Component comp3,
+			int fill){
+		addComponent(comp1, comp2, comp3, fill, new Insets(1, 0, 1, 0));
+	}
+	/**
+	 * Adds three components (azabala)
+	 *
+	 * @param comp1
+	 * @param comp2
+	 * @param comp3
+	 * @param fill
+	 */
+	public void addComponent(Component comp1,
+			Component comp2,
+			Component comp3,
+			int fill,
+			Insets insets)
+	{
+		copyToolTips(comp1, comp2);
+		copyToolTips(comp1, comp3);
+
+		GridBagConstraints cons = new GridBagConstraints();
+		cons.gridy = y++;
+		cons.gridheight = 1;
+		cons.gridwidth = 1;
+		cons.weightx = 0.0f;
+		cons.insets = insets;
+		cons.fill = GridBagConstraints.BOTH;
+
+		gridBag.setConstraints(comp1,cons);
+		add(comp1);
+
+		cons.gridx = 1;
+		cons.weightx = 1.0f;
+		gridBag.setConstraints(comp2,cons);
+		add(comp2);
+
+		//FIXME. REVISAR ESTO QUE SEGURAMENTE ESTE MAL (AZABALA)
+		cons.fill = GridBagConstraints.NONE;
+		cons.gridx = 2;
+		cons.weightx = 1.0f;
+		gridBag.setConstraints(comp3, cons);
+		add(comp3);
+		comp1.addKeyListener(lst);
+		comp1.addMouseListener(lst);
+		comp2.addKeyListener(lst);
+		comp2.addMouseListener(lst);
+	}
+
+	/**
+	 * Adds three components in a single line using the default BOTH fill constraint
+	 * @param comp1
+	 * @param comp2
+	 * @param comp3
+	 */
+	public void addComponent(Component comp1,
+			Component comp2,
+			Component comp3) {
+		addComponent(comp1, comp2, comp3, GridBagConstraints.BOTH);
+	}
+
+
+
+	public void addComponent(Component comp){
+		addComponent(comp, new Insets(1, 0, 1, 0));
+	}
+	/**
+	 * Adds a component to the option pane. Components are
+	 * added in a vertical fashion, one per row.
+	 * @param comp The component
+	 */
+	public void addComponent(Component comp, Insets insets)
+	{
+		GridBagConstraints cons = new GridBagConstraints();
+		cons.gridy = y++;
+		cons.gridheight = 1;
+		cons.gridwidth = GridBagConstraints.REMAINDER;
+		cons.fill = GridBagConstraints.NONE;
+		cons.anchor = GridBagConstraints.WEST;
+		cons.weightx = 1.0f;
+		cons.insets = insets;
+
+		gridBag.setConstraints(comp,cons);
+		add(comp);
+		comp.addKeyListener(lst);
+		comp.addMouseListener(lst);
+
+	}
+
+	/**
+	 * (azabala)
+	 * Adds a component which is going to fill many rows of the grid
+	 * (useful to add scrollpanes with list, etc.)
+	 *
+	 * */
+	public void addComponent(Component comp, Insets insets, int numRows){
+		GridBagConstraints cons = new GridBagConstraints();
+		cons.gridy = y++;
+		cons.gridheight = numRows;
+		//REVISAR
+		y += numRows;
+		cons.gridwidth = GridBagConstraints.REMAINDER;
+		cons.fill = GridBagConstraints.HORIZONTAL;
+		cons.anchor = GridBagConstraints.WEST;
+		cons.weightx = 1.0f;
+		cons.insets = insets;
+		cons.weighty = 0.0f;
+
+		gridBag.setConstraints(comp,cons);
+		add(comp);
+		comp.addKeyListener(lst);
+		comp.addMouseListener(lst);
+
+	}
+
+
+	///////ADDING SEPARATORS
+
+
+
+
+
+
+
+
+
+
+
+	public void addComponent(Component comp, int fill){
+		addComponent(comp, fill, new Insets(1, 0, 1, 0));
+	}
+
+	/**
+	 * Adds a component to the option pane. Components are
+	 * added in a vertical fashion, one per row.
+	 * @param comp The component
+	 * @param fill Fill parameter to GridBagConstraints
+	 */
+	public void addComponent(Component comp, int fill, Insets insets)
+	{
+		GridBagConstraints cons = new GridBagConstraints();
+		cons.gridy = y++;
+		cons.gridheight = 1;
+		cons.gridwidth = GridBagConstraints.REMAINDER;
+		cons.fill = fill;
+		cons.anchor = GridBagConstraints.WEST;
+		cons.weightx = 1.0f;
+		cons.insets = insets;
+
+		gridBag.setConstraints(comp,cons);
+		add(comp);
+		comp.addKeyListener(lst);
+		comp.addMouseListener(lst);
+	}
+
+	private void copyToolTips (Component c1, Component c2) {
+		int tooltips = 0;
+		int jc=0;
+		String text = null;
+		JComponent jc1 = null, jc2 = null;
+		try {
+			jc1 = (JComponent) c1;
+			text = jc1.getToolTipText();
+			++jc;
+			if (text != null && text.length() > 0) tooltips++;
+		}
+		catch (Exception e) {}
+		try {
+			jc2 = (JComponent) c2;
+			String text2 = jc2.getToolTipText();
+			++jc;
+			if (text2 != null && text2.length() > 0) {
+				text = text2;
+				tooltips++;
+			}
+		}
+		catch (Exception e) {}
+		if (tooltips == 1 && jc == 2) {
+			jc1.setToolTipText(text);
+			jc2.setToolTipText(text);
+		}
+	}
+
+	/**
+	 *	@return a label which has the same tooltiptext as the Component
+	 *    that it is a label for. This is used to create labels from inside
+	 *    AbstractPreferencePage.
+	 */
+	public JLabel newLabel(String label, Component comp)
+	{
+		JLabel retval = new JLabel(label);
+		try /* to get the tooltip of the component */
+		{
+			JComponent jc = (JComponent) comp;
+			String tttext = jc.getToolTipText();
+			retval.setToolTipText(tttext);
+		}
+		catch (Exception e)
+		{
+			/* There probably wasn't a tooltip,
+			 * or it wasn't a JComponent.
+			   We don't care. */
+		}
+		return retval;
+	}
+
+	/**
+	 * Adds an empty row to the form. It can be used as a separator to
+	 * improve panel appearance and comprehension.
+	 */
+	public void addBlank() {
+		addComponent(new JBlank(1,1));
+	}
+
+	public boolean hasChanged() {
+		return changed;
+	}
+
+	public void setChanged(boolean changed) {
+		this.changed = changed;
+	}
+
+	private class MyValueChangeListener implements KeyListener, MouseListener {
+		public void keyPressed(KeyEvent e)      { changed = true; }
+		public void keyReleased(KeyEvent e)     { changed = true; }
+		public void keyTyped(KeyEvent e)        { changed = true; }
+		public void mouseClicked(MouseEvent e)  { changed = true; }
+		public void mouseEntered(MouseEvent e)  { changed = true; }
+		public void mouseExited(MouseEvent e)   { changed = true; }
+		public void mousePressed(MouseEvent e)  { changed = true; }
+		public void mouseReleased(MouseEvent e) { changed = true; }
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/GridBagLayoutPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JTextPreview.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JTextPreview.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JTextPreview.java	(revision 38348)
@@ -0,0 +1,127 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id$
+* $Log$
+* Revision 1.2  2007-09-12 16:28:23  bsanchez
+* *** empty log message ***
+*
+* Revision 1.1  2007/08/20 08:34:46  evercher
+* He fusionado LibUI con LibUIComponents
+*
+* Revision 1.2  2006/11/28 09:30:12  ppiqueras
+* Cambiado PluginServices.getText(..., ...) por Messages.getText(...)
+*
+* Revision 1.1  2006/09/18 08:00:34  jaume
+* *** empty log message ***
+*
+*
+*/
+package org.gvsig.gui.beans.swing;
+
+import java.awt.Font;
+import java.util.Enumeration;
+
+import javax.swing.JEditorPane;
+import javax.swing.UIManager;
+import javax.swing.plaf.FontUIResource;
+
+import org.gvsig.gui.beans.Messages;
+
+public class JTextPreview extends JEditorPane {
+  private static final long serialVersionUID = -3848260639539532634L;
+	private String text = null;
+	private Font font = null;
+	private final String template=
+	"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang3082{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Arial;}{\\f1\\fswiss\\fcharset0 #FONT#;}}\r\n" +
+	"{\\*\\generator Msftedit 5.41.15.1507;}\\viewkind4\\uc1\\pard#BOLD##ITALIC##UNDERLINED#f0#FONT_SIZE# #TEXT##END_UNDERLINED##NONE##END_BOLD##END_ITALIC#\\f1\\par\r\n" +
+	"}";
+
+
+	public JTextPreview() {
+		super();
+		setEditable(false);
+	}
+
+	public void setText(String text) {
+		if (text == null)
+			text = Messages.getText("text_preview_text");
+		setContentType("text/rtf");
+		this.text = text;
+		if (font == null) {
+			Enumeration keys = UIManager.getDefaults().keys();
+			while (keys.hasMoreElements()) {
+				Object key = keys.nextElement();
+				Object value = UIManager.get (key);
+				if (value instanceof FontUIResource) {
+					FontUIResource fur = (FontUIResource) value;
+					String fontName = fur.getFontName();
+					font = new Font(fontName, Font.PLAIN, 10);
+					break;
+				}
+			}
+		}
+
+		String theText =
+			template.replaceAll("#FONT#", font.getName()).
+					 replaceAll("#BOLD#", (font.isBold())? "\\b": "").
+					 replaceAll("#END_BOLD#", (font.isBold())? "\\b0": "").
+					 replaceAll("#ITALIC#", (font.isItalic())? "\\i": "").
+					 replaceAll("#END_ITALIC#", (font.isItalic())? "\\i0": "").
+					 replaceAll("#UNDERLINED#", (false/*font.isUnderlined()*/)? "\\ul": "").
+					 replaceAll("#END_UNDERLINED#", (false/*font.isUnderlined()*/)? "\\ul": "").
+					 replaceAll("#FONT_SIZE#", "\\\\fs"+font.getSize()*2).
+					 replaceAll("#NONE#", ((font.isBold() || font.isItalic() /*||font.isUnderlined()*/)? "none":"")).
+					 replaceAll("#TEXT#", text);
+		super.setText(theText);
+	}
+
+	public void setFont(Font font) {
+		this.font = font;
+		setText(text);
+	}
+
+	public void setEditable(boolean b) {
+		// avoided
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/swing/JTextPreview.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/specificcaretposition/JTextFieldWithSCP.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/specificcaretposition/JTextFieldWithSCP.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/specificcaretposition/JTextFieldWithSCP.java	(revision 38348)
@@ -0,0 +1,182 @@
+package org.gvsig.gui.beans.specificcaretposition;
+
+import java.io.Serializable;
+
+import javax.swing.JTextField;
+import javax.swing.text.Document;
+
+import org.gvsig.gui.awt.event.specificCaretPosition.ISpecificCaretPosition;
+import org.gvsig.gui.awt.event.specificCaretPosition.SpecificCaretPositionListeners;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * This class is a JTextField with two listeners that allow authomatically reset the caret
+ *   position of this component to left (LEFT_POSITIONS), right (RIGHT_POSITIONS) or like JTextField (LIKE_JTEXTCOMPONENT) (do nothing).
+ *   By default is to left. 
+ * 
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class JTextFieldWithSCP extends JTextField implements ISpecificCaretPosition, Serializable {
+	private static final long serialVersionUID = -7873719783491147038L;
+
+	private int caretPositionMode;
+
+	/**
+	 * @see JTextField#JTextField()
+	 */
+	public JTextFieldWithSCP() {
+		super();
+		caretPositionMode = LEFT_POSITIONS;
+		initialize();
+	}
+	
+	/**
+	 * @see JTextField#JTextField(javax.swing.text.Document, java.lang.String, int)
+	 */
+	public JTextFieldWithSCP(Document doc, String text, int columns) {
+		super(doc, text, columns);
+		caretPositionMode = LEFT_POSITIONS;
+		initialize();
+	}
+	
+	/**
+	 * @see JTextField#JTextField(int)
+	 */
+	public JTextFieldWithSCP(int columns) {
+		super(columns);
+		caretPositionMode = LEFT_POSITIONS;
+		initialize();
+	}
+	
+	/**
+	 * @see JTextField#JTextField(java.lang.String)
+	 */
+	public JTextFieldWithSCP(String text) {
+		super(text);
+		caretPositionMode = LEFT_POSITIONS;
+		initialize();
+	}
+	
+	/**
+	 * @see JTextField#JTextField(java.lang.String, int)
+	 */
+	public JTextFieldWithSCP(String text, int columns) {
+		super(text, columns);
+		caretPositionMode = LEFT_POSITIONS;
+		initialize();
+	}
+//
+//	/**
+//	 * @see JTextField#JTextField()
+//   * @param position The position of text that will be seen (LEFT_POSITIONS, RIGHT_POSITIONS or LIKE_JTEXTCOMPONENT)
+//	 */
+//	public JTextFieldWithSpecificCaretPosition(int position) {
+//		super();
+//		caretPositionMode = position;
+//		initialize();
+//	}
+	
+	/**
+	 * @see JTextField#JTextField(javax.swing.text.Document, java.lang.String, int)
+	 * @param position The position of text that will be seen (LEFT_POSITIONS, RIGHT_POSITIONS or LIKE_JTEXTCOMPONENT)
+	 */
+	public JTextFieldWithSCP(Document doc, String text, int columns, int position) {
+		super(doc, text, columns);
+		caretPositionMode = position;
+		initialize();
+	}
+	
+	/**
+	 * @see JTextField#JTextField(int)
+	 * @param position The position of text that will be seen (LEFT_POSITIONS, RIGHT_POSITIONS or LIKE_JTEXTCOMPONENT)
+	 */
+	public JTextFieldWithSCP(int columns, int position) {
+		super(columns);
+		caretPositionMode = position;
+		initialize();
+	}
+	
+	/**
+	 * @see JTextField#JTextField(java.lang.String)
+	 * @param position The position of text that will be seen (LEFT_POSITIONS, RIGHT_POSITIONS or LIKE_JTEXTCOMPONENT)
+	 */
+	public JTextFieldWithSCP(int position, String text) {
+		super(text);
+		caretPositionMode = position;
+		initialize();
+	}
+	
+	/**
+	 * @see JTextField#JTextField(java.lang.String, int)
+	 * @param position The position of text that will be seen (LEFT_POSITIONS, RIGHT_POSITIONS or LIKE_JTEXTCOMPONENT)
+	 */
+	public JTextFieldWithSCP(String text, int columns, int position) {
+		super(text, columns);
+		caretPositionMode = position;
+		initialize();
+	}
+	
+	/**
+	 * This method adds three listeners to this component:
+	 */
+	private void initialize() {
+		SpecificCaretPositionListeners.setListeners(this);
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.awt.event.ISpecificCaretPosition#getCaretPositionMode()
+	 */
+	public int getCaretPositionMode() {
+		return caretPositionMode;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.awt.event.ISpecificCaretPosition#setCaretPositionMode(int)
+	 */
+	public void setCaretPositionMode(int caretPositionMode) {
+		this.caretPositionMode = caretPositionMode;
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/specificcaretposition/JFormattedTextFieldSCP.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/specificcaretposition/JFormattedTextFieldSCP.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/specificcaretposition/JFormattedTextFieldSCP.java	(revision 38348)
@@ -0,0 +1,141 @@
+package org.gvsig.gui.beans.specificcaretposition;
+
+import java.io.Serializable;
+import java.text.Format;
+
+import javax.swing.JFormattedTextField;
+
+import org.gvsig.gui.awt.event.specificCaretPosition.ISpecificCaretPosition;
+import org.gvsig.gui.awt.event.specificCaretPosition.SpecificCaretPositionListeners;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * This class is a JFormattedTextField with two listeners that allow authomatically reset the caret
+ *   position of this component to left (LEFT_POSITIONS), right (RIGHT_POSITIONS) or like JFormattedTextField (LIKE_JTEXTCOMPONENT) (do nothing).
+ *   By default is to left. 
+ * 
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class JFormattedTextFieldSCP extends JFormattedTextField implements ISpecificCaretPosition, Serializable {
+	private static final long serialVersionUID = -8224060521711689694L;
+
+	private int caretPositionMode;
+
+	/**
+	 * @see JFormattedTextField#JFormattedTextField()
+	 */
+	public JFormattedTextFieldSCP() {
+		super();
+		caretPositionMode = LEFT_POSITIONS;
+		initialize();
+	}
+	
+	/**
+	 * @see JFormattedTextField#JFormattedTextField(javax.swing.JFormattedTextField.AbstractFormatter)
+	 */
+	public JFormattedTextFieldSCP(JFormattedTextField.AbstractFormatter formatter) {
+		super(formatter);
+		caretPositionMode = LEFT_POSITIONS;
+		initialize();
+	}
+	
+	/**
+	 * @see JFormattedTextField#JFormattedTextField(javax.swing.JFormattedTextField.AbstractFormatterFactory)
+	 */
+	public JFormattedTextFieldSCP(JFormattedTextField.AbstractFormatterFactory factory) {
+		super(factory);
+		caretPositionMode = LEFT_POSITIONS;
+		initialize();
+	}
+	
+	/**
+	 * @see JFormattedTextField#JFormattedTextField(javax.swing.JFormattedTextField.AbstractFormatterFactory, java.lang.Object)
+	 */
+	public JFormattedTextFieldSCP(JFormattedTextField.AbstractFormatterFactory factory, Object currentValue) {
+		super(factory, currentValue);
+		caretPositionMode = LEFT_POSITIONS;
+		initialize();
+	}
+	
+	/**
+	 * @see JFormattedTextField#JFormattedTextField()
+	 */
+	public JFormattedTextFieldSCP(Format format) {
+		super(format);
+		caretPositionMode = LEFT_POSITIONS;
+		initialize();
+	}
+	
+	/**
+	 * @see JFormattedTextField#JFormattedTextField(java.lang.Object)
+	 */
+	public JFormattedTextFieldSCP(Object value) {
+		super(value);
+		caretPositionMode = LEFT_POSITIONS;
+		initialize();
+	}
+	
+	/**
+	 * This method adds three listeners to this component:
+	 */
+	private void initialize() {
+		SpecificCaretPositionListeners.setListeners(this);
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.awt.event.ISpecificCaretPosition#getCaretPositionMode()
+	 */
+	public int getCaretPositionMode() {
+		return caretPositionMode;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.awt.event.ISpecificCaretPosition#setCaretPositionMode(int)
+	 */
+	public void setCaretPositionMode(int caretPositionMode) {
+		this.caretPositionMode = caretPositionMode;
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/images/addlayer.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/images/addlayer.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/images/delall.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/images/delall.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListListener.java	(revision 38348)
@@ -0,0 +1,289 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.treelist.listeners;
+
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.util.ArrayList;
+
+import javax.swing.DefaultListModel;
+import javax.swing.JList;
+import javax.swing.JTree;
+import javax.swing.tree.TreePath;
+
+import org.gvsig.gui.beans.treelist.event.TreeListEvent;
+
+/**
+ * Esta clase contiene la l�gica que a�ade elementos desde el arbol a la lista, arrastrando o
+ * haciendo doble click sobre el elemento en el arbol, elimina elementos de la lista haciendo 
+ * doble click sobre ellos o intercambia elementos arrastrando en la lista de una posici�n 
+ * a otra.
+ * Nacho Brodin (brodin_ign@gva.es)
+ */
+
+public class TreeListListener implements MouseListener, MouseMotionListener, TreeListComponentListener {
+	private JTree tree = null;
+	private JList 					list = null;
+	private ArrayList				listListeners = null;
+	private TreeListEvent 			ev = new TreeListEvent();
+
+	/**
+	 * This method initializes 
+	 * 
+	 */
+	public TreeListListener() {
+	}
+
+	/**
+	 * Asigna la lista
+	 * @param list
+	 */
+	public void setList(JList list) {
+		this.list = list;
+	}
+
+	/**
+	 * Asigna el arbol
+	 * @param tree
+	 */
+	public void setTree(JTree tree) {
+		this.tree = tree;
+	}
+
+	//-------------------------------------------
+	//M�TODOS DEL LISTENER
+	
+	//A�ADIR A LA LISTA
+	//Pinchar con doble click el elemento del arbol
+	
+	//Pichar lista -> obtiene draggLabel
+	//Arrastrar -> draggActive
+	//Released -> !draggActive. Si enterList y se ha arrastrado y se ha pichado un elemento de la lista -> a�ade elemento
+	
+	//ELIMINAR DE LA LISTA
+	//Pinchar con doble click el elemento de la lista.
+	
+	//CAMBIAR EL ORDEN DE LOS ELEMENTOS DE LA LISTA
+	//Pinchar lista -> Obtiene index del elem pinchado
+	//Arrastrar -> draggElement a true
+	//Soltar -> si hay elemento seleccionado estamos dentro de la lista y draggElement es true -> se intercambiar
+	
+	/**
+	 * Variable que contiene la etiqueta seleccionada y arrastrado hasta la lista
+	 */
+	private String draggLabel = null;
+	/**
+	 * Variable que est� a true si estamos arrastrando una etiqueta
+	 */
+	private boolean draggActive = false;
+	/**
+	 * Variable que est� a true si el rat�n ha entrado en la lista
+	 */
+	private boolean enterInList = false;
+	/**
+	 * Elemento seleccionado de la lista. -1 si no hay ninguno;
+	 */
+	private int selectElement = -1;
+	/**
+	 * Variable que est� a true si estamos arrastrando un elemento de la lista
+	 */
+	private boolean draggElement = false;
+	
+	public void deleteElement() {
+		if (list.getSelectedIndex() != -1) {
+			DefaultListModel model = (DefaultListModel) list.getModel();
+
+			// Lanzamos el evento de eliminar un elemento
+			ev.resetValues();
+			ev.setElementRemoved((String) list.getSelectedValue());
+
+			model.remove(list.getSelectedIndex());
+
+			elementRemoved(ev);
+		}
+	}
+	
+	public void insertElement() {
+		if (draggLabel != null) {
+			DefaultListModel model = (DefaultListModel) list.getModel();
+
+			// Si ya esta en la lista no lo a�adimos
+			if (model.indexOf(draggLabel) != -1) return;
+
+			// Lanzamos el evento de a�adir un elemento
+			ev.resetValues();
+			ev.setElementAdded(draggLabel);
+
+			model.addElement(draggLabel);
+//			draggLabel = null;
+
+			elementAdded(ev);
+		}
+	}
+	
+	public void mouseClicked(MouseEvent e) {
+		if (e.getSource() == list)
+			// Si es doble click y hay alg�n elemento seleccionado en la lista lo eliminamos
+			if (e.getClickCount() == 2)
+				deleteElement();
+
+		if (e.getSource() == tree)
+			// Si es doble click y hay alg�n elemento seleccionado en el arbol lo a�adimos
+			if (e.getClickCount() == 2)
+				insertElement();
+	}
+	
+	public void mouseEntered(MouseEvent e) {
+		if(e.getSource() == list)
+			enterInList = true;
+	}
+
+	public void mouseExited(MouseEvent e) {
+		if(e.getSource() == list)
+			enterInList = false;
+	}
+
+	public void mousePressed(MouseEvent e) {
+		selectElement = -1;
+		
+		//Al pulsar sobre el Arbol se captura el elemento seleccionado
+		if(e.getSource() == tree){
+			TreePath[] tp = tree.getSelectionPaths();
+			if(tp != null){
+				String val = tp[0].toString();
+				//Comprobamos que se haya pinchado sobre una rama
+				String[] pathTree = val.split(", ");
+				if(pathTree.length <= 2)
+					draggLabel = null;
+				else
+					draggLabel = val.substring(val.lastIndexOf(", ") + 2, val.lastIndexOf("]"));
+			}
+		}
+		
+		//Al pulsar sobre la lista capturamos el elemento seleccionado
+		if(e.getSource() == list){
+			selectElement = list.getSelectedIndex();
+			if(selectElement < 0)
+				return;
+			
+			//Capturamos datos para el evento elementMoved
+			ev.resetValues();
+			ev.setPositionSourceElement(selectElement);
+			ev.setSourceElement((String)((DefaultListModel)list.getModel()).getElementAt(selectElement));
+		}
+	}
+
+	public void mouseReleased(MouseEvent e) {
+		//Si se ha pinchado sobre un elemento del arbol y se ha arrastrado lo a�adimos
+		if (enterInList){
+			if (draggLabel != null && draggActive == true) {
+				insertElement();
+/*				DefaultListModel model = (DefaultListModel)list.getModel();
+				
+				//Lanzamos el evento de a�adir un elemento
+				ev.setElementAdded(draggLabel);
+				elementAdded(ev);
+				
+				model.addElement(draggLabel);
+*/
+				draggLabel = null;
+			}
+		}
+		
+		//Si se est� arrastrando un elemento de la lista se intercambia por el lugar donde se suelta
+		if(draggElement && e.getSource() == list && selectElement != -1){
+			if(list.getSelectedIndex() != selectElement){
+				DefaultListModel model = (DefaultListModel)list.getModel();
+				int posDst = list.getSelectedIndex();
+				String elemOrig = (String)model.getElementAt(selectElement);
+				
+				ev.setPositionDestElement(posDst);
+				ev.setDestElement((String)((DefaultListModel)list.getModel()).getElementAt(posDst));
+				
+				model.remove(selectElement);
+				model.insertElementAt(elemOrig, posDst);
+
+				elementMoved(ev);
+			}
+		}
+		
+		//Al levantar el click del rat�n desactivamos los arrastres
+		draggActive = false;
+		draggElement = false;
+		selectElement = -1;
+	}
+		
+	public void mouseDragged(MouseEvent e) {
+		//Al arrastrar desde el arbor se pone draggActive a true se se ha pinchado antes en un elemento
+		if(e.getSource() == tree){
+			if(draggLabel != null)
+				draggActive = true;
+		}
+		
+		if(e.getSource() == list){
+			if(selectElement != -1)
+				draggElement = true;
+		}
+	}
+
+	public void mouseMoved(MouseEvent e) {
+	}	
+	
+	/**
+	 * A�ade la lista de listeners
+	 * @param l
+	 */
+	public void setListeners(ArrayList l){
+		this.listListeners = l;
+	}
+
+	/**
+	 * Ejecutamos el m�todo elementAdded de todos los listeners registrados
+	 * @param e TreeListEvent
+	 */
+	public void elementAdded(TreeListEvent e) {
+		if(listListeners == null || listListeners.size() == 0)
+			return;
+		for(int i = 0; i < listListeners.size(); i++)
+			((TreeListComponentListener)listListeners.get(i)).elementAdded(e);
+	}
+	
+	/**
+	 * Ejecutamos el m�todo elementRemoved de todos los listeners registrados
+	 * @param e TreeListEvent
+	 */
+	public void elementRemoved(TreeListEvent e) {
+		if(listListeners == null || listListeners.size() == 0)
+			return;
+		for(int i = 0; i < listListeners.size(); i++)
+			((TreeListComponentListener)listListeners.get(i)).elementRemoved(e);
+	}
+
+	/**
+	 * Ejecutamos el m�todo elementMoved de todos los listeners registrados
+	 * @param e TreeListEvent
+	 */
+	public void elementMoved(TreeListEvent e) {
+		if(listListeners == null || listListeners.size() == 0)
+			return;
+		for(int i = 0; i < listListeners.size(); i++)
+			((TreeListComponentListener)listListeners.get(i)).elementMoved(e);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListComponentListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListComponentListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListComponentListener.java	(revision 38348)
@@ -0,0 +1,46 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.treelist.listeners;
+
+import org.gvsig.gui.beans.treelist.event.TreeListEvent;
+
+/**
+ * Interfaz que contiene los eventos del componente TreeList
+ * Nacho Brodin (brodin_ign@gva.es)
+ */
+
+public interface TreeListComponentListener {
+	/**
+	 * Este m�todo es ejecutado cuando se inserta un nuevo elemento en la lista
+	 * @param e TreeListEvent
+	 */
+	public void elementAdded(TreeListEvent e);
+	
+	/**
+	 * Este m�todo es ejecutado cuando se elimina un elemento de la lista
+	 * @param e TreeListEvent
+	 */
+	public void elementRemoved(TreeListEvent e);
+	
+	/**
+	 * Este m�todo es ejecutado cuando se mueve un elemento de la lista
+	 * @param e TreeListEvent
+	 */
+	public void elementMoved(TreeListEvent e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListComponentListener.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListChangeListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListChangeListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListChangeListener.java	(revision 38348)
@@ -0,0 +1,27 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.treelist.listeners;
+
+import java.util.EventListener;
+
+import org.gvsig.gui.beans.treelist.event.TreeListChangeEvent;
+
+public interface TreeListChangeListener extends EventListener {
+  public void actionChangeSelection(TreeListChangeEvent e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/listeners/TreeListChangeListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/TreeListContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/TreeListContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/TreeListContainer.java	(revision 38348)
@@ -0,0 +1,396 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.treelist;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+import javax.swing.DefaultListModel;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.JTree;
+import javax.swing.ListModel;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreePath;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.treelist.event.TreeListChangeEvent;
+import org.gvsig.gui.beans.treelist.listeners.TreeListChangeListener;
+import org.gvsig.gui.beans.treelist.listeners.TreeListComponentListener;
+import org.gvsig.gui.beans.treelist.listeners.TreeListListener;
+/**
+ * Componente consistente en un men� de arbol al que se le pueden a�adir
+ * entradas y una lista de elementos debajo de este. Haciendo doble click o
+ * arrastrando un elemento del men� a la lista este queda a�adido en esta.
+ * Haciendo doble click en un elemento de la lista se elimina de esta y
+ * arrastrando elementos dentro de la lista se varia su posici�n en ella.
+ *
+ * @version 31/05/2007
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class TreeListContainer extends JPanel implements ActionListener, TreeSelectionListener, ListSelectionListener {
+	private static final long serialVersionUID = 6665259638830401366L;
+	private ArrayList<TreeListChangeListener> actionChangeListeners = new ArrayList<TreeListChangeListener>();
+	private ArrayList<TreeListComponentListener> listListeners = new ArrayList<TreeListComponentListener>();
+	private Hashtable<String, String> map = null;
+
+	// Componentes visuales
+	private JScrollPane            pTree         = null;
+	private JScrollPane            pList         = null;
+	private JTree                  tree          = null;
+	private JList                  list          = null;
+	private JButton                bAdd          = null;
+	private JButton                bDel          = null;
+	private JSplitPane             jSplitPane1   = null;
+	private JPanel                 jPanelButtons = null;
+
+	private DefaultMutableTreeNode raiz          = null;
+	private TreeListListener       listener      = null;
+	private String                 pathToImages  = "images/";
+
+	/**
+	 * This method initializes
+	 */
+	public TreeListContainer() {
+		super();
+		listener = new TreeListListener();
+		initialize();
+		listener.setList(getList());
+		listener.setTree(getTree());
+		this.setPreferredSize(new Dimension(160, 0));
+		getTree().addTreeSelectionListener(this);
+		getList().addListSelectionListener(this);
+	}
+
+	/**
+	 * This method initializes this
+	 */
+	private void initialize() {
+		map = new Hashtable<String, String>();
+		raiz =  new DefaultMutableTreeNode(Messages.getText("filtros"));
+		setLayout(new BorderLayout());
+
+		getPList().setMinimumSize(new Dimension(0, 60));
+		jSplitPane1 = new JSplitPane();
+		jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
+		jSplitPane1.setTopComponent(getPTree());
+		jSplitPane1.setBottomComponent(getPList());
+		jSplitPane1.setResizeWeight(1.0);
+		jSplitPane1.setContinuousLayout(true);
+		this.add(jSplitPane1, BorderLayout.CENTER);
+		this.add(getJPanelButtons(), BorderLayout.SOUTH);
+	}
+
+	/**
+	 * Establece el ToolTip del boton de a�adir
+	 * @param text
+	 */
+	public void setAddToolTipText(String text) {
+		getAddButton().setToolTipText(text);
+	}
+
+	/**
+	 * Establece el ToolTip del boton de borrar
+	 * @param text
+	 */
+	public void setDelToolTipText(String text) {
+		getDelButton().setToolTipText(text);
+	}
+
+	/**
+	 * Devuelve el boton de A�adir
+	 * @return
+	 */
+	private JButton getAddButton() {
+		if (bAdd == null) {
+			bAdd = new JButton();
+			bAdd.setIcon(new ImageIcon(getClass().getResource(pathToImages + "addlayer.png")));
+			bAdd.setPreferredSize(new Dimension(22, 19));
+			bAdd.addActionListener(this);
+		}
+		return bAdd;
+	}
+
+	/**
+	 * Devuelve el boton de Borrar
+	 * @return
+	 */
+	private JButton getDelButton() {
+		if (bDel == null) {
+			bDel = new JButton();
+			bDel.setIcon(new ImageIcon(getClass().getResource(pathToImages + "delall.png")));
+			bDel.setPreferredSize(new Dimension(22, 19));
+			bDel.addActionListener(this);
+		}
+		return bDel;
+	}
+	
+	private JPanel getJPanelButtons() {
+		if (jPanelButtons == null) {
+			jPanelButtons = new JPanel();
+			jPanelButtons.setPreferredSize(new Dimension(0, 21));
+
+
+
+
+			FlowLayout flowLayout5 = new FlowLayout();
+			flowLayout5.setHgap(5);
+			flowLayout5.setVgap(0);
+			flowLayout5.setAlignment(java.awt.FlowLayout.CENTER);
+			jPanelButtons.setLayout(flowLayout5);
+
+			jPanelButtons.add(getAddButton(), null);
+			jPanelButtons.add(getDelButton(), null);
+		}
+		return jPanelButtons;
+	}
+
+	/**
+	 * This method initializes jPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JScrollPane getPTree() {
+		if (pTree == null) {
+			pTree = new JScrollPane();
+			pTree.setViewportBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
+			pTree.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+			pTree.setViewportView(getTree());
+		}
+		return pTree;
+	}
+
+	/**
+	 * This method initializes jPanel1
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JScrollPane getPList() {
+		if (pList == null) {
+			pList = new JScrollPane();
+			pList.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
+			pList.setBackground(java.awt.Color.white);
+			pList.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+			pList.setViewportView(getList());
+		}
+		return pList;
+	}
+
+	/**
+	 * This method initializes jTree
+	 *
+	 * @return javax.swing.JTree
+	 */
+	public JTree getTree() {
+		if (tree == null) {
+			tree = new JTree(raiz);
+			tree.addMouseListener(listener);
+			tree.addMouseMotionListener(listener);
+		}
+		return tree;
+	}
+
+	/**
+	 * This method initializes jList
+	 *
+	 * @return javax.swing.JList
+	 */
+	public JList getList() {
+		if (list == null) {
+			DefaultListModel m = new DefaultListModel();
+			list = new JList(m);
+			list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+			list.addMouseListener(listener);
+			list.addMouseMotionListener(listener);
+		}
+		return list;
+	}
+
+	public ListModel getListModel() {
+		return list.getModel();
+	}
+
+	//-------------------------------------------
+	//M�TODOS DE ARBOL
+
+	/**
+	 * A�ade una nueva categoria al arbol
+	 * @param name	Etiqueta que aparece en el arbol.
+	 * @param pos	Posici�n en el arbol de la nueva categoria
+	 */
+	public void addClass(String name, int pos) {
+		DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
+		DefaultMutableTreeNode r = new DefaultMutableTreeNode(name);
+		model.insertNodeInto(r, raiz, pos);
+	}
+
+	/**
+	 * A�ade una entrada a una categoria
+	 * @param name Nombre de la entrada a a�adir
+	 * @param parentName Categoria a la que a�adimos
+	 * @param value Valor asociado a la entrada
+	 */
+	public void addEntry(String name, String parentName, String value){
+		DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
+		for (int i = 0; i < model.getChildCount(raiz); i++) {
+			if (model.getChild(raiz, i).toString().equals(parentName)) {
+				DefaultMutableTreeNode node = (DefaultMutableTreeNode) model.getChild(raiz, i);
+				node.add(new DefaultMutableTreeNode(name));
+				if (value != null)
+					map.put(name, value);
+			}
+		}
+	}
+
+	/**
+	 * M�todo que comprueba si una entrada existe en la lista de seleccion.
+	 * @param value Valor que se quiere comprobar si est� en la lista
+	 * @return true si el valor est� en la lista y false si no lo est�
+	 */
+	public boolean isInList(String value) {
+		DefaultListModel model = (DefaultListModel) getList().getModel();
+		for (int i = 0; i < model.getSize(); i++)
+			if (((String) model.get(i)).equals(value))
+				return true;
+		return false;
+	}
+
+	/**
+	 * A�ade un listener TreeListComponent
+	 * @param e
+	 */
+	public void addTreeListListener(TreeListComponentListener e){
+		listListeners.add(e);
+		listener.setListeners(listListeners);
+	}
+
+	/**
+	 * A�ade un elemento a la lista
+	 * @param element Elemento a a�adir
+	 */
+	public void addElementInList(String element){
+		DefaultListModel model = (DefaultListModel)getList().getModel();
+		model.addElement(element);
+	}
+
+	/**
+	 * Elimina un elemento a la lista
+	 * @param element Elemento a eliminar
+	 */
+	public void removeElementInList(String element){
+		DefaultListModel model = (DefaultListModel)getList().getModel();
+		model.removeElement(element);
+	}
+
+	/**
+	 * Elimina un elemento a la lista por indice
+	 * @param element Indice del elemento a eliminar
+	 */
+	public void removeElementInList(int element){
+		DefaultListModel model = (DefaultListModel) getList().getModel();
+		model.remove(element);
+	}
+
+	@SuppressWarnings("unchecked")
+	public Hashtable getMap() {
+		return map;
+	}
+
+	@SuppressWarnings("unchecked")
+	public void setMap(Hashtable map) {
+		this.map = map;
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		if (e.getSource() == getAddButton()) {
+			listener.insertElement();
+		}
+		if (e.getSource() == getDelButton()) {
+			listener.deleteElement();
+		}
+	}
+
+	/**
+	 * A�adir el disparador de cuando se pulsa un bot�n.
+	 * @param listener
+	 */
+	public void addChangeSelectionListener(TreeListChangeListener listener) {
+		if (!actionChangeListeners.contains(listener))
+			actionChangeListeners.add(listener);
+	}
+
+	/**
+	 * Borrar el disparador de eventos de los botones.
+	 * @param listener
+	 */
+	public void removeChangeSelectionListener(TreeListChangeListener listener) {
+		actionChangeListeners.remove(listener);
+	}
+
+	private void callActionChangeListeners(String item) {
+		Iterator<TreeListChangeListener> acIterator = actionChangeListeners.iterator();
+		while (acIterator.hasNext()) {
+			TreeListChangeListener listener = acIterator.next();
+			String name = map.get(item);
+			if (name != null)
+				listener.actionChangeSelection(new TreeListChangeEvent(this, name));
+			else
+				listener.actionChangeSelection(new TreeListChangeEvent(this, item));
+		}
+	}
+
+	public void valueChanged(TreeSelectionEvent e) {
+		String draggLabel = null;
+		if (e.getSource() == tree) {
+			TreePath[] tp = tree.getSelectionPaths();
+			if (tp != null) {
+				String val = tp[0].toString();
+				// Comprobamos que se haya pinchado sobre una rama
+				String[] pathTree = val.split(", ");
+				if (pathTree.length > 2) {
+					draggLabel = val.substring(val.lastIndexOf(", ") + 2, val.lastIndexOf("]"));
+					callActionChangeListeners(draggLabel);
+				}
+			}
+		}
+	}
+
+	public void valueChanged(ListSelectionEvent e) {
+		if (!e.getValueIsAdjusting()) {
+			if (getList().getSelectedValue() != null)
+				callActionChangeListeners(getList().getSelectedValue().toString());
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/TreeListContainer.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/event/TreeListChangeEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/event/TreeListChangeEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/event/TreeListChangeEvent.java	(revision 38348)
@@ -0,0 +1,35 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.treelist.event;
+
+import java.util.EventObject;
+
+public class TreeListChangeEvent extends EventObject {
+	private static final long serialVersionUID = -684281519921935004L;
+	String item = null;
+
+	public TreeListChangeEvent(Object source, String item) {
+		super(source);
+		this.item = item;
+	}
+	
+	public String getItem() {
+		return item;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/event/TreeListChangeEvent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/event/TreeListEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/event/TreeListEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/event/TreeListEvent.java	(revision 38348)
@@ -0,0 +1,143 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.treelist.event;
+
+
+/**
+ * Event para el TreeListComponentListener
+ * Nacho Brodin (brodin_ign@gva.es)
+ */
+
+public class TreeListEvent {
+	
+	private String elementAdded = null;
+	private String elementRemoved = null;
+	private String sourceElement = null;
+	private String DestElement = null;
+	private int positionSourceElement = -1;
+	private int positionDestElement = -1;
+	
+	/**
+	 * Obtiene el elemento a�adido
+	 * @return Elemento a�adido
+	 */
+	public String getElementAdded() {
+		return elementAdded;
+	}
+	
+	/**
+	 * Asigna el elemento a�adido
+	 * @param elementAdded
+	 */
+	public void setElementAdded(String elementAdded) {
+		this.elementAdded = elementAdded;
+	}
+	
+	/**
+	 * Obtiene el elemento eliminado
+	 * @return Elemento eliminado
+	 */
+	public String getElementRemoved() {
+		return elementRemoved;
+	}
+	
+	/**
+	 * Asigna el elemento eliminado
+	 * @param elementRemoved
+	 */
+	public void setElementRemoved(String elementRemoved) {
+		this.elementRemoved = elementRemoved;
+	}
+
+	/**
+	 * Obtiene el elemento de destino
+	 * @return Elemento de destino
+	 */
+	public String getDestElement() {
+		return DestElement;
+	}
+
+	/**
+	 * Asigna el elemento de destino
+	 * @param destElement
+	 */
+	public void setDestElement(String destElement) {
+		DestElement = destElement;
+	}
+
+	/**
+	 * Obtiene la posici�n del elemento de destino
+	 * @return Elemento de destino
+	 */
+	public int getPositionDestElement() {
+		return positionDestElement;
+	}
+
+	/**
+	 * Asigna la posici�n del elemento de destino
+	 * @param positionDestElement
+	 */
+	public void setPositionDestElement(int positionDestElement) {
+		this.positionDestElement = positionDestElement;
+	}
+
+	/**
+	 * Obtiene la posici�n del elemento de origen
+	 * @return Elemento de origen
+	 */
+	public int getPositionSourceElement() {
+		return positionSourceElement;
+	}
+
+	/**
+	 * Asigna la posici�n del elemento de origen
+	 * @param positionSourceElement
+	 */
+	public void setPositionSourceElement(int positionSourceElement) {
+		this.positionSourceElement = positionSourceElement;
+	}
+
+	/**
+	 * Obtiene el elemento de origen
+	 * @return Elemento de origen
+	 */
+	public String getSourceElement() {
+		return sourceElement;
+	}
+
+	/**
+	 * Asigna el elemento de origen
+	 * @param sourceElement
+	 */
+	public void setSourceElement(String sourceElement) {
+		this.sourceElement = sourceElement;
+	}
+	
+	/**
+	 * Resetea los valores
+	 */
+	public void resetValues(){
+		elementAdded = null;
+		elementRemoved = null;
+		sourceElement = null;
+		DestElement = null;
+		positionSourceElement = -1;
+		positionDestElement = -1;
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/treelist/event/TreeListEvent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/IClientImageNavigator.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/IClientImageNavigator.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/IClientImageNavigator.java	(revision 38348)
@@ -0,0 +1,27 @@
+package org.gvsig.gui.beans.imagenavigator;
+
+import java.awt.Graphics2D;
+/**
+ * Interfaz que debe implementar quien quiera dibujar en ImageNavigator
+ * @version 12/06/2008
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface IClientImageNavigator {
+
+	/**
+	 * Metodo que es invocado cuando ImageNavigator va a pintar la imagen.
+	 * Pasa un Graphics para hacer el dibujado, y luego todas las posibles
+	 * posiciones para hacer el pintado.
+	 * 
+	 * @param g
+	 * @param x1
+	 * @param y1
+	 * @param x2
+	 * @param y2
+	 * @param zoom
+	 * @param width
+	 * @param height
+	 * @throws ImageUnavailableException
+	 */
+	public void drawImage(Graphics2D g, double x1, double y1, double x2, double y2, double zoom, int width, int height) throws ImageUnavailableException;
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/IClientImageNavigator.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/ImageUnavailableException.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/ImageUnavailableException.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/ImageUnavailableException.java	(revision 38348)
@@ -0,0 +1,40 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.imagenavigator;
+/**
+ * Excepcion para cuando no se puede visualizar una imagen en ImageNavigator
+ * 
+ * @version 12/06/2008
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ImageUnavailableException extends Exception {
+	private static final long serialVersionUID = -4801264886991752651L;
+	
+	/**
+	 * Constructs a new exception with the specified detail message.  The
+	 * cause is not initialized, and may subsequently be initialized by
+	 * a call to {@link #initCause}.
+	 *
+	 * @param   message   the detail message. The detail message is saved for 
+	 *          later retrieval by the {@link #getMessage()} method.
+	 */
+	public ImageUnavailableException(String message) {
+		super(message);
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/images/help.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/images/help.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/images/error.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/images/error.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/images/close.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/images/close.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/ImageNavigator.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/ImageNavigator.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/ImageNavigator.java	(revision 38348)
@@ -0,0 +1,907 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.imagenavigator;
+
+import java.awt.AlphaComposite;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.GradientPaint;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.RenderingHints;
+import java.awt.color.ColorSpace;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.event.MouseWheelEvent;
+import java.awt.event.MouseWheelListener;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorConvertOp;
+import java.util.ArrayList;
+
+import javax.swing.ImageIcon;
+import javax.swing.JComponent;
+
+import org.gvsig.gui.beans.Messages;
+/**
+ * <code>ImageNavigator</code> es un componente que representa un manejador
+ * de im�genes. En �l se puede desplazar, hacer un zoom out o un zoom in a una
+ * imagen virtual. El componente no trata la imagen en si, solo lanza los
+ * eventos indicando la nueva posici�n y zoom de la imagen, luego es el usuario
+ * el que se encargar� de dibujar esa imagen en la posici�n correspondiente.
+ *
+ * El modo de uso es el siguiente:
+ * - Se puede desplazar una imagen con el bot�n izquierdo del rat�n.
+ * - Se puede hacer zoom in/out con las teclas +/- del teclado.
+ * - Se puede hacer zoom in/out con la rueda del rat�n teniendo en cuenta la
+ * posici�n del mismo.
+ * - Se puede resetear los valores con las teclas 'Espacio' o 0;
+ * - Las teclas 1, 2, 3, 4 y 5 equivalen a zoom 1, 2, 4, 8 y 16 respectivamente.
+ * - La tecla C sirve para centrar la imagen.
+ * - La tecla B sirve para mostrar u ocultar los cuadros del fondo. �til para
+ *   mostrar imagenes con transparencia.
+ * - La tecla H muestra la ayuda.
+ *
+ * @version 04/05/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ImageNavigator extends JComponent implements KeyListener, MouseMotionListener, MouseListener, MouseWheelListener {
+	private static final long serialVersionUID = 1164788214432359272L;
+	private IClientImageNavigator iClient         = null;
+
+	private Image                 image           = null;
+	private Graphics2D            widgetGraphics  = null;
+	private Image                 imageCache      = null;
+	private Graphics2D            cacheGraphics   = null;
+
+	private double                zoom            = 1.0;
+	private double                x1              = 0.0;
+	private double                y1              = 0.0;
+	private boolean               yInverted       = false;
+	private boolean               xInverted       = false;
+	private int                   width           = 0;
+	private int                   height          = 0;
+	private boolean               showHelp        = false;
+	private boolean               showBackground  = false;
+	private Color                 backgroundColor = new Color(224, 224, 224);
+	private ImageIcon             imageIconClose  = null;
+	private ImageIcon             imageIconHelp   = null;
+	private ImageIcon             imageIconError  = null;
+
+	private double                initX1          = 0.0;
+	private double                initY1          = 0.0;
+	private double                initX2          = 100.0;
+	private double                initY2          = 100.0;
+	private double                initZoom        = 1.0;
+	private boolean               autoAdjusted    = true;
+
+	private boolean               errorDrawing    = false;
+	private String                errorDrawingMsg = null;
+
+
+	/**
+	 * Crea un <code>ImageNavigator</code>
+	 */
+	public ImageNavigator() {
+		this.setFocusable(true);
+		this.addKeyListener(this);
+		this.addMouseMotionListener(this);
+		this.addMouseListener(this);
+		this.addMouseWheelListener(this);
+	}
+	
+	/**
+	 * Crea un <code>ImageNavigator</code> especificandole quien pintara el
+	 * componente
+	 * @param iClient
+	 */
+	public ImageNavigator(IClientImageNavigator iClient) {
+		this();
+		setClientImageNavigator(iClient);
+	}
+	
+	public void setClientImageNavigator(IClientImageNavigator iClient) {
+		this.iClient = iClient;
+	}
+
+	/**
+	 * Actualiza las dimensiones para ajustar la imagen a los bordes especificados
+	 * con setViewDimensions.
+	 */
+	private void updateDimensions() {
+		double factor = this.getWidth() / (initX2 - initX1);
+		if (factor > (this.getHeight() / (initY2 - initY1)))
+			factor = this.getHeight() / (initY2 - initY1);
+		zoom = factor;
+		imageCenter();
+	}
+
+	/**
+	 * Centra la imagen
+	 */
+	public void imageCenter() {
+		x1 = initX1;
+		y1 = initY1;
+
+		if (isXInverted())
+			x1 -= ((initX2 - initX1) - this.getWidth() / zoom) / 2.0;
+		else
+			x1 += ((initX2 - initX1) - this.getWidth() / zoom) / 2.0;
+		if (isYInverted())
+			y1 -= ((initY2 - initY1) - this.getHeight() / zoom) / 2.0;
+		else
+			y1 += ((initY2 - initY1) - this.getHeight() / zoom) / 2.0;
+	}
+
+	/**
+	 * Especifica el rectangulo de la imagen a visualizar, pudiendo tener
+	 * cualquiera de los ejes X e Y invertidos
+	 *
+	 * @param x1 Coordenada izquierda
+	 * @param y1 Coordenada superior
+	 * @param x2 Coordenada derecha
+	 * @param y2 Coordenada inferior
+	 */
+	public void setViewDimensions(double x1, double y1, double x2, double y2) {
+		this.initX1 = x1;
+		this.initX2 = x2;
+		this.initY1 = y1;
+		this.initY2 = y2;
+
+		yInverted = (y2 < y1);
+		if (yInverted) {
+			this.initY1 = y2;
+			this.initY2 = y1;
+		}
+
+		xInverted = (x2 < x1);
+		if (xInverted) {
+			this.initX1 = x2;
+			this.initX2 = x1;
+		}
+
+		this.updateDimensions();
+	}
+
+	/**
+	 * Hace un forzado de pintado del buffer temporal de la imagen. Este m�todo
+	 * forzar� una llamada a la funci�n de pintado del cliente.
+	 */
+	public void updateBuffer() {
+		updateImageCache(true);
+		refreshImage(0, 0);
+	}
+
+	/**
+	 * Especifica el zoom que usar� por defecto el componente.
+	 * @param zoom
+	 */
+	public void setZoom(double zoom) {
+		initZoom = zoom;
+		this.zoom = initZoom;
+		autoAdjusted = false;
+		imageCenter();
+	}
+
+	/**
+	 * Especifica el zoom que usar� por defecto el componente.
+	 * @param zoom
+	 */
+	public void setAutoAdjusted() {
+		autoAdjusted = true;
+		updateDimensions();
+		updateImageCache(true);
+		refreshImage(0, 0);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#addNotify()
+	 */
+	public void addNotify() {
+		super.addNotify();
+
+		updateImageCache(true);
+		refreshImage(0, 0);
+	}
+
+	/**
+	 * Hace un zoom de aumento en las coordenadas especificadas
+	 * @param x
+	 * @param y
+	 */
+	private void ZoomIn(double x, double y) {
+		double xcent = (x / zoom);
+		double ycent = (y / zoom);
+		if (isXInverted())
+			x1 -= xcent;
+		else
+			x1 += xcent;
+		if (isYInverted())
+			y1 -= ycent;
+		else
+			y1 += ycent;
+		zoom = zoom * 2.0;
+		xcent = (x / zoom);
+		ycent = (y / zoom);
+		if (isXInverted())
+			x1 += xcent;
+		else
+			x1 -= xcent;
+		if (isYInverted())
+			y1 += ycent;
+		else
+			y1 -= ycent;
+		updateImageCache(true);
+		refreshImage(0, 0);
+	}
+
+	/**
+	 * Hace un zoom hacia afuera en las coordenadas especificadas
+	 * @param x
+	 * @param y
+	 */
+	private void ZoomOut(double x, double y) {
+		double xcent = (x / zoom);
+		double ycent = (y / zoom);
+		if (isXInverted())
+			x1 -= xcent;
+		else
+			x1 += xcent;
+		if (isYInverted())
+			y1 -= ycent;
+		else
+			y1 += ycent;
+		zoom = zoom / 2.0;
+		xcent = (x / zoom);
+		ycent = (y / zoom);
+		if (isXInverted())
+			x1 += xcent;
+		else
+			x1 -= xcent;
+		if (isYInverted())
+			y1 += ycent;
+		else
+			y1 -= ycent;
+		updateImageCache(true);
+		refreshImage(0, 0);
+	}
+
+	/**
+	 * Mostrar o ocultar la ayuda
+	 *
+	 */
+	private void callShowHelp() {
+		showHelp = !showHelp;
+		updateImageCache(true);
+		refreshImage(0, 0);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
+	 */
+	public void keyPressed(KeyEvent e) {
+		switch (e.getKeyChar()) {
+			case 'h':
+			case 'H':
+				callShowHelp();
+				break;
+			case '+':
+				ZoomIn(width / 2.0, height / 2.0);
+				autoAdjusted = false;
+				break;
+			case '-':
+				ZoomOut(width / 2.0, height / 2.0);
+				autoAdjusted = false;
+				break;
+			case '1':
+				autoAdjusted = false;
+				this.zoom = initZoom;
+				imageCenter();
+				updateImageCache(true);
+				refreshImage(0, 0);
+				break;
+			case '2':
+				autoAdjusted = false;
+				this.zoom = initZoom * 2.0;
+				imageCenter();
+				updateImageCache(true);
+				refreshImage(0, 0);
+				break;
+			case '3':
+				autoAdjusted = false;
+				this.zoom = initZoom * 4.0;
+				imageCenter();
+				updateImageCache(true);
+				refreshImage(0, 0);
+				break;
+			case '4':
+				autoAdjusted = false;
+				this.zoom = initZoom * 8.0;
+				imageCenter();
+				updateImageCache(true);
+				refreshImage(0, 0);
+				break;
+			case '5':
+				autoAdjusted = false;
+				this.zoom = initZoom * 16.0;
+				imageCenter();
+				updateImageCache(true);
+				refreshImage(0, 0);
+				break;
+			case 'c':
+			case 'C':
+				imageCenter();
+				updateImageCache(true);
+				refreshImage(0, 0);
+				break;
+			case 'b':
+			case 'B':
+				setShowBackground(!isShowBackground());
+				break;
+			case '0':
+			case ' ':
+				setAutoAdjusted();
+				break;
+		}
+	}
+
+	double updateWidth = 0;
+	double updateHeight = 0;
+	/**
+	 * M�todo que hara la invocaci�n al cliente del pintado del trozo de imagen a
+	 * visualizar
+	 * @param forceUpdate
+	 */
+	private void updateImageCache(boolean forceUpdate) {
+		if (getWidgetImage() == null ||
+				(updateWidth == getWidgetImage().getWidth(this) &&
+				updateHeight == getWidgetImage().getHeight(this) &&
+				!forceUpdate))
+			return;
+		updateWidth = getWidgetImage().getWidth(this);
+		updateHeight = getWidgetImage().getHeight(this);
+
+		if (showBackground) {
+			for (int i = 0; (i * 4) <= width; i++) {
+				for (int j = 0; (j * 4) <= height; j++) {
+					if ((i + j) % 2 == 0)
+						getCacheGraphics().setColor(Color.white);
+					else
+						getCacheGraphics().setColor(getBackgroundColor());
+					getCacheGraphics().fillRect(i * 4, j * 4, 4, 4);
+				}
+			}
+		} else {
+			getCacheGraphics().setColor(Color.white);
+			getCacheGraphics().fillRect(0, 0, width, height);
+		}
+
+		double newY1 = 0.0;
+		double newY2 = 0.0;
+		double newX1 = 0.0;
+		double newX2 = 0.0;
+
+		if (isYInverted()) {
+			newY1 = y1 + this.getHeight() / zoom - ((y1 - initY1) * 2.0);
+			newY2 = newY1 - this.getHeight() / zoom;
+		} else {
+			newY1 = y1;
+			newY2 = y1 + this.getHeight() / zoom;
+		}
+
+		if (isXInverted()) {
+			newX1 = x1 + this.getWidth() / zoom - ((x1 - initX1) * 2.0);
+			newX2 = newX1 - this.getWidth() / zoom;
+		} else {
+			newX1 = x1;
+			newX2 = x1 + this.getWidth() / zoom;
+		}
+
+		if ((Double.isNaN(newX1)) || (Double.isNaN(newY1)))
+			return;
+
+		if (iClient != null)
+			try {
+				errorDrawing = false;
+				iClient.drawImage(getCacheGraphics(), newX1, newY1, newX2, newY2, zoom, this.getWidth(), this.getHeight());
+			} catch (ImageUnavailableException e) {
+				getCacheGraphics().setColor(new Color(224, 224, 224));
+				getCacheGraphics().fillRect(0, 0, width, height);
+				errorDrawing = true;
+				errorDrawingMsg = e.getMessage();
+			}
+	}
+
+	private Image getWidgetImage() {
+		int width2 = getBounds().width;
+		int height2 = getBounds().height;
+		if (width2 <= 0)
+			width2 = 1;
+		if (height2 <= 0)
+			height2=1;
+
+		if ((width != width2) || (height != height2)) {
+			image = createImage(width2, height2);
+			imageCache = createImage(width2, height2);
+			if (image == null)
+				return null;
+			widgetGraphics = (Graphics2D) image.getGraphics();
+			cacheGraphics = (Graphics2D) imageCache.getGraphics();
+
+			RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+			hints.add(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
+			cacheGraphics.setRenderingHints(hints);
+		}
+
+		width = width2;
+		height = height2;
+		return image;
+	}
+
+	private Graphics2D getWidgetGraphics() {
+		getWidgetImage();
+		return widgetGraphics;
+	}
+
+	private Graphics2D getCacheGraphics() {
+		getWidgetImage();
+		return cacheGraphics;
+	}
+
+	/**
+	 * Redibujar el componente en el graphics temporal
+	 */
+	private void redrawBuffer(int x, int y) {
+		if (showBackground) {
+			for (int i = -2; ((i - 2) * 4) <= width; i++) {
+				for (int j = -2; ((j - 2) * 4) <= height; j++) {
+					if ((i + j) % 2 == 0)
+						getWidgetGraphics().setColor(Color.white);
+					else
+						getWidgetGraphics().setColor(getBackgroundColor());
+					getWidgetGraphics().fillRect((i * 4) + (x % 8), (j * 4) + (y % 8), 4, 4);
+				}
+			}
+		} else {
+			getWidgetGraphics().setColor(Color.white);
+			getWidgetGraphics().fillRect(0, 0, width, height);
+		}
+
+		getWidgetGraphics().drawImage(imageCache, x, y, null);
+
+		if (errorDrawing) {
+			paintError((Graphics2D) getWidgetGraphics());
+		} else {
+			if (showHelp) {
+				paintHelp((Graphics2D) getWidgetGraphics());
+			} else {
+				getWidgetGraphics().drawImage(getIconHelp().getImage(), width - getIconHelp().getIconWidth() - 4, 3, null);
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#paint(java.awt.Graphics)
+	 */
+	public void paint(Graphics g) {
+		if (autoAdjusted) updateDimensions();
+		Graphics2D g2d = (Graphics2D) g;
+		RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+		hints.add(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
+		g2d.setRenderingHints(hints);
+
+		updateImageCache(false);
+
+		redrawBuffer(0, 0);
+
+		if (image != null) {
+			if (isEnabled()) {
+				g.drawImage(image, 0, 0, this);
+			} else {
+				// Dibujar en escala de grises y aclarado para cuando esta inactivo
+				BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+
+				Graphics big = bi.createGraphics();
+				big.drawImage(image, 0, 0, this);
+
+				ColorConvertOp colorConvert = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
+				colorConvert.filter(bi, bi);
+
+				big.setColor(new Color(255, 255, 255, 164));
+				big.fillRect(0, 0, width, height);
+
+				g.drawImage(bi, getVisibleRect().x, getVisibleRect().y, this);
+			}
+		}
+	}
+
+	/**
+	 * Redibujar el componente en el graphics temporal y representarlo en el
+	 * componente
+	 */
+	private void refreshImage(int x, int y) {
+		Graphics2D g2d = (Graphics2D) getGraphics();
+		if (g2d == null)
+			return;
+		RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+		hints.add(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
+		g2d.setRenderingHints(hints);
+		redrawBuffer(x, y);
+
+		if (image != null)
+			getGraphics().drawImage(image, 0, 0, this);
+	}
+
+	/**
+	 * Devuelve el icono de cerrar
+	 * @return
+	 */
+	private ImageIcon getIconClose() {
+		if (imageIconClose == null) {
+			imageIconClose = new ImageIcon(ImageNavigator.class.getResource("images/close.png"));
+		}
+		return imageIconClose;
+	}
+
+	/**
+	 * Devuelve el icono de error
+	 * @return
+	 */
+	private ImageIcon getIconError() {
+		if (imageIconError == null) {
+			imageIconError = new ImageIcon(ImageNavigator.class.getResource("images/error.png"));
+		}
+		return imageIconError;
+	}
+
+	/**
+	 * Devuelve el icono ayuda
+	 * @return
+	 */
+	private ImageIcon getIconHelp() {
+		if (imageIconHelp == null) {
+			imageIconHelp = new ImageIcon(ImageNavigator.class.getResource("images/help.png"));
+		}
+		return imageIconHelp;
+	}
+
+	private void paintHelp(Graphics2D g) {
+		int sep = 13;
+		int pos = sep + 1;
+
+		int alto = sep * 8 + 6;
+
+		Image image2 = createImage(width, alto);
+		Graphics2D graphics2 = (Graphics2D) image2.getGraphics();
+
+		RenderingHints hints = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+		hints.add(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
+		graphics2.setRenderingHints(hints);
+
+		alto--;
+
+		Color color1 = new Color(255, 255, 178);
+		Color color2 = new Color(255, 255, 74);
+		graphics2.setPaint(new GradientPaint(0, 0, color1, 0, alto, color2, false));
+		graphics2.fillRect(0, 0, width, alto);
+
+		graphics2.setColor(new Color(0, 0, 0));
+
+		graphics2.setFont(new java.awt.Font("Tahoma", 1, sep - 2));
+
+		graphics2.drawString(Messages.getText("teclas") + ":", 10, pos);
+
+		graphics2.setFont(new java.awt.Font("Tahoma", 0, sep - 2));
+		pos += sep;
+		graphics2.drawString(Messages.getText("ayuda_c"), 20, pos);
+		pos += sep;
+		graphics2.drawString(Messages.getText("ayuda_0"), 20, pos);
+		pos += sep;
+		graphics2.drawString(Messages.getText("ayuda_1_5"), 20, pos);
+		pos += sep;
+		graphics2.drawString(Messages.getText("ayuda_more_less"), 20, pos);
+		pos += sep;
+		graphics2.drawString(Messages.getText("ayuda_wheel"), 20, pos);
+		pos += sep;
+		graphics2.drawString(Messages.getText("ayuda_background"), 20, pos);
+		pos += sep;
+		graphics2.drawString(Messages.getText("ayuda_h"), 20, pos);
+
+		graphics2.setColor(new Color(185, 185, 185));
+		graphics2.drawLine(0, alto, width, alto);
+
+		graphics2.drawImage(getIconClose().getImage(), width - getIconClose().getIconWidth() - 4, 3, null);
+
+		AlphaComposite myAlpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.7f);
+		g.setComposite(myAlpha);
+
+		g.drawImage(image2, 0, 0, this);
+
+		myAlpha = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0f);
+		g.setComposite(myAlpha);
+	}
+	
+	private ArrayList<String> splitString4Width(Graphics2D g, String msg, int width) {
+		String words[] = msg.split(" ");
+
+		ArrayList<String> newString = new ArrayList<String>();
+		String aux = "";
+		for (int i = 0; i < words.length; i++) {
+			if (aux.length() == 0) {
+				aux = words[i];
+				continue;
+			}
+			if (g.getFontMetrics().getStringBounds(aux + " " + words[i], g).getWidth() <= width) {
+				aux += " " + words[i];
+				continue;
+			}
+
+			newString.add(aux);
+			aux = words[i];
+		}
+		newString.add(aux);
+
+		return newString;
+	}
+
+	private ArrayList<String> splitString4Intro(Graphics2D g, String msg, int width) {
+		String words[] = msg.split("\n");
+		ArrayList<String> newString = new ArrayList<String>();
+		for (int i = 0; i < words.length; i++) {
+			ArrayList<String> more = splitString4Width(g, words[i], width);
+			for (int j = 0; j < more.size(); j++) {
+				newString.add(more.get(j));
+			}
+		}
+
+		return newString;
+	}
+	
+	private void paintError(Graphics2D g) {
+		ArrayList<String> errors = splitString4Intro(g, errorDrawingMsg, width - 30);
+
+		int size = errors.size();
+		if (size < 6)
+			size = 6;
+		
+		int sep = 13;
+		int pos = sep + 2;
+
+		int alto = sep * size + 8;
+
+		Image image2 = createImage(width, alto);
+		Graphics2D graphics2 = (Graphics2D) image2.getGraphics();
+
+		alto--;
+
+		Color color1 = new Color(255, 152, 152);
+		Color color2 = new Color(255, 100, 100);
+		graphics2.setPaint(new GradientPaint(0, 0, color1, 0, alto, color2, false));
+		graphics2.fillRect(0, 0, width, alto);
+
+		graphics2.setColor(new Color(0, 0, 0));
+
+		graphics2.setFont(new java.awt.Font("Tahoma", 0, sep - 2));
+
+		for (int i=0; i<errors.size(); i++) { 
+			graphics2.drawString((String) errors.get(i), 24, pos);
+			pos+=sep;
+		}
+		
+		graphics2.drawImage(getIconError().getImage(), 4, 4, null);
+
+		graphics2.setColor(new Color(185, 185, 185));
+		graphics2.drawLine(0, alto, width, alto);
+
+		g.drawImage(image2, 0, 0, this);
+	}
+
+
+	Point mouse = null;
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+	 */
+	public void mousePressed(MouseEvent e) {
+		if (!isInteractiveEnabled())
+			return;
+		requestFocus();
+
+		if ((e.getX() > (width - 20)) && (e.getY() < 20))
+			return;
+
+		if ((e.getButton() != MouseEvent.BUTTON1) && (e.getButton() != MouseEvent.BUTTON2))
+			return;
+
+		// Oscurece la imagen cuando se mueve
+		Color gris = new Color(0, 0, 0, 16);
+		getCacheGraphics().setColor(gris);
+		getCacheGraphics().fillRect(0, 0, width-1, height-1);
+
+		// Pone un borde a la imagen cuando se mueve
+		getCacheGraphics().setColor(Color.gray);
+		getCacheGraphics().drawRect(0, 0, width-1, height-1);
+
+		mouse = new Point(e.getX(), e.getY());
+		changePos(e.getX(), e.getY());
+		autoAdjusted = false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
+	 */
+	public void mouseDragged(MouseEvent e) {
+		if (!isInteractiveEnabled())
+			return;
+		changePos(e.getX(), e.getY());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
+	 */
+	public void mouseReleased(MouseEvent e) {
+		if (!isInteractiveEnabled())
+			return;
+		if (mouse != null) {
+			x1 = x1 - ((e.getX() - mouse.getX())/zoom);
+			y1 = y1 - ((e.getY() - mouse.getY())/zoom);
+			updateImageCache(true);
+			refreshImage(0, 0);
+		}
+		mouse = null;
+	}
+
+	private void changePos(int x, int y) {
+		if (mouse != null)
+			refreshImage((int) (x - mouse.getX()), (int) (y - mouse.getY()));
+	}
+
+	/**
+	 * Evento de la rueda del rat�n para hacer Zoom In o Zoom Out en la posici�n
+	 * del puntero.
+	 */
+	public void mouseWheelMoved(MouseWheelEvent e) {
+		if (!isInteractiveEnabled())
+			return;
+
+		if (e.getWheelRotation() > 0) {
+			ZoomOut(isXInverted() ? this.getWidth() - e.getX() : e.getX(), isYInverted() ? this.getHeight() - e.getY() : e.getY());
+			autoAdjusted = false;
+		}
+		if (e.getWheelRotation() < 0) {
+			ZoomIn(isXInverted() ? this.getWidth() - e.getX() : e.getX(), isYInverted() ? this.getHeight() - e.getY() : e.getY());
+			autoAdjusted = false;
+		}
+	}
+
+	/**
+	 * Obtener si el eje de las Y esta invertido
+	 * @return
+	 */
+	private boolean isYInverted() {
+		return yInverted;
+	}
+
+	/**
+	 * Obtener si el eje de las X esta invertido
+	 * @return
+	 */
+	private boolean isXInverted() {
+		return xInverted;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
+	 */
+	public void mouseMoved(MouseEvent e) {
+		if (!isInteractiveEnabled())
+			return;
+		if ((e.getX() > (width - 20)) && (e.getY() < 20)) {
+			setCursor(new Cursor(Cursor.HAND_CURSOR));
+			if (showHelp)
+				setToolTipText(Messages.getText("cerrar"));
+			else
+				setToolTipText(Messages.getText("ayuda"));
+		} else {
+			setCursor(new Cursor(Cursor.MOVE_CURSOR));
+			setToolTipText(null);
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+	 */
+	public void mouseClicked(MouseEvent e) {
+		if (!isInteractiveEnabled())
+			return;
+		if ((e.getX() > (width - 20)) && (e.getY() < 20))
+			callShowHelp();
+	}
+
+	public void keyReleased(KeyEvent e) {}
+	public void keyTyped(KeyEvent e) {}
+	public void mouseEntered(MouseEvent e) {}
+	public void mouseExited(MouseEvent e) {}
+
+	/**
+	 * Define el color de los recuadros del fondo
+	 *
+	 * @param backgroundColor the backgroundColor to set
+	 */
+	public void setBackgroundColor(Color backgroundColor) {
+		this.backgroundColor = backgroundColor;
+	}
+
+	/**
+	 * Devuelve el color de los recuadros del fondo
+	 * @return the backgroundColor
+	 */
+	public Color getBackgroundColor() {
+		return backgroundColor;
+	}
+
+	/**
+	 * Devuelve si se esta mostrando o no la cuadricula de fondo.
+	 * @return the showBackground
+	 */
+	public boolean isShowBackground() {
+		return showBackground;
+	}
+
+	/**
+	 * Define si se muestra o no la cuadricula de fondo. Util para imagenes
+	 * transparentes
+	 * @param showBackground the showBackground to set
+	 */
+	public void setShowBackground(boolean showBackground) {
+		this.showBackground = showBackground;
+		updateImageCache(true);
+		refreshImage(0, 0);
+	}
+	
+	/**
+	 * Devuelve si se pueden gestionar los eventos segun el estado del componente
+	 * @return
+	 */
+	private boolean isInteractiveEnabled() {
+		if (isEnabled() && !errorDrawing)
+			return true;
+		return false;
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.swing.JComponent#setEnabled(boolean)
+	 */
+	public void setEnabled(boolean enabled) {
+		super.setEnabled(enabled);
+		updateImageCache(true);
+		refreshImage(0, 0);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/imagenavigator/ImageNavigator.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/ButtonBarContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/ButtonBarContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/ButtonBarContainer.java	(revision 38348)
@@ -0,0 +1,180 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.buttonbar;
+
+import java.awt.FlowLayout;
+import java.util.ArrayList;
+
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+
+public class ButtonBarContainer extends JPanel {
+	private static final long serialVersionUID = -2556987128553063939L;
+
+	private ArrayList<JButton> buttons = new ArrayList<JButton>();
+
+	private int       wComp              = 400;
+	private int       hComp              = 26;
+	private String    pathToImages       = "images/";
+	private boolean   disableAllControls = false;
+	private boolean[] buttonsState       = null;
+
+
+	/**
+	 * This is the default constructor
+	 */
+	public ButtonBarContainer() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * This method initializes this
+	 *
+	 * @return void
+	 */
+	private void initialize() {
+		FlowLayout flowLayout = new FlowLayout();
+		flowLayout.setHgap(0);
+		flowLayout.setVgap(0);
+		this.setLayout(flowLayout);
+		this.setSize(wComp, hComp);
+		}
+
+
+	/**
+	 * A�ade un boton al ArrayList de los botones.
+	 *
+	 * @param iconName: nombre del icono asignado al boton. La imagen tendr�a que
+	 * 					estar dentro de la carpeta "images/"
+	 * @param tip: tip del boton;
+	 * @param order: orden que ocupar� el boton dentro del control
+	 */
+	public void addButton(String iconName, String tip, int order){
+		JButton bt = new JButton();
+
+		bt.setPreferredSize(new java.awt.Dimension(22, 22));
+		try{
+			if (iconName != null)
+				bt.setIcon(new ImageIcon(getClass().getResource(pathToImages + iconName)));
+		}catch(NullPointerException exc){
+			//El icono no existe -> No se a�ade ninguno
+		}
+
+		if(tip != null)
+			bt.setToolTipText(tip);
+
+		buttons.add(order, bt);
+		addList();
+
+	}
+
+	/**
+	 * Elimina el bot�n correspondiente al indice que le pasamos.
+	 * @param index
+	 */
+	public void delButton(int index){
+		buttons.remove(index);
+		this.removeAll();
+		addList();
+	}
+
+	/**
+	 * A�ade en el panel los botones que tenemos en el ArrayList.
+	 *
+	 */
+	public void addList(){
+		for(int i = 0 ; i < buttons.size() ; i++){
+			this.add((JButton)buttons.get(i));
+		}
+	}
+
+
+	/**
+	 * Esta funci�n deshabilita todos los controles y guarda sus valores
+	 * de habilitado o deshabilitado para que cuando se ejecute restoreControlsValue
+	 * se vuelvan a quedar como estaba
+	 */
+	public void disableAllControls(){
+		if(!disableAllControls){
+			disableAllControls = true;
+
+			buttonsState = new boolean[buttons.size()];
+
+
+
+			for (int i = 0 ; i < buttons.size() ; i++){
+
+				//Salvamos los estados
+				buttonsState[i] = ((JButton)buttons.get(i)).isEnabled();
+				//Desactivamos controles
+				((JButton)buttons.get(i)).setEnabled(false);
+			}
+		}
+	}
+
+	/**
+	 * Esta funci�n deja los controles como estaban al ejecutar la funci�n
+	 * disableAllControls
+	 */
+	public void restoreControlsValue(){
+		if(disableAllControls){
+			disableAllControls = false;
+
+			for(int i = 0 ; i < buttons.size() ; i++){
+				((JButton)buttons.get(i)).setEnabled(buttonsState[i]);
+			}
+		}
+	}
+
+	/**
+	 * M�todo para acceder a los botones del control;
+	 * @param index
+	 * @return
+	 */
+	public JButton getButton(int index){
+		return (JButton)buttons.get(index);
+	}
+
+	/**
+	 * M�todo para establecer la posici�n de los botones dentro del control.
+	 * @param align: "left" o "right"
+	 */
+	public void setButtonAlignment(String align){
+		FlowLayout layout = new FlowLayout();
+		layout.setHgap(2);
+		layout.setVgap(0);
+
+		if (align.equals("right"))
+			layout.setAlignment(FlowLayout.RIGHT);
+		else
+			layout.setAlignment(FlowLayout.LEFT);
+
+		this.setLayout(layout);
+	}
+
+	public void setComponentBorder(boolean br){
+		if(br)
+			this.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
+		if(!br)
+			this.setBorder(javax.swing.BorderFactory.createEmptyBorder());
+	}
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/ButtonBarContainer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/up.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/up.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/down.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/down.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/fullExtent.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/fullExtent.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/import.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/import.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/rois.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/rois.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/selectTool.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/selectTool.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/export.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/buttonbar/images/export.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelWithLogo.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelWithLogo.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelWithLogo.java	(revision 38348)
@@ -0,0 +1,142 @@
+package org.gvsig.gui.beans.wizard;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSeparator;
+
+import jwizardcomponent.CancelAction;
+import jwizardcomponent.DefaultJWizardComponents;
+import jwizardcomponent.FinishAction;
+import jwizardcomponent.common.SimpleButtonPanel;
+
+import org.gvsig.gui.beans.wizard.panel.OptionPanel;
+import org.gvsig.gui.beans.wizard.panel.OptionPanelContainer;
+
+public class WizardPanelWithLogo extends JPanel {
+
+    private static final long serialVersionUID = 7506729926181935234L;
+    public final static int ACTION_PREVIOUS = 0;
+    public final static int ACTION_NEXT = 1;
+    public final static int ACTION_CANCEL = 2;
+    public final static int ACTION_FINISH = 3;
+
+    DefaultJWizardComponents wizardComponents;
+
+    JPanel buttonPanel;
+    JLabel statusLabel = new JLabel();
+
+    ImageIcon logo;
+
+    public WizardPanelWithLogo(ImageIcon logo) {
+        this.logo = logo;
+        wizardComponents = new DefaultJWizardComponents();
+        init();
+    }
+
+    public WizardPanelWithLogo() {
+        wizardComponents = new DefaultJWizardComponents();
+        this.logo = null;
+        init();
+    }
+
+    private void init() {
+
+        this.setLayout(new BorderLayout());
+        if (logo != null) {
+            JPanel logoPanel = new JPanel();
+            logoPanel.add(new JLabel(logo));
+            logoPanel.setBackground(Color.WHITE);
+            this.add(logoPanel, BorderLayout.WEST);
+        }
+
+        this.add(wizardComponents.getWizardPanelsContainer(),
+            BorderLayout.CENTER);
+
+        JPanel auxPanel = new JPanel(new BorderLayout());
+        auxPanel.add(new JSeparator(), BorderLayout.NORTH);
+
+        buttonPanel = new SimpleButtonPanel(wizardComponents);
+        auxPanel.add(buttonPanel);
+        this.add(auxPanel, BorderLayout.SOUTH);
+
+        wizardComponents.setFinishAction(new FinishAction(wizardComponents) {
+
+            public void performAction() {
+                // dispose();
+            }
+        });
+        wizardComponents.setCancelAction(new CancelAction(wizardComponents) {
+
+            public void performAction() {
+                // dispose();
+            }
+        });
+    }
+
+    public void doAction(int action) {
+        switch (action) {
+        case ACTION_NEXT:
+            getWizardComponents().getNextButton().getActionListeners()[0]
+                .actionPerformed(null);
+            break;
+        case ACTION_PREVIOUS:
+            getWizardComponents().getBackButton().getActionListeners()[0]
+                .actionPerformed(null);
+            break;
+        }
+    }
+
+    public DefaultJWizardComponents getWizardComponents() {
+        return wizardComponents;
+    }
+
+    public void setWizardComponents(DefaultJWizardComponents aWizardComponents) {
+        wizardComponents = aWizardComponents;
+    }
+
+    @Override
+    public void show() {
+        wizardComponents.updateComponents();
+        super.setVisible(true);
+    }
+
+    public void addOptionPanel(OptionPanel optionPanel) {
+        getWizardComponents().addWizardPanel(
+            new OptionPanelContainer(getWizardComponents(), optionPanel));
+    }
+
+    public void setNextButtonEnabled(boolean isEnabled) {
+        getWizardComponents().getNextButton().setEnabled(isEnabled);
+    }
+
+    public void setFinishButtonEnabled(boolean isVisible) {
+        getWizardComponents().getFinishButton().setEnabled(isVisible);
+    }
+
+    public void setCancelButtonEnabled(boolean isVisible) {
+        getWizardComponents().getCancelButton().setEnabled(isVisible);
+    }
+
+    private void setFinishAction(FinishAction finishAction) {
+        getWizardComponents().setFinishAction(finishAction);
+    }
+
+    private void setCancelAction(CancelAction cancelAction) {
+        getWizardComponents().setCancelAction(cancelAction);
+    }
+
+    public void setWizardListener(WizardPanel wizardPanel) {
+        setFinishAction(new WizardPanelFinishAction(getWizardComponents(),
+            wizardPanel));
+        setCancelAction(new WizardPanelCancelAction(getWizardComponents(),
+            wizardPanel));
+    }
+
+    public void setBackButtonEnabled(boolean isEnabled) {
+        getWizardComponents().getBackButton().setEnabled(isEnabled);
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelWithLogo.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelFinishAction.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelFinishAction.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelFinishAction.java	(revision 38348)
@@ -0,0 +1,55 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+*
+* Copyright (C) 2007-2008 Infrastructures and Transports Department
+* of the Valencian Government (CIT)
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+* MA  02110-1301, USA.
+* 
+*/
+
+/*
+* AUTHORS (In addition to CIT):
+* 2010 {Prodevelop}   {Task}
+*/
+ 
+package org.gvsig.gui.beans.wizard;
+
+import jwizardcomponent.FinishAction;
+import jwizardcomponent.JWizardComponents;
+
+/**
+ * <p>
+ * This class links the click action in the cancel button method
+ * and calls the {@link WizardPanelActionListener#finish(WizardPanel)}
+ * method.
+ * </p>
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public class WizardPanelFinishAction extends FinishAction{
+	private WizardPanel wizardPanel = null;
+	
+	public WizardPanelFinishAction(JWizardComponents wizardComponents, WizardPanel wizardPanel) {
+		super(wizardComponents);
+		this.wizardPanel = wizardPanel;
+	}
+
+	public void performAction() {
+		if (wizardPanel.getWizardPanelActionListener() != null){		
+			wizardPanel.getWizardPanelActionListener().finish(wizardPanel);
+		}
+	}
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelFinishAction.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/NotContinueWizardException.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/NotContinueWizardException.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/NotContinueWizardException.java	(revision 38348)
@@ -0,0 +1,69 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+*
+* Copyright (C) 2007-2008 Infrastructures and Transports Department
+* of the Valencian Government (CIT)
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+* MA  02110-1301, USA.
+* 
+*/
+
+/*
+* AUTHORS (In addition to CIT):
+* 2010 {Prodevelop}   {Task}
+*/
+ 
+package org.gvsig.gui.beans.wizard.panel;
+
+import java.awt.Component;
+
+import org.gvsig.tools.exception.BaseException;
+
+/**
+ * <p>
+ * This exception is thrown if the wizard can not continue by any reason.
+ * </p>
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public class NotContinueWizardException extends BaseException{
+	private static final long serialVersionUID = -850687874081155952L;
+	private static final String KEY = "not_continue_with_wizard";	
+	private Component component = null;
+	private boolean displayMessage = true;
+	
+	/**
+	 * @see BaseException#BaseException(String, Throwable, String, long)
+	 */
+	public NotContinueWizardException(String message, Throwable cause, Component component) {
+		super(message, cause, KEY, serialVersionUID);		
+		this.component = component;
+	}
+	
+	public NotContinueWizardException(String message, Component component, boolean displayMessage) {
+	    super(message, KEY, serialVersionUID);
+	    this.component = component;
+	    this.displayMessage = displayMessage;
+    }
+	
+	public Component getComponent() {
+		return component;
+	}
+	
+	public boolean displayMessage(){
+	    return displayMessage;
+	}
+
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/NotContinueWizardException.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/OptionPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/OptionPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/OptionPanel.java	(revision 38348)
@@ -0,0 +1,70 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+*
+* Copyright (C) 2007-2008 Infrastructures and Transports Department
+* of the Valencian Government (CIT)
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+* MA  02110-1301, USA.
+* 
+*/
+
+/*
+* AUTHORS (In addition to CIT):
+* 2010 {Prodevelop}   {Task}
+*/
+ 
+package org.gvsig.gui.beans.wizard.panel;
+
+import javax.swing.JPanel;
+
+
+/**
+ * <p>
+ * This interface has to be implemented by all the classes
+ * that are a part of the wizard. 
+ * </p>
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public interface OptionPanel {
+	/**
+	 * Returns a title for the panel.
+	 * @return
+	 * The panel title.
+	 */
+	public String getPanelTitle();
+
+	/**
+	 * This method is called when the next button is clicked
+	 */
+	public void nextPanel() throws NotContinueWizardException;
+
+	/**
+	 * This method is called when the last button is clicked
+	 */
+	public void lastPanel();
+	
+	/**
+	 * This method is called when the panel is displayed
+	 */
+	public void updatePanel();
+		
+	/**
+	 * Return the panel to display.
+	 * @return
+	 * The panel.
+	 */
+	public JPanel getJPanel();
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/OptionPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/SelectFileOptionPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/SelectFileOptionPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/SelectFileOptionPanel.java	(revision 38348)
@@ -0,0 +1,117 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+/*
+ * AUTHORS (In addition to CIT):
+ * 2010 {Prodevelop}   {Task}
+ */
+
+package org.gvsig.gui.beans.wizard.panel;
+
+import java.awt.BorderLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.io.File;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+
+import org.gvsig.gui.beans.openfile.FileTextField;
+
+/**
+ * <p>
+ * This panel implements a panel to select a file that can be added to a wizard.
+ * </p>
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public class SelectFileOptionPanel extends JPanel implements DocumentListener{
+	private JLabel fileLabel;
+	private FileTextField fileTextField;
+	private javax.swing.JPanel northPanel;
+
+	public SelectFileOptionPanel(String fileText) {
+		super();		
+		initComponents();
+		if (fileText != null){
+		    fileLabel.setText(fileText + ":");
+		}
+		initListeners();
+	}
+	
+    private void initListeners() {	
+		Object obj = fileTextField.getComponent(0);
+		if ((obj != null) && (obj instanceof JTextField)) {
+			((JTextField)obj).getDocument().addDocumentListener(this);	
+		}
+	}
+
+	private void initComponents() {
+		java.awt.GridBagConstraints gridBagConstraints;
+
+		northPanel = new JPanel();
+		fileLabel = new JLabel();
+		fileTextField = new FileTextField();
+
+		setLayout(new BorderLayout());
+
+		northPanel.setLayout(new GridBagLayout());
+
+		northPanel.add(fileLabel, new GridBagConstraints());
+
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 0;
+		gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.weightx = 1.0;
+		northPanel.add(fileTextField, gridBagConstraints);
+
+		add(northPanel, BorderLayout.NORTH);
+	}
+
+	public File getSelectedFile(){
+		return fileTextField.getSelectedFile();
+	}
+
+	public String getSelectedFileName(){
+		return fileTextField.getSelectedFile().getAbsolutePath();
+	}
+
+	protected void checkNextButtonEnabled(){
+
+	}
+
+	public void changedUpdate(DocumentEvent e) {
+		checkNextButtonEnabled();		
+	}
+
+	public void insertUpdate(DocumentEvent e) {
+		checkNextButtonEnabled();			
+	}
+
+	public void removeUpdate(DocumentEvent e) {
+		checkNextButtonEnabled();			
+	}   
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/SelectFileOptionPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/OptionPanelContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/OptionPanelContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/OptionPanelContainer.java	(revision 38348)
@@ -0,0 +1,110 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+/*
+ * AUTHORS (In addition to CIT):
+ * 2010 {Prodevelop}   {Task}
+ */
+
+package org.gvsig.gui.beans.wizard.panel;
+
+import java.awt.BorderLayout;
+
+import javax.swing.JOptionPane;
+
+import jwizardcomponent.JWizardComponents;
+import jwizardcomponent.JWizardPanel;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * <p>
+ * This class is a wizard panel that displays the panel returned by the
+ * {@link OptionPanel#getJPanel()} method int the top of the wizard. It also
+ * call the other methods when the user clicks a button.
+ * <p>
+ * 
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public class OptionPanelContainer extends JWizardPanel {
+
+    private static final long serialVersionUID = 3947658150325230122L;
+    private OptionPanel optionPanel = null;
+    private static final Logger log =
+        LoggerFactory.getLogger(OptionPanelContainer.class);
+
+    public OptionPanelContainer(JWizardComponents wizardComponents,
+        OptionPanel optionPanel) {
+        super(wizardComponents);
+        this.optionPanel = optionPanel;
+        setLayout(new BorderLayout());
+        setBorder(javax.swing.BorderFactory.createCompoundBorder(
+            javax.swing.BorderFactory.createTitledBorder(optionPanel
+                .getPanelTitle()), javax.swing.BorderFactory.createEmptyBorder(
+                5, 5, 5, 5)));
+        add(optionPanel.getJPanel(), BorderLayout.CENTER);
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see jwizardcomponent.JWizardPanel#back()
+     */
+    @Override
+    public void back() {
+        optionPanel.lastPanel();
+        super.back();
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see jwizardcomponent.JWizardPanel#next()
+     */
+    @Override
+    public void next() {
+        try {
+            optionPanel.nextPanel();
+            super.next();
+        } catch (NotContinueWizardException e) {
+            // this is not an error and not need to raise a error or
+            // warning in the log.
+            log.info("It is not possible to continue with the wizard", e);
+            if (e.displayMessage()) {
+                JOptionPane.showMessageDialog(e.getComponent(), e
+                    .getLocalizedMessageStack());
+            }
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see jwizardcomponent.JWizardPanel#update()
+     */
+    @Override
+    public void update() {
+        optionPanel.updatePanel();
+        super.update();
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/OptionPanelContainer.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/ProgressOptionPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/ProgressOptionPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/ProgressOptionPanel.java	(revision 38348)
@@ -0,0 +1,113 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+*
+* Copyright (C) 2007-2008 Infrastructures and Transports Department
+* of the Valencian Government (CIT)
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+* MA  02110-1301, USA.
+* 
+*/
+
+/*
+* AUTHORS (In addition to CIT):
+* 2010 {Prodevelop}   {Task}
+*/
+ 
+package org.gvsig.gui.beans.wizard.panel;
+
+import java.awt.BorderLayout;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+
+/**
+ * <p>
+ * This panel implements a progress bar that can be added to a wizard.
+ * <p>
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public class ProgressOptionPanel extends JPanel {
+	private JLabel pluginLabel;
+	private JProgressBar progressBar;
+	private JLabel progressLabel;
+
+	public ProgressOptionPanel() {
+		super();		
+		initComponents();		
+	}
+
+	private void initComponents() {
+		java.awt.GridBagConstraints gridBagConstraints;
+
+		JPanel northPanel = new JPanel();
+		northPanel.setLayout(new GridBagLayout());
+		
+		progressBar = new JProgressBar();
+		progressLabel = new JLabel();
+		pluginLabel = new JLabel();
+
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 2;
+		gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.weightx = 1.0;
+		gridBagConstraints.insets = new Insets(2, 2, 2, 2);
+		northPanel.add(progressBar, gridBagConstraints);
+
+		progressLabel.setFont(new Font("DejaVu Sans", 0, 11)); // NOI18N
+		progressLabel.setText("task");
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 1;
+		gridBagConstraints.anchor = GridBagConstraints.WEST;
+		gridBagConstraints.insets = new Insets(5, 2, 2, 2);
+		northPanel.add(progressLabel, gridBagConstraints);
+
+		pluginLabel.setText("plugin");
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.anchor = GridBagConstraints.WEST;
+		gridBagConstraints.insets = new Insets(5, 2, 2, 2);
+		northPanel.add(pluginLabel, gridBagConstraints);
+		
+	    setLayout(new BorderLayout());
+		add(northPanel, BorderLayout.NORTH);
+	}
+
+	/**
+	 * @param plugin the plugin to set
+	 */
+	public void setMainText(String plugin) {
+		this.pluginLabel.setText(plugin);
+	}	
+	
+	public void setSecondaryText(String plugin) {
+		this.progressLabel.setText(plugin);
+	}		
+	
+	public void setProgress(int progress){
+		progressBar.setValue(progress);
+	}	
+	
+	public void setExceptionText(String text, Exception e) {
+		progressLabel.setText(text);		
+	}
+}
+
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/panel/ProgressOptionPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanel.java	(revision 38348)
@@ -0,0 +1,51 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+*
+* Copyright (C) 2007-2008 Infrastructures and Transports Department
+* of the Valencian Government (CIT)
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+* MA  02110-1301, USA.
+* 
+*/
+
+/*
+* AUTHORS (In addition to CIT):
+* 2010 {Prodevelop}   {Task}
+*/
+ 
+package org.gvsig.gui.beans.wizard;
+
+
+/**
+ * This interface must be implemented by all the wizards. It just have a 
+ * methods to manage the events that the wizard throws.
+ * 
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public interface WizardPanel {	
+	
+	/**
+	 * @param wizardActionListener
+	 * sets the listener for the action events.
+	 */
+	public void setWizardPanelActionListener(WizardPanelActionListener wizardActionListener);
+	
+	/**
+	 * @return
+	 * the listener for the action events
+	 */
+	public WizardPanelActionListener getWizardPanelActionListener();
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelActionListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelActionListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelActionListener.java	(revision 38348)
@@ -0,0 +1,53 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+*
+* Copyright (C) 2007-2008 Infrastructures and Transports Department
+* of the Valencian Government (CIT)
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+* MA  02110-1301, USA.
+* 
+*/
+
+/*
+* AUTHORS (In addition to CIT):
+* 2010 {Prodevelop}   {Task}
+*/
+ 
+package org.gvsig.gui.beans.wizard;
+/**
+ * <p>
+ * Listener for the wizard. It has methods to manage the events that can
+ * be thrown by the wizard.
+ * </p> 
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public interface WizardPanelActionListener {
+
+	/**
+	 * This event is thrown when the finish button is clicked.
+	 * @param wizardPanel
+	 * The wizard that has thrown the event.
+	 */
+	public void finish(WizardPanel wizardPanel);
+	
+	/**
+	 * This event is thrown when the cancel button is clicked.
+	 * @param wizardPanel
+	 * The wizard that has thrown the event.
+	 */
+	public void cancel(WizardPanel wizardPanel);
+	
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelActionListener.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelCancelAction.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelCancelAction.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelCancelAction.java	(revision 38348)
@@ -0,0 +1,55 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+*
+* Copyright (C) 2007-2008 Infrastructures and Transports Department
+* of the Valencian Government (CIT)
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+* MA  02110-1301, USA.
+* 
+*/
+
+/*
+* AUTHORS (In addition to CIT):
+* 2010 {Prodevelop}   {Task}
+*/
+ 
+package org.gvsig.gui.beans.wizard;
+
+import jwizardcomponent.CancelAction;
+import jwizardcomponent.JWizardComponents;
+
+/**
+ * <p>
+ * This class links the click action in the cancel button method
+ * and calls the {@link WizardPanelActionListener#cancel(WizardPanel)}
+ * method.
+ * </p>
+ * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
+ */
+public class WizardPanelCancelAction extends CancelAction{
+	private WizardPanel wizardPanel = null;
+	
+	public WizardPanelCancelAction(JWizardComponents wizardComponents, WizardPanel wizardPanel) {
+		super(wizardComponents);
+		this.wizardPanel = wizardPanel;
+	}
+
+	public void performAction() {
+		if (wizardPanel.getWizardPanelActionListener() != null){
+			wizardPanel.getWizardPanelActionListener().cancel(wizardPanel);
+		}
+	}
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/wizard/WizardPanelCancelAction.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorchooser/ColorChooserListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorchooser/ColorChooserListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorchooser/ColorChooserListener.java	(revision 38348)
@@ -0,0 +1,38 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.colorchooser;
+
+import java.util.EventListener;
+import java.util.EventObject;
+
+public interface ColorChooserListener extends EventListener {
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente. Nunca
+	 * se dispara mientras se hace un dragged con el rat�n.
+	 * @param e
+	 */
+	public void actionValueChanged(EventObject e);
+
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente mientras se
+	 * hace un dragged con el rat�n.
+	 * @param e
+	 */
+	public void actionValueDragged(EventObject e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorchooser/ColorChooserListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorchooser/ColorChooser.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorchooser/ColorChooser.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorchooser/ColorChooser.java	(revision 38348)
@@ -0,0 +1,183 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.colorchooser;
+
+import java.awt.Color;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.util.ArrayList;
+import java.util.EventObject;
+import java.util.Iterator;
+
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.checkslidertext.CheckColorSliderTextContainer;
+import org.gvsig.gui.beans.doubleslider.DoubleSliderEvent;
+import org.gvsig.gui.beans.doubleslider.DoubleSliderListener;
+/**
+ *
+ * @version 03/08/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ColorChooser extends JPanel implements DoubleSliderListener {
+	private static final long serialVersionUID = 2397304969793748653L;
+
+	private ArrayList<ColorChooserListener> actionCommandListeners = new ArrayList<ColorChooserListener>();
+
+	private CheckColorSliderTextContainer sliderRed   = null;
+	private CheckColorSliderTextContainer sliderGreen = null;
+	private CheckColorSliderTextContainer sliderBlue  = null;
+	private CheckColorSliderTextContainer sliderAlpha = null;
+
+	public ColorChooser() {
+		initialize();
+	}
+
+	private void initialize() {
+		setLayout(new GridBagLayout());
+		sliderRed = new CheckColorSliderTextContainer(0, 255, 0, "R", true);
+		sliderGreen = new CheckColorSliderTextContainer(0, 255, 0, "G", true);
+		sliderBlue = new CheckColorSliderTextContainer(0, 255, 0, "B", true);
+		sliderAlpha = new CheckColorSliderTextContainer(0, 255, 255, "A", true);
+		sliderRed.setCheckboxVisible(false);
+		sliderGreen.setCheckboxVisible(false);
+		sliderBlue.setCheckboxVisible(false);
+		sliderAlpha.setCheckboxVisible(false);
+		sliderRed.addValueChangedListener(this);
+		sliderGreen.addValueChangedListener(this);
+		sliderBlue.addValueChangedListener(this);
+		sliderAlpha.addValueChangedListener(this);
+		setColor(Color.black);
+		updateColors();
+
+		GridBagConstraints gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.weightx = 1.0;
+		add(sliderRed, gridBagConstraints);
+
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 1;
+		gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.weightx = 1.0;
+		add(sliderGreen, gridBagConstraints);
+
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 2;
+		gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.weightx = 1.0;
+		add(sliderBlue, gridBagConstraints);
+
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 3;
+		gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.weightx = 1.0;
+		add(sliderAlpha, gridBagConstraints);
+	}
+
+	public void actionValueChanged(DoubleSliderEvent e) {
+		updateColors();
+		callChangeValue();
+	}
+
+	private void updateColors() {
+		sliderRed.setColor1(new Color(0, sliderGreen.getValue(), sliderBlue.getValue(), sliderAlpha.getValue()), false);
+		sliderRed.setColor2(new Color(255, sliderGreen.getValue(), sliderBlue.getValue(), sliderAlpha.getValue()), true);
+		sliderGreen.setColor1(new Color(sliderRed.getValue(), 0, sliderBlue.getValue(), sliderAlpha.getValue()), false);
+		sliderGreen.setColor2(new Color(sliderRed.getValue(), 255, sliderBlue.getValue(), sliderAlpha.getValue()), true);
+		sliderBlue.setColor1(new Color(sliderRed.getValue(), sliderGreen.getValue(), 0, sliderAlpha.getValue()), false);
+		sliderBlue.setColor2(new Color(sliderRed.getValue(), sliderGreen.getValue(), 255, sliderAlpha.getValue()), true);
+		sliderAlpha.setColor1(new Color(sliderRed.getValue(), sliderGreen.getValue(), sliderBlue.getValue(), 0), false);
+		sliderAlpha.setColor2(new Color(sliderRed.getValue(), sliderGreen.getValue(), sliderBlue.getValue(), 255), true);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.doubleslider.DoubleSliderListener#actionValueDragged(org.gvsig.gui.beans.doubleslider.DoubleSliderEvent)
+	 */
+	public void actionValueDragged(DoubleSliderEvent e) {
+		updateColors();
+		callDraggedValue();
+	}
+
+	public Color getColor() {
+		return new Color(sliderRed.getValue(), sliderGreen.getValue(), sliderBlue.getValue(), sliderAlpha.getValue());
+	}
+
+	public void setColor(Color value) {
+		sliderRed.setValue(value.getRed());
+		sliderGreen.setValue(value.getGreen());
+		sliderBlue.setValue(value.getBlue());
+		sliderAlpha.setValue(value.getAlpha());
+		updateColors();
+	}
+
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addValueChangedListener(ColorChooserListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.swing.JComponent#setEnabled(boolean)
+	 */
+	public void setEnabled(boolean enabled) {
+		super.setEnabled(enabled);
+		sliderRed.setEnabled(enabled);
+		sliderGreen.setEnabled(enabled);
+		sliderBlue.setEnabled(enabled);
+		sliderAlpha.setEnabled(enabled);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeValueChangedListener(ColorChooserListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+
+	/**
+	 * Dispara el evento del cambio del control
+	 */
+	protected void callChangeValue() {
+		Iterator<ColorChooserListener> acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			ColorChooserListener listener = acIterator.next();
+			listener.actionValueChanged(new EventObject(this));
+		}
+	}
+
+	/**
+	 * Dispara el evento del cambio del control
+	 */
+	protected void callDraggedValue() {
+		Iterator<ColorChooserListener> acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			ColorChooserListener listener = acIterator.next();
+			listener.actionValueDragged(new EventObject(this));
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorchooser/ColorChooser.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/ProgressDialog.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/ProgressDialog.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/ProgressDialog.java	(revision 38348)
@@ -0,0 +1,178 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.2  2007-09-12 16:28:23  bsanchez
+ * *** empty log message ***
+ *
+ * Revision 1.1  2007/08/20 08:34:45  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.6  2006/11/28 13:00:54  jmvivo
+ * quitadas dependencias de andami
+ *
+ * Revision 1.5  2006/09/14 08:31:58  cesar
+ * Replace PluginServices.getText by the new Messages bridge class from libUI
+ *
+ * Revision 1.4.2.1  2006/09/13 13:13:19  cesar
+ * Replace PluginServices.getText by the new Messages bridge class from libUI
+ *
+ * Revision 1.4  2006/08/29 07:56:08  cesar
+ * Rename the *View* family of classes to *Window* (ie: SingletonView to SingletonWindow, ViewInfo to WindowInfo, etc)
+ *
+ * Revision 1.3  2006/06/15 15:47:25  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.2  2006/05/19 06:27:09  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.1  2006/05/17 17:20:11  jaume
+ * *** empty log message ***
+ *
+ *
+ */
+package org.gvsig.gui.beans;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JProgressBar;
+
+/** 
+ * It is aimed to have an easy way to show a progres bar dialog. 
+ * Unfortunatelly, it is not finished. Next step would be to
+ * let ProgressDialog implement ProgressListener, to completely
+ * encapsulate the component. Until then, the user has to call
+ * setProgress(int) to make the bar grow up.
+ * 
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ *
+ */
+public class ProgressDialog extends JDialog {  
+  private static final long serialVersionUID = 2325230864829072756L;
+	private JProgressBar jProgressBar = null;
+	private JButton btnCancel = null;
+	private JLabel lblStatus = null;
+	private JLabel lblTask = null;
+	private String jobName;
+	private CancellableComponent cc;
+	private String textMessage;
+
+	public ProgressDialog(CancellableComponent owner, String jobName, int stepAmount) {
+		this(owner, jobName, jobName, stepAmount);
+	}
+	
+	public ProgressDialog(CancellableComponent owner, String jobName, String textMessage, int stepAmount) {
+		super();
+		setTitle(jobName);
+		this.textMessage = textMessage;
+		getJProgressBar().setMinimum(0);
+		getJProgressBar().setMaximum(stepAmount);
+		cc = owner;
+		initialize();
+	}
+
+	/**
+	 * This method initializes this
+	 * 
+	 * @return void
+	 */
+	private void initialize() {
+		lblTask = new JLabel();
+		lblTask.setBounds(10, 12, 280, 20);
+		lblTask.setFont(new java.awt.Font("MS Sans Serif", java.awt.Font.BOLD, 11));
+		lblTask.setText(textMessage);
+		lblStatus = new JLabel();
+		lblStatus.setBounds(10, 63, 280, 20);
+		this.getContentPane().setLayout(null);
+		this.setSize(308, 168);
+		this.getContentPane().add(getJProgressBar(), null);
+		this.getContentPane().add(getBtnCancel(), null);
+		this.getContentPane().add(lblStatus, null);
+		this.getContentPane().add(lblTask, null);
+	}
+
+	/**
+	 * This method initializes jProgressBar	
+	 * 	
+	 * @return javax.swing.JProgressBar	
+	 */    
+	private JProgressBar getJProgressBar() {
+		if (jProgressBar == null) {
+			jProgressBar = new JProgressBar();
+			jProgressBar.setBounds(10, 38, 280, 20);
+		}
+		return jProgressBar;
+	}
+
+	/**
+	 * This method initializes btnCancel	
+	 * 	
+	 * @return javax.swing.JButton	
+	 */    
+	private JButton getBtnCancel() {
+		if (btnCancel == null) {
+			btnCancel = new JButton();
+			btnCancel.setBounds(210, 96, 80, 20);
+			btnCancel.addActionListener(new java.awt.event.ActionListener() { 
+				public void actionPerformed(java.awt.event.ActionEvent e) {
+					//NotificationManager.addInfo("The job was cancelled", null);
+					if (cc!=null)
+						cc.cancel();
+				}
+			});
+			btnCancel.setText(Messages.getText("cancel"));
+		}
+		return btnCancel;
+	}
+	
+	public void setProgress(int step) {
+		jProgressBar.setValue(step);
+	}
+	
+	public void setStatusMessage(String message) {
+		lblStatus.setText(message);
+	}
+
+}  //  @jve:decl-index=0:visual-constraint="10,10"

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/ProgressDialog.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/AbstractFilterQueryJPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/AbstractFilterQueryJPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/AbstractFilterQueryJPanel.java	(revision 38348)
@@ -0,0 +1,960 @@
+package org.gvsig.gui.beans.filterPanel;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.LayoutManager;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Set;
+import java.util.Vector;
+
+import javax.swing.Action;
+import javax.swing.DefaultListModel;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+import javax.swing.JToolTip;
+import javax.swing.JTree;
+import javax.swing.ListModel;
+import javax.swing.text.Document;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeModel;
+import javax.swing.tree.TreeNode;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.controls.MultiLineToolTip;
+import org.gvsig.gui.beans.editabletextcomponent.JEditableTextArea;
+import org.gvsig.gui.beans.filterPanel.filterButtons.FilterButtonsJPanel;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * This abstract class represents the common components of the FilterQuery panels
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public abstract class AbstractFilterQueryJPanel extends AbstractPanel implements Serializable {
+	public static final int DefaultHeight = 280;
+	public static final int DefaultWidth = 490; 
+	
+	protected final int fieldsJPanelHeight = 145;
+	protected final int fieldsJPanelWidth = 145;
+	protected final int valuesJPanelHeight = fieldsJPanelHeight;
+	protected final int valuesJPanelWidth = fieldsJPanelWidth;
+	protected final int defaultBottomJPanelWidth = 480;
+	protected final int defaultBottomJPanelHeight = 110;
+	protected int filterJScrollPaneHeight;
+	protected int filterJScrollPanelWidth;
+	protected final int filterButtonsPanelHeight = FilterButtonsJPanel.default_FilterButtonsJPanelHeight;
+	protected final int filterButtonsPanelWidth = FilterButtonsJPanel.default_FilterButtonsJPanelWidth;
+	protected final int defaultTopJPanelWidth = defaultBottomJPanelWidth;
+	protected final int defaultTopJPanelHeight = 145;
+	protected int fieldsAndValuesJScrollPaneHeight = 110;
+	protected int fieldsAndValuesJScrollPaneWidth = fieldsJPanelWidth;
+	
+	protected JLabelML fieldsJLabel = null;
+	protected JLabelML valuesJLabel = null;
+	protected JPanelML fieldsJPanel = null;
+	protected JPanelML valuesJPanel = null;
+	protected FilterButtonsJPanel filterButtonsJPanel = null;
+	protected JScrollPaneML filterJScrollPane = null;
+	protected JPanelML topJPanel = null;
+	protected JPanelML bottomJPanel = null;
+	protected JEditableTextAreaML txtExpression = null;
+	protected JTreeML fieldsJTree = null;
+	protected JListML valuesJList = null;
+	protected JScrollPaneML fieldsJScrollPane = null;
+	protected JScrollPaneML valuesJScrollPane = null;		
+
+	protected String title;
+	
+	protected DefaultTreeModel defaultTreeModel;
+	protected DefaultListModel valuesListModel;
+		
+	// A set with all simbols or operator names used
+	private Set<String> operatorSymbols;
+	
+	
+	/**
+	 * This is the default constructor
+	 */
+	public AbstractFilterQueryJPanel(String _title) {		
+		super();
+		title = _title;
+	}
+	/**
+	 * This is the default constructor
+	 */
+	public AbstractFilterQueryJPanel() {		
+		super();
+	}
+	
+	/**
+	 * This method initializes this
+	 */
+	protected void initialize() {
+		operatorSymbols = new HashSet<String>();
+			
+		operatorSymbols.add("and");
+//		operatorSymbols.add("Date");
+		operatorSymbols.add("<>"); // In SQL this is the formal operator
+		operatorSymbols.add("!="); // This operator is also supported
+		operatorSymbols.add("=");
+		operatorSymbols.add(">=");
+		operatorSymbols.add("<=");
+		operatorSymbols.add(">");
+		operatorSymbols.add("not");
+		operatorSymbols.add("or");
+		operatorSymbols.add("(");
+		operatorSymbols.add(")");
+		operatorSymbols.add("<");
+
+		this.setPreferredSize(new Dimension(DefaultWidth, DefaultHeight));
+		
+		this.setLayout(new GridBagLayout());
+		GridBagConstraints gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.gridwidth = GridBagConstraints.REMAINDER;
+
+		gridBagConstraints.anchor = GridBagConstraints.NORTH;
+		this.add(getTopJPanel(), gridBagConstraints);
+
+		gridBagConstraints.anchor = GridBagConstraints.SOUTH;
+		this.add(getBottomJPanel(), gridBagConstraints);
+	}
+	
+	/**
+	 * This method initializes topJPanel
+	 * 
+	 * @return javax.swing.JPanel
+	 */
+	protected abstract javax.swing.JPanel getTopJPanel();
+	
+	/**
+	 * This method initializes bottomJPanel
+	 * 
+	 * @return javax.swing.JPanel
+	 */
+	protected abstract JPanel getBottomJPanel();	
+	
+	/**
+	 * This method initializes fieldsJLabel
+	 *
+	 * @return javax.swing.JLabel
+	 */
+	protected JLabel getFieldsJLabel() {
+		if (fieldsJLabel == null) {
+			fieldsJLabel = new JLabelML();
+			fieldsJLabel.setText(Messages.getText("fields_uppercase_first") + ":");
+		}
+
+		return fieldsJLabel;
+	}	
+
+	/**
+	 * This method initializes valuesJList
+	 *
+	 * @return javax.swing.JList
+	 */
+	protected abstract javax.swing.JList getValuesJList();
+	
+	/**
+	 * This method initializes fieldsJPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	protected abstract JPanel getFieldsJPanel();
+
+	/**
+	 * This method initializes jScrollPane
+	 *
+	 * @return javax.swing.JScrollPane
+	 */
+	protected abstract javax.swing.JScrollPane getFieldsJScrollPane();
+
+	/**
+	 * This method initializes valuesJLabel
+	 *
+	 * @return javax.swing.JLabel
+	 */
+	protected javax.swing.JLabel getValuesJLabel() {
+		if (valuesJLabel == null) {
+			valuesJLabel = new JLabelML();
+			valuesJLabel.setText(Messages.getText("known_values") + ":");
+		}
+
+		return valuesJLabel;
+	}
+	
+	/**
+	 * This method initializes valuesJPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	protected abstract JPanel getValuesJPanel();
+	
+	/**
+	 * This method initializes jScrollPane1
+	 *
+	 * @return javax.swing.JScrollPane
+	 */
+	protected abstract javax.swing.JScrollPane getValuesJScrollPane();
+	
+	/**
+	 * This method initializes filterJScrollPane
+	 *
+	 * @return javax.swing.JScrollPane
+	 */
+	protected abstract javax.swing.JScrollPane getFilterJScrollPane();
+
+	/**
+	 * This method initializes txtExpression
+	 *
+	 * @return javax.swing.JTextArea
+	 */
+	protected abstract javax.swing.JTextArea getTxtExpression();
+	
+	/**
+	 * Adds a symbol to the filter expression.
+	 *
+	 * @param symbol symbol to add
+	 */
+	protected void putSymbol(String symbol) {
+		int position = getTxtExpression().getCaretPosition();
+		
+		getTxtExpression().setText(insert(getTxtExpression().getText(), position, symbol));
+
+		if (symbol.equals(" () ")) {
+			position = position + 2;
+		} else {
+			position = position + symbol.length();
+		}
+
+		getTxtExpression().setCaretPosition(position);
+	}
+	
+	/**
+	 * This method initializes fieldsJTree
+	 *
+	 * @return org.gvsig.gui.beans.swing.jTree
+	 */
+	protected javax.swing.JTree getFieldsJTree() {
+		if (fieldsJTree == null) {
+			fieldsJTree = new JTreeML(new Vector(0,1));
+			
+			// Remove icons:
+			DefaultTreeCellRenderer defaultTreeCellRenderer = new DefaultTreeCellRenderer();
+			defaultTreeCellRenderer.setOpenIcon(null);
+			defaultTreeCellRenderer.setClosedIcon(null);
+			defaultTreeCellRenderer.setLeafIcon(null);
+			
+			// Root not visible
+			fieldsJTree.setRootVisible(false);
+			fieldsJTree.setCellRenderer(defaultTreeCellRenderer);
+		}
+
+		return fieldsJTree;
+	}
+	
+    /**
+     * Inserts an <i>string</i> at a position of another one.
+     *
+     * @param base original <i>string</i> where will be inserted
+     * @param position position at the <i>string</i> where will be inserted
+     * @param graft <i>string</i> to insert
+     *
+     * @return the new <i>string</i> with the graft inserted in
+     */
+    protected static String insert(String base, int position, String graft) {
+        return base.substring(0, position) + graft + base.substring(position);
+    }
+
+	/**
+	 * This method initializes filterButtonsJPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	protected JPanel getFilterButtonsJPanel() {
+		if (filterButtonsJPanel == null) {
+			filterButtonsJPanel = new FilterButtonsJPanel();
+			filterButtonsJPanel.setPreferredSize(new Dimension(filterButtonsPanelWidth, filterButtonsPanelHeight));
+			filterButtonsJPanel.addPropertyChangeListener(new PropertyChangeListener() {
+				/*
+				 *  (non-Javadoc)
+				 * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
+				 */
+				public void propertyChange(PropertyChangeEvent arg0) {
+					if (arg0.getPropertyName().equals(FilterButtonsJPanel.BUTTON_CLICKED_ACTION_COMMAND)) {
+		            	
+						switch(Integer.parseInt(arg0.getNewValue().toString()))	{
+							case FilterButtonsJPanel.AND:
+								putSymbol(" and ");
+								break;
+							case FilterButtonsJPanel.DATE:
+								putSymbol( ((FilterButtonsJPanel)arg0.getSource()).getLastSelectedDate() );
+								break;
+							case FilterButtonsJPanel.DISTINCT:
+								putSymbol(" != ");
+								break;
+							case FilterButtonsJPanel.EQUAL:
+								putSymbol(" = ");
+								break;
+							case FilterButtonsJPanel.EQUALGREATER:
+								putSymbol(" >= ");
+								break;
+							case FilterButtonsJPanel.EQUALSMALLER:
+								putSymbol(" <= ");
+								break;
+							case FilterButtonsJPanel.GREATER:
+								putSymbol(" > ");
+								break;
+							case FilterButtonsJPanel.NOT:
+								putSymbol(" not ");
+								break;
+							case FilterButtonsJPanel.OR:
+								putSymbol(" or ");
+								break;
+							case FilterButtonsJPanel.PARENTHESIS:
+								putSymbol(" () ");
+								break;
+							case FilterButtonsJPanel.SMALLER:
+								putSymbol(" < ");
+								break;
+							case FilterButtonsJPanel.DELETE_TEXT:
+								txtExpression.setText("");
+								break;
+							default: // do anything
+				        }
+					}
+				}			
+			});
+		}
+		
+		return filterButtonsJPanel;
+	}
+
+	/**
+	 * Returns a set with all symbols used as operators
+	 * 
+	 * @return A set
+	 */
+	protected Set<String> getAllOperatorSymbols() {
+		return operatorSymbols;		
+	}
+
+	/**
+	 * Sets new height to the 'topJPanel', (new Height must be bigger than default, else do nothing)
+	 * 
+	 * @param new_Height New height
+	 */
+	public void resizeHeight(int new_Height) {
+		int difference = new_Height - DefaultHeight;
+		
+		if (difference > 0) {
+			this.setPreferredSize(new Dimension(this.getPreferredSize().width, this.getPreferredSize().height + difference));
+			getTopJPanel().setPreferredSize(new Dimension(getTopJPanel().getPreferredSize().width, getTopJPanel().getPreferredSize().height + difference));
+			
+			getFieldsJPanel().setPreferredSize(new Dimension(getFieldsJPanel().getPreferredSize().width, getFieldsJPanel().getPreferredSize().height + difference));
+			getFieldsJScrollPane().setPreferredSize(new Dimension(getFieldsJScrollPane().getPreferredSize().width, getFieldsJScrollPane().getPreferredSize().height + difference));
+		
+			getValuesJPanel().setPreferredSize(new Dimension(getValuesJPanel().getPreferredSize().width, getValuesJPanel().getPreferredSize().height + difference));
+			getValuesJScrollPane().setPreferredSize(new Dimension(getValuesJScrollPane().getPreferredSize().width, getValuesJScrollPane().getPreferredSize().height + difference));
+		}
+	}
+
+	/**
+	 * Sets the width to this JPanel
+	 * 
+	 * @param new_Width New width
+	 */
+	public abstract void resizeWidth(int new_Width);
+
+	/*
+	 *  (non-Javadoc)
+	 * @see java.awt.Component#resize(int, int)
+	 */
+	public void resize(int width, int height) {
+		int difference = height - DefaultHeight;
+
+		if (difference != 0)
+			this.resizeHeight(height);
+		
+		this.resizeWidth(width);
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see java.awt.Component#resize(java.awt.Dimension)
+	 */
+	public void resize(Dimension d) {
+		int difference = d.height - DefaultHeight;
+
+		if (difference != 0)
+			this.resizeHeight(d.height);
+		
+		this.resizeWidth(d.width);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.AbstractPanel#accept()
+	 */
+	public void accept() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.AbstractPanel#apply()
+	 */
+	public void apply() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.AbstractPanel#cancel()
+	 */
+	public void cancel() {
+	}	
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.AbstractPanel#selected()
+	 */
+	public void selected() {		
+	}
+
+	/**
+	 * JCrollPane with multi line tool tip text.
+	 * 
+	 * @see JScrollPane
+	 * 
+	 * @author Pablo Piqueras Bartolome (pablo.piqueras@iver.es)
+	 */
+	protected class JScrollPaneML extends JScrollPane {
+		private static final long serialVersionUID = 5222187234181725243L;
+
+		/**
+		 * @see JScrollPane#JScrollPane()
+		 */
+		public JScrollPaneML() {
+			super();
+		}
+
+		/**
+		 * @see JScrollPane#JScrollPane(Component, int, int)
+		 */
+		public JScrollPaneML(Component view, int vsbPolicy, int hsbPolicy) {
+			super(view, vsbPolicy, hsbPolicy);
+		}
+
+		/**
+		 * @see JScrollPane#JScrollPane(Component)
+		 */
+		public JScrollPaneML(Component view) {
+			super(view);
+		}
+
+		/**
+		 * @see JScrollPane#JScrollPane(int, int)
+		 */
+		public JScrollPaneML(int vsbPolicy, int hsbPolicy) {
+			super(vsbPolicy, hsbPolicy);
+		}
+		
+		/*
+		 * (non-Javadoc)
+		 * @see javax.swing.JComponent#createToolTip()
+		 */
+	    public JToolTip createToolTip() {
+	    	// Multiline support
+	    	MultiLineToolTip tip = new MultiLineToolTip();
+	    	tip.setComponent(this);
+	    	return tip;
+	    }
+	}
+
+	/**
+	 * JLabel with multi line tool tip text.
+	 * 
+	 * @see JLabel
+	 * 
+	 * @author Pablo Piqueras Bartolome (pablo.piqueras@iver.es)
+	 */
+	protected class JLabelML extends JLabel {
+		private static final long serialVersionUID = 525349503578470487L;
+
+		/**
+		 * @see JLabel#JLabel()
+		 */
+		public JLabelML() {
+			super();
+		}
+
+		/**
+		 * @see JLabel#JLabel(Icon, int)
+		 */
+		public JLabelML(Icon image, int horizontalAlignment) {
+			super(image, horizontalAlignment);
+		}
+
+		/**
+		 * @see JLabel#JLabel(Icon)
+		 */
+		public JLabelML(Icon image) {
+			super(image);
+		}
+
+		/**
+		 * @see JLabel#JLabel(String, Icon, int)
+		 */
+		public JLabelML(String text, Icon icon, int horizontalAlignment) {
+			super(text, icon, horizontalAlignment);
+		}
+
+		/**
+		 * @see JLabel#JLabel(String, int)
+		 */
+		public JLabelML(String text, int horizontalAlignment) {
+			super(text, horizontalAlignment);
+		}
+
+		/**
+		 * @see JLabel#JLabel(String)
+		 */
+		public JLabelML(String text) {
+			super(text);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * @see javax.swing.JComponent#createToolTip()
+		 */
+	    public JToolTip createToolTip() {
+	    	// Multiline support
+	    	MultiLineToolTip tip = new MultiLineToolTip();
+	    	tip.setComponent(this);
+	    	return tip;
+	    }
+	}
+	
+	/**
+	 * JPanel with multi line tool tip text.
+	 * 
+	 * @see JPanel
+	 * 
+	 * @author Pablo Piqueras Bartolome (pablo.piqueras@iver.es)
+	 */
+	protected class JPanelML extends JPanel {
+		private static final long serialVersionUID = 5951860640473906815L;
+
+		/**
+		 * @see JPanel#JPanel()
+		 */
+		public JPanelML() {
+			super();
+		}
+
+		/**
+		 * @see JPanel#JPanel(boolean)
+		 */
+		public JPanelML(boolean isDoubleBuffered) {
+			super(isDoubleBuffered);
+		}
+
+		/**
+		 * @see JPanel#JPanel(LayoutManager, boolean)
+		 */
+		public JPanelML(LayoutManager layout, boolean isDoubleBuffered) {
+			super(layout, isDoubleBuffered);
+		}
+
+		/**
+		 * @see JPanel#JPanel(LayoutManager)
+		 */
+		public JPanelML(LayoutManager layout) {
+			super(layout);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * @see javax.swing.JComponent#createToolTip()
+		 */
+	    public JToolTip createToolTip() {
+	    	// Multiline support
+	    	MultiLineToolTip tip = new MultiLineToolTip();
+	    	tip.setComponent(this);
+	    	return tip;
+	    }
+	}
+
+	/**
+	 * Editable text area with multi line tool tip text.
+	 * 
+	 * @see JEditableTextArea
+	 * 
+	 * @author Pablo Piqueras Bartolome (pablo.piqueras@iver.es)
+	 */
+	protected class JEditableTextAreaML extends JEditableTextArea {
+		private static final long serialVersionUID = -6963953475368014077L;
+
+		/**
+		 * @see JTextArea#JTextArea()
+		 */
+		public JEditableTextAreaML() {
+			super();
+		}
+
+		/**
+		 * @see JTextArea#JTextArea(Document, String, int, int)
+		 */
+		public JEditableTextAreaML(Document doc, String text, int rows, int columns) {
+			super(doc, text, rows, columns);
+		}
+
+		/**
+		 * @see JTextArea#JTextArea(Document)
+		 */
+		public JEditableTextAreaML(Document doc) {
+			super(doc);
+		}
+
+		/**
+		 * @see JTextArea#JTextArea(int, int)
+		 */
+		public JEditableTextAreaML(int rows, int columns) {
+			super(rows, columns);
+		}
+
+		/**
+		 * @see JTextArea#JTextArea(String, int, int)
+		 */
+		public JEditableTextAreaML(String text, int rows, int columns) {
+			super(text, rows, columns);
+		}
+
+		/**
+		 * @see JTextArea#JTextArea(String)
+		 */
+		public JEditableTextAreaML(String text) {
+			super(text);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * @see javax.swing.JComponent#createToolTip()
+		 */
+	    public JToolTip createToolTip() {
+	    	// Multiline support
+	    	MultiLineToolTip tip = new MultiLineToolTip();
+	    	tip.setComponent(this);
+	    	return tip;
+	    }	
+	}
+
+	/**
+	 * JTree with multi line tool tip text.
+	 * 
+	 * @see JTree
+	 * 
+	 * @author Pablo Piqueras Bartolome (pablo.piqueras@iver.es)
+	 */
+	protected class JTreeML extends JTree {
+		private static final long serialVersionUID = -8619256256346496435L;
+
+		/**
+		 * @see JTree#JTree()
+		 */
+		public JTreeML() {
+			super();
+		}
+
+		/**
+		 * @see JTree#JTree(Hashtable)
+		 */
+		public JTreeML(Hashtable<?, ?> value) {
+			super(value);
+		}
+
+		/**
+		 * @see JTree#JTree(Object[])
+		 */
+		public JTreeML(Object[] value) {
+			super(value);
+		}
+
+		/**
+		 * @see JTree#JTree(TreeModel)
+		 */
+		public JTreeML(TreeModel newModel) {
+			super(newModel);
+		}
+
+		/**
+		 * @see JTree#JTree(TreeNode, boolean)
+		 */
+		public JTreeML(TreeNode root, boolean asksAllowsChildren) {
+			super(root, asksAllowsChildren);
+		}
+
+		/**
+		 * @see JTree#JTree(TreeNode)
+		 */
+		public JTreeML(TreeNode root) {
+			super(root);
+		}
+
+		/**
+		 * @see JTree#JTree(Vector)
+		 */
+		public JTreeML(Vector<?> value) {
+			super(value);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * @see javax.swing.JComponent#createToolTip()
+		 */
+	    public JToolTip createToolTip() {
+	    	// Multiline support
+	    	MultiLineToolTip tip = new MultiLineToolTip();
+	    	tip.setComponent(this);
+	    	return tip;
+	    }		
+	}
+
+	/**
+	 * JList with multi line tool tip text.
+	 * 
+	 * @see JList
+	 * 
+	 * @author Pablo Piqueras Bartolome (pablo.piqueras@iver.es)
+	 */
+	protected class JListML extends JList {
+		private static final long serialVersionUID = 5316332987144988365L;
+
+		/**
+		 * @see JList#JList()
+		 */
+		public JListML() {
+			super();
+		}
+
+		/**
+		 * @see JList#JList(ListModel)
+		 */
+		public JListML(ListModel dataModel) {
+			super(dataModel);
+		}
+
+		/**
+		 * @see JList#JList(Object[])
+		 */
+		public JListML(Object[] listData) {
+			super(listData);
+		}
+
+		/**
+		 * @see JTree#JTree(Vector)
+		 */
+		public JListML(Vector<?> listData) {
+			super(listData);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * @see javax.swing.JComponent#createToolTip()
+		 */
+	    public JToolTip createToolTip() {
+	    	// Multiline support
+	    	MultiLineToolTip tip = new MultiLineToolTip();
+	    	tip.setComponent(this);
+	    	return tip;
+	    }		
+	}
+
+	/**
+	 * JCheckBox with multi line tool tip text.
+	 * 
+	 * @see JCheckBox
+	 * 
+	 * @author Pablo Piqueras Bartolome (pablo.piqueras@iver.es)
+	 */
+	protected class JCheckBoxML extends JCheckBox {
+		private static final long serialVersionUID = 2610142188236840664L;
+
+		/**
+		 * @see JCheckBox#JCheckBox()
+		 */
+		public JCheckBoxML() {
+			super();
+		}
+
+		/**
+		 * @see JCheckBox#JCheckBox(Action)
+		 */
+		public JCheckBoxML(Action a) {
+			super(a);
+		}
+
+		/**
+		 * @see JCheckBox#JCheckBox(Icon, boolean)
+		 */
+		public JCheckBoxML(Icon icon, boolean selected) {
+			super(icon, selected);
+		}
+
+		/**
+		 * @see JCheckBox#JCheckBox(Icon)
+		 */
+		public JCheckBoxML(Icon icon) {
+			super(icon);
+		}
+
+		/**
+		 * @see JCheckBox#JCheckBox(String, boolean)
+		 */
+		public JCheckBoxML(String text, boolean selected) {
+			super(text, selected);
+		}
+
+		/**
+		 * @see JCheckBox#JCheckBox(String, Icon, boolean)
+		 */
+		public JCheckBoxML(String text, Icon icon, boolean selected) {
+			super(text, icon, selected);
+		}
+
+		/**
+		 *@see JCheckBox#JCheckBox(String, Icon)
+		 */
+		public JCheckBoxML(String text, Icon icon) {
+			super(text, icon);
+		}
+
+		/**
+		 * @see JCheckBox#JCheckBox(String)
+		 */
+		public JCheckBoxML(String text) {
+			super(text);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * @see javax.swing.JComponent#createToolTip()
+		 */
+	    public JToolTip createToolTip() {
+	    	// Multiline support
+	    	MultiLineToolTip tip = new MultiLineToolTip();
+	    	tip.setComponent(this);
+	    	return tip;
+	    }		
+	}
+
+	/**
+	 * JButton with multi line tool tip text.
+	 * 
+	 * @see JButton
+	 * 
+	 * @author Pablo Piqueras Bartolome (pablo.piqueras@iver.es)
+	 */
+    protected class JButtonML extends JButton {
+		private static final long serialVersionUID = -6052122756677251026L;
+
+		/**
+		 * @see JButton#JButton()
+		 */
+		public JButtonML() {
+			super();
+		}
+
+		/**
+		 * @see JButton#JButton(Action)
+		 */
+		public JButtonML(Action a) {
+			super(a);
+		}
+
+		/**
+		 * @see JButton#JButton(Icon)
+		 */
+		public JButtonML(Icon icon) {
+			super(icon);
+		}
+
+		/**
+		 * @see JButton#JButton(String, Icon)
+		 */
+		public JButtonML(String text, Icon icon) {
+			super(text, icon);
+		}
+
+		/**
+		 * @see JButton#JButton(String)
+		 */
+		public JButtonML(String text) {
+			super(text);
+		}
+
+		/*
+    	 * (non-Javadoc)
+    	 * @see javax.swing.JComponent#createToolTip()
+    	 */
+        public JToolTip createToolTip() {
+        	// Multiline support
+        	MultiLineToolTip tip = new MultiLineToolTip();
+        	tip.setComponent(this);
+        	return tip;
+        }		
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/AbstractFilterQueryJPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/FilterQueryJPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/FilterQueryJPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/FilterQueryJPanel.java	(revision 38348)
@@ -0,0 +1,352 @@
+package org.gvsig.gui.beans.filterPanel.filterQueryPanel;
+
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.io.Serializable;
+
+import javax.swing.BorderFactory;
+import javax.swing.DefaultListModel;
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel;
+import org.gvsig.gui.beans.filterPanel.filterQueryPanel.jLabelAsCell.DefaultListModelForJLabelAsCell;
+import org.gvsig.gui.javax.swing.jLabelCellRenderer.JLabelCellRendererWithTextAsToolTipText;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * This class is a version of the graphical interface of "FilterDialog" which was made by Fernando and is in 'appgvSIG' project.
+ * It's supposed that other classes will extend from this and will add the logic as is in the "FilterDialog" class.
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class FilterQueryJPanel extends AbstractFilterQueryJPanel implements Serializable{
+	private static final long serialVersionUID = -1657663414129590679L;
+
+	protected JPanelML topCenterJPanel = null;
+	protected JCheckBoxML validateFilterExpressionJCheckBox = null;
+	
+	protected int filterJScrollPaneHeight = defaultBottomJPanelHeight - 10;
+	protected int filterJScrollPanelWidth = defaultBottomJPanelWidth;
+	protected int validateFilterExpressionJCheckBoxHeight = 20;
+	
+	/**
+	 * @see AbstractFilterQueryJPanel#AbstractFilterQueryJPanel()
+	 */
+	public FilterQueryJPanel() {
+		super();
+		this.initialize();
+	}
+
+	/**
+	 * @see AbstractFilterQueryJPanel#AbstractFilterQueryJPanel(String)
+	 */
+	public FilterQueryJPanel(String _title) {
+		super(_title);
+		this.initialize();
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#initialize()
+	 */
+	protected void initialize() {
+		super.initialize();
+		this.setBorder(BorderFactory.createTitledBorder(Messages.getText("filter_by_sentence")));
+		getValuesJList().setCellRenderer(new JLabelCellRendererWithTextAsToolTipText());
+
+//		/**
+//		 * This listener allows show in the tool tip text the value of the item when
+//		 *   the wheel of the mouse is beeing moved
+//		 */
+//		getValuesJScrollPane().addMouseWheelListener(new MouseWheelListener() {
+//			public void mouseWheelMoved(MouseWheelEvent e) {
+//				if (e.getSource() != null) {
+//					Object obj = ((JScrollPane)e.getSource()).getViewport().getComponent(0);
+//					
+//					if (obj instanceof JList) {
+//						int index = ((JList)obj).locationToIndex(e.getPoint());
+//						
+//						if (index >= 0)
+//							((JList)obj).setToolTipText( ((JLabel) ((JList)obj).getModel().getElementAt(index)).getText() );
+//					}
+//				}
+//			}
+//			
+//		});
+	}
+	
+	/*
+	 *  (FilterQueryJPanel)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getFieldsJPanel()
+	 */
+	protected JPanel getFieldsJPanel() {
+		if (fieldsJPanel == null) {
+			fieldsJPanel = new JPanelML();
+			fieldsJPanel.setPreferredSize(new java.awt.Dimension(fieldsJPanelWidth, fieldsJPanelHeight));
+			fieldsJPanel.setLayout(new GridBagLayout());
+			GridBagConstraints gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+			gridBagConstraints.gridwidth = GridBagConstraints.REMAINDER;
+			gridBagConstraints.anchor = GridBagConstraints.NORTH;			
+			fieldsJPanel.add(getFieldsJLabel(), gridBagConstraints);
+			gridBagConstraints.anchor = GridBagConstraints.SOUTH;
+			fieldsJPanel.add(getFieldsJScrollPane(), gridBagConstraints);			
+		}
+
+		return fieldsJPanel;
+	}	
+	
+	/**
+	 * @see AbstractFilterQueryJPanel#getValuesJList()
+	 */
+	protected javax.swing.JList getValuesJList() {
+		if (valuesJList == null) {
+			valuesJList = new JListML(new DefaultListModel());
+			valuesListModel = new DefaultListModelForJLabelAsCell();
+			valuesJList.setModel(valuesListModel);
+			valuesJList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
+			
+//			valuesJList.addMouseListener(new MouseAdapter() {
+//				/*
+//				 *  (non-Javadoc)
+//				 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+//				 */
+//				public void mouseClicked(MouseEvent e) {
+//					if (e.getClickCount() == 2) {
+//						int row = fieldsJTree.getRowForLocation(e.getX(), e.getY());
+//	
+//						if (row > -1) {
+//							putSymbol(((DefaultListModel)valuesJList.getModel()).get(row).toString());
+//						}
+//					}
+//				}
+//			});
+		}
+
+		return valuesJList;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getFieldsJScrollPane()
+	 */
+	protected javax.swing.JScrollPane getFieldsJScrollPane() {
+		if (fieldsJScrollPane == null) {
+			fieldsJScrollPane = new JScrollPaneML();
+			fieldsJScrollPane.setPreferredSize(new java.awt.Dimension(fieldsAndValuesJScrollPaneWidth, fieldsAndValuesJScrollPaneHeight));
+			fieldsJScrollPane.setViewportView(getFieldsJTree());
+		}
+
+		return fieldsJScrollPane;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getValuesJPanel()
+	 */
+	protected JPanel getValuesJPanel() {
+		if (valuesJPanel == null) {
+			valuesJPanel = new JPanelML();
+			valuesJPanel.setPreferredSize(new java.awt.Dimension(valuesJPanelWidth, valuesJPanelHeight));
+			valuesJPanel.setLayout(new GridBagLayout());
+			GridBagConstraints gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+			gridBagConstraints.gridwidth = GridBagConstraints.REMAINDER;
+			gridBagConstraints.anchor = GridBagConstraints.NORTH;
+			valuesJPanel.add(getValuesJLabel(), gridBagConstraints);
+			gridBagConstraints.anchor = GridBagConstraints.SOUTH;
+			valuesJPanel.add(getValuesJScrollPane(), gridBagConstraints);
+		}
+
+		return valuesJPanel;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getValuesJScrollPane()
+	 */
+	protected javax.swing.JScrollPane getValuesJScrollPane() {
+		if (valuesJScrollPane == null) {
+			valuesJScrollPane = new JScrollPaneML();
+			valuesJScrollPane.setPreferredSize(new Dimension(fieldsAndValuesJScrollPaneWidth, fieldsAndValuesJScrollPaneHeight));
+			valuesJScrollPane.setViewportView(getValuesJList());
+		}
+
+		return valuesJScrollPane;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getFilterJScrollPane()
+	 */
+	protected JScrollPane getFilterJScrollPane() {
+		if (filterJScrollPane == null) {
+			filterJScrollPane = new JScrollPaneML();
+			filterJScrollPane.setPreferredSize(new java.awt.Dimension(filterJScrollPanelWidth, filterJScrollPaneHeight));
+			filterJScrollPane.setViewportView(getTxtExpression());
+			filterJScrollPane.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+		}
+
+		return filterJScrollPane;
+	}	
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getTxtExpression()
+	 */
+	protected javax.swing.JTextArea getTxtExpression() {
+		if (txtExpression == null) {
+			txtExpression = new JEditableTextAreaML();
+			txtExpression.setLineWrap(true);
+			txtExpression.setToolTipText(Messages.getText("write_here_a_filter_expression"));
+		}
+
+		return txtExpression;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getTopJPanel()
+	 */
+	protected JPanel getTopJPanel() {
+		if (topJPanel == null) {
+			topJPanel = new JPanelML();
+
+		    topJPanel.setPreferredSize(new Dimension(defaultTopJPanelWidth, defaultTopJPanelHeight));
+		    topJPanel.setLayout(new GridBagLayout());
+		    
+		    GridBagConstraints gridBagConstraints = new GridBagConstraints();
+		    gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;	    
+		    
+		    gridBagConstraints.anchor = GridBagConstraints.WEST;
+		    topJPanel.add(getFieldsJPanel(), gridBagConstraints);
+		    
+			gridBagConstraints.anchor = GridBagConstraints.CENTER;
+//			topJPanel.add(getFilterButtonsJPanel(), gridBagConstraints);
+			topJPanel.add(getTopCenterJPanel(), gridBagConstraints);
+//			topJPanel.add(getValidateFilterExpressionJCheckBox(), gridBagConstraints);
+			
+			gridBagConstraints.anchor = GridBagConstraints.EAST;
+			topJPanel.add(getValuesJPanel(), gridBagConstraints);
+		}
+		
+		return topJPanel;
+	}
+	
+	/**
+	 * This method initializes topCenterJPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	protected JPanel getTopCenterJPanel() {
+		if (topCenterJPanel == null) {
+			topCenterJPanel = new JPanelML();
+			topCenterJPanel.setPreferredSize(new Dimension(getFilterButtonsJPanel().getPreferredSize().width, getFilterButtonsJPanel().getPreferredSize().height + validateFilterExpressionJCheckBoxHeight));
+			topCenterJPanel.setLayout(null);
+			
+			getFilterButtonsJPanel().setBounds(0, 0, getFilterButtonsJPanel().getPreferredSize().width, getFilterButtonsJPanel().getPreferredSize().height);
+			topCenterJPanel.add(getFilterButtonsJPanel());
+			topCenterJPanel.add(getValidateFilterExpressionJCheckBox());
+		}
+		return topCenterJPanel;
+	}
+	
+	/**
+	 * This method initializes validateFilterExpressionJCheckBox
+	 *
+	 * @return javax.swing.JCheckBox
+	 */
+	protected JCheckBox getValidateFilterExpressionJCheckBox() {
+		if (validateFilterExpressionJCheckBox == null) {
+			validateFilterExpressionJCheckBox = new JCheckBoxML();
+			validateFilterExpressionJCheckBox.setBounds(5, getFilterButtonsJPanel().getPreferredSize().height, getFilterButtonsJPanel().getWidth(), validateFilterExpressionJCheckBoxHeight);
+			validateFilterExpressionJCheckBox.setText(Messages.getText("validate_expression"));
+			validateFilterExpressionJCheckBox.setToolTipText(Messages.getText("validate_filter_expression_explanation"));
+		}
+		return validateFilterExpressionJCheckBox;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getBottomJPanel()
+	 */
+	protected JPanel getBottomJPanel() {
+		if (bottomJPanel == null) {
+			bottomJPanel = new JPanelML();
+			bottomJPanel.setPreferredSize(new Dimension(defaultBottomJPanelWidth, defaultBottomJPanelHeight));
+			bottomJPanel.add(getFilterJScrollPane(), null);
+		}
+		
+		return bottomJPanel;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#resizeWidth(int)
+	 */
+	public void resizeWidth(int new_Width) {	
+		int difference = new_Width - DefaultWidth;
+		
+		if (difference != 0) {
+			this.setPreferredSize(new Dimension(this.getPreferredSize().width + difference, this.getPreferredSize().height));
+			getTopJPanel().setPreferredSize(new Dimension(getTopJPanel().getPreferredSize().width + difference, getTopJPanel().getPreferredSize().height));
+			getBottomJPanel().setPreferredSize(new Dimension(getBottomJPanel().getPreferredSize().width + difference, getBottomJPanel().getPreferredSize().height));
+			getFilterJScrollPane().setPreferredSize(new Dimension(getFilterJScrollPane().getPreferredSize().width + difference, getFilterJScrollPane().getPreferredSize().height));
+			
+			int halfDifference = difference / 2;
+			
+			getFieldsJLabel().setPreferredSize(new Dimension(getFieldsJLabel().getPreferredSize().width + halfDifference, getFieldsJLabel().getPreferredSize().height));
+			getFieldsJPanel().setPreferredSize(new Dimension(getFieldsJPanel().getPreferredSize().width + halfDifference, getFieldsJPanel().getPreferredSize().height));
+			getFieldsJScrollPane().setPreferredSize(new Dimension(getFieldsJScrollPane().getPreferredSize().width + halfDifference, getFieldsJScrollPane().getPreferredSize().height));
+		
+			getValuesJLabel().setPreferredSize(new Dimension(getValuesJLabel().getPreferredSize().width + halfDifference, getValuesJLabel().getPreferredSize().height));
+			getValuesJPanel().setPreferredSize(new Dimension(getValuesJPanel().getPreferredSize().width + halfDifference, getValuesJPanel().getPreferredSize().height));
+			getValuesJScrollPane().setPreferredSize(new Dimension(getValuesJScrollPane().getPreferredSize().width + halfDifference, getValuesJScrollPane().getPreferredSize().height));
+		}
+	}
+}
+

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/FilterQueryJPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/JLabelAsCellValueLoaded.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/JLabelAsCellValueLoaded.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/JLabelAsCellValueLoaded.java	(revision 38348)
@@ -0,0 +1,81 @@
+package org.gvsig.gui.beans.filterPanel.filterQueryPanel.jLabelAsCell;
+
+import java.awt.Color;
+import java.io.Serializable;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Extension of JLabel that has some specific characteristics -> Version for values that are loaded in layer in view
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class JLabelAsCellValueLoaded extends AbstractJLabelAsCellLoaded implements Comparable, Serializable {
+	private static final long serialVersionUID = 4837556795083191433L;
+
+	/**
+	 * Default constructor without parameters
+	 */
+	public JLabelAsCellValueLoaded() {
+		super();
+		this.configure();
+	}
+
+	/**
+	 * Default constructor with one parameters
+	 * 
+	 * @param text Text value for this component
+	 */
+	public JLabelAsCellValueLoaded(String text) {
+		super(text);
+		this.configure();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.filterQueryPanel.jLabelCell.AbstractJLabelCellLoaded#configure()
+	 */
+	protected void configure() {
+		this.setBackground(Color.yellow);
+		this.setForeground(Color.blue);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/JLabelAsCellValueLoaded.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/JLabelAsCellValueNotLoaded.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/JLabelAsCellValueNotLoaded.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/JLabelAsCellValueNotLoaded.java	(revision 38348)
@@ -0,0 +1,80 @@
+package org.gvsig.gui.beans.filterPanel.filterQueryPanel.jLabelAsCell;
+
+import java.awt.Color;
+import java.io.Serializable;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Extension of JLabel that has some specific characteristics -> Version for values that aren't loaded in layer in view
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class JLabelAsCellValueNotLoaded extends AbstractJLabelAsCellLoaded implements Comparable, Serializable {
+	private static final long serialVersionUID = -4191869383518983183L;
+
+	/**
+	 * Default constructor without parameters
+	 */
+	public JLabelAsCellValueNotLoaded() {
+		super();
+		this.configure();
+	}
+
+	/**
+	 * Default constructor with one parameters
+	 * 
+	 * @param text Text value for this component
+	 */
+	public JLabelAsCellValueNotLoaded(String text) {
+		super(text);
+		this.configure();
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.filterQueryPanel.jLabelCell.AbstractJLabelCellLoaded#configure()
+	 */
+	protected void configure() {
+		this.setBackground(Color.white);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/JLabelAsCellValueNotLoaded.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/DefaultListModelForJLabelAsCell.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/DefaultListModelForJLabelAsCell.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/DefaultListModelForJLabelAsCell.java	(revision 38348)
@@ -0,0 +1,253 @@
+package org.gvsig.gui.beans.filterPanel.filterQueryPanel.jLabelAsCell;
+
+import java.io.Serializable;
+
+import javax.swing.DefaultListModel;
+import javax.swing.JLabel;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+
+/**
+ * This class reimplements the "contains()" method of "DefaultListModel" for 
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ *
+ */
+public class DefaultListModelForJLabelAsCell extends DefaultListModel implements Serializable {
+	private static final long serialVersionUID = 4410627738805243864L;
+
+	/**
+	 * Represents the start index of the group of not loaded values (that should be after the group of loaded values) 
+	 * -2                 -> if elements aren't grouped (in two lists: first for loaded, after for not loaded)
+	 * -1                 -> if there isn't elements
+	 *  0                 -> if there are only not loaded elements  
+	 *  = (capacity() -1) -> if there are only loaded elements
+	 */
+	private int startIndexOfNotLoadedValues; 
+	
+	/**
+	 * Default constructor without parameters
+	 */
+	public DefaultListModelForJLabelAsCell() {
+		super();
+		startIndexOfNotLoadedValues = -1;
+	}
+	
+	/**
+	 * Method that returns true if there is a inner JLabel that has as inner text the same text as 'patternText' 
+	 * 
+	 * @param patternText
+	 * @return A boolean value
+	 */
+	public boolean containsJLabelText(String patternText) {
+		for (int i = 0; i < super.getSize(); i++) {
+			if (((JLabel)super.get(i)).getText().compareTo(patternText) == 0)
+				return true;
+		}				
+			
+		return false;
+	}
+	
+	/**
+	 * Returns the position of first JLabel that has as text the same text as 'patternText', or -1 if no JLabel has that text
+	 * 
+	 * @param patternText An String
+	 * @return An integer value
+	 */
+	public int getIndexOfJLabelText(String patternText) {
+		for (int i = 0; i < super.getSize(); i++) {
+			if (((JLabel)super.get(i)).getText().compareTo(patternText) == 0)
+				return i;
+		}				
+			
+		return -1; // If not found
+	}
+	
+	/**
+	 * Replaces first element which has the text 'patternText' to a JLabelValueLoaded new one element with the same text
+	 * 
+	 * @param patternText Text of the component
+	 */
+	public void changeElementThatHasTextToJLabelLoadedValue(String patternText) {
+		int index = getIndexOfJLabelText(patternText);
+		
+		if (index != -1)
+			super.set(index, new JLabelAsCellValueLoaded(patternText));
+	}
+	
+	/**
+	 * Sets all elements to 'JLabelValueNotLoaded'
+	 */
+	public void setAllElementsToNotLoaded() {
+		if (startIndexOfNotLoadedValues == -1) {
+			for (int i = 0; i < super.getSize(); i++) {
+				if (super.get(i) instanceof JLabelAsCellValueLoaded) {
+					JLabelAsCellValueNotLoaded jL = new JLabelAsCellValueNotLoaded(((JLabelAsCellValueLoaded)super.get(i)).getText());
+					super.remove(i);
+					super.add(i, jL);///// REIMPLEMENTATION OF SOME METHODS OF 'DefaultListModel' /////
+				}
+			}
+		}
+		else {
+			for (int i = 0; i < startIndexOfNotLoadedValues; i++) {
+				if (super.get(i) instanceof JLabelAsCellValueLoaded) {
+					JLabelAsCellValueNotLoaded jL = new JLabelAsCellValueNotLoaded(((JLabelAsCellValueLoaded)super.get(i)).getText());
+					super.set(i, jL); // replacement
+				}
+			}
+		}
+		
+		startIndexOfNotLoadedValues = 0;
+	}
+	
+	///// REIMPLEMENTATION OF SOME METHODS OF 'DefaultListModel' /////
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.DefaultListModel#clear()
+	 */		
+	public void clear() {
+		super.clear();
+		startIndexOfNotLoadedValues = -1;
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.DefaultListModel#insertElementAt(java.lang.Object, int)
+	 */
+	public void insertElementAt(Object obj, int index) {
+		super.insertElementAt(obj, index);
+		
+		if ((obj instanceof JLabelAsCellValueNotLoaded) && (index > -1) && (index < startIndexOfNotLoadedValues))
+			startIndexOfNotLoadedValues = index;
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.DefaultListModel#remove(int)
+	 */
+	public Object remove(int index) {
+		if ( (index > -1) && (index == startIndexOfNotLoadedValues) && (index == (super.capacity() -1)) ) {
+			startIndexOfNotLoadedValues = -1;
+		}
+
+		return super.remove(index);
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.DefaultListModel#removeAllElements()
+	 */
+	public void	removeAllElements() {
+		super.removeAllElements();
+		startIndexOfNotLoadedValues = -1;
+	}
+	 
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.DefaultListModel#removeElement(java.lang.Object)
+	 */
+	public boolean removeElement(Object obj) {
+		int index = super.indexOf(obj);
+		
+		if ( (index > -1) && (index == startIndexOfNotLoadedValues) && (index == (super.capacity() -1)) ) {
+			startIndexOfNotLoadedValues = -1;
+		}
+		
+		return super.removeElement(obj);
+	}
+	 
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.DefaultListModel#removeElementAt(int)
+	 */
+	public void removeElementAt(int index) {
+		if ( (index > -1) && (index == startIndexOfNotLoadedValues) && (index == (super.capacity() -1)) ) {
+			startIndexOfNotLoadedValues = -1;
+		}
+		
+		super.removeElementAt(index);			
+	}
+	 
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.DefaultListModel#removeRange(int, int)
+	 */
+	public void removeRange(int fromIndex, int toIndex) {			
+		super.removeRange(fromIndex, toIndex);
+		
+		// Try to find any element of type 'JLabelNotLoadedValue'
+		for (int i = 0; i < super.capacity(); i++) {
+			if (super.get(i) instanceof JLabelAsCellValueNotLoaded) {
+				if ( ( (i == (super.capacity() -1) || (i < (super.capacity() -1)) && (super.get(super.capacity() -1) instanceof JLabelAsCellValueNotLoaded) ) ) )
+					startIndexOfNotLoadedValues = i;
+				else
+					startIndexOfNotLoadedValues = -1;
+			}
+		}
+	}
+	 
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.DefaultListModel#set(int, java.lang.Object)
+	 */
+	public Object set(int index, Object element) {
+		if ((element instanceof JLabelAsCellValueNotLoaded) && (index > -1) && (index < startIndexOfNotLoadedValues))
+			startIndexOfNotLoadedValues = index;
+
+		return super.set(index, element);
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.DefaultListModel#setElementAt(java.lang.Object, int)
+	 */
+	public void setElementAt(Object obj, int index) {
+		super.setElementAt(obj, index);
+
+		if ((obj instanceof JLabelAsCellValueNotLoaded) && (index > -1) && (index < startIndexOfNotLoadedValues))
+			startIndexOfNotLoadedValues = index;
+	}
+
+	///// END REIMPLEMENTATION OF SOME METHODS OF 'DefaultListModel' /////		
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/DefaultListModelForJLabelAsCell.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/AbstractJLabelAsCellLoaded.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/AbstractJLabelAsCellLoaded.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/AbstractJLabelAsCellLoaded.java	(revision 38348)
@@ -0,0 +1,88 @@
+package org.gvsig.gui.beans.filterPanel.filterQueryPanel.jLabelAsCell;
+
+import javax.swing.JLabel;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+
+/**
+ * This class has some methods for classes which will be a JLabel as a cell
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public abstract class AbstractJLabelAsCellLoaded extends JLabel {
+	/**
+	 * @see JLabel#JLabel()
+	 */
+	public AbstractJLabelAsCellLoaded() {
+		super();
+	}
+	
+	/**
+	 * @see JLabel#JLabel(String)
+	 */
+	public AbstractJLabelAsCellLoaded(String text) {
+		super(text);
+	}
+	
+	/**
+	 * Configures some characteristics 
+	 */
+	protected abstract void configure();
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see java.lang.Comparable#compareTo(java.lang.Object)
+	 */
+	public int compareTo(Object o) {
+		// It's supposed that 'o' is an string
+		return this.getText().compareTo((String)o);
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see java.lang.Object#toString()
+	 */
+	public String toString() {
+		return this.getText();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterQueryPanel/jLabelAsCell/AbstractJLabelAsCellLoaded.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/TableFilterQueryJPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/TableFilterQueryJPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/TableFilterQueryJPanel.java	(revision 38348)
@@ -0,0 +1,373 @@
+package org.gvsig.gui.beans.filterPanel.tableFilterQueryPanel;
+
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.io.Serializable;
+
+import javax.swing.BorderFactory;
+import javax.swing.DefaultListModel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * This class is the graphical interface of the "FilterDialog" which was made by Fernando and is in 'appgvSIG' project.
+ * It's supposed that other classes will extend from this and will add the logic as is in the "FilterDialog" class.
+ *
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class TableFilterQueryJPanel extends AbstractFilterQueryJPanel implements Serializable {	
+	private static final long serialVersionUID = 7215933791644769237L;
+
+	protected JPanelML buttonsSetJPanel = null;
+	protected JButtonML btnNewSet = null;
+	protected JButtonML btnAddToCurrentSet = null;
+	protected JButtonML btnFromSet = null;
+	protected int defaultButtonsSetPanelWidth = 190; 
+	protected int defaultButtonsSetPanelHeight = 100;
+	protected int filterJScrollPaneHeight = defaultBottomJPanelHeight - 10;
+	protected int filterJScrollPanelWidth = defaultBottomJPanelWidth - 10 - defaultButtonsSetPanelWidth;
+	protected int setButtonWidth = defaultButtonsSetPanelWidth - 5;
+	protected int setButtonHeight = 25;
+
+	protected DefaultMutableTreeNode jtreeRoot;
+	
+	/**
+	 * @see AbstractFilterQueryJPanel#AbstractFilterQueryJPanel()
+	 */
+	public TableFilterQueryJPanel() {
+		super();
+		this.initialize();
+	}
+
+	/**
+	 * @see AbstractFilterQueryJPanel#AbstractFilterQueryJPanel(String)
+	 */
+	public TableFilterQueryJPanel(String _title) {
+		super(_title);
+		this.initialize();
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#initialize()
+	 */
+	protected void initialize() {
+		super.initialize();
+		this.setBorder(BorderFactory.createTitledBorder(Messages.getText("filter_of_Table")));
+		jtreeRoot = new DefaultMutableTreeNode(fieldsJTree.getModel().getRoot());
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getFieldsJPanel()
+	 */
+	protected JPanel getFieldsJPanel() {
+		if (fieldsJPanel == null) {
+			fieldsJPanel = new JPanelML();
+			fieldsJPanel.setPreferredSize(new java.awt.Dimension(fieldsJPanelWidth, fieldsJPanelHeight));
+			fieldsJPanel.setLayout(new GridBagLayout());
+			GridBagConstraints gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+			gridBagConstraints.gridwidth = GridBagConstraints.REMAINDER;
+			gridBagConstraints.anchor = GridBagConstraints.NORTH;			
+			fieldsJPanel.add(getFieldsJLabel(), gridBagConstraints);
+			gridBagConstraints.anchor = GridBagConstraints.SOUTH;
+			fieldsJPanel.add(getFieldsJScrollPane(), gridBagConstraints);			
+		}
+
+		return fieldsJPanel;
+	}
+	
+	/**
+	 * @see AbstractFilterQueryJPanel#getValuesJList()
+	 */
+	protected javax.swing.JList getValuesJList() {
+		if (valuesJList == null) {
+			valuesJList = new JListML(new DefaultListModel());
+			valuesListModel = new DefaultListModel();
+			valuesJList.setModel(valuesListModel);
+			valuesJList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
+			
+//			valuesJList.addMouseListener(new MouseAdapter() {
+//				/*
+//				 *  (non-Javadoc)
+//				 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+//				 */
+//				public void mouseClicked(MouseEvent e) {
+//					if (e.getClickCount() == 2) {
+//						int row = fieldsJTree.getRowForLocation(e.getX(), e.getY());
+//	
+//						if (row > -1) {
+//							putSymbol(((DefaultListModel)valuesJList.getModel()).get(row).toString());
+//						}
+//					}
+//				}
+//			});
+		}
+
+		return valuesJList;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getFieldsJScrollPane()
+	 */
+	protected javax.swing.JScrollPane getFieldsJScrollPane() {
+		if (fieldsJScrollPane == null) {
+			fieldsJScrollPane = new JScrollPaneML();
+			fieldsJScrollPane.setPreferredSize(new java.awt.Dimension(fieldsAndValuesJScrollPaneWidth, fieldsAndValuesJScrollPaneHeight));
+			fieldsJScrollPane.setViewportView(getFieldsJTree());
+		}
+
+		return fieldsJScrollPane;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getValuesJPanel()
+	 */
+	protected JPanel getValuesJPanel() {
+		if (valuesJPanel == null) {
+			valuesJPanel = new JPanelML();
+			valuesJPanel.setPreferredSize(new java.awt.Dimension(valuesJPanelWidth, valuesJPanelHeight));
+			valuesJPanel.setLayout(new GridBagLayout());
+			GridBagConstraints gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+			gridBagConstraints.gridwidth = GridBagConstraints.REMAINDER;
+			gridBagConstraints.anchor = GridBagConstraints.NORTH;
+			valuesJPanel.add(getValuesJLabel(), gridBagConstraints);
+			gridBagConstraints.anchor = GridBagConstraints.SOUTH;
+			valuesJPanel.add(getValuesJScrollPane(), gridBagConstraints);
+		}
+
+		return valuesJPanel;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getValuesJScrollPane()
+	 */
+	protected javax.swing.JScrollPane getValuesJScrollPane() {
+		if (valuesJScrollPane == null) {
+			valuesJScrollPane = new JScrollPaneML();
+			valuesJScrollPane.setPreferredSize(new Dimension(fieldsAndValuesJScrollPaneWidth, fieldsAndValuesJScrollPaneHeight));
+			valuesJScrollPane.setViewportView(getValuesJList());
+		}
+
+		return valuesJScrollPane;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getFilterJScrollPane()
+	 */
+	protected JScrollPane getFilterJScrollPane() {
+		if (filterJScrollPane == null) {
+			filterJScrollPane = new JScrollPaneML();
+			filterJScrollPane.setPreferredSize(new java.awt.Dimension(filterJScrollPanelWidth, filterJScrollPaneHeight));
+			filterJScrollPane.setViewportView(getTxtExpression());
+			filterJScrollPane.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+		}
+
+		return filterJScrollPane;
+	}	
+	
+	/**
+	 * This method initializes buttonsSetJPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	protected javax.swing.JPanel getButtonsSetJPanel() {
+		if (buttonsSetJPanel == null) {
+			buttonsSetJPanel = new JPanelML();
+			buttonsSetJPanel.setPreferredSize(new java.awt.Dimension(defaultButtonsSetPanelWidth, defaultButtonsSetPanelHeight));
+			buttonsSetJPanel.add(getBtnNewSet(), null);
+			buttonsSetJPanel.add(getBtnAddToCurrentSet(), null);
+			buttonsSetJPanel.add(getBtnFromSet(), null);			
+		}
+
+		return buttonsSetJPanel;
+	}
+
+	/**
+	 * This method initializes btnNewSet
+	 *
+	 * @return javax.swing.JButton
+	 */
+	protected javax.swing.JButton getBtnNewSet() {
+		if (btnNewSet == null) {
+			btnNewSet = new JButtonML();
+			btnNewSet.setPreferredSize(new Dimension(this.setButtonWidth, this.setButtonHeight));
+			btnNewSet.setText(Messages.getText("Nuevo_conjunto"));
+//			btnNewSet.setMargin(new java.awt.Insets(2, 2, 2, 2));
+		}
+
+		return btnNewSet;
+	}
+
+	/**
+	 * This method initializes btnAddToCurrentSet
+	 *
+	 * @return javax.swing.JButton
+	 */
+	protected javax.swing.JButton getBtnAddToCurrentSet() {
+		if (btnAddToCurrentSet == null) {
+			btnAddToCurrentSet = new JButtonML();
+			btnAddToCurrentSet.setPreferredSize(new Dimension(this.setButtonWidth, this.setButtonHeight));
+			btnAddToCurrentSet.setText(Messages.getText("Anadir_al_conjunto"));
+//			btnAddToCurrentSet.setMargin(new java.awt.Insets(2, 2, 2, 2));
+		}
+
+		return btnAddToCurrentSet;
+	}
+
+	/**
+	 * This method initializes btnFromSet
+	 *
+	 * @return javax.swing.JButton
+	 */
+	protected javax.swing.JButton getBtnFromSet() {
+		if (btnFromSet == null) {
+			btnFromSet = new JButtonML();
+			btnFromSet.setPreferredSize(new Dimension(this.setButtonWidth, this.setButtonHeight));
+			btnFromSet.setText(Messages.getText(
+					"Seleccionar_del_conjunto"));
+//			btnFromSet.setMargin(new java.awt.Insets(2, 2, 2, 2));
+		}
+
+		return btnFromSet;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getTxtExpression()
+	 */
+	protected javax.swing.JTextArea getTxtExpression() {
+		if (txtExpression == null) {
+			txtExpression = new JEditableTextAreaML();
+			txtExpression.setLineWrap(true);
+			txtExpression.setToolTipText(Messages.getText("write_here_a_filter_expression"));
+		}
+
+		return txtExpression;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getTopJPanel()
+	 */
+	protected JPanel getTopJPanel() {
+		if (topJPanel == null) {
+			topJPanel = new JPanelML();
+
+		    topJPanel.setPreferredSize(new Dimension(defaultTopJPanelWidth, defaultTopJPanelHeight));
+		    topJPanel.setLayout(new GridBagLayout());
+		    
+		    GridBagConstraints gridBagConstraints = new GridBagConstraints();
+		    gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;	    
+		    
+		    gridBagConstraints.anchor = GridBagConstraints.WEST;
+		    topJPanel.add(getFieldsJPanel(), gridBagConstraints);
+		    
+			gridBagConstraints.anchor = GridBagConstraints.CENTER;
+			topJPanel.add(getFilterButtonsJPanel(), gridBagConstraints);
+			
+			gridBagConstraints.anchor = GridBagConstraints.EAST;
+			topJPanel.add(getValuesJPanel(), gridBagConstraints);
+		}
+		
+		return topJPanel;
+	}
+
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#getBottomJPanel()
+	 */
+	protected JPanel getBottomJPanel() {
+		if (bottomJPanel == null) {
+			bottomJPanel = new JPanelML();
+			bottomJPanel.setPreferredSize(new Dimension(defaultBottomJPanelWidth, defaultBottomJPanelHeight));
+			bottomJPanel.add(getFilterJScrollPane(), null);
+			bottomJPanel.add(getButtonsSetJPanel(), null);
+		}
+		
+		return bottomJPanel;
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see org.gvsig.gui.beans.filterPanel.AbstractFilterQueryJPanel#resizeWidth(int)
+	 */
+	public void resizeWidth(int new_Width) {	
+		int difference = new_Width - DefaultWidth;
+		
+		if (difference != 0) {
+			this.setPreferredSize(new Dimension(this.getPreferredSize().width + difference, this.getPreferredSize().height));
+			getTopJPanel().setPreferredSize(new Dimension(getTopJPanel().getPreferredSize().width + difference, getTopJPanel().getPreferredSize().height));
+			getBottomJPanel().setPreferredSize(new Dimension(getBottomJPanel().getPreferredSize().width + difference, getBottomJPanel().getPreferredSize().height));
+			int halfDifference = difference / 2;
+
+			getFilterJScrollPane().setPreferredSize(new Dimension(getFilterJScrollPane().getPreferredSize().width + halfDifference, getFilterJScrollPane().getPreferredSize().height));
+			
+			getButtonsSetJPanel().setPreferredSize(new Dimension(getButtonsSetJPanel().getPreferredSize().width + halfDifference, getButtonsSetJPanel().getPreferredSize().height));
+			getBtnNewSet().setPreferredSize(new Dimension(getBtnNewSet().getPreferredSize().width + halfDifference, getBtnNewSet().getPreferredSize().height));
+			getBtnAddToCurrentSet().setPreferredSize(new Dimension(getBtnAddToCurrentSet().getPreferredSize().width + halfDifference, getBtnAddToCurrentSet().getPreferredSize().height));
+			getBtnFromSet().setPreferredSize(new Dimension(getBtnFromSet().getPreferredSize().width + halfDifference, getBtnFromSet().getPreferredSize().height));
+				
+			getFieldsJLabel().setPreferredSize(new Dimension(getFieldsJLabel().getPreferredSize().width + halfDifference, getFieldsJLabel().getPreferredSize().height));
+			getFieldsJPanel().setPreferredSize(new Dimension(getFieldsJPanel().getPreferredSize().width + halfDifference, getFieldsJPanel().getPreferredSize().height));
+			getFieldsJScrollPane().setPreferredSize(new Dimension(getFieldsJScrollPane().getPreferredSize().width + halfDifference, getFieldsJScrollPane().getPreferredSize().height));
+		
+			getValuesJLabel().setPreferredSize(new Dimension(getValuesJLabel().getPreferredSize().width + halfDifference, getValuesJLabel().getPreferredSize().height));
+			getValuesJPanel().setPreferredSize(new Dimension(getValuesJPanel().getPreferredSize().width + halfDifference, getValuesJPanel().getPreferredSize().height));
+			getValuesJScrollPane().setPreferredSize(new Dimension(getValuesJScrollPane().getPreferredSize().width + halfDifference, getValuesJScrollPane().getPreferredSize().height));
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/TableFilterQueryJPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterButtons/FilterButtonsJPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterButtons/FilterButtonsJPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterButtons/FilterButtonsJPanel.java	(revision 38348)
@@ -0,0 +1,681 @@
+package org.gvsig.gui.beans.filterPanel.filterButtons;
+
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.LayoutManager;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.io.Serializable;
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.HashMap;
+
+import javax.swing.Action;
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JToolTip;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.controls.MultiLineToolTip;
+import org.gvsig.gui.beans.swing.textBoxWithCalendar.JCalendarDateDialog;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * This class is a panel with buttons for filter operations: AND, OR, NOT, >, <, ...
+ * 
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class FilterButtonsJPanel extends JPanel implements Serializable {
+	private static final long serialVersionUID = -6976915487897365666L;
+
+	public static final int default_FilterButtonsJPanelWidth = 190;
+	public static final int default_FilterButtonsJPanelHeight = 104;
+	private final int buttonsGroupJPanelWidth = default_FilterButtonsJPanelWidth;
+	private final int buttonsGroupJPanelHeight = default_FilterButtonsJPanelHeight;
+	private final int buttonHeight = 20;
+	private final int buttonWidthUnit = 40;
+
+	private JButtonML btnEqual = null;
+	private JButtonML btnDistinct = null;
+	private JButtonML btnGreater = null;
+	private JButtonML btnSmaller = null;
+	private JButtonML btnEqualGreater = null;
+	private JButtonML btnEqualSmaller = null;
+	private JButtonML btnAnd = null;
+	private JButtonML btnOr = null;
+	private JButtonML btnNot = null;
+	private JButtonML btnDate = null;
+	private JButtonML btnParenthesis = null;
+	private JButtonML btnDeleteText = null;
+	private JPanelML buttonsJPanel = null;	
+
+	// Last selected date
+	private DateFormat dateFormat = DateFormat.getDateInstance();
+	private Date lastSelectedDate = null;
+
+	private JCalendarDateDialog jCalendarDateDialog = null;
+	
+	// Values of the events fired when has been clicked a button
+	public static final int DEFAULT = 0;
+	public static final int EQUAL = 1;
+	public static final int DISTINCT = 2;
+	public static final int GREATER = 3;
+	public static final int SMALLER = 4;
+	public static final int EQUALGREATER = 5;
+	public static final int EQUALSMALLER = 6;
+	public static final int AND = 7;
+	public static final int OR = 8;
+	public static final int NOT = 9;
+	public static final int DATE = 10;
+	public static final int PARENTHESIS = 11;
+	public static final int DELETE_TEXT = 12;
+	
+	// Values of the type of event fired
+	public static final int BUTTON_CLICKED_ACTION_ID = 13;
+	public static final String BUTTON_CLICKED_ACTION_COMMAND = "Button Clicked";
+	
+	// Hash map for the items
+	private HashMap<String, String> map;
+	
+	// Action listener for notify (fire) some events that had happened to this component
+	private ActionListener actionListener = null;
+
+	/**
+	 * @see JPanel#JPanel()
+	 */
+	public FilterButtonsJPanel() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * @see JPanel#JPanel(boolean)
+	 */
+	public FilterButtonsJPanel(boolean isDoubleBuffered) {
+		super(isDoubleBuffered);
+		initialize();
+	}
+
+	/**
+	 * @see JPanel#JPanel(java.awt.LayoutManager, boolean)
+	 */
+	public FilterButtonsJPanel(LayoutManager layout, boolean isDoubleBuffered) {
+		super(layout, isDoubleBuffered);
+		initialize();
+	}
+
+	/**
+	 * @see JPanel#JPanel(java.awt.LayoutManager)
+	 */
+	public FilterButtonsJPanel(LayoutManager layout) {
+		super(layout);
+		initialize();
+	}
+	
+	/**
+	 * This method initializes this
+	 */
+	private void initialize() {
+		map = new HashMap<String, String>();
+		
+		this.setPreferredSize(new Dimension(default_FilterButtonsJPanelWidth, default_FilterButtonsJPanelHeight));
+		this.setLayout(new GridBagLayout());
+		
+		// Vertical center
+		GridBagConstraints gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.fill = GridBagConstraints.BOTH;
+		gridBagConstraints.anchor = GridBagConstraints.CENTER;
+
+		this.add(getButtonsJPanel(), gridBagConstraints);
+	}
+	
+	/**
+	 * This method initializes buttonsJPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */	
+	private javax.swing.JPanel getButtonsJPanel() {
+		if (buttonsJPanel == null) {
+			buttonsJPanel = new JPanelML();
+			
+			buttonsJPanel.setPreferredSize(new Dimension(buttonsGroupJPanelWidth, buttonsGroupJPanelHeight));
+			buttonsJPanel.add(getBtnEqual());
+			buttonsJPanel.add(getBtnDistinct());
+			buttonsJPanel.add(getBtnDate());
+			buttonsJPanel.add(getBtnSmaller());
+			buttonsJPanel.add(getBtnGreater());
+			buttonsJPanel.add(getBtnEqualSmaller());
+			buttonsJPanel.add(getBtnEqualGreater());
+			buttonsJPanel.add(getBtnAnd());
+			buttonsJPanel.add(getBtnOr());
+			buttonsJPanel.add(getBtnNot());
+			buttonsJPanel.add(getBtnParenthesis());			
+			buttonsJPanel.add(getBtnDeleteText());
+		}
+		
+		return buttonsJPanel;
+	}
+
+	/**
+	 * This method initializes btnDistinct
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBtnDistinct() {
+		if (btnDistinct == null) {
+			btnDistinct = new JButtonML();
+			btnDistinct.setText("!=");
+			btnDistinct.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnDistinct.setPreferredSize(new java.awt.Dimension(buttonWidthUnit, buttonHeight));
+			btnDistinct.setToolTipText(Messages.getText("operator_distinct_explanation"));
+			map.put("!=", Integer.toString(FilterButtonsJPanel.DISTINCT));
+			
+			btnDistinct.addActionListener(this.getActionListener());
+		}
+		
+		return btnDistinct;
+	}
+	
+	
+	/**
+	 * This method initializes btnEqua
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBtnEqual() {
+		if (btnEqual == null) {
+			btnEqual = new JButtonML();
+			btnEqual.setText("=");
+			btnEqual.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnEqual.setPreferredSize(new java.awt.Dimension(buttonWidthUnit, buttonHeight));
+			btnEqual.setToolTipText(Messages.getText("operator_equal_explanation"));
+			map.put("=", Integer.toString(FilterButtonsJPanel.EQUAL));
+
+			btnEqual.addActionListener(this.getActionListener());
+		}
+
+		return btnEqual;
+	}
+
+	/**
+	 * This method initializes btnGreater
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBtnGreater() {
+		if (btnGreater == null) {
+			btnGreater = new JButtonML();
+			btnGreater.setText(">");
+			btnGreater.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnGreater.setPreferredSize(new java.awt.Dimension(buttonWidthUnit, buttonHeight));
+			btnGreater.setToolTipText(Messages.getText("operator_greater_explanation"));
+			map.put(">", Integer.toString(FilterButtonsJPanel.GREATER));
+			
+			btnGreater.addActionListener(this.getActionListener());
+		}
+
+		return btnGreater;
+	}
+
+	/**
+	 * This method initializes btnEqualGreater
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBtnEqualGreater() {
+		if (btnEqualGreater == null) {
+			btnEqualGreater = new JButtonML();
+			btnEqualGreater.setText(">=");
+			btnEqualGreater.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnEqualGreater.setPreferredSize(new java.awt.Dimension(buttonWidthUnit, buttonHeight));
+			btnEqualGreater.setToolTipText(Messages.getText("operator_equal_greater_explanation"));
+			map.put(">=", Integer.toString(FilterButtonsJPanel.EQUALGREATER));
+			
+			btnEqualGreater.addActionListener(this.getActionListener());
+		}
+
+		return btnEqualGreater;
+	}
+
+	/**
+	 * This method initializes btnSmaller
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBtnSmaller() {
+		if (btnSmaller == null) {
+			btnSmaller = new JButtonML();
+			btnSmaller.setText("<");
+			btnSmaller.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnSmaller.setPreferredSize(new java.awt.Dimension(buttonWidthUnit, buttonHeight));
+			btnSmaller.setToolTipText(Messages.getText("operator_smaller_explanation"));
+			map.put("<", Integer.toString(FilterButtonsJPanel.SMALLER));
+			
+			btnSmaller.addActionListener(this.getActionListener());
+		}
+
+		return btnSmaller;
+	}
+
+	/**
+	 * This method initializes btnEqualSmaller
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBtnEqualSmaller() {
+		if (btnEqualSmaller == null) {
+			btnEqualSmaller = new JButtonML();
+			btnEqualSmaller.setText("<=");
+			btnEqualSmaller.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnEqualSmaller.setPreferredSize(new java.awt.Dimension(buttonWidthUnit, buttonHeight));
+			btnEqualSmaller.setToolTipText(Messages.getText("operator_equal_smaller_explanation"));
+			map.put("<=", Integer.toString(FilterButtonsJPanel.EQUALSMALLER));
+			
+			btnEqualSmaller.addActionListener(this.getActionListener());
+		}
+
+		return btnEqualSmaller;
+	}
+
+	/**
+	 * This method initializes btnDate
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBtnDate() {
+		if (btnDate == null) {
+			btnDate = new JButtonML();
+			btnDate.setText("Date");
+			btnDate.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnDate.setPreferredSize(new java.awt.Dimension(86, buttonHeight));
+			btnDate.setToolTipText(Messages.getText("date_button_explanation"));
+			map.put("Date", Integer.toString(FilterButtonsJPanel.DATE));
+			
+			btnDate.addMouseListener(new MouseAdapter() {
+				/*
+				 *  (non-Javadoc)
+				 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+				 */
+				public void mouseClicked(MouseEvent e) {
+					getCDD().setVisible(true);
+				}				
+			});			
+		}
+
+		return btnDate;
+	}
+
+	/**
+	 * This method initializes a JCalendarDateDialog	
+	 * 	
+	 * @return A JCalendarDateDialog
+	 */
+	protected JCalendarDateDialog getCDD() {
+		if (jCalendarDateDialog == null) {
+			jCalendarDateDialog = new JCalendarDateDialog(350, 230);
+			jCalendarDateDialog.setModal(true);
+			jCalendarDateDialog.setLocationRelativeTo(btnDate);
+			jCalendarDateDialog.setMinimumWidth(350);
+			jCalendarDateDialog.setMinimumHeight(170);
+			jCalendarDateDialog.setMaximumWidth(500);
+			jCalendarDateDialog.setMaximumHeight(400);
+	
+			// Adds a listener for get the date when the 
+			jCalendarDateDialog.addComponentListener(new ComponentAdapter() {
+				/*
+				 *  (non-Javadoc)
+				 * @see java.awt.event.ComponentListener#componentHidden(java.awt.event.ComponentEvent)
+				 */
+				public void componentHidden(ComponentEvent e) {
+					lastSelectedDate = jCalendarDateDialog.getDate();
+					
+					actionListener.actionPerformed(new ActionEvent(btnDate, FilterButtonsJPanel.BUTTON_CLICKED_ACTION_ID, FilterButtonsJPanel.BUTTON_CLICKED_ACTION_COMMAND));
+
+				}			
+			});
+		
+		}
+		
+		return jCalendarDateDialog;
+	}
+
+	/**
+	 * This method initializes btnAnd
+	 *
+	 * @return javax.swing.JButton
+	 */	
+	private javax.swing.JButton getBtnAnd() {
+		if (btnAnd == null) {
+			btnAnd = new JButtonML();
+			btnAnd.setText("And");
+			btnAnd.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnAnd.setPreferredSize(new java.awt.Dimension(buttonWidthUnit, buttonHeight));
+			btnAnd.setToolTipText(Messages.getText("operator_and_explanation"));
+			map.put("And", Integer.toString(FilterButtonsJPanel.AND));
+			
+			btnAnd.addActionListener(this.getActionListener());
+		}
+
+		return btnAnd;
+	}
+
+	/**
+	 * This method initializes btnNot
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBtnNot() {
+		if (btnNot == null) {
+			btnNot = new JButtonML();
+			btnNot.setText("Not");
+			btnNot.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnNot.setPreferredSize(new java.awt.Dimension(buttonWidthUnit, buttonHeight));
+			btnNot.setToolTipText(Messages.getText("operator_not_explanation"));
+			map.put("Not", Integer.toString(FilterButtonsJPanel.NOT));
+			
+			btnNot.addMouseListener(new MouseAdapter() {
+				/*
+				 *  (non-Javadoc)
+				 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+				 */
+				public void mouseClicked(MouseEvent e) {
+					new ActionEvent(this, FilterButtonsJPanel.BUTTON_CLICKED_ACTION_ID, FilterButtonsJPanel.BUTTON_CLICKED_ACTION_COMMAND);
+				}				
+			});
+			
+			btnNot.addActionListener(this.getActionListener());
+
+		}
+
+		return btnNot;
+	}
+
+	/**
+	 * This method initializes btnOr
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBtnOr() {
+		if (btnOr == null) {
+			btnOr = new JButtonML();
+			btnOr.setText("Or");
+			btnOr.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnOr.setPreferredSize(new java.awt.Dimension(buttonWidthUnit, buttonHeight));
+			btnOr.setToolTipText(Messages.getText("operator_or_explanation"));
+			map.put("Or", Integer.toString(FilterButtonsJPanel.OR));
+			
+			btnOr.addMouseListener(new MouseAdapter() {
+				/*
+				 *  (non-Javadoc)
+				 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+				 */
+				public void mouseClicked(MouseEvent e) {
+					new ActionEvent(this, FilterButtonsJPanel.BUTTON_CLICKED_ACTION_ID, FilterButtonsJPanel.BUTTON_CLICKED_ACTION_COMMAND);
+				}				
+			});
+			
+			btnOr.addActionListener(this.getActionListener());
+		}
+
+		return btnOr;
+	}
+
+	/**
+	 * This method initializes btnParenthesis
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBtnParenthesis() {
+		if (btnParenthesis == null) {
+			btnParenthesis = new JButtonML();
+			btnParenthesis.setText("()");
+			btnParenthesis.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnParenthesis.setPreferredSize(new java.awt.Dimension(buttonWidthUnit, buttonHeight));
+			btnParenthesis.setToolTipText(Messages.getText("parenthesis_explanation"));
+			map.put("()", Integer.toString(FilterButtonsJPanel.PARENTHESIS));
+			
+			btnParenthesis.addMouseListener(new MouseAdapter() {
+				/*
+				 *  (non-Javadoc)
+				 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+				 */
+				public void mouseClicked(MouseEvent e) {
+					new ActionEvent(this, FilterButtonsJPanel.BUTTON_CLICKED_ACTION_ID, FilterButtonsJPanel.BUTTON_CLICKED_ACTION_COMMAND);
+				}				
+			});
+			
+			btnParenthesis.addActionListener(this.getActionListener());
+		}
+
+		return btnParenthesis;
+	}
+	
+	/**
+	 * This method initializes btnDeleteText
+	 * 
+	 * @return javax.swing.JButton
+	 */
+	private javax.swing.JButton getBtnDeleteText() {
+		if (btnDeleteText == null) {
+			btnDeleteText = new JButtonML();
+			btnDeleteText.setText(Messages.getText("deleteText"));
+			btnDeleteText.setMargin(new java.awt.Insets(2, 2, 2, 2));
+			btnDeleteText.setPreferredSize(new java.awt.Dimension(176, buttonHeight));
+			btnDeleteText.setToolTipText(Messages.getText("deleteText_on_filter_use_explanation"));
+			map.put(Messages.getText("deleteText"), Integer.toString(FilterButtonsJPanel.DELETE_TEXT));
+			
+			btnDeleteText.addMouseListener(new MouseAdapter() {
+				/*
+				 *  (non-Javadoc)
+				 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+				 */
+				public void mouseClicked(MouseEvent e) {
+					new ActionEvent(this, FilterButtonsJPanel.BUTTON_CLICKED_ACTION_ID, FilterButtonsJPanel.BUTTON_CLICKED_ACTION_COMMAND);
+				}				
+			});
+			
+			btnDeleteText.addActionListener(this.getActionListener());
+		}
+			
+		return btnDeleteText;	
+	}
+	
+	/**
+	 * This method initializes the "actionListener" ActionListener
+	 * 
+	 * @return ActionListener
+	 */
+	private ActionListener getActionListener() {
+		if (actionListener == null) {
+			actionListener = new ActionListener() {
+				/*
+				 *  (non-Javadoc)
+				 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+				 */
+				public void actionPerformed(ActionEvent event) {
+				   	// Notifies that has been clicked a button
+					firePropertyChange(
+							FilterButtonsJPanel.BUTTON_CLICKED_ACTION_COMMAND,
+							FilterButtonsJPanel.DEFAULT,
+							map.get(((javax.swing.JButton) event.getSource())
+									.getText()));
+		        }
+		    };
+		}
+		return actionListener;
+	}
+	
+	/**
+	 * Returns the las selected date, formatted
+	 * 
+	 * @return A formatted date
+	 */
+	public String getLastSelectedDate() {
+		if (lastSelectedDate == null)
+			return "";
+		else
+			return "Date(" + dateFormat.format(lastSelectedDate) + ")"; 
+	}
+	
+	/**
+	 * Returns the 'DateFormat' private attribute
+	 * 
+	 * @return A 'DateFormat' reference
+	 */
+	public DateFormat getDateFormat() {
+		return dateFormat;
+	}
+
+	/**
+	 * JButton with multi line tool tip text.
+	 * 
+	 * @see JButton
+	 * 
+	 * @author Pablo Piqueras Bartolome (pablo.piqueras@iver.es)
+	 */
+    protected class JButtonML extends JButton {
+		private static final long serialVersionUID = -6052122756677251026L;
+
+		/**
+		 * @see JButton#JButton()
+		 */
+		public JButtonML() {
+			super();
+		}
+
+		/**
+		 * @see JButton#JButton(Action)
+		 */
+		public JButtonML(Action a) {
+			super(a);
+		}
+
+		/**
+		 * @see JButton#JButton(Icon)
+		 */
+		public JButtonML(Icon icon) {
+			super(icon);
+		}
+
+		/**
+		 * @see JButton#JButton(String, Icon)
+		 */
+		public JButtonML(String text, Icon icon) {
+			super(text, icon);
+		}
+
+		/**
+		 * @see JButton#JButton(String)
+		 */
+		public JButtonML(String text) {
+			super(text);
+		}
+
+		/*
+    	 * (non-Javadoc)
+    	 * @see javax.swing.JComponent#createToolTip()
+    	 */
+        public JToolTip createToolTip() {
+        	// Multiline support
+        	MultiLineToolTip tip = new MultiLineToolTip();
+        	tip.setComponent(this);
+        	return tip;
+        }		
+    }
+
+	/**
+	 * JPanel with multi line tool tip text.
+	 * 
+	 * @see JPanel
+	 * 
+	 * @author Pablo Piqueras Bartolome (pablo.piqueras@iver.es)
+	 */
+    protected class JPanelML extends JPanel {
+		private static final long serialVersionUID = -5282313934096892711L;
+
+		/**
+		 * @see JPanel#JPanel()
+		 */
+		public JPanelML() {
+			super();
+		}
+
+		/**
+		 * @see JPanel#JPanel(boolean)
+		 */
+		public JPanelML(boolean isDoubleBuffered) {
+			super(isDoubleBuffered);
+		}
+
+		/**
+		 * @see JPanel#JPanel(LayoutManager, boolean)
+		 */
+		public JPanelML(LayoutManager layout, boolean isDoubleBuffered) {
+			super(layout, isDoubleBuffered);
+		}
+
+		/**
+		 * @see JPanel#JPanel(LayoutManager)
+		 */
+		public JPanelML(LayoutManager layout) {
+			super(layout);
+		}
+
+		/*
+    	 * (non-Javadoc)
+    	 * @see javax.swing.JComponent#createToolTip()
+    	 */
+        public JToolTip createToolTip() {
+        	// Multiline support
+        	MultiLineToolTip tip = new MultiLineToolTip();
+        	tip.setComponent(this);
+        	return tip;
+        }	
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/filterPanel/filterButtons/FilterButtonsJPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/IIconPaint.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/IIconPaint.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/IIconPaint.java	(revision 38348)
@@ -0,0 +1,29 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.listview;
+
+import java.awt.Graphics2D;
+/**
+ *
+ * @version 29/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface IIconPaint {
+	public void paint(Graphics2D g, boolean isSelected);
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/IIconPaint.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/IListViewPainter.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/IListViewPainter.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/IListViewPainter.java	(revision 38348)
@@ -0,0 +1,46 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.listview;
+
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+/**
+ * @version 28/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface IListViewPainter {
+	/**
+	 * Devuelve el nombre de la vista
+	 * @return
+	 */
+	public String getName();
+
+	/**
+	 * Devuelve la dimension minima del componente
+	 * @return
+	 */
+	public Dimension getPreferredSize();
+
+	/**
+	 * Pintar el componente
+	 * @param g
+	 */
+	public void paint(Graphics2D g, Rectangle visibleRect);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/IListViewPainter.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewItem.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewItem.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewItem.java	(revision 38348)
@@ -0,0 +1,140 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.listview;
+
+import java.awt.Rectangle;
+
+/**
+ * <code>ListViewItem</code> representa un item para ser usado desde
+ * ListViewComponent
+ *
+ * @version 28/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ListViewItem implements Comparable<ListViewItem> {
+	IIconPaint icon          = null;
+	String     name          = null;
+	Rectangle  nameRectangle = null;
+	Rectangle  itemRectangle = new Rectangle();
+	boolean    selected      = false;
+	boolean    showTooltip   = true;
+	Object     tag           = null;
+
+	/**
+	 * Construye un ListViewItem con un icono y su nombre.
+	 * @param icon
+	 * @param name
+	 */
+	public ListViewItem(IIconPaint icon, String name) {
+		this.icon = icon;
+		this.name = name;
+	}
+
+	/**
+	 * Obtener el nombre del item
+	 * @return
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * Definir el nombre del item
+	 * @param name
+	 */
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	/**
+	 * Obtener el icono del item
+	 * @return
+	 */
+	public IIconPaint getIcon() {
+		return icon;
+	}
+
+	/**
+	 * Especificar el icono del item
+	 * @param icon
+	 */
+	public void setIcon(IIconPaint icon) {
+		this.icon = icon;
+	}
+
+	/**
+	 * Comprobar si el item esta seleccionado
+	 * @return
+	 */
+	public boolean isSelected() {
+		return selected;
+	}
+
+	/**
+	 * Definir si el item esta seleccionado
+	 * @param selected
+	 */
+	public void setSelected(boolean selected) {
+		this.selected = selected;
+	}
+
+	/**
+	 * Definir algun campo extra necesario por el programador
+	 * @return
+	 */
+	public Object getTag() {
+		return tag;
+	}
+
+	/**
+	 * Obtiene el campo extra
+	 * @return
+	 */
+	public void setTag(Object tag) {
+		this.tag = tag;
+	}
+
+	public boolean isShowTooltip() {
+		return showTooltip;
+	}
+
+	public void setShowTooltip(boolean showTooltip) {
+		this.showTooltip = showTooltip;
+	}
+
+	public Rectangle getNameRectangle() {
+		return nameRectangle;
+	}
+
+	public void setNameRectangle(Rectangle nameRectangle) {
+		this.nameRectangle = nameRectangle;
+	}
+
+	public Rectangle getItemRectangle() {
+		return itemRectangle;
+	}
+
+	public void setItemRectangle(Rectangle itemRectangle) {
+		this.itemRectangle = itemRectangle;
+	}
+
+	public int compareTo(ListViewItem listViewItem) {
+		return getName().compareTo(listViewItem.getName());
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewItem.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/PaintList.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/PaintList.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/PaintList.java	(revision 38348)
@@ -0,0 +1,131 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.listview.painters;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FontMetrics;
+import java.awt.GradientPaint;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.Shape;
+import java.util.ArrayList;
+
+import org.gvsig.gui.beans.listview.IListViewPainter;
+import org.gvsig.gui.beans.listview.ListViewItem;
+/**
+ * @version 28/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class PaintList implements IListViewPainter {
+	ArrayList items = null;
+	int iconsWidth = 35;
+	int minIconsWidth = 35;
+	Dimension lastDimension = new Dimension(0, 0);
+
+	public PaintList(ArrayList items) {
+		this.items = items;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.graphic.listview.IListViewPainter#getName()
+	 */
+	public String getName() {
+		return "List";
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.graphic.listview.IListViewPainter#getPreferredSize()
+	 */
+	public Dimension getPreferredSize() {
+		return lastDimension;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.graphic.listview.IListViewPainter#paint(java.awt.Graphics2D, int, int)
+	 */
+	public void paint(Graphics2D g, Rectangle visibleRect) {
+		FontMetrics fm = g.getFontMetrics();
+
+		int minAux = 0;
+		for (int i = 0; i < items.size(); i++) {
+			int auxWidth = g.getFontMetrics().stringWidth(((ListViewItem) items.get(i)).getName()) + 8;
+			if (minAux < auxWidth)
+				minAux = auxWidth;
+		}
+		minAux = visibleRect.width - minAux;
+		if (minAux < minIconsWidth)
+			minAux = minIconsWidth;
+		iconsWidth = minAux;
+
+		int height2 = 0;
+		int width2 = 0;
+		for (int i = 0; i < items.size(); i++) {
+			((ListViewItem) items.get(i)).setNameRectangle(null);
+
+			int auxWidth = g.getFontMetrics().stringWidth(((ListViewItem) items.get(i)).getName());
+			if ((minIconsWidth + 3 + auxWidth - visibleRect.x) > visibleRect.width) {
+				((ListViewItem) items.get(i)).setShowTooltip(true);
+			} else {
+				((ListViewItem) items.get(i)).setShowTooltip(false);
+			}
+			if (width2 < auxWidth)
+				width2 = auxWidth;
+
+			((ListViewItem) items.get(i)).getItemRectangle().setBounds(visibleRect.x, i * 17, visibleRect.width, 17);
+
+			if (!((ListViewItem) items.get(i)).getItemRectangle().intersects(visibleRect))
+				continue;
+
+			int upper = fm.getLeading() + fm.getAscent() + ((17 - fm.getHeight()) / 2);
+
+			if (((ListViewItem) items.get(i)).isSelected()) {
+				Color color1 = new Color(89, 153, 229);
+				Color color2 = new Color(31, 92, 207);
+				g.setPaint(new GradientPaint(0, i * 17 + 1, color1, 0, i * 17 + 16, color2, false));
+				g.fillRect(visibleRect.x, i * 17 + 1, visibleRect.width, 16);
+				g.setColor(new Color(61, 123, 218));
+				g.drawLine(visibleRect.x, i * 17, visibleRect.x + visibleRect.width, i * 17);
+				g.setColor(Color.white);
+			} else {
+				g.setColor(Color.black);
+			}
+			g.drawString(((ListViewItem) items.get(i)).getName(), iconsWidth + 3, (i * 17) + upper);
+			// Guardar el estado de donde se visualiza el nombre y cuanto ocupa
+			((ListViewItem) items.get(i)).setNameRectangle(new Rectangle(iconsWidth + 2, i * 17 - 1, visibleRect.width - (iconsWidth + 2), 20));
+
+			Shape clip = g.getClip();
+			g.translate(1, i * 17 + 1);
+			g.setClip(0, 0, iconsWidth, 15);
+
+			if (((ListViewItem) items.get(i)).getIcon() != null)
+				((ListViewItem) items.get(i)).getIcon().paint(g, ((ListViewItem) items.get(i)).isSelected());
+
+			g.setClip(clip);
+			g.translate(-1, -(i * 17 + 1));
+		}
+		height2 = items.size() * 17;
+
+		lastDimension = new Dimension(minIconsWidth + 3 + width2, height2);
+	//lastDimension = new Dimension(0, height2);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/PaintList.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/SmallIcon.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/SmallIcon.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/SmallIcon.java	(revision 38348)
@@ -0,0 +1,120 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.listview.painters;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.Shape;
+import java.util.ArrayList;
+
+import org.gvsig.gui.beans.listview.IListViewPainter;
+import org.gvsig.gui.beans.listview.ListViewItem;
+/**
+ * Iconos de 82x28
+ *
+ * @version 28/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class SmallIcon implements IListViewPainter {
+	ArrayList items = null;
+	int iconsWidth = 40;
+	int minIconsWidth = 40;
+	int iconsHeight = 28;
+	Dimension lastDimension = new Dimension(0, 0);
+	int cols = 0;
+
+	public SmallIcon(ArrayList items) {
+		this.items = items;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.graphic.listview.IListViewPainter#getName()
+	 */
+	public String getName() {
+		return "SmallIcon";
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.graphic.listview.IListViewPainter#getPreferredSize()
+	 */
+	public Dimension getPreferredSize() {
+		return lastDimension;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.graphic.listview.IListViewPainter#paint(java.awt.Graphics2D, int, int)
+	 */
+	public void paint(Graphics2D g, Rectangle visibleRect) {
+		int aux = (int) Math.floor(visibleRect.getWidth() / (minIconsWidth + 2));
+		if (aux > items.size())
+			aux = items.size();
+		iconsWidth = (int) (Math.floor(visibleRect.getWidth() / aux) - 2);
+
+		int height2 = 0;
+
+		int posX = 0;
+		int posY = 0;
+		cols = 0;
+		for (int i = 0; i < items.size(); i++) {
+			// Evito que se pueda editar el nombre
+			((ListViewItem) items.get(i)).setNameRectangle(null);
+
+			((ListViewItem) items.get(i)).setShowTooltip(true);
+			if (posX != 0) {
+				if (((posX + 1) * (iconsWidth + 2)) > visibleRect.getWidth()) {
+					posX = 0;
+					posY++;
+				}
+			}
+
+			((ListViewItem) items.get(i)).getItemRectangle().setBounds(posX * (iconsWidth + 2), (posY * (iconsHeight + 2)), iconsWidth + 2, iconsHeight + 2);
+			if (((ListViewItem) items.get(i)).getItemRectangle().intersects(visibleRect)) {
+				if (((ListViewItem) items.get(i)).isSelected()) {
+					g.setColor(new Color(49, 106, 197));
+					g.fillRect(posX * (iconsWidth + 2), posY * (iconsHeight + 2), iconsWidth + 2, iconsHeight + 2);
+				}
+
+				Shape clip = g.getClip();
+				g.translate(posX * (iconsWidth + 2) + 1, (posY * (iconsHeight + 2)) + 1);
+				g.setClip(0, 0, iconsWidth, iconsHeight);
+
+				if (((ListViewItem) items.get(i)).getIcon() != null)
+					((ListViewItem) items.get(i)).getIcon().paint(g, ((ListViewItem) items.get(i)).isSelected());
+
+				g.setClip(clip);
+				g.translate(- (posX * (iconsWidth + 2) + 1), - ((posY * (iconsHeight + 2)) + 1));
+			}
+
+			if (height2 < ((posY + 1) * (iconsHeight + 2)))
+				height2 = (posY + 1) * (iconsHeight + 2);
+
+			if (cols < posX)
+				cols = posX;
+
+			posX++;
+		}
+
+		lastDimension = new Dimension(minIconsWidth + 2, height2);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/SmallIcon.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/LargeIcon.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/LargeIcon.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/LargeIcon.java	(revision 38348)
@@ -0,0 +1,120 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.listview.painters;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.Shape;
+import java.util.ArrayList;
+
+import org.gvsig.gui.beans.listview.IListViewPainter;
+import org.gvsig.gui.beans.listview.ListViewItem;
+/**
+ * Iconos de 82x28
+ *
+ * @version 28/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class LargeIcon implements IListViewPainter {
+	ArrayList items = null;
+	int iconsWidth = 82;
+	int minIconsWidth = 82;
+	int iconsHeight = 28;
+	Dimension lastDimension = new Dimension(0, 0);
+	int cols = 0;
+
+	public LargeIcon(ArrayList items) {
+		this.items = items;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.graphic.listview.IListViewPainter#getName()
+	 */
+	public String getName() {
+		return "LargeIcon";
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.graphic.listview.IListViewPainter#getPreferredSize()
+	 */
+	public Dimension getPreferredSize() {
+		return lastDimension;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.graphic.listview.IListViewPainter#paint(java.awt.Graphics2D, int, int)
+	 */
+	public void paint(Graphics2D g, Rectangle visibleRect) {
+		int aux = (int) Math.floor(visibleRect.getWidth() / (minIconsWidth + 2));
+		if (aux > items.size())
+			aux = items.size();
+		iconsWidth = (int) (Math.floor(visibleRect.getWidth() / aux) - 2);
+
+		int height2 = 0;
+
+		int posX = 0;
+		int posY = 0;
+		cols = 0;
+		for (int i = 0; i < items.size(); i++) {
+			// Evito que se pueda editar el nombre
+			((ListViewItem) items.get(i)).setNameRectangle(null);
+
+			((ListViewItem) items.get(i)).setShowTooltip(true);
+			if (posX != 0) {
+				if (((posX + 1) * (iconsWidth + 2)) > visibleRect.getWidth()) {
+					posX = 0;
+					posY++;
+				}
+			}
+
+			((ListViewItem) items.get(i)).getItemRectangle().setBounds(posX * (iconsWidth + 2), (posY * (iconsHeight + 2)), iconsWidth + 2, iconsHeight + 2);
+			if (((ListViewItem) items.get(i)).getItemRectangle().intersects(visibleRect)) {
+				if (((ListViewItem) items.get(i)).isSelected()) {
+					g.setColor(new Color(49, 106, 197));
+					g.fillRect(posX * (iconsWidth + 2), posY * (iconsHeight + 2), iconsWidth + 2, iconsHeight + 2);
+				}
+
+				Shape clip = g.getClip();
+				g.translate(posX * (iconsWidth + 2) + 1, (posY * (iconsHeight + 2)) + 1);
+				g.setClip(0, 0, iconsWidth, iconsHeight);
+
+				if (((ListViewItem) items.get(i)).getIcon() != null)
+					((ListViewItem) items.get(i)).getIcon().paint(g, ((ListViewItem) items.get(i)).isSelected());
+
+				g.setClip(clip);
+				g.translate(-(posX * (iconsWidth + 2) + 1), -((posY * (iconsHeight + 2)) + 1));
+			}
+
+			if (height2 < ((posY + 1) * (iconsHeight + 2)))
+				height2 = (posY + 1) * (iconsHeight + 2);
+
+			if (cols < posX)
+				cols = posX;
+
+			posX++;
+		}
+
+		lastDimension = new Dimension(minIconsWidth + 2, height2);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/painters/LargeIcon.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewComponent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewComponent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewComponent.java	(revision 38348)
@@ -0,0 +1,993 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.listview;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.color.ColorSpace;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorConvertOp;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.EventObject;
+import java.util.Iterator;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JComponent;
+import javax.swing.JMenu;
+import javax.swing.JPopupMenu;
+import javax.swing.JRadioButtonMenuItem;
+import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+import javax.swing.JViewport;
+import javax.swing.event.AncestorEvent;
+import javax.swing.event.AncestorListener;
+
+import org.gvsig.gui.beans.listview.painters.LargeIcon;
+import org.gvsig.gui.beans.listview.painters.PaintList;
+import org.gvsig.gui.beans.listview.painters.SmallIcon;
+/**
+ * Componente grafico para representar una lista de valores
+ *
+ * @version 28/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ListViewComponent extends JComponent implements MouseListener, MouseMotionListener, ActionListener, KeyListener, FocusListener, AncestorListener {
+	private static final long serialVersionUID = 6177600314634665863L;
+
+	/**
+	 * Lista de los tipos de vista existentes
+	 */
+	private ArrayList<IListViewPainter> painters = new ArrayList<IListViewPainter>();
+	private ArrayList<JRadioButtonMenuItem> paintersMenu = new ArrayList<JRadioButtonMenuItem>();
+
+	/**
+	 * Lista de items
+	 */
+	private ArrayList<ListViewItem> items = new ArrayList<ListViewItem>();
+
+	/**
+	 * Selecciona el tipo de vista
+	 */
+	private int         view           = 0;
+
+	/**
+	 * Booleano para saber si se permite la multiselecci�n
+	 */
+	private boolean     multiSelect    = false;
+
+	private Image       image          = null;
+	private int         width          = 0;
+	private int         height         = 0;
+	private Graphics2D  widgetGraphics = null;
+	private JMenu       jMenu          = null;
+	private ButtonGroup buttonGroup    = null;
+	private JPopupMenu  jPopupMenu     = null;
+
+	private JTextField  jRenameEdit    = null;
+
+
+	private int         itemEdited     = -1;
+	private int         lastSelected   = -1;
+	private int         cursorPos      = -1;
+
+
+	private boolean     editable       = false;
+
+	private ArrayList<ListViewListener> actionCommandListeners = new ArrayList<ListViewListener>();
+
+	private ListViewItem  lastSelectedItem = null;
+
+	/**
+	 * Construye un <code>ListViewComponent</code>
+	 *
+	 */
+	public ListViewComponent() {
+		setFocusable(true);
+
+		initialize();
+	}
+
+	/**
+	 * Inicializa el <code>ListViewComponent</code>
+	 */
+	private void initialize() {
+		addListViewPainter(new PaintList(items));
+		addListViewPainter(new SmallIcon(items));
+		addListViewPainter(new LargeIcon(items));
+
+		addAncestorListener(this);
+
+		addKeyListener(this);
+		addMouseListener(this);
+		addMouseMotionListener(this);
+	}
+
+	/**
+	 * Obtiene que vista se esta usando en el componente
+	 * @return
+	 */
+	public int getView() {
+		return view;
+	}
+
+	/**
+	 * Define que vista es la que se va a usar
+	 * @param view
+	 */
+	public void setView(int view) {
+		this.view = view;
+	}
+
+	/**
+	 * Agrega una vista al componente
+	 * @param item
+	 */
+	public void addListViewPainter(IListViewPainter item) {
+		painters.add(item);
+
+		JRadioButtonMenuItem jRadioButtonMenuItem = new JRadioButtonMenuItem();
+		getButtonGroup().add(jRadioButtonMenuItem);
+
+		jRadioButtonMenuItem.setText(item.getName());
+		if (paintersMenu.size() == 0)
+			jRadioButtonMenuItem.setSelected(true);
+		getJMenu().add(jRadioButtonMenuItem);
+
+		jRadioButtonMenuItem.addActionListener(this);
+
+		paintersMenu.add(jRadioButtonMenuItem);
+	}
+	
+	/**
+	 * Sorts the specified array of objects into ascending order
+	 */
+	public void sort() {
+		Object[] list = items.toArray();
+		Arrays.sort(list);
+		items.clear();
+		for (int i = 0; i < list.length; i++) 
+			items.add((ListViewItem)list[i]);
+	}
+
+	/**
+	 * Agrega un item al componente
+	 * @param item
+	 */
+	public void addItem(ListViewItem item) {
+		addItem(item, false);
+	}
+
+	/**
+	 * Agrega un item al componente, si acceptRepeatNames es false no se aceptaran
+	 * nombres repetidos
+	 * @param item
+	 * @param acceptRepeatNames
+	 */
+	public void addItem(ListViewItem item, boolean acceptRepeatNames) {
+		items.add(item);
+		if (!acceptRepeatNames)
+			changeName(item.getName(), items.size() - 1);
+
+		viewItem(items.size() - 1);
+	}
+
+	/**
+	 * Agrega el item en la posicion especificada de la lista.
+	 * @param pos
+	 * @param item
+	 */
+	public void addItem(int pos, ListViewItem item) {
+		items.add(pos, item);
+		changeName(item.getName(), pos);
+
+		viewItem(pos);
+	}
+
+	/**
+	 * Agrega un item al componente
+	 * @param item
+	 */
+	public void removeItem(int index) {
+		items.remove(index);
+		repaint();
+	}
+
+	/**
+	 * Borra todos los items seleccionados
+	 */
+	public void removeSelecteds() {
+		for (int i = (items.size()-1); i>=0; i--)
+			if (((ListViewItem) items.get(i)).isSelected())
+				items.remove(i);
+
+		repaint();
+	}
+
+	/**
+	 * Devuelve un ArrayList con todos los items
+	 * @return
+	 */
+	@SuppressWarnings("unchecked")
+	public ArrayList getItems() {
+		return items;
+	}
+
+	private Graphics2D getWidgetGraphics() {
+		getWidgetImage();
+		return widgetGraphics;
+	}
+
+	private Image getWidgetImage() {
+		int width2 = getVisibleRect().width;
+		int height2 = getVisibleRect().height;
+		if (width2 <= 0)
+			width2 = 1;
+		if (height2 <= 0)
+			height2=1;
+
+		if ((width != width2) || (height != height2)) {
+			image = createImage(width2, height2);
+			if (image == null)
+				return null;
+			widgetGraphics = (Graphics2D) image.getGraphics();
+		}
+
+		width = width2;
+		height = height2;
+		return image;
+	}
+
+	/**
+	 * Redibujar el componente en el graphics temporal
+	 */
+	private void redrawBuffer() {
+		if (getWidgetGraphics() == null)
+			return;
+
+		/** desactivaci�n del anti-aliasing */
+		getWidgetGraphics().setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
+		getWidgetGraphics().setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
+
+		/** demanda de rendimiento r�pido */
+		getWidgetGraphics().setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);
+		getWidgetGraphics().setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_SPEED);
+		getWidgetGraphics().setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
+		getWidgetGraphics().setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
+
+		getWidgetGraphics().translate(-getVisibleRect().x, -getVisibleRect().y);
+		getWidgetGraphics().setColor(Color.white);
+		getWidgetGraphics().fillRect(getVisibleRect().x, getVisibleRect().y, getVisibleRect().width, getVisibleRect().height);
+
+		((IListViewPainter) painters.get(view)).paint((Graphics2D) getWidgetGraphics(), getVisibleRect());
+		getWidgetGraphics().translate(getVisibleRect().x, getVisibleRect().y);
+	}
+
+	public void paint(Graphics g) {
+		redrawBuffer();
+
+		if (image != null) {
+			if (isEnabled()) {
+				g.drawImage(image, getVisibleRect().x, getVisibleRect().y, this);
+			} else {
+				// Dibujar en escala de grises y aclarado para cuando esta inactivo
+				BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+
+				Graphics big = bi.createGraphics();
+				big.drawImage(image, 0, 0, this);
+
+				ColorConvertOp colorConvert = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
+				colorConvert.filter(bi, bi);
+
+				big.setColor(new Color(255, 255, 255, 164));
+				big.fillRect(0, 0, width, height);
+
+				g.drawImage(bi, getVisibleRect().x, getVisibleRect().y, this);
+			}
+		}
+
+
+		Dimension size = getPreferredSize();
+		Dimension aux = ((IListViewPainter) painters.get(view)).getPreferredSize();
+		if (!size.equals(aux)) {
+			setPreferredSize(aux);
+			setSize(aux);
+		}
+
+		if (getParent() instanceof JViewport) {
+			JViewport jViewport = (JViewport) getParent();
+			if (jViewport.getParent() instanceof JScrollPane) {
+				if (items.size() > 0)
+					((JScrollPane) jViewport.getParent()).getVerticalScrollBar().setUnitIncrement(((ListViewItem) items.get(0)).getItemRectangle().height);
+			}
+		}
+	}
+
+	public boolean isMultiSelect() {
+		return multiSelect;
+	}
+
+	public void setMultiSelect(boolean multiSelect) {
+		if (multiSelect == false) {
+			for (int i = 0; i<items.size(); i++)
+				((ListViewItem) items.get(i)).setSelected(false);
+			if ((lastSelected != -1) && (lastSelected < items.size()))
+				((ListViewItem) items.get(lastSelected)).setSelected(true);
+		}
+
+		this.multiSelect = multiSelect;
+		repaint();
+	}
+
+	private int getItem(int x, int y) {
+		Point point = new Point(x, y);
+		Rectangle rectangle = null;
+		for (int i = 0; i < items.size(); i++) {
+			rectangle = ((ListViewItem) items.get(i)).getItemRectangle();
+			if ((rectangle != null) && (rectangle.getBounds().contains(point)))
+				return i;
+		}
+
+		return -1;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+	 */
+	public void mousePressed(MouseEvent e) {
+		if (!isEnabled())
+			return;
+		requestFocus();
+
+		try {
+			if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != InputEvent.BUTTON1_MASK)
+				return;
+
+			cursorPos = getItem(e.getX(), e.getY());
+			viewItem(cursorPos);
+			if (cursorPos == -1)
+				return;
+
+			if (isMultiSelect()) {
+				if ((e.getModifiers() & InputEvent.SHIFT_MASK) == InputEvent.SHIFT_MASK) {
+					int pos1 = cursorPos;
+					int pos2 = lastSelected;
+					if (pos2 < pos1) {
+						pos1 = lastSelected;
+						pos2 = cursorPos;
+					}
+
+					if ((e.getModifiers() & InputEvent.CTRL_MASK) != InputEvent.CTRL_MASK)
+						for (int i = 0; i < items.size(); i++)
+							((ListViewItem) items.get(i)).setSelected(false);
+
+					for (int i = pos1; i <= pos2; i++)
+						((ListViewItem) items.get(i)).setSelected(true);
+					return;
+				}
+
+				lastSelected = cursorPos;
+
+				if ((e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK) {
+					((ListViewItem) items.get(cursorPos)).setSelected(!((ListViewItem) items.get(cursorPos)).isSelected());
+					return;
+				}
+
+				for (int i = 0; i < items.size(); i++)
+					((ListViewItem) items.get(i)).setSelected(false);
+
+				((ListViewItem) items.get(cursorPos)).setSelected(true);
+			} else {
+				boolean selected = true;
+
+				lastSelected = cursorPos;
+
+				if ((e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK)
+					selected = !((ListViewItem) items.get(cursorPos)).isSelected();
+
+				for (int i = 0; i < items.size(); i++)
+					((ListViewItem) items.get(i)).setSelected(false);
+
+				((ListViewItem) items.get(cursorPos)).setSelected(selected);
+			}
+		} finally {
+			repaint();
+		}
+	}
+
+	/**
+	 * Establece que un item debe estar visible en la vista
+	 * @param pos
+	 */
+	private void viewItem(int pos) {
+		if ((pos == -1) || (items.size()==0))
+			return;
+		redrawBuffer();
+		Dimension aux = ((IListViewPainter) painters.get(view)).getPreferredSize();
+		setPreferredSize(aux);
+		setSize(aux);
+
+		if (pos < 0)
+			pos = 0;
+
+		if (pos >= items.size())
+			pos = items.size() - 1;
+
+		if (getParent() instanceof JViewport) {
+			JViewport jViewport = (JViewport) getParent();
+
+			if (jViewport.getParent() instanceof JScrollPane) {
+				ListViewItem lvi = ((ListViewItem) items.get(pos));
+				Rectangle rectangle = (Rectangle) lvi.getItemRectangle().clone();
+				if (rectangle == null)
+					return;
+				rectangle.setLocation((int) rectangle.getX() - getVisibleRect().x, (int) rectangle.getY() - getVisibleRect().y);
+				jViewport.scrollRectToVisible(rectangle);
+				((JScrollPane)jViewport.getParent()).getVerticalScrollBar().paintImmediately(((JScrollPane)jViewport.getParent()).getVerticalScrollBar().getVisibleRect());
+			}
+		}
+	}
+
+	public void mouseDragged(MouseEvent e) {
+		if (!isEnabled())
+			return;
+		if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != InputEvent.BUTTON1_MASK)
+			return;
+
+		if (isMultiSelect()) {
+			if ((e.getModifiers() & InputEvent.SHIFT_MASK) == InputEvent.SHIFT_MASK)
+				return;
+			if ((e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK)
+				return;
+		}
+
+		int itemSelected = getItem(e.getX(), e.getY());
+
+		if (itemSelected == -1)
+			return;
+
+		lastSelected = itemSelected;
+		cursorPos = itemSelected;
+
+		for (int i = 0; i<items.size(); i++)
+			((ListViewItem) items.get(i)).setSelected(false);
+
+		((ListViewItem) items.get(itemSelected)).setSelected(true);
+
+		repaint();
+
+		viewItem(itemSelected);
+	}
+
+	private JPopupMenu getPopupMenu() {
+		if (jPopupMenu == null) {
+			jPopupMenu = new JPopupMenu();
+			getJMenu().setText("View");
+
+			jPopupMenu.add(getJMenu());
+		}
+		return jPopupMenu;
+	}
+
+	public void mouseReleased(MouseEvent e) {
+		if (!isEnabled())
+			return;
+		if ((e.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK)
+			getPopupMenu().show(this, e.getX (), e.getY () );
+
+		if ((e.getModifiers() & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) {
+			fireSelectionValueChanged();
+		}
+	}
+
+	public void mouseMoved(MouseEvent e) {
+		if (!isEnabled())
+			return;
+		int itemSelected = getItem(e.getX(), e.getY());
+
+		if (itemSelected == -1) {
+			setToolTipText(null);
+			return;
+		}
+		if (((ListViewItem) items.get(itemSelected)).isShowTooltip())
+			setToolTipText(((ListViewItem) items.get(itemSelected)).getName());
+		else
+			setToolTipText(null);
+	}
+
+	private ButtonGroup getButtonGroup() {
+		if (buttonGroup == null)
+			buttonGroup = new ButtonGroup();
+		return buttonGroup;
+	}
+
+	private JMenu getJMenu() {
+		if (jMenu == null)
+			jMenu = new JMenu();
+		return jMenu;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+	 */
+	public void actionPerformed(ActionEvent e) {
+		int pos = paintersMenu.indexOf(e.getSource());
+		view = pos;
+		viewItem(cursorPos);
+	}
+
+	/**
+	 * Returns an array of the values for the selected cells. The returned values
+	 * are sorted in increasing index order.
+	 *
+	 * @return the selected values or an empty list if nothing is selected
+	 */
+	public ListViewItem[] getSelectedValues() {
+		int cont = 0;
+		for (int i = 0; i < items.size(); i++) {
+			if (((ListViewItem) items.get(i)).isSelected())
+				cont++;
+		}
+		ListViewItem[] values = new ListViewItem[cont];
+		cont = 0;
+		for (int i = 0; i < items.size(); i++) {
+			if (((ListViewItem) items.get(i)).isSelected()) {
+				values[cont] = (ListViewItem) items.get(i);
+				cont++;
+			}
+		}
+
+		return values;
+	}
+
+	/**
+	 * Returns the first selected index; returns -1 if there is no selected item.
+	 *
+	 * @return the value of <code>getMinSelectionIndex</code>
+	 */
+	public int getSelectedIndex() {
+		for (int i = 0; i < items.size(); i++) {
+			if (((ListViewItem) items.get(i)).isSelected())
+				return i;
+		}
+		return -1;
+	}
+
+
+	/**
+	 * Select the index value
+	 *
+	 * @return the value of <code>getMinSelectionIndex</code>
+	 */
+	public void setSelectedIndex(int value) {
+		if (value < 0)
+			value = 0;
+		if (value >= items.size())
+			value = items.size() - 1;
+		for (int i = 0; i < items.size(); i++) {
+			((ListViewItem) items.get(i)).setSelected(i == value);
+		}
+		lastSelectedItem = getSelectedValue();
+		viewItem(value);
+		update(getGraphics());
+	}
+
+	/**
+	 * Returns the first selected value, or <code>null</code> if the selection
+	 * is empty.
+	 *
+	 * @return the first selected value
+	 */
+	public ListViewItem getSelectedValue() {
+		for (int i = 0; i < items.size(); i++) {
+			if (((ListViewItem) items.get(i)).isSelected())
+				return (ListViewItem) items.get(i);
+		}
+		return null;
+	}
+
+	/**
+	 * Returns an array of all of the selected indices in increasing order.
+	 *
+	 * @return all of the selected indices, in increasing order
+	 */
+	public int[] getSelectedIndices() {
+		int cont = 0;
+		for (int i = 0; i < items.size(); i++) {
+			if (((ListViewItem) items.get(i)).isSelected())
+				cont++;
+		}
+		int[] values = new int[cont];
+		cont = 0;
+		for (int i = 0; i < items.size(); i++) {
+			if (((ListViewItem) items.get(i)).isSelected()) {
+				values[cont] = i;
+				cont++;
+			}
+		}
+
+		return values;
+	}
+
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addListSelectionListener(ListViewListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeListSelectionListener(ListViewListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void fireSelectionValueChanged() {
+		lastSelectedItem = getSelectedValue();
+		Iterator<ListViewListener> acIterator = actionCommandListeners.iterator();
+		EventObject e = null;
+		while (acIterator.hasNext()) {
+			ListViewListener listener = acIterator.next();
+			if (e == null)
+				e = new EventObject(this);
+			listener.actionValueChanged(e);
+		}
+	}
+
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void fireItemNameChanged(String oldName, ListViewItem item) {
+		Iterator<ListViewListener> acIterator = actionCommandListeners.iterator();
+		EventObject e = null;
+		while (acIterator.hasNext()) {
+			ListViewListener listener = acIterator.next();
+			if (e == null)
+				e = new EventObject(this);
+			listener.actionItemNameChanged(e, oldName, item);
+		}
+	}
+	public void renameItem(int item) {
+		if (!isEditable())
+			return;
+
+		if ((item >= 0) && (item < items.size())) {
+			if (((ListViewItem) items.get(item)).isSelected()) {
+				Rectangle rectangle = ((ListViewItem) items.get(item)).getNameRectangle();
+
+				if (rectangle != null) {
+					itemEdited = item;
+					((ListViewItem) items.get(itemEdited)).setSelected(false);
+					repaint();
+					this.setLayout(null);
+					getJRenameEdit().setText(((ListViewItem) items.get(item)).getName());
+					this.add(getJRenameEdit());
+					getJRenameEdit().setBounds(rectangle);
+					getJRenameEdit().addFocusListener(this);
+					getJRenameEdit().addKeyListener(this);
+					getJRenameEdit().requestFocus();
+					getJRenameEdit().setSelectionStart(0);
+					getJRenameEdit().setSelectionEnd(getJRenameEdit().getText().length());
+				}
+			}
+		}
+	}
+
+	public JTextField getJRenameEdit() {
+		if (jRenameEdit == null) {
+			jRenameEdit = new JTextField();
+		}
+		return jRenameEdit;
+ 	}
+
+	public void changeName(String newName, int pos) {
+		newName = newName.trim();
+		if (newName.length() == 0)
+			return;
+		String newNameAux = newName;
+		boolean isItem;
+		int newNumber = 0;
+		do {
+			isItem = false;
+			for (int i = 0; i < items.size(); i++) {
+				if ((i != pos) && (((ListViewItem) items.get(i)).getName().equals(newNameAux))) {
+					isItem = true;
+					newNumber++;
+					newNameAux = newName + "_" + newNumber;
+					break;
+				}
+			}
+		} while (isItem);
+		((ListViewItem) items.get(pos)).setName(newNameAux);
+	}
+
+	public void closeRenameEdit() {
+		if (jRenameEdit == null)
+			return;
+
+		if (itemEdited != -1) {
+			String oldName = ((ListViewItem) items.get(itemEdited)).getName();
+
+			changeName(getJRenameEdit().getText(), itemEdited);
+
+			fireItemNameChanged(oldName, (ListViewItem) items.get(itemEdited));
+
+			((ListViewItem) items.get(cursorPos)).setSelected(true);
+			itemEdited = -1;
+			repaint();
+		}
+		this.remove(getJRenameEdit());
+		jRenameEdit = null;
+		this.requestFocus();
+	}
+
+	/**
+	 * Mueve el cursor hacia abajo
+	 */
+	private void moveDown() {
+		int selItem = -1;
+
+		for (int i = 0; i < items.size(); i++) {
+			if (cursorPos == i)
+				continue;
+			if (((ListViewItem) items.get(i)).getItemRectangle().y >= (((ListViewItem) items.get(cursorPos)).getItemRectangle().y + ((ListViewItem) items.get(cursorPos)).getItemRectangle().height)) {
+				if (((ListViewItem) items.get(i)).getItemRectangle().x == ((ListViewItem) items.get(cursorPos)).getItemRectangle().x) {
+					selItem = i;
+					break;
+				}
+			}
+		}
+
+		if (selItem != -1) {
+			cursorPos = selItem;
+			setSelectedIndex(selItem);
+		}
+	}
+
+	/**
+	 * Mueve el cursor hacia la izquierda
+	 */
+	private void moveLeft() {
+		int selItem = -1;
+		for (int i = items.size() - 1; i >= 0; i--) {
+			if (cursorPos == i)
+				continue;
+			if ((((ListViewItem) items.get(i)).getItemRectangle().x + ((ListViewItem) items.get(i)).getItemRectangle().width) <= ((ListViewItem) items.get(cursorPos)).getItemRectangle().x) {
+				if (((ListViewItem) items.get(i)).getItemRectangle().y == ((ListViewItem) items.get(cursorPos)).getItemRectangle().y) {
+					selItem = i;
+					break;
+				}
+			}
+		}
+
+		if (selItem != -1) {
+			cursorPos = selItem;
+			setSelectedIndex(selItem);
+		}
+	}
+
+	/**
+	 * Mueve el cursor hacia la derecha
+	 */
+	private void moveRight() {
+		int selItem = -1;
+		for (int i = 0; i < items.size(); i++) {
+			if (cursorPos == i)
+				continue;
+			if (((ListViewItem) items.get(i)).getItemRectangle().x >= (((ListViewItem) items.get(cursorPos)).getItemRectangle().x + ((ListViewItem) items.get(cursorPos)).getItemRectangle().width)) {
+				if (((ListViewItem) items.get(i)).getItemRectangle().y == ((ListViewItem) items.get(cursorPos)).getItemRectangle().y) {
+					selItem = i;
+					break;
+				}
+			}
+		}
+
+		if (selItem != -1) {
+			cursorPos = selItem;
+			setSelectedIndex(selItem);
+		}
+	}
+
+	/**
+	 * Mueve el cursor hacia arriba
+	 */
+	private void moveUp() {
+		int selItem = -1;
+		for (int i = items.size() - 1; i >= 0; i--) {
+			if (cursorPos == i)
+				continue;
+			if ((((ListViewItem) items.get(i)).getItemRectangle().y + ((ListViewItem) items.get(i)).getItemRectangle().height) <= ((ListViewItem) items.get(cursorPos)).getItemRectangle().y) {
+				if (((ListViewItem) items.get(i)).getItemRectangle().x == ((ListViewItem) items.get(cursorPos)).getItemRectangle().x) {
+					selItem = i;
+					break;
+				}
+			}
+		}
+
+		if (selItem != -1) {
+			cursorPos = selItem;
+			setSelectedIndex(selItem);
+		}
+	}
+
+	public void keyPressed(KeyEvent e) {
+		if (e.getSource() == this) {
+			switch (e.getKeyCode()) {
+				case KeyEvent.VK_F2:
+					renameItem(cursorPos);
+					break;
+				case KeyEvent.VK_DOWN:
+					moveDown();
+					break;
+				case KeyEvent.VK_LEFT:
+					moveLeft();
+					break;
+				case KeyEvent.VK_RIGHT:
+					moveRight();
+					break;
+				case KeyEvent.VK_UP:
+					moveUp();
+					break;
+				case KeyEvent.VK_HOME:
+					cursorPos = 0;
+					setSelectedIndex(cursorPos);
+					break;
+				case KeyEvent.VK_END:
+					cursorPos = items.size() - 1;
+					setSelectedIndex(cursorPos);
+					break;
+				case KeyEvent.VK_PAGE_UP:
+					if (items.size() > 0) {
+						int cont = (int) Math.floor(this.getVisibleRect().getHeight() / ((ListViewItem) items.get(0)).getItemRectangle().height);
+						for (int i = 0; i < cont; i++)
+							moveUp();
+					}
+					break;
+				case KeyEvent.VK_PAGE_DOWN:
+					if (items.size() > 0) {
+						int cont = (int) Math.floor(this.getVisibleRect().getHeight() / ((ListViewItem) items.get(0)).getItemRectangle().height);
+						for (int i = 0; i < cont; i++)
+							moveDown();
+					}
+					break;
+			}
+			return;
+		}
+		if (e.getSource() == getJRenameEdit()) {
+			switch (e.getKeyCode()) {
+				case KeyEvent.VK_ESCAPE:
+					getJRenameEdit().setText(((ListViewItem) items.get(itemEdited)).getName());
+					closeRenameEdit();
+					break;
+				case KeyEvent.VK_ENTER:
+					closeRenameEdit();
+					break;
+			}
+		}
+	}
+
+	public void keyReleased(KeyEvent e) {
+		if (e.getSource() == this) {
+			switch (e.getKeyCode()) {
+				case KeyEvent.VK_DOWN:
+				case KeyEvent.VK_UP:
+				case KeyEvent.VK_LEFT:
+				case KeyEvent.VK_RIGHT:
+				case KeyEvent.VK_HOME:
+				case KeyEvent.VK_END:
+				case KeyEvent.VK_PAGE_UP:
+				case KeyEvent.VK_PAGE_DOWN:
+					fireSelectionValueChanged();
+					break;
+			}
+		}
+	}
+
+	public void focusLost(FocusEvent e) {
+		closeRenameEdit();
+	}
+
+	public void mouseClicked(MouseEvent e) {
+		if (!isEnabled())
+			return;
+		if (e.getSource() == this)
+			// Si es doble click y hay alg�n elemento seleccionado en la lista lo eliminamos
+			if (e.getClickCount() == 2) {
+				renameItem(cursorPos);
+			}
+	}
+
+	/**
+	 * Devuelve si se puede cambiar el nombre de los items
+	 * @return
+	 */
+	public boolean isEditable() {
+		return editable;
+	}
+
+	/**
+	 * Define si se puede cambiar el nombre de los items
+	 * @param editable
+	 */
+	public void setEditable(boolean editable) {
+		this.editable = editable;
+	}
+
+	/**
+	 * Quito los eventos del JScrollPane para gestionarlos yo
+	 */
+	public void ancestorAdded(AncestorEvent event) {
+		if (getParent() instanceof JViewport) {
+			JViewport jViewport = (JViewport) getParent();
+			if (jViewport.getParent() instanceof JScrollPane) {
+				((JScrollPane) jViewport.getParent()).setActionMap(null);
+			}
+		}
+	}
+
+	/**
+	 * Devuelve el �ltimo item seleccionado. Solo el que provoco el evento.
+	 * @return
+	 */
+	public ListViewItem getLastSelectedItem() {
+		return lastSelectedItem;
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.swing.JComponent#setEnabled(boolean)
+	 */
+	public void setEnabled(boolean enabled) {
+		super.setEnabled(enabled);
+		update(getGraphics());
+	}
+
+	//[start] Codigo no usado
+	public void mouseEntered(MouseEvent e) {}
+	public void mouseExited(MouseEvent e) {}
+	public void keyTyped(KeyEvent e) {}
+	public void focusGained(FocusEvent e) {}
+	public void ancestorMoved(AncestorEvent event) {}
+	public void ancestorRemoved(AncestorEvent event) {}
+	//[end]
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewComponent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewListener.java	(revision 38348)
@@ -0,0 +1,40 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.listview;
+
+import java.util.EventListener;
+import java.util.EventObject;
+/**
+ *
+ * @version 07/08/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface ListViewListener extends EventListener {
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente.
+	 * @param e
+	 */
+	public void actionValueChanged(EventObject e);
+
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente.
+	 * @param e
+	 */
+	public void actionItemNameChanged(EventObject e, String oldName, ListViewItem item);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listview/ListViewListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButton.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButton.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButton.java	(revision 38348)
@@ -0,0 +1,228 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.colorbutton;
+
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Shape;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.util.ArrayList;
+import java.util.EventObject;
+import java.util.Iterator;
+
+import javax.swing.JComponent;
+
+import org.gvsig.gui.beans.colorchooser.ColorChooserListener;
+/**
+ *
+ * @version 03/08/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ColorButton extends JComponent implements MouseListener, ColorChooserListener {
+	private static final long serialVersionUID = 6003841064431749542L;
+
+	private ArrayList<ColorButtonListener> actionCommandListeners = new ArrayList<ColorButtonListener>();
+
+	private Color             color            = Color.black;
+	private ColorButtonDialog colorButtonPanel = null;
+	private Image             bufferImage      = null;
+	private int               width            = 0;
+	private int               height           = 0;
+	private Graphics          bufferGraphics   = null;
+
+	public ColorButton() {
+		setPreferredSize(new Dimension(40, 22));
+		setCursor(new Cursor(Cursor.HAND_CURSOR));
+		setColor(Color.black);
+		addMouseListener(this);
+	}
+
+	public void setColor(Color value) {
+		color = value;
+		refreshImage();
+	}
+
+	public Color getColor() {
+		return color;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+	 */
+	public void mousePressed(MouseEvent e) {
+		if (!isEnabled())
+			return;
+		colorButtonPanel = new ColorButtonDialog();
+		Color oldColor = getColor();
+		colorButtonPanel.setColor(oldColor);
+		colorButtonPanel.addValueChangedListener(this);
+		if (!colorButtonPanel.showDialog()) {
+			setColor(oldColor);
+			callValueChangedListeners();
+		}
+	}
+
+	public void actionValueChanged(EventObject e) {
+		setColor(colorButtonPanel.getColor());
+		callValueChangedListeners();
+	}
+
+	public void actionValueDragged(EventObject e) {
+		setColor(colorButtonPanel.getColor());
+		callValueDraggedListeners();
+	}
+
+	/**
+	 * Crea un graphics con las dimensiones del componente si no estaba creado y
+	 * lo devuelve para poder usarlo para dibujar en �l.
+	 * @return Graphics
+	 */
+	private Graphics getBufferGraphics() {
+		int width2 = getBounds().width;
+		int height2 = getBounds().height;
+		if (width2 <= 0)
+			width2 = 1;
+		if (height2 <= 0)
+			height2 = 1;
+
+		if ((width != width2) || (height != height2)) {
+			bufferImage = createImage(width2, height2);
+			if (bufferImage == null)
+				return null;
+			bufferGraphics = bufferImage.getGraphics();
+		}
+
+		width = width2;
+		height = height2;
+
+		return bufferGraphics;
+	}
+
+	/**
+	 * Redibujar el componente en el graphics temporal
+	 */
+	private void redrawBuffer() {
+		if (getBufferGraphics() == null)
+			return;
+
+		Color newColor = color;
+		if (isEnabled()) {
+			Shape oldClip = getBufferGraphics().getClip();
+			getBufferGraphics().setClip(1, 1, width - 2, height - 2);
+			if ((color == null) || (color.getAlpha() != 255)) {
+				for (int i = 0; (i * 4) <= width; i++) {
+					for (int j = 0; (j * 4) <= height; j++) {
+						if ((i + j) % 2 == 0)
+							getBufferGraphics().setColor(Color.white);
+						else
+							getBufferGraphics().setColor(new Color(204, 204, 204));
+						getBufferGraphics().fillRect(1 + i * 4, 1 + j * 4, 4, 4);
+					}
+				}
+			}
+			getBufferGraphics().setClip(oldClip);
+
+			newColor = color;
+		} else {
+			newColor = getBackground();
+		}
+
+		if (newColor != null) {
+			getBufferGraphics().setColor(newColor);
+			getBufferGraphics().fillRect(1, 1, width - 2, height - 2);
+		}
+
+		if (isEnabled())
+			getBufferGraphics().setColor(Color.black);
+		else
+			getBufferGraphics().setColor(new Color(172, 168, 153));
+		getBufferGraphics().drawRect(0, 0, width - 1, height - 1);
+	}
+
+	/**
+	 * Redibujar el componente en el graphics temporal y representarlo en el
+	 * componente
+	 */
+	private void refreshImage() {
+		redrawBuffer();
+		if (bufferImage != null)
+			getGraphics().drawImage(bufferImage, 0, 0, this);
+		super.paint(getGraphics());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#paint(java.awt.Graphics)
+	 */
+	public void paint(Graphics g) {
+		redrawBuffer();
+		g.drawImage(bufferImage, 0, 0, this);
+		super.paint(g);
+	}
+
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addValueChangedListener(ColorButtonListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeValueChangedListener(ColorButtonListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void callValueChangedListeners() {
+		Iterator<ColorButtonListener> acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			ColorButtonListener listener = acIterator.next();
+			listener.actionValueChanged(new ColorButtonEvent(this));
+		}
+	}
+
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void callValueDraggedListeners() {
+		Iterator<ColorButtonListener> acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			ColorButtonListener listener = acIterator.next();
+			listener.actionValueDragged(new ColorButtonEvent(this));
+		}
+	}
+
+
+	public void mouseClicked(MouseEvent e) {}
+	public void mouseReleased(MouseEvent e) {}
+	public void mouseEntered(MouseEvent e) {}
+	public void mouseExited(MouseEvent e) {}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButton.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonDialog.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonDialog.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonDialog.java	(revision 38348)
@@ -0,0 +1,99 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.colorbutton;
+
+import java.awt.Color;
+import java.awt.Dimension;
+
+import javax.swing.JDialog;
+
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
+import org.gvsig.gui.beans.colorchooser.ColorChooser;
+import org.gvsig.gui.beans.colorchooser.ColorChooserListener;
+import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
+/**
+ *
+ * @version 06/08/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ColorButtonDialog extends JDialog implements ButtonsPanelListener {
+	private static final long serialVersionUID = -6452724233113608938L;
+	private DefaultButtonsPanel defaultButtonsPanel = null;
+	private ColorChooser colorChooser = null;
+	private boolean result = false;
+
+	public ColorButtonDialog() {
+		initialize();
+	}
+
+	private void initialize() {
+		setResizable(false);
+		setTitle("Selector de color");
+		defaultButtonsPanel = new DefaultButtonsPanel(ButtonsPanel.BUTTONS_ACCEPTCANCEL);
+		defaultButtonsPanel.getButtonsPanel().setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 7, 0));
+		add(defaultButtonsPanel);
+		colorChooser = new ColorChooser();
+		defaultButtonsPanel.add(colorChooser);
+		defaultButtonsPanel.addButtonPressedListener(this);
+		colorChooser.setPreferredSize(new Dimension(220, (int) colorChooser.getPreferredSize().getHeight()));
+		pack();
+	}
+
+	/**
+	 * @param listener
+	 * @see org.gvsig.gui.beans.colorchooser.ColorChooser#addValueChangedListener(org.gvsig.gui.beans.colorchooser.ColorChooserListener)
+	 */
+	public void addValueChangedListener(ColorChooserListener listener) {
+		colorChooser.addValueChangedListener(listener);
+	}
+
+	/**
+	 * @return
+	 * @see org.gvsig.gui.beans.colorchooser.ColorChooser#getColor()
+	 */
+	public Color getColor() {
+		return colorChooser.getColor();
+	}
+
+	/**
+	 * @param value
+	 * @see org.gvsig.gui.beans.colorchooser.ColorChooser#setColor(java.awt.Color)
+	 */
+	public void setColor(Color value) {
+		colorChooser.setColor(value);
+	}
+
+	public boolean showDialog() {
+		setModal(true);
+		setVisible(true);
+		return result;
+	}
+
+	public void actionButtonPressed(ButtonsPanelEvent e) {
+		switch (e.getButton()) {
+			case ButtonsPanel.BUTTON_ACCEPT:
+				result = true;
+			case ButtonsPanel.BUTTON_CANCEL:
+				this.setVisible(false);
+				break;
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonDialog.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonEvent.java	(revision 38348)
@@ -0,0 +1,33 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.colorbutton;
+
+import java.util.EventObject;
+/**
+ *
+ * @version 07/08/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ColorButtonEvent extends EventObject {
+	private static final long serialVersionUID = -1649548367781607532L;
+
+	public ColorButtonEvent(Object source) {
+		super(source);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonEvent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonListener.java	(revision 38348)
@@ -0,0 +1,39 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.colorbutton;
+
+import java.util.EventListener;
+/**
+ *
+ * @version 07/08/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface ColorButtonListener extends EventListener {
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente.
+	 * @param e
+	 */
+	public void actionValueChanged(ColorButtonEvent e);
+
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente.
+	 * @param e
+	 */
+	public void actionValueDragged(ColorButtonEvent e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorbutton/ColorButtonListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesPanel.java	(revision 38348)
@@ -0,0 +1,167 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.propertiespanel;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.util.ArrayList;
+import java.util.Properties;
+
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
+/**
+ * Panel para crear un cuadro de propiedades de configuracion standard.
+ * Tiene botones de aceptar, cancelar y aplicar.
+ * @version 19/04/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class PropertiesPanel extends DefaultButtonsPanel {
+	private static final long serialVersionUID = 372118344763661890L;
+	PropertiesComponent propertiesComponent = null;
+
+	/**
+	 * Constructor de la calse
+	 */
+	public PropertiesPanel() {
+		super(ButtonsPanel.BUTTONS_ACCEPTCANCELAPPLY);
+		propertiesComponent = new PropertiesComponent();
+		initialize();
+	}
+
+	/**
+	 * Constructor para poder pasarle un ArrayList de PropertyStruct
+	 * @param values
+	 */
+	public PropertiesPanel(ArrayList values) {
+		super(ButtonsPanel.BUTTONS_ACCEPTCANCELAPPLY);
+		propertiesComponent = new PropertiesComponent(values);
+		initialize();
+	}
+
+	/**
+	 * Constructor para poder pasarle un Properties
+	 * @param values
+	 */
+	public PropertiesPanel(Properties properties) {
+		super(ButtonsPanel.BUTTONS_ACCEPTCANCELAPPLY);
+		propertiesComponent = new PropertiesComponent(properties);
+		initialize();
+	}
+
+	/**
+	 * A�ade un PropertyStruct al componente
+	 * @param property
+	 */
+	public void addPropertyStruct(PropertyStruct property) {
+		propertiesComponent.addPropertyStruct(property);
+	}
+
+	/**
+	 * Creaci�n de la ventana con sus componentes
+	 */
+	private void initialize() {
+		this.setLayout(new BorderLayout(0, 0));
+		this.add(propertiesComponent, BorderLayout.CENTER);
+	}
+
+	/**
+	 * A�ade una clave/valor al panel de propiedades.<br>
+	 * <br>
+	 * El componente seleccionado dependera del instanceof del valor y las
+	 * opciones extras que se pongan. Por ejemplo: para el instanceof de un String
+	 * siempre se usara un JTextField, en cambio, para un Integer, se podran usar
+	 * 3 tipos, el JSlider, JComboBox y JSpinner. Estos tipos se especifican en el
+	 * array extras, poniendolo siempre en la posicion 0. En la posici�n 1 y 2 de
+	 * un JSlider se puede especificar el m�nimo y el m�ximo del Slider.
+	 *
+	 * @param textLabel
+	 * @param key
+	 * @param value
+	 * @param extras
+	 */
+	public void addValue(String textLabel, String key, Object value, Object[] extras) {
+		propertiesComponent.addValue(textLabel, key, value, extras);
+	}
+
+	/**
+	 * A�ade una clave valor al panel de propiedades.
+	 * @param key
+	 * @param value
+	 */
+	public void put(Object key, Object value) {
+		propertiesComponent.put(key, value);
+	}
+
+	/**
+	 * Obtener todos los valores de la ventana, esto ser� un
+	 * <code><b>ArrayList</b></code> que contendr� elementos de tipo
+	 * <code><b>PropertyStruct</b></code>, pudiendo tener el valor antes de
+	 * ser modificado y el nuevo valor.
+	 *
+	 * @see <code>PropertyStruct</code>
+	 *
+	 * @return ArrayList de elementos de tipo <code>PropertyStruct</code>
+	 */
+	public ArrayList getValues() {
+		return propertiesComponent.getValues();
+	}
+
+	/**
+	 * Obtener todos los valores de la ventana en formato java.util.Properties
+	 * @return
+	 */
+	public Properties getProperties() {
+		return propertiesComponent.getProperties();
+	}
+	
+	/**
+	 * Devuelve el componente del interfaz que trata esa variable, hay que tener
+	 * cuidado, puede devolver null o un componente distinto al esperado si se
+	 * mod�fica esta clase.
+	 * @param name
+	 * @return
+	 */
+	public Component getComponentUI(String name) {
+		return propertiesComponent.getComponentUI(name);
+	}
+
+	/**
+	 * A�adir el disparador de cuando se pulsa un bot�n.
+	 * @param listener
+	 */
+	public void addStateChangedListener(PropertiesComponentListener listener) {
+		propertiesComponent.addStateChangedListener(listener);
+	}
+
+	/**
+	 * Borrar el disparador de eventos de los botones.
+	 * @param listener
+	 */
+	public void removeStateChangedListener(PropertiesComponentListener listener) {
+		propertiesComponent.removeStateChangedListener(listener);
+	}
+
+	/**
+	 * Devuelve el PropertiesComponent que contiene este panel.
+	 * @return PropertiesComponent
+	 */
+	public PropertiesComponent getPropertiesComponent(){
+		return propertiesComponent;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/JPanelProperty.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/JPanelProperty.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/JPanelProperty.java	(revision 38348)
@@ -0,0 +1,63 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.propertiespanel;
+
+import java.util.ArrayList;
+import java.util.EventObject;
+import java.util.Iterator;
+
+import javax.swing.JPanel;
+/**
+ * Clase base que sirve para meter JPanels dentro de un PropertiesComponent
+ *
+ * @version 06/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class JPanelProperty extends JPanel {
+	private static final long	serialVersionUID	= 3024638614874519828L;
+	private ArrayList actionCommandListeners = new ArrayList();
+
+	/**
+	 * A�adir el disparador de cuando se pulsa un bot�n.
+	 * @param listener
+	 */
+	public void addStateChangedListener(PropertiesComponentListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Borrar el disparador de eventos de los botones.
+	 * @param listener
+	 */
+	public void removeStateChangedListener(PropertiesComponentListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	/**
+	 * Metodo que se invoca para informar de que ha cambiado un estado
+	 */
+	protected void callStateChanged() {
+		Iterator acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			PropertiesComponentListener listener = (PropertiesComponentListener) acIterator.next();
+			listener.actionChangeProperties(new EventObject(this));
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/JPanelProperty.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesComponent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesComponent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesComponent.java	(revision 38348)
@@ -0,0 +1,466 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.propertiespanel;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.EventObject;
+import java.util.Iterator;
+import java.util.Properties;
+
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JSpinner;
+import javax.swing.JTextField;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.gui.beans.slidertext.SliderTextContainer;
+import org.gvsig.gui.beans.slidertext.listeners.SliderEvent;
+import org.gvsig.gui.beans.slidertext.listeners.SliderListener;
+/**
+ * Componente para crear un cuadro de propiedades de configuracion standard.
+ *
+ * @version 19/04/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class PropertiesComponent extends JScrollPane implements FocusListener, KeyListener, ChangeListener, ItemListener, PropertiesComponentListener, SliderListener {
+	private static final long serialVersionUID = 372118344763661890L;
+	private ArrayList       datalist               = new ArrayList();
+	private ArrayList       actionCommandListeners = new ArrayList();
+
+	private JPanel          jPanelContent          = null;
+
+	static final public int TYPE_DEFAULT           = 1;
+	static final public int TYPE_SLIDER            = 2;
+	static final public int TYPE_COMBO             = 3;
+
+	/**
+	 * Constructor de la calse
+	 */
+	public PropertiesComponent() {
+		initialize();
+	}
+
+	/**
+	 * Constructor para poder pasarle un ArrayList de PropertyStruct
+	 * @param values
+	 */
+	public PropertiesComponent(ArrayList values) {
+		initialize();
+		for (int i=0; i<values.size(); i++) {
+			addPropertyStruct((PropertyStruct) values.get(i));
+		}
+	}
+
+	/**
+	 * Constructor para poder pasarle un Properties
+	 * @param values
+	 */
+	public PropertiesComponent(Properties properties) {
+		initialize();
+		Enumeration elements = properties.keys();
+		while (elements.hasMoreElements()) {
+			String key = (String) elements.nextElement();
+			addValue(key, key, properties.get(key), null);
+		}
+	}
+
+	/**
+	 * Creaci�n de la ventana con sus componentes
+	 */
+	private void initialize() {
+		this.setBorder(null);
+		jPanelContent = new JPanel();
+		jPanelContent.setLayout(new GridBagLayout());
+		
+		JPanel jPanelPrincipal = new JPanel();
+		jPanelPrincipal.setLayout(new GridBagLayout());
+
+		JPanel jPanelEmpty = new JPanel();
+		jPanelEmpty.setPreferredSize(new Dimension(0, 0));
+		
+		GridBagConstraints gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.fill = GridBagConstraints.BOTH;
+		jPanelPrincipal.add(jPanelContent, gridBagConstraints);
+
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 1;
+		gridBagConstraints.weightx = 1.0;
+		gridBagConstraints.weighty = 1.0;
+		jPanelPrincipal.add(jPanelEmpty, gridBagConstraints);
+		
+		this.setViewportView(jPanelPrincipal);
+	}
+
+	int y = 0;
+	/**
+	 * A�ade un PropertyStruct al componente
+	 * @param property
+	 */
+	public void addPropertyStruct(PropertyStruct property) {
+		boolean without_label = false;
+
+		JLabel label = new JLabel(property.getTextLabel() + ": ");
+
+		Component component = new JLabel("Sin soporte para: " + property.getOldValue().getClass().toString());
+
+		if (property.getOldValue() instanceof Component) {
+			component = (Component) property.getOldValue();
+			without_label = true;
+		}
+
+		// Tratamiento de Strings, como un JTextField
+		if (property.getOldValue() instanceof String) {
+			component = new JTextField(property.getOldValue().toString());
+			((JTextField) component).setMaximumSize(new Dimension(200, 25));
+			((JTextField) component).addFocusListener(this);
+			((JTextField) component).addKeyListener(this);
+		}
+
+		if (property.getOldValue() instanceof JPanelProperty) {
+			component = (JPanelProperty) property.getOldValue();
+			((JPanelProperty) component).addStateChangedListener(this);
+			without_label = true;
+		}
+
+		// Tratamiento de Integer
+		if (property.getOldValue() instanceof Integer || property.getOldValue() instanceof Double) {
+			boolean created = false;
+			if (property.getExtras() != null) {
+				switch (((Integer) property.getExtras()[0]).intValue()) {
+					case TYPE_SLIDER:
+						without_label = true;
+						component = new SliderTextContainer();
+						((SliderTextContainer) component).setBorder(javax.swing.BorderFactory.createTitledBorder(property.getTextLabel()));
+
+						if (property.getExtras().length >= 2)
+							((SliderTextContainer) component).setMinimum(((Integer) property.getExtras()[1]).intValue());
+						if (property.getExtras().length >= 3)
+							((SliderTextContainer) component).setMaximum(((Integer) property.getExtras()[2]).intValue());
+						if (property.getOldValue() instanceof Integer) {
+							((SliderTextContainer) component).setDecimal(false);
+							((SliderTextContainer) component).setValue(((Integer) property.getOldValue()).intValue());
+						}
+						if (property.getOldValue() instanceof Double) {
+							((SliderTextContainer) component).setDecimal(true);
+							((SliderTextContainer) component).setValue(((Double) property.getOldValue()).doubleValue());
+						}
+
+						((SliderTextContainer) component).addValueChangedListener(this);
+
+						created = true;
+						break;
+					case TYPE_COMBO:
+						if(property.getOldValue() instanceof Integer) {
+							component = new JComboBox();
+							ArrayList aux = (ArrayList) property.getExtras()[1];
+							for (int i=0; i<aux.size(); i++)
+								((JComboBox) component).addItem(aux.get(i).toString());
+							if(property.getOldValue() instanceof Integer)
+								((JComboBox) component).setSelectedIndex(((Integer) property.getOldValue()).intValue());
+							((JComboBox) component).addItemListener(this);
+							created = true;
+						}
+						break;
+				}
+			}
+			if (!created) {
+				component = new JSpinner();
+				((JSpinner) component).setValue(property.getOldValue());
+				((JSpinner) component).addChangeListener(this);
+			}
+		}
+
+		// Tratamiento de Boolean
+		if (property.getOldValue() instanceof Boolean) {
+			component = new JCheckBox();
+			((JCheckBox) component).setSelected(((Boolean) property.getOldValue()).booleanValue());
+			((JCheckBox) component).addItemListener(this);
+		}
+
+		GridBagConstraints gridBagConstraints;
+		if (without_label) {
+			gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.gridwidth = 2;
+			gridBagConstraints.gridx = 0;
+			gridBagConstraints.gridy = y;
+			gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+			gridBagConstraints.weightx = 1.0;
+			gridBagConstraints.insets = new Insets(2, 5, 2, 5);
+			jPanelContent.add(component, gridBagConstraints);
+		} else {
+			gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.gridx = 0;
+			gridBagConstraints.gridy = y;
+			gridBagConstraints.anchor = GridBagConstraints.EAST;
+			gridBagConstraints.insets = new Insets(2, 5, 2, 2);
+			jPanelContent.add(label, gridBagConstraints);
+
+			gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.gridx = 1;
+			gridBagConstraints.gridy = y;
+			gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+			gridBagConstraints.weightx = 1.0;
+			gridBagConstraints.insets = new Insets(2, 2, 2, 5);
+			jPanelContent.add(component, gridBagConstraints);
+		}
+		y++;
+
+		label.setLabelFor(component);
+
+		property.setJLabel(label);
+		property.setComponent(component);
+		datalist.add(property);
+	}
+
+	/**
+	 * A�ade una clave/valor al panel de propiedades.<br>
+	 * <br>
+	 * El componente seleccionado dependera del instanceof del valor y las
+	 * opciones extras que se pongan. Por ejemplo: para el instanceof de un String
+	 * siempre se usara un JTextField, en cambio, para un Integer, se podran usar
+	 * 3 tipos, el JSlider, JComboBox y JSpinner. Estos tipos se especifican en el
+	 * array extras, poniendolo siempre en la posicion 0. En la posici�n 1 y 2 de
+	 * un JSlider se puede especificar el m�nimo y el m�ximo del Slider.
+	 *
+	 * @param textLabel
+	 * @param key
+	 * @param value
+	 * @param extras
+	 */
+	public void addValue(String textLabel, String key, Object value, Object[] extras) {
+		PropertyStruct propertyStruct = new PropertyStruct(textLabel, key, value, extras);
+		addPropertyStruct(propertyStruct);
+	}
+
+	/**
+	 * A�ade una clave valor al panel de propiedades.
+	 * @param key
+	 * @param value
+	 */
+	public void put(Object key, Object value) {
+		PropertyStruct propertyStruct = new PropertyStruct((String) key, (String) key, value, null);
+		addPropertyStruct(propertyStruct);
+	}
+
+	/**
+	 * Obtener todos los valores de la ventana, esto ser� un
+	 * <code><b>ArrayList</b></code> que contendr� elementos de tipo
+	 * <code><b>PropertyStruct</b></code>, pudiendo tener el valor antes de
+	 * ser modificado y el nuevo valor.
+	 *
+	 * @see <code>PropertyStruct</code>
+	 *
+	 * @return ArrayList de elementos de tipo <code>PropertyStruct</code>
+	 */
+	public ArrayList getValues() {
+		for (int i = 0; i < datalist.size(); i++) {
+			PropertyStruct propertyStruct = ((PropertyStruct) datalist.get(i));
+
+			if (propertyStruct.getComponent() instanceof JTextField) {
+				propertyStruct.setNewValue(((JTextField) propertyStruct.getComponent()).getText());
+				continue;
+			}
+			if (propertyStruct.getComponent() instanceof JSpinner) {
+				propertyStruct.setNewValue(((JSpinner) propertyStruct.getComponent()).getValue());
+				continue;
+			}
+			if (propertyStruct.getComponent() instanceof SliderTextContainer) {
+				if (propertyStruct.getOldValue() instanceof Double)
+					propertyStruct.setNewValue(new Double((double) ((SliderTextContainer) propertyStruct.getComponent()).getValue()));
+				else
+					propertyStruct.setNewValue(new Integer((int) ((SliderTextContainer) propertyStruct.getComponent()).getValue()));
+				continue;
+			}
+			if (propertyStruct.getComponent() instanceof JCheckBox) {
+				propertyStruct.setNewValue(new Boolean(((JCheckBox) propertyStruct.getComponent()).getSelectedObjects()!=null));
+				continue;
+			}
+			if (propertyStruct.getComponent() instanceof JComboBox) {
+				propertyStruct.setNewValue(new Integer(((JComboBox) propertyStruct.getComponent()).getSelectedIndex()));
+				continue;
+			}
+			if (propertyStruct.getComponent() instanceof JPanelProperty) {
+				// No es necesario pq el mismo JPanel esta tb en el oldValue
+				continue;
+			}
+		}
+		return datalist;
+	}
+
+	/**
+	 * Devuelve el componente del interfaz que trata esa variable, hay que tener
+	 * cuidado, puede devolver null o un componente distinto al esperado si se
+	 * mod�fica esta clase.
+	 * @param name
+	 * @return
+	 */
+	public Component getComponentUI(String name) {
+		for (int i = 0; i < datalist.size(); i++) {
+			PropertyStruct propertyStruct = ((PropertyStruct) datalist.get(i));
+			String key = propertyStruct.getKey();
+			if (key.equals(name))
+				return propertyStruct.getComponent();
+		}
+		return null;
+	}
+	
+	/**
+	 * Obtener todos los valores de la ventana en formato java.util.Properties
+	 * @return
+	 */
+	public Properties getProperties() {
+		Properties properties = new Properties();
+		for (int i = 0; i < datalist.size(); i++) {
+			PropertyStruct propertyStruct = ((PropertyStruct) datalist.get(i));
+			String key = propertyStruct.getKey();
+
+			if (propertyStruct.getComponent() instanceof JTextField) {
+				properties.put(key, ((JTextField) propertyStruct.getComponent()).getText());
+				continue;
+			}
+			if (propertyStruct.getComponent() instanceof JSpinner) {
+				properties.put(key, ((JSpinner) propertyStruct.getComponent()).getValue());
+				continue;
+			}
+			if (propertyStruct.getComponent() instanceof SliderTextContainer) {
+				if (propertyStruct.getOldValue() instanceof Double)
+					properties.put(key, new Double((double) ((SliderTextContainer) propertyStruct.getComponent()).getValue()));
+				else
+					properties.put(key, new Integer((int) ((SliderTextContainer) propertyStruct.getComponent()).getValue()));
+				continue;
+			}
+			if (propertyStruct.getComponent() instanceof JCheckBox) {
+				properties.put(key, new Boolean(((JCheckBox) propertyStruct.getComponent()).getSelectedObjects() != null));
+				continue;
+			}
+			if (propertyStruct.getComponent() instanceof JComboBox) {
+				properties.put(key, new Integer(((JComboBox) propertyStruct.getComponent()).getSelectedIndex()));
+				continue;
+			}
+			if (propertyStruct.getComponent() instanceof JPanelProperty) {
+				properties.put(key, (JPanelProperty) propertyStruct.getComponent());
+				continue;
+			}
+		}
+		return properties;
+	}
+
+	/**
+	 * A�adir el disparador de cuando se pulsa un bot�n.
+	 * @param listener
+	 */
+	public void addStateChangedListener(PropertiesComponentListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Borrar el disparador de eventos de los botones.
+	 * @param listener
+	 */
+	public void removeStateChangedListener(PropertiesComponentListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	private void callStateChanged() {
+		Iterator acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			PropertiesComponentListener listener = (PropertiesComponentListener) acIterator.next();
+			listener.actionChangeProperties(new EventObject(this));
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
+	 */
+	public void stateChanged(ChangeEvent e) {
+		callStateChanged();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
+	 */
+	public void itemStateChanged(ItemEvent e) {
+		callStateChanged();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.FocusListener#focusLost(java.awt.event.FocusEvent)
+	 */
+	public void focusLost(FocusEvent e) {
+		callStateChanged();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
+	 */
+	public void keyReleased(KeyEvent e) {
+		if (e.getKeyCode() == 10)
+			callStateChanged();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.propertiespanel.PropertiesComponentListener#actionChangeProperties(java.util.EventObject)
+	 */
+	public void actionChangeProperties(EventObject e) {
+		callStateChanged();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.slidertext.listeners.SliderListener#actionValueChanged(org.gvsig.gui.beans.slidertext.listeners.SliderEvent)
+	 */
+	public void actionValueChanged(SliderEvent e) {
+		callStateChanged();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.slidertext.listeners.SliderListener#actionValueDragged(org.gvsig.gui.beans.slidertext.listeners.SliderEvent)
+	 */
+	public void actionValueDragged(SliderEvent e) {
+		//callStateChanged();
+	}
+
+	public void keyTyped(KeyEvent e) {}
+	public void focusGained(FocusEvent e) {}
+	public void keyPressed(KeyEvent e) {}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesComponent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesComponentListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesComponentListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesComponentListener.java	(revision 38348)
@@ -0,0 +1,8 @@
+package org.gvsig.gui.beans.propertiespanel;
+
+import java.util.EventListener;
+import java.util.EventObject;
+
+public interface PropertiesComponentListener extends EventListener {
+	public void actionChangeProperties(EventObject e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertiesComponentListener.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertyStruct.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertyStruct.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertyStruct.java	(revision 38348)
@@ -0,0 +1,186 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.propertiespanel;
+
+import java.awt.Component;
+
+import javax.swing.JLabel;
+/**
+ * Clase con todos los datos posibles que puede tener una clave/valor
+ * especificada.
+ *
+ * @version 23/04/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class PropertyStruct {
+	/**
+	 * Representa al contenido que tendra el label
+	 */
+	private String textLabel = "";
+
+	/**
+	 * Clave del elemento
+	 */
+	private String key = "";
+
+	/**
+	 * Valor inicial del elemento
+	 */
+	private Object oldValue = null;
+
+	/**
+	 * Valor despu�s de haberlo modificado en la ventana
+	 */
+	private Object newValue = null;
+
+	/**
+	 * Lista de opciones extras que determina como sera un
+	 * <code>Component</code>
+	 */
+	private Object[] extras = null;
+
+	/**
+	 * <code>JLabel</code> que representa al componente
+	 */
+	private JLabel jLabel = null;
+
+	/**
+	 * Componente en si donde se modificar� el valor
+	 */
+	private Component component = null;
+
+	/**
+	 * Crea un PropertyStruct vacio
+	 */
+	public PropertyStruct() {
+	}
+
+	/**
+	 * Crea un PropertyStruct;
+	 * @param textLabel
+	 * @param key
+	 * @param value
+	 * @param extras
+	 */
+	public PropertyStruct(String textLabel, String key, Object value, Object[] extras) {
+		setTextLabel(textLabel);
+		setKey(key);
+		setOldValue(value);
+		setNewValue(value);
+		setExtras(extras);
+	}
+
+	/**
+	 * @return the component
+	 */
+	public Component getComponent() {
+		return component;
+	}
+
+	/**
+	 * @param component the component to set
+	 */
+	public void setComponent(Component component) {
+		this.component = component;
+	}
+
+	/**
+	 * @return the extras
+	 */
+	public Object[] getExtras() {
+		return extras;
+	}
+
+	/**
+	 * @param extras the extras to set
+	 */
+	public void setExtras(Object[] extras) {
+		this.extras = extras;
+	}
+
+	/**
+	 * @return the jLabel
+	 */
+	public JLabel getJLabel() {
+		return jLabel;
+	}
+
+	/**
+	 * @param label the jLabel to set
+	 */
+	public void setJLabel(JLabel label) {
+		jLabel = label;
+	}
+
+	/**
+	 * @return the key
+	 */
+	public String getKey() {
+		return key;
+	}
+
+	/**
+	 * @param key the key to set
+	 */
+	public void setKey(String key) {
+		this.key = key;
+	}
+
+	/**
+	 * @return the newValue
+	 */
+	public Object getNewValue() {
+		return newValue;
+	}
+
+	/**
+	 * @param newValue the newValue to set
+	 */
+	public void setNewValue(Object newValue) {
+		this.newValue = newValue;
+	}
+
+	/**
+	 * @return the oldValue
+	 */
+	public Object getOldValue() {
+		return oldValue;
+	}
+
+	/**
+	 * @param oldValue the oldValue to set
+	 */
+	public void setOldValue(Object oldValue) {
+		this.oldValue = oldValue;
+	}
+
+	/**
+	 * @return the textLabel
+	 */
+	public String getTextLabel() {
+		return textLabel;
+	}
+
+	/**
+	 * @param textLabel the textLabel to set
+	 */
+	public void setTextLabel(String textLabel) {
+		this.textLabel = textLabel;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/propertiespanel/PropertyStruct.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/loaders/PanelGroupLoaderFromList.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/loaders/PanelGroupLoaderFromList.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/loaders/PanelGroupLoaderFromList.java	(revision 38348)
@@ -0,0 +1,136 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.loaders;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Map;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.panelGroup.exceptions.ListCouldntLoadPanelException;
+import org.gvsig.gui.beans.panelGroup.exceptions.PanelBaseException;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+import org.gvsig.gui.beans.panelGroup.panels.IPanel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * <p>Panel loader version that doesn't load the panels, only stores and returns them.</p>
+ * <p>This loader is useful to mask the load of panels and eliminate the dependence to the extension
+ *  points, and, consequently, the dependence between the <i>libUIComponents</i> project to other
+ *  projects.</p>
+ * <p>This loader is used together with {@link PanelGroupLoaderUtilities PanelGroupLoaderUtilities} (allocated
+ * in other project), that is which really loads the panels. First use <code>PanelGroupLoaderUtilities</code>
+ * and after <code>PanelGroupLoaderFromList</code>.</p>
+ *
+ * @see IPanelGroupLoader
+ *
+ * @version 15/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class PanelGroupLoaderFromList implements IPanelGroupLoader, Serializable {
+	private static final long serialVersionUID = 3066607004928429045L;
+	final static private Logger logger = LoggerFactory.getLogger(PanelGroupLoaderFromList.class);
+
+	/**
+	 * Array with the panels loaded.
+	 *
+	 * @see #loadPanels()
+	 */
+	private Class<IPanel>[] list;
+
+	/**
+	 * <p>Initializes this loader with the panels.</p>
+	 *
+	 * @param list array with the panels that this loader supposedly load
+	 */
+	public PanelGroupLoaderFromList(Class<IPanel>[] list) {
+		this.list = list;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.loaders.IPanelGroupLoader#loadPanels(java.util.ArrayList)
+	 */
+	public void loadPanels(ArrayList<IPanel> panels) throws ListCouldntLoadPanelException {
+		if (list == null) {
+			return;
+		}
+
+		ListCouldntLoadPanelException lCLPException = null;
+		AbstractPanel panel = null;
+
+		for (int i = 0; i< list.length; i++) {
+			if (list[i] != null) {
+				try {
+					panel = null;
+					panel = (AbstractPanel) list[i].newInstance();
+					panels.add(panel);
+				} catch (Exception e) {
+					logger.debug(Messages.getText("panel_loading_exception"), e);
+
+					if ( lCLPException == null ) {
+						lCLPException = new ListCouldntLoadPanelFromListException();
+					}
+
+					PanelBaseException bew = null;
+
+					if (panel == null) {
+						bew = new PanelBaseException(e, "");
+					} else {
+						bew = new PanelBaseException(e, panel.getLabel());
+					}
+
+					lCLPException.add(bew);
+				}
+			}
+		}
+
+		if ( lCLPException != null ) {
+			throw lCLPException;
+		}
+	}
+
+	/**
+	 * <p>Exception produced when fails the load of a panel by a loader of type <code>PanelGroupLoaderFromList</code>.</p>
+	 *
+	 * @version 27/11/2007
+	 * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+	 */
+	public class ListCouldntLoadPanelFromListException extends ListCouldntLoadPanelException {
+		private static final long serialVersionUID = -8607556361881436022L;
+
+		private static final String formatString = "Couldn't load some panels from a list of classes:";
+		private static final String messageKey = "couldnt_load_panels_from_list_exception";
+
+		/**
+		 * <p>Creates an initializes a new instance of <code>ListCouldntLoadPanelFromListException</code>.</p>
+		 */
+		public ListCouldntLoadPanelFromListException() {
+			super();
+
+		}
+
+		protected Map<String, String> values() {
+			return null;
+		}
+	}
+}
+
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/loaders/IPanelGroupLoader.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/loaders/IPanelGroupLoader.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/loaders/IPanelGroupLoader.java	(revision 38348)
@@ -0,0 +1,44 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.loaders;
+
+import java.util.ArrayList;
+
+import org.gvsig.gui.beans.panelGroup.exceptions.ListCouldntLoadPanelException;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+import org.gvsig.gui.beans.panelGroup.panels.IPanel;
+
+/**
+ * <p>Interface for all loaders which return an array of {@link AbstractPanel AbstractPanel}
+ *  registered as an {@link ExtensionPoint ExtensionPoint}.</p>
+ * 
+ * @version 15/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public interface IPanelGroupLoader {
+	/**
+	 * <p>Loads and returns all <code>AbstractPanel</code> registered as an {@link ExtensionPoint ExtensionPoint}</p>
+	 * 
+	 * @param panels array with the panels or <code>null</code> if hasn't been registered any in that extension point, or that extension point didn't exit
+	 * 
+	 * @throws Exception last exception produced loading the panels
+	 */
+	public abstract void loadPanels(ArrayList<IPanel> panels) throws ListCouldntLoadPanelException;
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/treePanel/images/treenodeexpandableicon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/treePanel/images/treenodeexpandableicon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/treePanel/images/treenodecollapsibleicon.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/treePanel/images/treenodecollapsibleicon.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/treePanel/TreePanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/treePanel/TreePanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/treePanel/TreePanel.java	(revision 38348)
@@ -0,0 +1,840 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.treePanel;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.ContainerEvent;
+import java.io.Serializable;
+import java.util.Enumeration;
+
+import javax.swing.ImageIcon;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.JTree;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.TreeModelEvent;
+import javax.swing.event.TreeModelListener;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeCellRenderer;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreePath;
+import javax.swing.tree.TreeSelectionModel;
+
+import org.gvsig.gui.beans.panelGroup.AbstractPanelGroup;
+import org.gvsig.gui.beans.panelGroup.PanelGroupManager;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+import org.gvsig.gui.beans.panelGroup.panels.IPanel;
+import org.gvsig.gui.beans.panelGroup.tabbedPanel.TabbedPanel;
+
+
+/**
+ * <p>Graphical interface that's a {@link JPanel JPanel} with an inner {@link JSplitPane JSplitPane} that
+ *  contains the {@link IPanel IPanel}'s grouped in a {@link JTree JTree}.</p>
+ * <p>When user selects one of them, at the tree, that's displayed at the right pane of the split pane, and
+ *  user can work with it.</p>
+ *
+ * @see AbstractPanelGroup
+ *
+ * @version 15/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class TreePanel extends AbstractPanelGroup implements Serializable {
+	private static final long serialVersionUID = 2350636078676872309L;
+
+	/**
+	 * <p>Graphical interface where the tree and the selected panel will be drawn.</p>
+	 *
+	 * @see #getJSplitPane()
+	 */
+	private JSplitPane jSplitPane = null;
+
+	/**
+	 * <p>Graphical interface that represents a tree where panels will be listed and grouped together.</p>
+	 *
+	 * @see #getJTree()
+	 */
+	private JTree jTree = null;
+
+	/**
+	 * <p>Graphical interface where is allocated the tree.</p>
+	 *
+	 * @see #getJSplitPane()
+	 */
+	private JScrollPane treeJScrollPane = null;
+
+	/**
+	 * <p>Reference to the root node of the tree.</p>
+	 *
+	 * #see #getRootNode()
+	 */
+	private DefaultMutableTreeNode rootNode = null;
+
+	/**
+	 * <p>Reference to the tree model.</p>
+	 *
+	 * @see #getTreeModel()
+	 */
+	private DefaultTreeModel treeModel = null;
+
+	/**
+	 * <p>A panel used in the initialization of the split pane.</p>
+	 *
+	 * @see #getDefaultPanel()
+	 */
+	private AbstractPanel defaultPanel = null;
+
+	/**
+	 * <p>Name of the tree root node.</p>
+	 */
+	private final String rootNodeName = "";
+
+	/**
+	 * <p>Default (horizontal) divider width.</p>
+	 */
+	private final short DEFAULT_DIVIDER_WIDTH = 5;
+
+	/**
+	 * <p>Reference to the last node inserted or removed.</p>
+	 */
+	private DefaultMutableTreeNode lastNode = null;
+
+	/**
+	 * <p>Attribute used to hold the position of the divider.</p>
+	 */
+	private int currentDividerLocation;
+
+	/**
+	 * <p>Number of the registered panels of this group that are in the GUI.</p>
+	 */
+	private int panelsInGUICount;
+
+	static {
+		// Registers this class as a "PanelGroup" type
+		PanelGroupManager.getManager().registerPanelGroup(TabbedPanel.class);
+	}
+
+	/**
+	 * <p>Default constructor.</p>
+	 *
+	 * @param reference object that is ''semantically' or 'contextually' related to the group of panels
+	 */
+	public TreePanel(Object reference) {
+		super(reference);
+
+		initialize();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.AbstractPanelGroup#initialize()
+	 */
+	protected void initialize() {
+		super.initialize();
+
+		currentDividerLocation = -1;
+
+		panelsInGUICount = 0;
+		this.setLayout(new BorderLayout());
+		this.add(getJSplitPane(), BorderLayout.CENTER);
+	}
+
+	/**
+	 * <p>This method initializes <code>jSplitPane</code>.</p>
+	 *
+	 * @return JSplitPane
+	 */
+	protected JSplitPane getJSplitPane() {
+		if (jSplitPane == null) {
+			jSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
+			jSplitPane.setDividerSize(DEFAULT_DIVIDER_WIDTH);
+			jSplitPane.setLeftComponent(getTreeJScrollPane());
+			jSplitPane.setRightComponent(getDefaultPanel());
+			jSplitPane.setOneTouchExpandable(true);
+			jSplitPane.setDividerLocation(180);
+		}
+
+		return jSplitPane;
+	}
+
+	/**
+	 * <p>This method initializes <code>defaultPanel</code>.</p>
+	 *
+	 * @return AbstractPanel inner panel that is stored as a right panel of the <code>JSplitPane</code> object
+	 *  when this object is created
+	 */
+	protected AbstractPanel getDefaultPanel() {
+		if (defaultPanel == null) {
+			defaultPanel = new DefaultPanel();
+		}
+
+		return defaultPanel;
+	}
+
+	/**
+	 * <p>This method initializes <code>jTree</code>.</p>
+	 *
+	 * @return JTree
+	 */
+	protected JTree getJTree() {
+		if (jTree == null) {
+			jTree = new JTree(getTreeModel());
+
+			// Single Selection:
+			jTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
+
+			// Remove icons:
+			DefaultTreeCellRenderer defaultTreeCellRenderer = new DefaultTreeCellRenderer();
+			defaultTreeCellRenderer.setOpenIcon(null);
+			defaultTreeCellRenderer.setClosedIcon(null);
+			defaultTreeCellRenderer.setLeafIcon(null);
+
+			// Add new icons for the node-branches that can be expanded or collapsed
+			ImageIcon treeCellRendererIcon = new ImageIcon(TreePanel.class.getResource("images/treenodecollapsibleicon.png"), null);
+			defaultTreeCellRenderer.setOpenIcon(treeCellRendererIcon);
+			treeCellRendererIcon = new ImageIcon(TreePanel.class.getResource("images/treenodeexpandableicon.png"), null);
+			defaultTreeCellRenderer.setClosedIcon(treeCellRendererIcon);
+
+			// Root not visible
+			jTree.setRootVisible(false);
+			jTree.setCellRenderer(defaultTreeCellRenderer);
+
+			// Expand only the root node
+			// Adds support for notification that a node has been adder or removed using a ''ContainerEvent''
+			//  which is used in other AbstractPanelGruop implementations:
+			jTree.getModel().addTreeModelListener(new TreeModelListener() {
+				/*
+				 * (non-Javadoc)
+				 * @see org.apache.log4j.lf5.viewer.categoryexplorer.TreeModelAdapter#treeNodesInserted(javax.swing.event.TreeModelEvent)
+				 */
+				public void treeNodesInserted(TreeModelEvent e) {
+					// Expand only the root node
+					TreePath rootNodePath = new TreePath(getRootNode());
+
+					if (jTree.isCollapsed(rootNodePath))
+						jTree.expandPath(rootNodePath);
+
+					// Only notify as ContainerEvent the insertion of a IPanel
+					if (((DefaultMutableTreeNode)lastNode).getUserObject() instanceof IPanel)
+						dispatchEvent(new ContainerEvent(jTree, ContainerEvent.COMPONENT_ADDED, (Component)((DefaultMutableTreeNode)lastNode).getUserObject()));
+
+					lastNode = null;
+				}
+
+				/*
+				 * (non-Javadoc)
+				 * @see org.apache.log4j.lf5.viewer.categoryexplorer.TreeModelAdapter#treeNodesRemoved(javax.swing.event.TreeModelEvent)
+				 */
+				public void treeNodesRemoved(TreeModelEvent e) {
+					// Expand only the root node
+					TreePath rootNodePath = new TreePath(getRootNode());
+
+					if (jTree.isCollapsed(rootNodePath))
+						jTree.expandPath(rootNodePath);
+
+					// Only notify as ContainerEvent the insertion of a IPanel
+					if (((DefaultMutableTreeNode)lastNode).getUserObject() instanceof IPanel)
+						dispatchEvent(new ContainerEvent(jTree, ContainerEvent.COMPONENT_REMOVED, (Component)((DefaultMutableTreeNode)lastNode).getUserObject()));
+
+					lastNode = null;
+				}
+
+				public void treeNodesChanged(TreeModelEvent e) {
+					// TODO Auto-generated method stub
+
+				}
+
+				public void treeStructureChanged(TreeModelEvent e) {
+					// TODO Auto-generated method stub
+
+				}
+			});
+
+			// Set to the right panel of the JSplitPane, the AbstractPanel selected
+			// Adds support for notification that a node has been selected -> set the panel associated to
+			//  the right panel of the jSplitPane
+			jTree.addTreeSelectionListener(new TreeSelectionListener() {
+				/*
+				 * (non-Javadoc)
+				 * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
+				 */
+			    public void valueChanged(TreeSelectionEvent e) {
+			        DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
+
+			        /* If nothing is selected */
+			        if (node == null)
+			        	return;
+
+			        /* Retrieve the node that was selected and set it to the right panel of the JSPlitPane */
+			        Object object = node.getUserObject();
+
+		        	if ((object != null) && (object instanceof AbstractPanel)) {
+		        		getJSplitPane().setRightComponent((Component) object);
+
+		        		// Notifies the new panel selected
+		        		stateChanged(new ChangeEvent(object));
+
+		    			getJSplitPane().setDividerLocation(currentDividerLocation);
+			        }
+			    }
+			});
+		}
+
+		return jTree;
+	}
+
+	/**
+	 * <p>This method initializes <code>treeModel</code>.</p>
+	 *
+	 * @return DefaultTreeModel
+	 */
+	protected DefaultTreeModel getTreeModel() {
+		if (treeModel == null) {
+			treeModel = new DefaultTreeModel(getRootNode());
+		}
+
+		return treeModel;
+	}
+
+	/**
+	 * <p>This method initializes <code>rootNode</code>.</p>
+	 *
+	 * @return DefaultMutableTreeNode
+	 */
+	protected DefaultMutableTreeNode getRootNode() {
+		if (rootNode == null)
+			rootNode = new DefaultMutableTreeNode(rootNodeName);
+
+		return rootNode;
+	}
+
+	/**
+	 * <p>This method initialiazes <code>jScrollPane</code>.</p>
+	 *
+	 * @return JScrollPane
+	 */
+	protected JScrollPane getTreeJScrollPane() {
+		if (treeJScrollPane == null) {
+			treeJScrollPane = new JScrollPane();
+			treeJScrollPane.setViewportView(getJTree());
+		}
+
+		return treeJScrollPane;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.AbstractPanelGroup#loadPanel(org.gvsig.gui.beans.panelGroup.panels.IPanel)
+	 */
+	protected void loadPanel(IPanel panel) {
+		super.loadPanel(panel);
+
+		AbstractPanel panel_obj = (AbstractPanel)panel;
+
+		if (panel_obj.isVisible()) {
+			addPanelImpl(panel);
+
+			// Recalculates preferred sizes (of the right component of the JSPlitPane), and then resizes also this one if it's necessary
+			Dimension panelPreferredSize = panel_obj.getPreferredSize();
+			Dimension rightPanelPreferredSize = getJSplitPane().getRightComponent().getPreferredSize();
+
+			if ((panelPreferredSize.width > rightPanelPreferredSize.width) || (panelPreferredSize.height > rightPanelPreferredSize.height)) {
+				getJSplitPane().getRightComponent().setPreferredSize(new Dimension(Math.max(panelPreferredSize.width, rightPanelPreferredSize.width), Math.max(panelPreferredSize.height, rightPanelPreferredSize.height)));
+			}
+		}
+	}
+
+	/**
+	 * <p>Has the algorithms that allows adding a panel to the JTree component.</p>
+	 *
+	 * @param panel the panel to add
+	 *
+	 * @see #addPanel(IPanel)
+	 */
+	protected void addPanelImpl(IPanel panel) {
+		if (belongsThisGroup(panel)) {
+
+			// Don't add the panel if hasn't defined the 'label' attribute
+			if (panel.getLabel() == null)
+				return;
+
+			DefaultMutableTreeNode new_node = new DefaultMutableTreeNode(panel);
+			lastNode = new_node;
+
+			// Case 1 -> the attribute 'labelGroup' is undefined
+			if (panel.getLabelGroup() == null) {
+				getTreeModel().insertNodeInto(new_node, getRootNode(), getRootNode().getChildCount());
+				panelsInGUICount ++;
+				return;
+			}
+
+			// Case 2 -> Check if already exists a node with the same 'labelGroup' attribute than the panel
+			DefaultMutableTreeNode node;
+
+			for (short i = 0; i < getRootNode().getChildCount(); i ++) {
+				node = (DefaultMutableTreeNode) getRootNode().getChildAt(i);
+
+				if (node.getUserObject().toString().equals(panel.getLabelGroup())) {
+					getTreeModel().insertNodeInto(new_node, node, node.getChildCount());
+					panelsInGUICount ++;
+					return;
+				}
+			}
+
+			// Case 3 -> Normal insertion
+			DefaultMutableTreeNode parent = new DefaultMutableTreeNode(panel.getLabelGroup());
+			lastNode = parent;
+			getTreeModel().insertNodeInto(parent, getRootNode(), getRootNode().getChildCount());
+
+			lastNode = new_node;
+			getTreeModel().insertNodeInto(new_node, parent, 0);
+			panelsInGUICount ++;
+		}
+	}
+
+	/**
+	 * <p>Has the algorithms that allows adding a panel to the JTree component, considering the position
+	 *  of that panel in the group, and the group position in the JTree.</p>
+	 *
+	 * @param panel the panel to add
+	 *
+	 * @see #addPanel(IPanel)
+	 */
+	protected void addPanelSortOrdered(IPanel panel) {
+		if (belongsThisGroup(panel)) {
+
+			// Don't add the panel if hasn't defined the 'label' attribute
+			if (panel.getLabel() == null)
+				return;
+
+			short p_index = (short)registeredPanels.indexOf(panel);
+
+			DefaultMutableTreeNode new_node = new DefaultMutableTreeNode(panel);
+			lastNode = new_node;
+
+//			String label;
+			short l_index = 0;
+			short i;
+
+			// Case 1 -> the attribute 'labelGroup' is undefined (null)
+			if (panel.getLabelGroup() == null) {
+				Enumeration labelsAndGroups = rootNode.children();
+
+				for (i = 0; i < p_index; i++) {
+					if (registeredPanels.get(i).getLabelGroup() == null) {
+						if (labelsAndGroups.hasMoreElements()) {
+							if (((DefaultMutableTreeNode)labelsAndGroups.nextElement()).getUserObject().equals(registeredPanels.get(i)))
+								l_index ++;
+						}
+						else {
+							break;
+						}
+					}
+					else {
+						if (labelsAndGroups.hasMoreElements()) {
+							if (((DefaultMutableTreeNode)labelsAndGroups.nextElement()).getUserObject().equals(registeredPanels.get(i).getLabelGroup()))
+								l_index ++;
+						}
+						else {
+							break;
+						}
+					}
+				}
+
+				// Insert the node
+				getTreeModel().insertNodeInto(new_node, getRootNode(), l_index);
+				panelsInGUICount ++;
+				return;
+			}
+
+			// Case 2 -> Check if already exists a node with the same 'labelGroup' attribute than the panel
+			DefaultMutableTreeNode node = null;
+			Enumeration groups = rootNode.children();
+			Enumeration labels;
+
+			// Find the node with the label group
+			while (groups.hasMoreElements()) {
+				node = (DefaultMutableTreeNode) groups.nextElement();
+
+				if ((node.getUserObject()).equals(panel.getLabelGroup())) {
+					break;
+				}
+				else {
+					node = null;
+				}
+			}
+
+			if (node != null) {
+				labels = node.children();
+				l_index = 0;
+
+				// Avoid adding two times the same node
+				while (labels.hasMoreElements()) {
+					if (((DefaultMutableTreeNode)labels.nextElement()).getUserObject().equals(panel))
+						return;
+				}
+
+				labels = node.children();
+				Object leaf_panel = ((DefaultMutableTreeNode) labels.nextElement()).getUserObject();
+
+				for (i = 0; i < p_index; i++) {
+					if (registeredPanels.get(i).getLabelGroup() == panel.getLabelGroup()) {
+						if (registeredPanels.get(i).equals(leaf_panel)) {
+							l_index ++;
+
+							if (! labels.hasMoreElements())
+								break;
+
+							leaf_panel = ((DefaultMutableTreeNode) labels.nextElement()).getUserObject();
+						}
+					}
+				}
+
+				// Insert the node
+				getTreeModel().insertNodeInto(new_node, node, l_index);
+				panelsInGUICount ++;
+				return;
+			}
+
+			// Case 3 -> Normal insertion
+
+			// Check the position of the 'labelGroup' node:
+			short g_index = 0;
+
+			groups = rootNode.children();
+			String c_labelGroup = (String)((DefaultMutableTreeNode)groups.nextElement()).getUserObject();
+			String labelGroup;
+
+			for (i = 0; i < p_index; i++) {
+				labelGroup = registeredPanels.get(i).getLabelGroup();
+
+				if (c_labelGroup == null) {
+					if (labelGroup == null) {
+						c_labelGroup = (String)((DefaultMutableTreeNode)groups.nextElement()).getUserObject();
+						g_index ++;
+					}
+				}
+				else {
+					if (c_labelGroup.equals(labelGroup))
+					{
+						DefaultMutableTreeNode dmtnode = ((DefaultMutableTreeNode)groups.nextElement());
+						c_labelGroup = (String)dmtnode.getUserObject().toString();
+						g_index ++;
+					}
+				}
+			}
+
+			// Insert the node
+			DefaultMutableTreeNode parent = new DefaultMutableTreeNode(panel.getLabelGroup());
+			lastNode = parent;
+			getTreeModel().insertNodeInto(parent, getRootNode(), g_index);
+
+			lastNode = new_node;
+			getTreeModel().insertNodeInto(new_node, parent, 0);
+			panelsInGUICount ++;
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.AbstractPanelGroup#unLoadPanel(org.gvsig.gui.beans.panelGroup.panels.IPanel)
+	 */
+	protected void unLoadPanel(IPanel panel) {
+		super.unLoadPanel(panel);
+
+		removePanelImpl(panel);
+	}
+
+	/**
+	 * <p>Has the algorithms that allows removing a panel from the JTree component.</p>
+	 *
+	 * @param panel the panel to remove
+	 *
+	 * @see #removePanel(IPanel)
+	 */
+	protected void removePanelImpl(IPanel panel) {
+		if (belongsThisGroup(panel)) {
+
+			// Don't add the panel if hasn't defined the 'label' attribute
+			if (panel.getLabel() == null)
+				return;
+
+			DefaultMutableTreeNode node;
+
+			// Case 1 -> the attribute 'labelGroup' is undefined
+			if (panel.getLabelGroup() == null) {
+				for (short i = 0; i < getRootNode().getChildCount(); i ++) {
+					node = (DefaultMutableTreeNode) getRootNode().getChildAt(i);
+
+					if ((node.getUserObject().toString().equals(panel.getLabel())) && (node.getChildCount() == 0)) {
+						lastNode = node;
+						getTreeModel().removeNodeFromParent(node);
+						panelsInGUICount --;
+						return;
+					}
+				}
+
+				return;
+			}
+
+			DefaultMutableTreeNode parent;
+
+			// Case 2 -> Check if already exists a node with the same 'labelGroup' and 'label' attributes than the panel
+			for (short i = 0; i < getRootNode().getChildCount(); i ++) {
+				parent = (DefaultMutableTreeNode) getRootNode().getChildAt(i);
+
+				if ((parent.getChildCount() > 0) && (parent.getUserObject().toString().equals(panel.getLabelGroup()))) {
+					for (short j = 0; j < parent.getChildCount(); j ++) {
+						node = (DefaultMutableTreeNode)parent.getChildAt(j);
+
+						if (node.getUserObject().toString().equals(panel.getLabel())) {
+							if (parent.getChildCount() == 1) { // Case 3 -> If there is only one panel in that 'labelGroup'
+								lastNode = parent;
+								getTreeModel().removeNodeFromParent(parent);
+								panelsInGUICount --;
+							}
+							else {
+								lastNode = node;
+								getTreeModel().removeNodeFromParent(node);
+								panelsInGUICount --;
+							}
+						}
+					}
+					return;
+				}
+			}
+		}
+	}
+
+	/**
+	 * @see JTree#getSelectionPath()
+	 */
+	public TreePath getSelectionPath() {
+		return getJTree().getSelectionPath();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#getActivePanel()
+	 */
+	public IPanel getActivePanel() {
+		if (registeredPanels.size() == 0)
+			return null;
+
+		Object node = ((DefaultMutableTreeNode)getJTree().getLastSelectedPathComponent()).getUserObject();
+
+		if (node instanceof IPanel)
+			return (IPanel)node;
+		else
+			return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.AbstractPanelGroup#stateChanged(javax.swing.event.ChangeEvent)
+	 */
+	public void stateChanged(ChangeEvent e) {
+		if (registeredPanels.size() == 0)
+			return;
+
+		Object object = e.getSource();
+
+		if ((object != null) && (object instanceof IPanel)) {
+			((IPanel) object).selected();
+
+			// Get the current divider location to hold it after the selected panel will be set to the interface of the inner JTreePanel
+			currentDividerLocation = getJSplitPane().getDividerLocation();
+    	}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#updatePanelVisibility(org.gvsig.gui.beans.panelGroup.panels.IPanel, boolean)
+	 */
+	public synchronized void setPanelInGUI(IPanel panel, boolean b) {
+		if (registeredPanels.size() == 0)
+			return;
+
+		if (registeredPanels.indexOf(panel) == -1)
+			return;
+
+		if (b == true) {
+			addPanelSortOrdered((AbstractPanel)panel);
+		}
+		else {
+			removePanelImpl((AbstractPanel)panel);
+		}
+
+		repaint();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#isPanelInGUI(org.gvsig.gui.beans.panelGroup.panels.IPanel)
+	 */
+	public synchronized boolean isPanelInGUI(IPanel panel) {
+		if (!registeredPanels.contains(panel))
+			return false;
+
+		DefaultMutableTreeNode node;
+
+		for (int i = 0; i < getRootNode().getChildCount(); i++) {
+			node = (DefaultMutableTreeNode) getRootNode().getChildAt(i);
+
+			if (node.getChildCount() == 0) {
+				if (node.getUserObject().equals(panel))
+					return true;
+			}
+			else {
+				if (isPanelAtBranch(panel, node))
+					return true;
+			}
+		}
+
+		return false;
+	}
+
+	/**
+	 * <p>Returns <code>true</code> if the panel is a child of the tree node as parameter.</p>
+	 */
+	protected boolean isPanelAtBranch(IPanel panel, DefaultMutableTreeNode node) {
+		DefaultMutableTreeNode child;
+
+		for (int i = 0; i < node.getChildCount(); i++) {
+			child = (DefaultMutableTreeNode) node.getChildAt(i);
+
+			if (child.getUserObject().equals(panel))
+				return true;
+		}
+
+		return false;
+	}
+
+    /**
+     * @see JTree#addTreeSelectionListener(TreeSelectionListener)
+     */
+    public void addTreeSelectionListener(TreeSelectionListener tsl) {
+    	getJTree().addTreeSelectionListener(tsl);
+    }
+
+    /**
+     * @see JTree#removeTreeSelectionListener(TreeSelectionListener)
+     */
+    public void removeTreeSelectionListener(TreeSelectionListener tsl) {
+    	getJTree().removeTreeSelectionListener(tsl);
+    }
+
+    /**
+     * @see JTree#getTreeSelectionListeners()
+     */
+    public TreeSelectionListener[] getTreeSelectionListeners() {
+    	return getJTree().getTreeSelectionListeners();
+    }
+
+     /*
+     * (non-Javadoc)
+     * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#getPanelInGUICount()
+     */
+	public int getPanelInGUICount() {
+		return panelsInGUICount;
+	}
+
+	/**
+	 * @see JSplitPane#getDividerLocation()
+	 */
+	public int getDividerLocation() {
+		return getJSplitPane().getDividerLocation();
+	}
+
+	/**
+	 * @see JSplitPane#setDividerLocation(int)
+	 */
+	public void setDividerLocation(int location) {
+		getJSplitPane().setDividerLocation(location);
+	}
+
+	/**
+	 * @see JSplitPane#getDividerSize()
+	 */
+	public int getDividerSize() {
+		return getJSplitPane().getDividerSize();
+	}
+
+	/**
+	 * @see JSplitPane#setDividerSize()
+	 */
+	public void setDividerSize(int newSize) {
+		getJSplitPane().setDividerSize(newSize);
+	}
+
+	/**
+	 * <p>A trivial implementation of {@link AbstractPanel AbstractPanel} used in the
+	 *  initialization of the <code>jSplitPane</code> attribute.</p>
+	 *
+	 * @version 15/10/2007
+	 * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+	 */
+	protected class DefaultPanel extends AbstractPanel {
+		/**
+		 * @see AbstractPanel#AbstractPanel()
+		 */
+		public DefaultPanel() {
+			super();
+		}
+
+		/**
+		 * @see AbstractPanel#AbstractPanel(String, String, String)
+		 */
+		public DefaultPanel(String id, String label, String labelGroup) {
+			super(id, label, labelGroup);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * @see org.gvsig.gui.beans.panelGroup.panels.AbstractPanel#initialize()
+		 */
+		protected void initialize() {
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+		 */
+		public void accept() {
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+		 */
+		public void apply() {
+		}
+
+		public void cancel() {
+		}
+
+		public void selected() {
+		}
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/AbstractPanelGroup.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/AbstractPanelGroup.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/AbstractPanelGroup.java	(revision 38348)
@@ -0,0 +1,731 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup;
+
+import java.awt.BorderLayout;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Iterator;
+
+import javax.swing.JPanel;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.tools.exception.BaseException;
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.buttonspanel.IButtonsPanel;
+import org.gvsig.gui.beans.panelGroup.exceptions.EmptyPanelGroupException;
+import org.gvsig.gui.beans.panelGroup.exceptions.EmptyPanelGroupGUIException;
+import org.gvsig.gui.beans.panelGroup.exceptions.ListCouldntAddPanelException;
+import org.gvsig.gui.beans.panelGroup.exceptions.PanelBaseException;
+import org.gvsig.gui.beans.panelGroup.exceptions.PanelWithNoPreferredSizeDefinedException;
+import org.gvsig.gui.beans.panelGroup.loaders.IPanelGroupLoader;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+import org.gvsig.gui.beans.panelGroup.panels.IPanel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * <p>Represents a {@link JPanel JPanel} adapted to work with as a group of {@link IPanel IPanel}'s.</p>
+ *
+ * @see IPanelGroup
+ *
+ * @version 15/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public abstract class AbstractPanelGroup extends JPanel implements ChangeListener, IPanelGroup, IButtonsPanel {
+	final static private Logger logger = LoggerFactory.getLogger(AbstractPanelGroup.class);
+
+	/**
+	 * <p>If the last notification received has been {@linkplain AbstractPanelGroup#accept()}.</p>
+	 *
+	 * @see #accept()
+	 */
+	protected boolean accepted;
+
+	/**
+	 * <p>Properties associated to this group of panels.</p>
+	 *
+	 * @see #getProperties()
+	 */
+	private Hashtable properties;
+
+	/**
+	 * <p>Object that has a  a ''semantically'' or ''conceptually'' relation to this panel.</p>
+	 *
+	 *  @see #getReference()
+	 */
+	protected Object reference;
+
+	/**
+	 * <p>Array list with all {@link IPanel IPanel} of this group.</p>
+	 *
+	 * @see #loadPanels(IPanelGroupLoader)
+	 * @see #addPanel(IPanel)
+	 * @see #values()
+	 */
+	protected ArrayList<IPanel> registeredPanels = null;
+
+	/**
+	 * <p>Accept action identifier.</p>
+	 */
+	protected final byte ACCEPT_ACTION = 0;
+
+	/**
+	 * <p>Apply action identifier.</p>
+	 */
+	protected final byte APPLY_ACTION = 1;
+
+	/**
+	 * <p>Cancel action identifier.</p>
+	 */
+	protected final byte CANCEL_ACTION = 2;
+
+	/**
+	 * <p>Reference to another <code>IPanelGroup</code> component which contains this one.</p>
+	 */
+	protected IPanelGroup parentPanelGroup;
+
+	/**
+	 * <p>Default constructor of a group of {@link IPanel IPanel}.</p>
+	 *
+	 * @param reference object that is ''semantically' or 'contextually' related to the group of panels
+	 */
+	public AbstractPanelGroup(Object reference) {
+		this.reference = reference;
+
+		initialize();
+	}
+
+	/**
+	 * <p>Returns all panels of this group.</p>
+	 *
+	 * @return panels of this group
+	 *
+	 * @see #loadPanels(IPanelGroupLoader)
+	 * @see #addPanel(IPanel)
+	 */
+	public final Collection<IPanel> values() {
+		return registeredPanels;
+	}
+
+	/**
+	 * <p>This method is used by each concrete implementation of <code>AbstractPanelGroup</code> to
+	 *  execute its particular initialization tasks.</p>
+	 */
+	protected void initialize() {
+		accepted = false;
+		parentPanelGroup = null;
+		properties = new Hashtable();
+
+		// Resizes automatically this and its components, and when a new panel is added, gets adjust to
+		//  the new component could be displayed at least with its preferred size
+		setLayout(new BorderLayout());
+		registeredPanels = new ArrayList<IPanel>();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#loadPanels(org.gvsig.gui.beans.panelGroup.loaders.IPanelGroupLoader)
+	 */
+	public void loadPanels(IPanelGroupLoader loader) throws ListCouldntAddPanelException, EmptyPanelGroupException, EmptyPanelGroupGUIException {
+		ArrayList<IPanel> panels = new ArrayList<IPanel>();
+		ListCouldntAddPanelException listBaseException = null;
+
+		// Don't reload the panels
+		if (registeredPanels.size() > 0)
+			return;
+
+		try {
+			// Tries to load as most as possible panels
+			loader.loadPanels(panels);
+		} catch (Exception e) {
+			listBaseException = addCouldntAddPanelException(listBaseException, e);
+		}
+
+		if (panels.size() == 0) {
+			if (listBaseException == null)
+				throw new EmptyPanelGroupException();
+			else {
+				// If there were other exceptions, launch all them with the 'EmptyPanelGroupException' as the first of them.
+				listBaseException.add(new EmptyPanelGroupException());
+				throw listBaseException;
+			}
+		}
+
+		Iterator<IPanel> iterator = panels.iterator();
+		IPanel panel;
+		PanelWithNoPreferredSizeDefinedException exception;
+
+		while (iterator.hasNext()) {
+			panel = iterator.next();
+
+			try {
+				if (panel.remainsWithItsDefaultPreferredSize()) {
+					exception = new PanelWithNoPreferredSizeDefinedException(panel.getLabel());
+
+					throw exception;
+				}
+				else {
+					loadPanel(panel);
+				}
+			} catch( PanelWithNoPreferredSizeDefinedException e ) {
+				logger.debug(Messages.getText("panel_adding_exception"), e);
+				listBaseException = addCouldntAddPanelException(listBaseException, e);
+			} catch (Exception e) {
+				logger.debug(Messages.getText("panel_adding_exception"), e);
+
+				if (panel == null)
+					listBaseException = addCouldntAddPanelException(listBaseException, new PanelBaseException(e, ""));
+				else
+					listBaseException = addCouldntAddPanelException(listBaseException, new PanelBaseException(e, panel.getLabel()));
+			}
+		}
+
+		if (getPanelCount() == 0) {
+			if (listBaseException != null) {
+				// If there were other exceptions, launch all them with the 'EmptyPanelGroupException' as the first of them.
+				listBaseException = addCouldntAddPanelException(listBaseException, new EmptyPanelGroupException());
+				throw listBaseException;
+			}
+			else {
+				throw new EmptyPanelGroupException();
+			}
+		}
+
+		if (getPanelInGUICount() == 0) {
+			if (listBaseException != null) {
+				// If there were other exceptions, launch all them with the 'EmptyPanelGroupGUIException' as the first of them.
+				listBaseException = addCouldntAddPanelException(listBaseException, new EmptyPanelGroupGUIException());
+				throw listBaseException;
+			}
+			else {
+				throw new EmptyPanelGroupGUIException();
+			}
+		}
+
+		if (listBaseException != null)
+			throw listBaseException;
+	}
+
+	private ListCouldntAddPanelException addCouldntAddPanelException(ListCouldntAddPanelException l, Exception e) {
+		if( l == null ) {
+			l = new ListCouldntAddPanelException();
+		}
+
+		l.add(e);
+
+		return l;
+	}
+
+	/**
+	 * <p>Loads a particular panel. It's supposed that this panel is valid.</p>
+	 *
+	 * @param panel the panel to add
+	 *
+	 * @see #addPanel(IPanel)
+	 * @see #loadPanels(IPanelGroupLoader)
+	 */
+	protected void loadPanel(IPanel panel) {
+		panel.setPanelGroup(this);
+		panel.setReference(reference);
+		registeredPanels.add(panel);
+	}
+
+	/**
+	 * <p>Validates if the panel as parameter belongs this panel group.</p>
+	 * <p>One panel belongs this panel group if have the same references, or
+	 * both references are <code>null</code>. </p>
+	 *
+	 * @param panel the panel to validate
+	 * @return <code>true</code> if belong to this group; otherwise <code>false</code>
+	 */
+	protected boolean belongsThisGroup(IPanel panel) {
+		if (panel == null)
+			return false;
+
+		if (getReference() == null) {
+			if (panel.getReference() == null)
+				return true;
+			else
+				return false;
+		}
+		else {
+			if (panel.getReference() == null)
+				return false;
+			else {
+				if (getReference().equals(panel.getReference()))
+					return true;
+				else
+					return false;
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#isAccepted()
+	 */
+	public boolean isAccepted() {
+	  	return accepted;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#getProperties()
+	 */
+	public Hashtable getProperties() {
+		return this.properties;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#getReference()
+	 */
+	public Object getReference() {
+		return reference;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#updateReference(java.lang.Object)
+	 */
+	public void updateReference(Object reference) {
+		this.reference = reference;
+
+		for (Object panel : values().toArray()) {
+			((AbstractPanel)panel).setReference(reference);
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#accept()
+	 */
+	public void accept() {
+		this.executeAction(ACCEPT_ACTION);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#apply()
+	 */
+	public void apply() {
+		this.executeAction(APPLY_ACTION);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#cancel()
+	 */
+	public void cancel() {
+		this.executeAction(CANCEL_ACTION);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
+	 */
+	public abstract void stateChanged(ChangeEvent e);
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#addPanel(org.gvsig.gui.beans.panelGroup.panels.IPanel)
+	 */
+	public void addPanel(IPanel panel) throws BaseException {
+		BaseException baseException = null;
+		ListCouldntAddPanelException listBaseException = null;
+
+		if (panel.remainsWithItsDefaultPreferredSize()) {
+			baseException = new PanelWithNoPreferredSizeDefinedException(panel.getLabel());
+		}
+		else {
+			try {
+				if ((panel.getLabel() != null) && (belongsThisGroup(panel))) {
+					// Load the panel
+					loadPanel(panel);
+				}
+			}
+			catch (Exception e) {
+				logger.debug(Messages.getText("panel_adding_exception"), e);
+
+				if (panel == null)
+					baseException = new PanelBaseException(e, "");
+				else
+					baseException = new PanelBaseException(e, panel.getLabel());
+			}
+		}
+
+		if (registeredPanels.size() == 0) {
+			if (baseException == null) {
+				throw new EmptyPanelGroupException();
+			}
+			else {
+				listBaseException = new ListCouldntAddPanelException();
+				listBaseException.add(baseException);
+				listBaseException.add(new EmptyPanelGroupException());
+			}
+		}
+
+		if (getPanelInGUICount() == 0) {
+			if (listBaseException == null) {
+				if (baseException == null)
+					throw new EmptyPanelGroupGUIException();
+				else {
+					listBaseException = new ListCouldntAddPanelException();
+					listBaseException.add(baseException);
+					listBaseException.add(new EmptyPanelGroupGUIException());
+				}
+			}
+			else {
+				listBaseException.add(new EmptyPanelGroupGUIException());
+			}
+		}
+
+		if (listBaseException != null)
+			throw listBaseException;
+		else {
+			if (baseException != null)
+				throw baseException;
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#removePanel(org.gvsig.gui.beans.panelGroup.panels.AbstractPanel)
+	 */
+	public void removePanel(IPanel panel) {
+		if ((belongsThisGroup(panel)) && (panel.getLabel() != null)) {
+			unLoadPanel(panel);
+		}
+	}
+
+	/**
+	 * <p>Unloads a particular panel. It's supposed that this panel is valid.</p>
+	 *
+	 * @param panel the panel to add
+	 *
+	 * @see #removePanel(IPanel)
+	 * @see #loadPanel(IPanel)
+	 * @see #loadPanels(IPanelGroupLoader)
+	 */
+	protected void unLoadPanel(IPanel panel) {
+		registeredPanels.remove(panel);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#getPanelCount()
+	 */
+	public int getPanelCount() {
+		return registeredPanels.size();
+	}
+
+	/**
+	 * <p>Executes an <i>accept</i>, <i>apply</i>, or <i>cancel</i> action. This implies notify that action
+	 *  to all panels of the group.</p>
+	 *
+	 * @param action the action to execute
+	 *
+	 * @see IPanel#accept()
+	 * @see IPanel#apply()
+	 * @see IPanel#cancel()
+	 */
+	private void executeAction(byte action) {
+		Iterator<IPanel> iterator = this.registeredPanels.iterator();
+
+		while (iterator.hasNext()) {
+			IPanel panel = iterator.next();
+
+			if ((panel.hasChanged()) || ((!panel.hasChanged()) && (panel.isAlwaysApplicable()))) {
+				switch (action) {
+					case ACCEPT_ACTION:
+						accepted = true;
+						panel.accept();
+						panel.resetChangedStatus();
+						break;
+					case APPLY_ACTION:
+						accepted = false;
+						panel.apply();
+						panel.resetChangedStatus();
+						break;
+					case CANCEL_ACTION:
+						accepted = false;
+						panel.cancel();
+						panel.resetChangedStatus();
+						break;
+				}
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#setParentPanelGroup(org.gvsig.gui.beans.panelGroup.IPanelGroup)
+	 */
+	public void setParentPanelGroup(IPanelGroup parent) {
+		parentPanelGroup = parent;
+	}
+
+	///// BEGIN: Buttons Enable/Disable functionality /////
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledAcceptButton()
+	 */
+	public boolean isEnabledAcceptButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledAcceptButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledApplyButton()
+	 */
+	public boolean isEnabledApplyButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledApplyButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledCancelButton()
+	 */
+	public boolean isEnabledCancelButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledCancelButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledCloseButton()
+	 */
+	public boolean isEnabledCloseButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledCloseButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledExitButton()
+	 */
+	public boolean isEnabledExitButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledExitButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledHideDetailsButton()
+	 */
+	public boolean isEnabledHideDetailsButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledHideDetailsButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledNoButton()
+	 */
+	public boolean isEnabledNoButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledNoButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledPauseButton()
+	 */
+	public boolean isEnabledPauseButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledPauseButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledRestartButton()
+	 */
+	public boolean isEnabledRestartButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledRestartButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledSaveButton()
+	 */
+	public boolean isEnabledSaveButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledSaveButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledSeeDetailsButton()
+	 */
+	public boolean isEnabledSeeDetailsButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledSeeDetailsButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#isEnabledYesButton()
+	 */
+	public boolean isEnabledYesButton() {
+		if (parentPanelGroup != null)
+			return ((IButtonsPanel)parentPanelGroup).isEnabledYesButton();
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledAcceptButton(boolean)
+	 */
+	public void setEnabledAcceptButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledAcceptButton(b);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledApplyButton(boolean)
+	 */
+	public void setEnabledApplyButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledApplyButton(b);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledCancelButton(boolean)
+	 */
+	public void setEnabledCancelButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledCancelButton(b);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledCloseButton(boolean)
+	 */
+	public void setEnabledCloseButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledCloseButton(b);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledExitButton(boolean)
+	 */
+	public void setEnabledExitButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledExitButton(b);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledHideDetailsButton(boolean)
+	 */
+	public void setEnabledHideDetailsButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledHideDetailsButton(b);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledNoButton(boolean)
+	 */
+	public void setEnabledNoButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledNoButton(b);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledPauseButton(boolean)
+	 */
+	public void setEnabledPauseButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledPauseButton(b);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledRestartButton(boolean)
+	 */
+	public void setEnabledRestartButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledRestartButton(b);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledSaveButton(boolean)
+	 */
+	public void setEnabledSaveButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledSaveButton(b);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledSeeDetailsButton(boolean)
+	 */
+	public void setEnabledSeeDetailsButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledSeeDetailsButton(b);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.buttonspanel.IButtonsPanel#setEnabledYesButton(boolean)
+	 */
+	public void setEnabledYesButton(boolean b) {
+		if (parentPanelGroup != null)
+			((IButtonsPanel)parentPanelGroup).setEnabledYesButton(b);
+	}
+
+	///// END: Buttons Enable/Disable functionality /////
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/ListCouldntLoadPanelException.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/ListCouldntLoadPanelException.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/ListCouldntLoadPanelException.java	(revision 38348)
@@ -0,0 +1,68 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.exceptions;
+
+import java.util.Map;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.panelGroup.loaders.IPanelGroupLoader;
+import org.gvsig.tools.exception.ListBaseException;
+
+/**
+ * <p>It's possible that during the loading process of an {@link IPanelGroupLoader IPanelGroupLoader}, any of the panels
+ *  that are being loaded could failed. To avoid stop the process, the exception launched will be caught and
+ *  stored in an exception of this kind.</p>
+ *
+ * @version 27/11/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class ListCouldntLoadPanelException extends ListBaseException {
+	private static final long serialVersionUID = -8474169506341379995L;
+
+
+	// Default text that explains this kind of exception. If there is no
+	// translation associated to the
+	// "messageKey" of this exception, then the value shown will be the value of
+	// "formatString".
+	private static final String formatString = "Couldn't load some panels:";
+
+	// Key to the sentence that explains this exception. That key will be use
+	// for multilingual purposes.
+	private static final String messageKey = "couldnt_load_some_panel_exception";
+
+
+
+	protected ListCouldntLoadPanelException(String message, String key,
+			long code) {
+		super(formatString, messageKey, serialVersionUID);
+	}
+	/**
+	 * <p>Creates an initializes a new instance of <code>ListCouldntLoadPanelException</code>.</p>
+	 */
+	public ListCouldntLoadPanelException() {
+		super(formatString, messageKey, serialVersionUID);
+
+		setTranslator(new Messages());
+	}
+
+	protected Map<String, String> values() {
+		return null;
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/PanelBaseException.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/PanelBaseException.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/PanelBaseException.java	(revision 38348)
@@ -0,0 +1,136 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.exceptions;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.tools.exception.BaseException;
+
+/**
+ * <p>Adapts any <i>Java</i> exception produced working with panels to be dealed in as a {@link BaseException BaseException}.</p>
+ * 
+ * @version 11/12/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class PanelBaseException extends BaseException {
+	private static final long serialVersionUID = -5248981827020054295L;
+	protected HashMap<String, String> values;
+	public static final String PANEL_LABEL = "PANEL_LABEL";
+	public static final String CAUSE_MESSAGE = "CAUSE_MESSAGE";
+
+	/**
+	 * <p>Creates and initializes a new instance of <code>PanelBaseException</code>.</p>
+	 */
+	public PanelBaseException() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * <p>Creates and initializes a new instance of <code>PanelBaseException</code>.</p>
+	 * 
+	 * @param e the exception to be wrappered
+	 */
+	public PanelBaseException(Exception e) {
+		super();
+		initialize();
+		initCause(e);
+	}
+
+	/**
+	 * <p>Creates and initializes a new instance of <code>PanelBaseException</code>.</p>
+	 * 
+	 * @param e the exception to be wrappered
+	 * @param panelLabel label of the panel which is the source of the exception wrappered
+	 */
+	public PanelBaseException(Exception e, String panelLabel) {
+		super();
+		initialize();
+		initCause(e);
+		setPanelLabel(panelLabel);
+	}
+
+	protected Map<String, String> values() {
+		return values;
+	}
+
+	/**
+	 * <p>Initializes a <code>PanelBaseException</code> with the needed information.</p>
+	 */
+	protected void initialize() {
+		// Identifier of this kind of exception
+		this.code = serialVersionUID;
+		
+		// Default text that explains this kind of exception. If there is no translation associated to the
+		// "messageKey" of this exception, then the value shown will be the value of "formatString".
+		this.formatString = "Error loading %(" + PANEL_LABEL + ")%(" + CAUSE_MESSAGE + ").";
+
+		 // Key to the sentence that explains this exception. That key will be use for multilingual purposes.
+		this.messageKey = "panel_base_exception";
+		
+		// Map with the label of the panel
+		values = new HashMap<String, String>();
+		values.put(PANEL_LABEL, Messages.getText("a_panel"));
+		values.put(CAUSE_MESSAGE, "");
+		
+		setTranslator(new Messages());
+	}
+
+	/**
+	 * <p>Gets the label of the panel which is the source of this exception, or
+	 *  <code>null</code> if hasn't been defined.</p>
+	 * 
+	 * @return label of the panel which is the source of this exception
+	 */
+	public String getPanelLabel() {
+		return values.get(PANEL_LABEL);
+	}
+
+	/**
+	 * <p>Sets the label of the panel which is the source of this exception.</p>
+	 * 
+	 * @param panelLabel label of the panel which is the source of this exception
+	 */
+	public void setPanelLabel(String panelLabel) {
+		if ((panelLabel.equals("")) || (panelLabel == null)) {
+			values.put(PANEL_LABEL, Messages.getText("a_panel"));
+		} else {
+			values.put(PANEL_LABEL, Messages.getText("the_panel") + " \"" + panelLabel + "\"");
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.lang.Throwable#initCause(java.lang.Throwable)
+	 */
+	public Throwable initCause(Throwable cause) {
+		Throwable t = super.initCause(cause);
+		
+		if ((cause == null) || (cause.getLocalizedMessage() == null)) {
+			values.put(CAUSE_MESSAGE, "");
+		} else {
+			values.put(CAUSE_MESSAGE, ": " + cause.getLocalizedMessage());
+		}
+		
+		return t;
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/EmptyPanelGroupException.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/EmptyPanelGroupException.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/EmptyPanelGroupException.java	(revision 38348)
@@ -0,0 +1,60 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.exceptions;
+
+import java.util.Map;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.panelGroup.IPanelGroup;
+import org.gvsig.tools.exception.BaseException;
+
+/**
+ * <p>When an object of type {@link IPanelGroup IPanelGroup} tries to load panels, but
+ *  can't load any of them finally, then launches an exception of this kind.</p> 
+ * 
+ * @version 27/11/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class EmptyPanelGroupException extends BaseException {
+	private static final long serialVersionUID = -6903623253538826864L;
+
+	/**
+	 * <p>Creates an initializes a new instance of <code>EmptyPanelGroupException</code>.</p>
+	 */
+	public EmptyPanelGroupException() {
+		super();
+
+		// Identifier of this kind of exception
+		this.code = serialVersionUID;
+		
+		// Default text that explains this kind of exception. If there is no translation associated to the
+		// "messageKey" of this exception, then the value shown will be the value of "formatString".
+		this.formatString = "No panel loaded.";
+
+		 // Key to the sentence that explains this exception. That key will be use for multilingual purposes.
+		this.messageKey = "empty_panel_group_exception";
+		
+		setTranslator(new Messages());
+	}
+
+	protected Map<String, String> values() {
+		return null;
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/ListCouldntAddPanelException.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/ListCouldntAddPanelException.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/ListCouldntAddPanelException.java	(revision 38348)
@@ -0,0 +1,61 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.exceptions;
+
+import java.util.Map;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.panelGroup.loaders.IPanelGroupLoader;
+import org.gvsig.tools.exception.ListBaseException;
+
+/**
+ * <p>It's possible that during the loading process of an {@link IPanelGroupLoader IPanelGroupLoader}, any of the panels
+ *  that are being added could failed. To avoid stop the process, the exception launched will be caught and
+ *  stored in a <code>ListCouldntAddPanelException</code>.</p>
+ *
+ * @version 28/11/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class ListCouldntAddPanelException extends ListBaseException {
+	private static final long serialVersionUID = -8397609549559655067L;
+
+	// Default text that explains this kind of exception. If there is no
+	// translation associated to the
+	// "messageKey" of this exception, then the value shown will be the value of
+	// "formatString".
+	private static final String formatString = "Couldn't add some panels to the panel-group component:";
+
+	// Key to the sentence that explains this exception. That key will be use
+	// for multilingual purposes.
+	private static final String messageKey = "couldnt_add_some_panel_exception";
+
+	/**
+	 * <p>Creates an initializes a new instance of <code>ListCouldntAddPanelException</code>.</p>
+	 */
+	public ListCouldntAddPanelException() {
+		super(formatString, messageKey, serialVersionUID);
+
+		setTranslator(new Messages());
+	}
+
+	protected Map<String, String> values() {
+		return null;
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/EmptyPanelGroupGUIException.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/EmptyPanelGroupGUIException.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/EmptyPanelGroupGUIException.java	(revision 38348)
@@ -0,0 +1,60 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.exceptions;
+
+import java.util.Map;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.panelGroup.IPanelGroup;
+import org.gvsig.tools.exception.BaseException;
+
+/**
+ * <p>When an object of type {@link IPanelGroup IPanelGroup} hasn't any of its registered panels in its GUI
+ *  launches an exception of this kind.</p> 
+ * 
+ * @version 27/11/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class EmptyPanelGroupGUIException extends BaseException {
+	private static final long serialVersionUID = 1244814519514860627L;
+
+	/**
+	 * <p>Creates an initializes a new instance of <code>EmptyPanelGroupGUIException</code>.</p>
+	 */
+	public EmptyPanelGroupGUIException() {
+		super();
+
+		// Identifier of this kind of exception
+		this.code = serialVersionUID;
+		
+		// Default text that explains this kind of exception. If there is no translation associated to the
+		// "messageKey" of this exception, then the value shown will be the value of "formatString".
+		this.formatString = "No panel in the graphical user interface.";
+
+		 // Key to the sentence that explains this exception. That key will be use for multilingual purposes.
+		this.messageKey = "empty_panel_group_gui_exception";
+
+		setTranslator(new Messages());
+	}
+
+	protected Map<String, String> values() {
+		return null;
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/PanelWithNoPreferredSizeDefinedException.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/PanelWithNoPreferredSizeDefinedException.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/exceptions/PanelWithNoPreferredSizeDefinedException.java	(revision 38348)
@@ -0,0 +1,112 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.exceptions;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.panelGroup.IPanelGroup;
+import org.gvsig.tools.exception.BaseException;
+
+/**
+ * <p>If an object of type {@link IPanelGroup IPanelGroup} tries to load a panel that its preferred sized
+ *  hasn't been initialized, (not the default preferred size), then an exception of this kind will be
+ *  launched.</p>
+ * 
+ * @version 28/11/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class PanelWithNoPreferredSizeDefinedException extends BaseException {
+	private static final long serialVersionUID = 3953831724578904518L;
+	protected HashMap<String, String> values;
+	public static final String PANEL_LABEL = "PANEL_LABEL";
+
+	/**
+	 * <p>Creates an initializes a new instance of <code>PanelWithNoPreferredSizedDefinedException</code>.</p>
+	 */
+	public PanelWithNoPreferredSizeDefinedException() {
+		super();
+
+		initialize();
+	}
+	
+	/**
+	 * <p>Creates an initializes a new instance of <code>PanelWithNoPreferredSizedDefinedException</code>.</p>
+	 * 
+	 * @param panelLabel label of the panel which is the source of this exception
+	 */
+	public PanelWithNoPreferredSizeDefinedException(String panelLabel) {
+		super();
+
+		initialize();
+
+		// Sets the needed information
+		setPanelLabel(panelLabel);
+	}
+	
+	/**
+	 * <p>Initializes a <code>PanelBaseException</code> with the needed information.</p>
+	 */
+	protected void initialize() {
+		// Identifier of this kind of exception
+		this.code = serialVersionUID;
+		
+		// Default text that explains this kind of exception. If there is no translation associated to the
+		// "messageKey" of this exception, then the value shown will be the value of "formatString".
+		this.formatString = "Panel with label \"%(" + PANEL_LABEL + ")\" without preferred size defined.";
+
+		 // Key to the sentence that explains this exception. That key will be use for multilingual purposes.
+		this.messageKey = "panel_without_preferred_size_defined_exception";
+		
+		// Map with the label of the panel
+		values = new HashMap<String, String>();
+		values.put(PANEL_LABEL, "");
+
+		setTranslator(new Messages());
+	}
+
+	protected Map<String, String> values() {
+		return values;
+	}
+
+	/**
+	 * <p>Gets the label of the panel which is the source of this exception, or
+	 *  <code>null</code> if hasn't been defined.</p>
+	 * 
+	 * @return label of the panel which is the source of this exception
+	 */
+	public String getPanelLabel() {
+		return values.get(PANEL_LABEL);
+	}
+
+	/**
+	 * <p>Sets the label of the panel which is the source of this exception.</p>
+	 * 
+	 * @param panelLabel label of the panel which is the source of this exception
+	 */
+	public void setPanelLabel(String panelLabel) {
+		if (panelLabel == null) {
+			values.put(PANEL_LABEL, "");
+		} else {
+			values.put(PANEL_LABEL, panelLabel);
+		}
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/tabbedPanel/TabbedPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/tabbedPanel/TabbedPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/tabbedPanel/TabbedPanel.java	(revision 38348)
@@ -0,0 +1,340 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.tabbedPanel;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.event.ContainerEvent;
+import java.awt.event.ContainerListener;
+import java.io.Serializable;
+import java.util.Vector;
+
+import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.gui.beans.panelGroup.AbstractPanelGroup;
+import org.gvsig.gui.beans.panelGroup.PanelGroupManager;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+import org.gvsig.gui.beans.panelGroup.panels.IPanel;
+
+
+/**
+ * <p>Graphical interface that's a {@link JPanel JPanel} with an inner {@link JTabbedPane JTabbedPane} that
+ * contains the {@link IPanel IPanel}'s of this group, and supports work with them.</p>
+ * 
+ * @see AbstractPanelGroup
+ * 
+ * @version 15/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class TabbedPanel extends AbstractPanelGroup implements Serializable {
+	private static final long serialVersionUID = -7979646227156641693L;
+
+	/**
+	 * <p>Graphical interface where the panels will be drawn.</p>
+	 * 
+	 * @see #getJTabbedPane()
+	 */
+	private JTabbedPane jTabbedPane;
+
+	static {
+		// Registers this class as a "PanelGroup" type
+		PanelGroupManager.getManager().registerPanelGroup(TabbedPanel.class);
+		
+		// Sets this class as the default "PanelGroup" type
+		PanelGroupManager.getManager().setDefaultType(TabbedPanel.class);
+	}
+
+	/**
+	 * <p>Default constructor.</p>
+	 * 
+	 * @param reference object that is ''semantically' or 'contextually' related to the group of panels
+	 */
+	public TabbedPanel(Object reference) {
+		super(reference);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.AbstractPanelGroup#initialize()
+	 */
+	protected void initialize() {
+		super.initialize();
+		this.setLayout(new BorderLayout());
+		this.add(getJTabbedPane(), BorderLayout.CENTER);
+	}
+
+	/**
+	 * This method initializes jTabbedPane
+	 *
+	 * @return JTabbedPane
+	 */
+	protected JTabbedPane getJTabbedPane() {
+		if (jTabbedPane == null) {
+			jTabbedPane = new JTabbedPane();
+			jTabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
+
+			jTabbedPane.addContainerListener(new ContainerListener() {
+				/*
+				 * (non-Javadoc)
+				 * @see java.awt.event.ContainerListener#componentAdded(java.awt.event.ContainerEvent)
+				 */
+				public void componentAdded(ContainerEvent e) {
+					// Propagates the event -> this allows notify that a component has been added into this TabbedPanel
+					dispatchEvent(e);
+				}
+
+				/*
+				 * (non-Javadoc)
+				 * @see java.awt.event.ContainerListener#componentRemoved(java.awt.event.ContainerEvent)
+				 */
+				public void componentRemoved(ContainerEvent e) {
+					// Propagates the event -> this allows notify that a component has been removed from this TabbedPanel
+					dispatchEvent(e);
+				}
+			});
+
+			jTabbedPane.addChangeListener(new ChangeListener() {
+				/*
+				 * (non-Javadoc)
+				 * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
+				 */
+				public void stateChanged(ChangeEvent e) {
+					Object source = e.getSource();
+					
+					if (!((source != null) && (source instanceof JTabbedPane)))
+						return;
+
+					Object parent = ((JTabbedPane)source).getParent();
+					
+					if (!(parent instanceof TabbedPanel))
+						return;
+					
+					Object object = ((JTabbedPane)source).getSelectedComponent();
+
+					if ((object != null) && (object instanceof AbstractPanel)) {
+		        		// Notifies the new panel selected
+						((TabbedPanel)parent).stateChanged(new ChangeEvent(object));
+					}
+				}
+			});
+		}
+
+		return jTabbedPane;
+	}
+
+	/**
+	 * @see JTabbedPane#getSelectedIndex()
+	 * @see #setSelectedIndex(int)
+	 */
+	public int getSelectedIndex() {
+		return getJTabbedPane().getSelectedIndex();
+	}
+
+	/**
+	 * @see JTabbedPane#setSelectedIndex(int)
+	 * @see #getSelectedIndex()
+	 */
+	public void setSelectedIndex(int position) {
+		getJTabbedPane().setSelectedIndex(position);
+	}
+
+//	/*
+//	 * (non-Javadoc)
+//	 * @see org.gvsig.gui.beans.panelGroup.AbstractPanelGroup#addPanel(org.gvsig.gui.beans.panelGroup.panels.IPanel)
+//	 */
+//	public void addPanel(IPanel panel) throws EmptyPanelGroupException, EmptyPanelGroupGUIException, PanelWithNoPreferredSizeDefinedException {
+//		if ((belongsThisGroup(panel)) && (panel.getLabel() != null)) {
+//			super.loadPanel(panel);
+//			
+//			if (((AbstractPanel)panel).isVisible())
+//				getJTabbedPane().add(panel.getLabel(), (JPanel)panel);
+//		}
+//	}
+
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.AbstractPanelGroup#loadPanel(org.gvsig.gui.beans.panelGroup.panels.IPanel)
+	 */
+	protected void loadPanel(IPanel panel) {
+		super.loadPanel(panel);
+		
+		if (((AbstractPanel)panel).isVisible()) {
+			getJTabbedPane().add(panel.getLabel(), (JPanel)panel);
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.AbstractPanelGroup#unLoadPanel(org.gvsig.gui.beans.panelGroup.panels.IPanel)
+	 */
+	protected void unLoadPanel(IPanel panel) {
+		super.unLoadPanel(panel);
+
+		getJTabbedPane().remove((Component) panel);
+	}
+	
+//	/*
+//	 * (non-Javadoc)
+//	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#removePanel(org.gvsig.gui.beans.panelGroup.panels.AbstractPanel)
+//	 */
+//	public void removePanel(IPanel panel) {
+//		
+//		if ((belongsThisGroup(panel)) && (panel.getLabel() != null)) {
+//			super.removePanel(panel);
+//			getJTabbedPane().remove((Component) panel);
+//		}
+//	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#getActivePanel()
+	 */
+	public IPanel getActivePanel() {
+		if (getJTabbedPane().getSelectedComponent() instanceof IPanel)
+			return (IPanel)getJTabbedPane().getSelectedComponent(); 		
+		else
+			return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.AbstractPanelGroup#stateChanged(javax.swing.event.ChangeEvent)
+	 */
+	public void stateChanged(ChangeEvent e) {
+		if (registeredPanels.size() == 0)
+			return;
+
+		Object object = e.getSource();
+
+		if (object != null)
+			((IPanel)object).selected();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#setPanelInGUI(org.gvsig.gui.beans.panelGroup.panels.IPanel, boolean)
+	 */
+	public synchronized void setPanelInGUI(IPanel panel, boolean b) {
+		if (registeredPanels.size() == 0)
+			return;
+
+		if (registeredPanels.indexOf(panel) == -1)
+			return;
+		
+		// Remove all tabs and re-insert the necessary
+		Vector<Component> tabPanels = new Vector<Component>(0, getJTabbedPane().getTabCount());
+
+		for (int i = getJTabbedPane().getTabCount() -1; i >= 0; i--){
+			if (getJTabbedPane().getComponentAt(i) instanceof AbstractPanel) {
+				tabPanels.add(getJTabbedPane().getComponentAt(i));
+				getJTabbedPane().removeTabAt(i);
+			}
+		}
+
+		if (b == true) {
+			for (IPanel regPanel: registeredPanels) {
+				if (regPanel.equals(panel)) {
+					getJTabbedPane().add(panel.getLabel(), (JPanel)panel);
+				}
+				else {
+					if (tabPanels.indexOf((Component)regPanel) != -1) 
+						getJTabbedPane().add(regPanel.getLabel(), (JPanel)regPanel);
+				}
+			}
+		}
+		else {
+			for (IPanel regPanel: registeredPanels) {
+				if (tabPanels.indexOf((Component)regPanel) != -1) {
+					if (!(regPanel.equals(panel))) {
+						getJTabbedPane().add(regPanel.getLabel(), (JPanel)regPanel);
+					}
+				}
+			}
+		}
+
+		repaint();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#isPanelInGUI(org.gvsig.gui.beans.panelGroup.panels.IPanel)
+	 */
+	public synchronized boolean isPanelInGUI(IPanel panel) {
+		if (!registeredPanels.contains(panel))
+			return false;
+
+		for (int i = getJTabbedPane().getTabCount() -1; i >= 0; i--){
+			Object object = getJTabbedPane().getComponentAt(i);
+			if (object instanceof AbstractPanel) {
+				if (object.equals(panel))
+					return true;
+			}
+		}
+		
+		return false;
+	}
+
+	/**
+	 * @see JTabbedPane#setEnabledAt(int, boolean)
+	 */
+	public void setEnabledAt(int index, boolean enabled) {
+		getJTabbedPane().setEnabledAt(index, enabled);
+	}
+
+	/**
+	 * @see JTabbedPane#isEnabledAt(int)
+	 */
+	public boolean isEnabledAt(int index) {
+		return getJTabbedPane().isEnabledAt(index);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.IPanelGroup#getPanelInGUICount()
+	 */
+	public int getPanelInGUICount() {
+		return getJTabbedPane().getTabCount();
+	}
+
+	/**
+     * @see JTabbedPane#addChangeListener(ChangeListener)
+     */
+    public void addChangeListener(ChangeListener l) {
+		getJTabbedPane().addChangeListener(l);
+	}
+
+    /**
+     * @see JTabbedPane#removeChangeListener(ChangeListener)
+     */
+    public void removeChangeListener(ChangeListener l) {
+        listenerList.remove(ChangeListener.class, l);
+    }
+
+    /**
+     * @see JTabbedPane#getChangeListeners()
+     */
+    public ChangeListener[] getChangeListeners() {
+        return (ChangeListener[])listenerList.getListeners(ChangeListener.class);
+    }
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/panels/AbstractPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/panels/AbstractPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/panels/AbstractPanel.java	(revision 38348)
@@ -0,0 +1,293 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.panels;
+
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.panelGroup.AbstractPanelGroup;
+
+/**
+ * <p>Represents a {@link JPanel JPanel} adapted to work as a panel of an {@link AbstractPanelGroup  AbstractPanelGroup}.</p>
+ *  
+ * @see JPanel
+ * @see IPanel
+ * 
+ * @see AbstractPanelGroup
+ * 
+ * @version 16/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public abstract class AbstractPanel extends JPanel implements IPanel {
+	/**
+	 * <p>If this panel remains with its initial preferred size of it has been changed.</p>
+	 * 
+	 * @see #remainsWithItsDefaultPreferredSize()
+	 */
+	protected boolean remainsWithDefaultPreferredSize;
+
+	/**
+	 * <p>Optional attribute that identifies this panel.</p>
+	 * 
+	 * @see #getID()
+	 * @see #setID(String)
+	 */
+	private String id;
+
+	/**
+	 * <p>Identifier used by a {@link AbstractPanelGroup AbstractPanelGroup} to identify this panel.</p>
+	 * 
+	 * @see #getLabel()
+	 * @see #setLabel(String)
+	 */
+	private String label;
+
+	/**
+	 * <p>Identifier used to group together different <code>IPanel</code> panels
+     *      in a {@link AbstractPanelGroup AbstractPanelGroup}</p>
+     *
+     * @see #getLabelGroup()
+     * @see #setLabelGroup(String)
+	 */
+	private String labelGroup;
+
+	/**
+	 * <p>Reference to an object that is related this panel</p>
+	 * 
+	 * @see #getReference()
+	 * @see #setReference(Object)
+	 */
+	private Object reference;
+
+	/**
+	 * <p>Reference to the container of the group which this panel is a member.</p>
+	 * 
+	 * @see #getPanelGroup()
+	 * @see #setPanelGroup(AbstractPanelGroup)
+	 */
+	private AbstractPanelGroup panelGroup;
+	
+	/**
+	 * <p>Determines if this component has changed since it was created, or applied (or accepted).</p>
+	 */
+	protected boolean hasChanged;
+
+	/**
+	 * <p>Determines if this panel will always be applied and accepted, or only when has changed.</p>
+	 */
+	private boolean alwaysApplicable;
+	
+	/**
+	 * <p>Initializes this panel.</p>
+	 */
+	public AbstractPanel() {
+		super();
+		
+		id = null;
+		label = null;
+		labelGroup = null;
+		remainsWithDefaultPreferredSize = true;
+		hasChanged = false;
+		alwaysApplicable = true;
+	}
+
+	/**
+	 * <p>Initializes this panel using three parameters.</p>
+	 * 
+	 * @param id optional attribute that identifies this panel
+	 * @param label identifier used by a {@link AbstractPanelGroup AbstractPanelGroup} to identify this panel
+	 * @param labelGroup identifier used to group together different <code>IPanel</code> panels
+     *      in a {@link AbstractPanelGroup AbstractPanelGroup}
+	 */
+	public AbstractPanel(String id, String label, String labelGroup) {
+		super();
+		
+		this.id = id;
+		this.label = label;
+		this.labelGroup = labelGroup;
+		remainsWithDefaultPreferredSize = true;
+		hasChanged = false;
+		alwaysApplicable = true;
+	}
+
+	/**
+	 * <p>This method is used by each concrete implementation of <code>AbstractPanel</code> to
+	 *  execute its particular initialization tasks.</p>
+	 */
+	protected abstract void initialize();
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#getID()
+	 */
+	public String getID() {
+		return id;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#getLabel()
+	 */
+	public String getLabel() {
+		return label;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#getLabelGroup()
+	 */
+	public String getLabelGroup() {
+		return labelGroup;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#setID(java.lang.String)
+	 */
+	public void setID(String id) {
+		this.id = id;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#setLabel(java.lang.String)
+	 */
+	public void setLabel(String label) {
+		this.label = label;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#setLabelGroup(java.lang.String)
+	 */
+	public void setLabelGroup(String labelGroup) {
+		this.labelGroup = labelGroup;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#getReference()
+	 */
+	public Object getReference() {
+		return reference; 
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#setReference(java.lang.Object)
+	 */
+	public void setReference(Object ref) {
+		reference = ref;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#getPanelGroup()
+	 */
+	public AbstractPanelGroup getPanelGroup() {
+		return panelGroup;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#setPanelGroup(org.gvsig.gui.beans.panelGroup.AbstractPanelGroup)
+	 */
+	public void setPanelGroup(AbstractPanelGroup panelGroup) {
+		this.panelGroup = panelGroup;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#setInGroupGUI(boolean)
+	 */
+	public synchronized void setInGroupGUI(boolean visible) {
+		if (panelGroup != null)
+			panelGroup.setPanelInGUI(this, visible);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#isInGroupGUI()
+	 */
+	public synchronized boolean isInGroupGUI() {
+		if (panelGroup == null)
+			return false;
+
+		return panelGroup.isPanelInGUI(this);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.Component#toString()
+	 */
+	public String toString() {
+		return (label == null)? "": label;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#remainsWithItsDefaultPreferredSize()
+	 */
+	public boolean remainsWithItsDefaultPreferredSize() {
+		return remainsWithDefaultPreferredSize;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#setPreferredSize(java.awt.Dimension)
+	 */
+	public void setPreferredSize(Dimension preferredSize) {
+		super.setPreferredSize(preferredSize);
+		remainsWithDefaultPreferredSize = false;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#hasChanged()
+	 */
+	public boolean hasChanged() {
+		return hasChanged;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#resetChangedStatus()
+	 */
+	public void resetChangedStatus() {
+		hasChanged = false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#setAlwaysApplicable(boolean)
+	 */
+	public void setAlwaysApplicable(boolean b) {
+		alwaysApplicable = b;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#isAlwaysApplicable()
+	 */
+	public boolean isAlwaysApplicable() {
+		return alwaysApplicable;
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/panels/IPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/panels/IPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/panels/IPanel.java	(revision 38348)
@@ -0,0 +1,216 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.panels;
+
+import org.gvsig.gui.beans.panelGroup.AbstractPanelGroup;
+import org.gvsig.gui.beans.panelGroup.IPanelGroup;
+
+/**
+ * <p>Common interface for all kinds of {@link AbstractPanel AbstractPanel}.</p>
+ * <p>An <i>IPanel</i> has:
+ *  <ul>
+ *   <li>Three identifiers:</li>
+ *    <ul>
+ *     <li><b>ID</b>: (optional) identifies neutrally the panel.</li>
+ *     <li><b>Label</b>: identifier of the panel, used by a {@link AbstractPanelGroup AbstractPanelGroup}.</li>
+ *     <li><b>LabelGroup</b>: identifier of the panel used to group together different <code>IPanel</code> panels
+ *      of a {@link AbstractPanelGroup AbstractPanelGroup}.</li>
+ *    </ul>
+ *   <li>An optional reference to an object that is related ''semantically'' or ''conceptually'' to this panel (Ex. this panel is about some properties of a raster layer).</li>
+ *  </ul>
+ * </p>
+ * 
+ * @version 15/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public interface IPanel {
+	/**
+	 * <p>Gets the panel identifier.</p>.
+	 * 
+	 * @return panel identifier, or <code>null</code> if undefined
+	 * 
+	 * @see #setID(String)
+	 */
+	public abstract String getID();
+
+	/**
+	 * <p>Gets the identifier of the panel used by a {@link AbstractPanelGroup AbstractPanelGroup}.</p>
+	 * 
+	 * @return panel label identifier, or <code>null</code> if undefined
+	 * 
+	 * @see #setLabel(String)
+	 */
+	public abstract String getLabel();
+
+	/**
+	 * <p>Gets the identifier of the panel used to group together different <code>IPanel</code> panels
+     *      in a {@link AbstractPanelGroup AbstractPanelGroup}.</p>
+	 * 
+	 * @return panel label group identifier, or <code>null</code> if undefined
+	 * 
+	 * @see #setLabelGroup(String)
+	 */
+	public abstract String getLabelGroup();
+
+	/**
+	 * <p>Sets the identifier of the panel used by a {@link AbstractPanelGroup AbstractPanelGroup}.</p>
+	 * 
+	 * @param id panel label identifier, or <code>null</code> if undefined
+	 * 
+	 * @see #getID()
+	 */
+	public abstract void setID(String id);
+
+	/**
+	 * <p>Sets the identifier of the panel used by a {@link AbstractPanelGroup AbstractPanelGroup}.</p>
+	 * 
+	 * @param label panel label identifier, or <code>null</code> if undefined
+	 * 
+	 * @see #getLabel()
+	 */
+	public abstract void setLabel(String label);
+
+	/**
+	 * <p>Sets the identifier of the panel used to group together different <code>IPanel</code> panels
+     *      of a {@link AbstractPanelGroup AbstractPanelGroup}.</p>
+	 * 
+	 * @param labelGroup label group identifier, or <code>null</code> if undefined
+	 * 
+	 * @see #getLabelGroup()
+	 */
+	public abstract void setLabelGroup(String labelGroup);
+
+	/**
+	 * <p>Gets the object that has a ''semantically'' or ''conceptually'' relation to this panel, this is used to group
+	 *  <code>IPanel</code> panels on a {@link IPanelGroup IPanelGroup} object.</p>
+	 * 
+	 * @return object that has reference this panel, or <code>null</code> if there has reference
+	 *  to no object
+	 * 
+	 * @see #setReference(Object)
+	 */
+	public abstract Object getReference();
+
+	/**
+	 * <p>Sets a reference to an object that is ''semantically' or 'contextually' related to this panel.</p>
+	 * 
+	 * @param ref an object
+	 * 
+	 * @see #getReference()
+	 */
+	public abstract void setReference(Object ref);
+
+	/**
+	 * <p>Gets a reference to the object that contains the group which this panel is a member.</p>
+	 * 
+	 * @return an object that contains this panel's group
+	 * 
+	 * @see #setPanelGroup(AbstractPanelGroup)
+	 */
+	public abstract AbstractPanelGroup getPanelGroup();
+
+	/**
+	 * <p>Sets a reference to the object that contains the group which this panel is a member.</p>
+	 * 
+	 * @param panelGroup object that contains this panel's group
+	 * 
+	 * @see #getPanelGroup()
+	 */
+	public abstract void setPanelGroup(AbstractPanelGroup panelGroup);
+
+	/**
+	 * <p>If this panel belongs to a 'panel group', changes its visibility at the interface of the panel group.
+	 *  If changes to invisible, then this panel won't be accessible by the user interface. But if changes to visible
+	 *  and was invisible before, then will appear at the same position it was in the user interface. The position is
+	 *  according the order of the insertion at the group. Anyway, the group will have this panel.</p>
+	 * 
+	 * @param b the new visibility for that panel.
+	 */
+	public abstract void setInGroupGUI(boolean b);
+
+	/**
+	 * <p>Returns <code>true</code> if this panel belongs to a 'panel group' and it's loaded in the graphical user interface
+	 *  of that component; otherwise returns <code>false</code>.</p>
+	 * 
+	 * @return <code>true</code> if this panel belongs to a 'panel group' and it's loaded in the graphical user interface
+	 *  of that component
+	 */
+	public abstract boolean isInGroupGUI();
+
+	/**
+	 * <p>Returns if this panel remains with its initial preferred size of it has been changed.</p>
+	 * 
+	 * @return if this panel remains with its initial preferred size of it has been changed
+	 */
+	public abstract boolean remainsWithItsDefaultPreferredSize();
+
+	/**
+	 * <p>Notifies to this panel of an <i>accept</i> action.</p>
+	 */
+	public abstract void accept();
+
+	/**
+	 * <p>Notifies this panel of an <i>apply</i> action.</p>
+	 */
+	public abstract void apply();
+
+	/**
+	 * <p>Notifies this panel of a <i>cancel</i> action.</p>
+	 */
+	public abstract void cancel();
+
+	/**
+	 * <p>Notifies this panel that has been selected at the {@link AbstractPanelGroup AbstractPanelGroup}</p>
+	 */
+	public abstract void selected();
+
+	/**
+	 * <p>Determines if this panel has changed since it was created, or applied (or accepted or cancelled). The 
+	 *  programmer of each panel will be whom would set to <code>true</code> that a panel has changed.</p>
+	 *
+	 * @return <code>true</code> if this panel has changed since it was created, or applied (or accepted or cancelled); otherwise <code>false</code> 
+	 */
+	public abstract boolean hasChanged();
+
+	/**
+	 * <p>Resets this panel <i>changed status</i> to its initial value.</p>
+	 */
+	public abstract void resetChangedStatus();
+
+	/**
+	 * <p>Sets if this panel will always be applied and accepted (by default), or only when has changed.</i></p>
+	 * 
+	 * @param b if this panel will always be applied and accepted, or only when has changed
+	 * 
+	 * @see #isAlwaysApplicable()
+	 * @see #hasChanged()
+	 */
+	public abstract void setAlwaysApplicable(boolean b);
+	
+	/**
+	 * <p>Gets if this panel will always be applied and accepted (by default), or only when has changed.</i></p>
+	 * 
+	 * @return if this panel will always be applied and accepted, or only when has changed
+	 * 
+	 * @see #setAlwaysApplicable(boolean)
+	 * @see #hasChanged()
+	 */
+	public abstract boolean isAlwaysApplicable();
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/IPanelGroup.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/IPanelGroup.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/IPanelGroup.java	(revision 38348)
@@ -0,0 +1,172 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup;
+
+import java.util.Hashtable;
+
+import org.gvsig.tools.exception.BaseException;
+import org.gvsig.gui.beans.panelGroup.exceptions.EmptyPanelGroupException;
+import org.gvsig.gui.beans.panelGroup.exceptions.EmptyPanelGroupGUIException;
+import org.gvsig.gui.beans.panelGroup.exceptions.ListCouldntAddPanelException;
+import org.gvsig.gui.beans.panelGroup.loaders.IPanelGroupLoader;
+import org.gvsig.gui.beans.panelGroup.panels.IPanel;
+
+/**
+ * <p>All kind of panels which support a group of {@link IPanel IPanel} must
+ *  implement this interface.</p>
+ * 
+ * @version 15/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public interface IPanelGroup {
+	/**
+	 * <p>Adds another {@link IPanel IPanel} to this group.</p>
+	 * 
+	 * @param panel the <code>IPanel</code> to add
+	 * 
+	 * @throws EmptyPanelGroupException if there was no panel loaded and tries to add a new one, launches this exception
+	 *  if the panel to add hasn't been registered to this component and then, no remains without panels
+	 * @throws EmptyPanelGroupGUIException if there was no panel loaded and tries to add a new one, launches this exception
+	 *  if the panel to add hasn't been set to this component graphical interface and then, no remains without panels
+	 *  in its graphical interface
+	 * 
+	 * @see #loadPanels(IPanelGroupLoader)
+	 * @see #removePanel(IPanel)
+	 */
+	public abstract void addPanel(IPanel panel) throws BaseException;
+
+	/**
+	 * <p>Removes an {@link IPanel IPanel} from this group.</p>
+	 * 
+	 * @param panel the <code>IPanel</code> to remove
+	 * 
+	 * @see #addPanel(IPanel)
+	 * @see #loadPanels(IPanelGroupLoader)
+	 */
+	public abstract void removePanel(IPanel panel);
+
+	/**
+	 * <p>Tries to load as most as possible panels using an <code>IPanelGroupLoader</code>.</p>
+	 *  
+	 * @param loader used to load the panels into this group
+	 * 
+	 * @throws ListCouldntAddPanelException list with all exceptions produced loading and adding the panels
+	 * @throws EmptyPanelGroupException launched if there was no exception during the loading and adding processes
+	 *  but there is no panel registered finally in this component
+	 * @throws EmptyPanelGroupGUIException launched if there was no exception during the loading and adding processes
+	 * there is at least one panel registered, but finally none of them is in the graphical interface of this component
+	 * 
+	 * @see #addPanel(IPanel)
+	 */
+	public abstract void loadPanels(IPanelGroupLoader loader) throws ListCouldntAddPanelException, EmptyPanelGroupException, EmptyPanelGroupGUIException;
+
+	/**
+	 * <p>Gets a reference to the active panel in this group.</p>
+	 * 
+	 * @return a reference to the active panel, or <code>null</code> if there is no any active
+	 */
+	public abstract IPanel getActivePanel();
+
+	/**
+	 * <p>Gets the properties associated to this group of panels.</p>
+	 * 
+	 * @return properties associated to this group of panels
+	 */
+	public abstract Hashtable getProperties();
+
+	/**
+	 * <p>Gets the object that has a  a ''semantically'' or ''conceptually'' relation to this panel.</p>
+	 * 
+	 * @return type of object that has reference this panel, or <code>null</code> if there has reference
+	 *  to no object
+	 */
+	public abstract Object getReference();
+	
+	/**
+	 * <p>Updates the reference of all elements of the group with the new one.</p>
+	 * 
+	 * @param reference type of object that has reference this panel, or <code>null</code> if there has reference
+	 *  to no object
+	 */
+	public abstract void updateReference(Object reference);
+
+	/**
+	 * <p>Changes the visibility of an existent panel of this group. If a panel changes to invisible, then that
+	 *  panel won't be accessible by the user interface. But if changes to visible and was invisible
+	 *  before, then will appear at the same position it was in the user interface. The position is
+	 *  according the order of the insertion at the group. Anyway, the group will have that panel.</p>
+	 * 
+	 * @param panel reference to the panel with visibility has changed.
+	 * @param b the new visibility for that panel.
+	 */
+	public abstract void setPanelInGUI(IPanel panel, boolean b);
+
+	/**
+	 * <p>Returns <code>true</code> if the panel as parameter belongs to a this group and it's loaded in the graphical user interface;
+	 *  otherwise returns <code>false</code>.</p>
+	 * 
+	 * @return <code>true</code> if the panel as parameter belongs to a this group and it's loaded in the graphical user interface;
+	 *  otherwise returns <code>false</code>
+	 */
+	public abstract boolean isPanelInGUI(IPanel panel);
+
+	/**
+	 * <p>Returns the number of panels registered in this group.</p>
+	 * 
+	 * @return number of panels registered in this group
+	 */
+	public abstract int getPanelCount();
+
+	/**
+	 * <p>Returns the number of panels registered in this group that are in GUI.</p>
+	 * 
+	 * @return number of panels registered in this group that are in GUI
+	 */
+	public abstract int getPanelInGUICount();
+
+	/**
+	 * <p>Determines if the last notification received has been {@linkplain IPanel#accept()}.</code> 
+	 * 
+	 * @return <code>true</code> if that has been the last notification received, <code>false</code> otherwise
+	 */
+	public abstract boolean isAccepted();
+
+	/**
+	 * <p>Sets the parent of this component. That object must be another {@link IPanelGroup IPanelGroup} component.</p>
+	 * 
+	 * @param parent parent of this component
+	 */
+	public abstract void setParentPanelGroup(IPanelGroup parent);
+
+	/**
+	 * <p>Notifies this panel of an <i>accept</i> action.</p>
+	 */
+	public abstract void accept();
+
+	/**
+	 * <p>Notifies this panel of an <i>apply</i> action.</p>
+	 */
+	public abstract void apply();
+
+	/**
+	 * <p>Notifies this panel of a <i>cancel</i> action.</p>
+	 */
+	public abstract void cancel();
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/PanelGroupManager.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/PanelGroupManager.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/panelGroup/PanelGroupManager.java	(revision 38348)
@@ -0,0 +1,153 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/**
+ * <p>Implemented to use the {@link AbstractPanelGroup AbstractPanelGroup} type desired.</p>
+ * <p>This class allows having different implementations of {@link AbstractPanelGroup AbstractPanelGroup}
+ * and only load in memory the class of some of them, whom have previously been imported to future use. Then, when
+ * a graphical interface would need use a <code>AbstractPanelGroup</code> instance, will instance an object of the 
+ * class <i>selected</i> (set previously as <i>default</i>) of the registered types in this manager.</p> 
+ * 
+ * @version 18/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class PanelGroupManager implements Serializable {
+	private static final long serialVersionUID = 2059085515913026734L;
+
+	/**
+	 * Array list with the {@link AbstractPanelGroup AbstractPanelGroup} registered.
+	 * 
+	 * @see #registerPanelGroup(Class)
+	 * @see #deregisterPanelGroup(Class)
+	 */
+	private ArrayList<Class> registeredPanelGroups = null;
+	
+	/**
+	 * The {@link AbstractPanelGroup AbstractPanelGroup} type set as default.
+	 * 
+	 * @see #getPanelGroup()
+	 * @see #setDefaultType(Class)
+	 */
+	private Class defaultPanelGroup = null;
+
+	/**
+	 * <p>Reference to the current manager with the <i>PanelGroup</i> registered.</p>
+	 */
+	private static PanelGroupManager manager = null;
+
+	/**
+	 * <p>Default constructor.</p>
+	 */
+	protected PanelGroupManager() {
+		 registeredPanelGroups = new ArrayList<Class>();
+	}
+	
+	/**
+	 * <p>The singleton <code>PanelGroupManager</code> instance.</p>
+	 * 
+	 * @return current manager used, or if didn't exist any, a new one
+	 */
+	public static synchronized PanelGroupManager getManager()
+	{
+		if( manager == null ) {
+			manager = new PanelGroupManager ();
+		}
+
+		return manager;
+	}
+	
+	/**
+	 * <p>Registers a new {@link AbstractPanelGroup AbstractPanelGroup} class type if it
+	 * wasn't already done.</p>
+	 * 
+	 * @param panelGroup the new <code>AbstractPanelGroup</code> class type to register
+	 * 
+	 * @see #deregisterPanelGroup(Class)
+	 */
+	public synchronized void registerPanelGroup(Class panelGroup) {
+		// Only adds if isn't already registered
+		if (!registeredPanelGroups.contains(panelGroup))
+			registeredPanelGroups.add(panelGroup);
+	}
+
+	/**
+	 * <p>Unregisters a {@link AbstractPanelGroup AbstractPanelGroup} class type if it
+	 * was previously registered.</p>
+	 * <p>If the type to unregister is the <i>default</i>, sets <i>default</i> to <code>null</code>.</p>
+	 * 
+	 * @param panelGroup the <code>AbstractPanelGroup</code> class type to unregister
+	 * 
+	 * @see #registerPanelGroup(Class)
+	 */
+	public synchronized void deregisterPanelGroup(Class panelGroup) {
+		// Only removes if already registered
+		if (registeredPanelGroups.contains(panelGroup)) {
+			registeredPanelGroups.remove(panelGroup);
+
+			if (defaultPanelGroup == null)
+				return;
+
+			if (defaultPanelGroup.equals(panelGroup)) {
+				defaultPanelGroup = null;
+			}
+		}
+	}
+	
+	/**
+	 * <p>Sets as <i>default</i> one of the {@link AbstractPanelGroup AbstractPanelGroup} class type
+	 *  previously registered.</p>
+	 * 
+	 * @param panelGroup a <code>AbstractPanelGroup</code> class type
+	 * 
+	 * @see #getPanelGroup()
+	 */
+	public synchronized void setDefaultType(Class panelGroup) {
+		if (registeredPanelGroups.contains(panelGroup))
+			defaultPanelGroup = panelGroup;
+	}
+	
+	/**
+	 * <p>Gets the <i>default</i> {@link AbstractPanelGroup AbstractPanelGroup} class type.</p>
+	 * 
+	 * return the <i>default</i> <code>AbstractPanelGroup</code> class type or <code>null</code> if isn't any
+	 * 
+	 * @throws Exception any exception produced loading the {@link AbstractPanel AbstractPanel}
+	 * 
+	 * @see #setDefaultType(Class)
+	 */	
+	public synchronized AbstractPanelGroup getPanelGroup(Object reference) throws Exception {
+		try {
+			if( defaultPanelGroup != null ) {
+				return (AbstractPanelGroup) defaultPanelGroup.getConstructor(Object.class).newInstance(reference);
+			}
+		}
+		catch (Exception e) {
+			throw e;
+		}
+
+		return null;
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSlider.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSlider.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSlider.java	(revision 38348)
@@ -0,0 +1,544 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.doubleslider;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Shape;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.event.MouseWheelEvent;
+import java.awt.event.MouseWheelListener;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.JComponent;
+/**
+ * <code>DoubleSlider</code> representa un componente que tiene dos
+ * deslizadores. Se puede definir un m�ximo y un m�nimo.
+ *
+ * @version 04/05/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class DoubleSlider extends JComponent implements MouseMotionListener, MouseListener, MouseWheelListener {
+	private static final long serialVersionUID = 663355422780987493L;
+
+	private ArrayList<DoubleSliderListener> actionCommandListeners = new ArrayList<DoubleSliderListener>();
+
+	private final int LEFT_PAD               = 2;
+	private final int RIGHT_PAD              = 2;
+
+	private Image     bufferImage            = null;
+	private int       width                  = 0;
+	private int       height                 = 0;
+	private Graphics  bufferGraphics;
+	private double    x1                     = 0;
+	private double    x2                     = 100;
+
+	private Color     color1                 = Color.BLACK;
+	private Color     color2                 = Color.WHITE;
+
+	private double    minimum                = 0;
+	private double    maximum                = 100;
+
+	private boolean   twoSliders             = true;
+
+	/**
+	 * Crea un DoubleSlider con las opciones por defecto.
+	 */
+	public DoubleSlider() {
+		this.setPreferredSize(new Dimension(100, 21));
+		addMouseMotionListener(this);
+		addMouseListener(this);
+		addMouseWheelListener(this);
+	}
+
+	/**
+	 * Establece el m�ximo valor que puede tomar el componente
+	 * @param value
+	 */
+	public void setMaximum(int value) {
+		maximum = value;
+		validateValues();
+		refreshImage();
+	}
+
+	/**
+	 * Establece el m�nimo valor que puede tomar el componente
+	 * @param value
+	 */
+	public void setMinimum(int value) {
+		minimum = value;
+		validateValues();
+		refreshImage();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#addNotify()
+	 */
+	public void addNotify() {
+		super.addNotify();
+
+		refreshImage();
+	}
+
+	/**
+	 * Crea un graphics con las dimensiones del componente si no estaba creado y
+	 * lo devuelve para poder usarlo para dibujar en �l.
+	 * @return Graphics
+	 */
+	private Graphics getBufferGraphics() {
+		int width2 = getBounds().width;
+		int height2 = getBounds().height;
+		if (width2 <= 0)
+			width2 = 1;
+		if (height2 <= 0)
+			height2 = 1;
+
+		if ((width!=width2) || (height!=height2)) {
+			bufferImage = createImage(width2, height2);
+			if (bufferImage == null) return null;
+			bufferGraphics = bufferImage.getGraphics();
+		}
+
+		width = width2;
+		height = height2;
+
+		return bufferGraphics;
+	}
+
+	public Color getColorPosition(int pos) {
+		int r, g, b, a;
+
+		Color color1 = this.color1;
+		Color color2 = this.color2;
+		if (!isEnabled()) {
+			r = Color.DARK_GRAY.getRed();
+			color1 = new Color(r, r, r);
+			r = Color.WHITE.getRed();
+			color2 = new Color(r, r, r);
+		}
+
+		double value = (pixeltovalue(pos) - minimum) / (maximum - minimum);
+		if (value < 0)
+			value = 0;
+		if (value > 1)
+			value = 1;
+
+		r = (int) (color1.getRed() + ((color2.getRed() - color1.getRed()) * value));
+		g = (int) (color1.getGreen() + ((color2.getGreen() - color1.getGreen()) * value));
+		b = (int) (color1.getBlue() + ((color2.getBlue() - color1.getBlue()) * value));
+		a = (int) (color1.getAlpha() + ((color2.getAlpha() - color1.getAlpha()) * value));
+		return new Color(r, g, b, a);
+	}
+	/**
+	 * Redibujar el componente en el graphics temporal
+	 */
+	public void redrawBuffer() {
+		if (getBufferGraphics() == null)
+			return;
+
+		getBufferGraphics().setColor(this.getBackground());
+		getBufferGraphics().fillRect(0, 0, width, height);
+
+		int top = (height - 11) / 2;
+		top -= 6;
+
+		Shape oldClip = getBufferGraphics().getClip();
+		getBufferGraphics().setClip(LEFT_PAD + 1, top + 1, width - 2 - LEFT_PAD - RIGHT_PAD, 9);
+
+		if ((color1.getAlpha() != 255) || (color2.getAlpha() != 255)) {
+			for (int i = 0; (i * 4) <= (width - 1 - RIGHT_PAD); i++) {
+				for (int j = 0; (j * 4) <= (top + 6); j++) {
+					if ((i + j) % 2 == 0)
+						getBufferGraphics().setColor(Color.white);
+					else
+						getBufferGraphics().setColor(new Color(204, 204, 204));
+					getBufferGraphics().fillRect(LEFT_PAD + 1 + i * 4, top + 1 + j * 4, 4, 4);
+				}
+			}
+		}
+
+		for (int i = LEFT_PAD + 1; i < (width - 1 - RIGHT_PAD); i++) {
+			getBufferGraphics().setColor(getColorPosition(i));
+			getBufferGraphics().drawLine(i, top, i, top + 10);
+		}
+		getBufferGraphics().setClip(oldClip);
+
+		if (!isEnabled())
+			getBufferGraphics().setColor(Color.LIGHT_GRAY);
+		else
+			getBufferGraphics().setColor(Color.BLACK);
+		getBufferGraphics().drawRect(LEFT_PAD, top, width - 1 - LEFT_PAD - RIGHT_PAD, 10);
+
+
+		drawTriangle(valuetopixel(x1), top, getColorPosition(valuetopixel(x1)));
+		if (twoSliders)
+			drawTriangle(valuetopixel(x2), top, getColorPosition(valuetopixel(x2)));
+	}
+
+	/**
+	 * Dibujar un triangulo, un triangulo es un deslizador del componente. Puedes
+	 * indicarle que color tendra y en que posici�n estar�.
+	 * @param x
+	 * @param color
+	 */
+	private void drawTriangle(int x, int y, Color color) {
+		if (isEnabled()) {
+			getBufferGraphics().setColor(color);
+			getBufferGraphics().drawLine(x, y + 12, x, y + 16);
+			getBufferGraphics().drawLine(x-1, y + 14, x-1, y + 16);
+			getBufferGraphics().drawLine(x+1, y + 14, x+1, y + 16);
+			getBufferGraphics().drawLine(x-2, y + 16, x-2, y + 16);
+			getBufferGraphics().drawLine(x+2, y + 16, x+2, y + 16);
+		}
+
+		if (isEnabled()) {
+			getBufferGraphics().setColor(Color.BLACK);
+		} else {
+			getBufferGraphics().setColor(Color.GRAY);
+		}
+		getBufferGraphics().drawLine(x, y + 10, x-3, y + 17);
+		getBufferGraphics().drawLine(x, y + 10, x+3, y + 17);
+		getBufferGraphics().drawLine(x-3, y + 17, x+3, y + 17);
+	}
+
+	/**
+	 * Redibujar el componente en el graphics temporal y representarlo en el
+	 * componente
+	 */
+	public void refreshImage() {
+		redrawBuffer();
+		if (getGraphics() == null)
+			return;
+		if (bufferImage != null)
+			getGraphics().drawImage(bufferImage, 0, 0, this);
+		super.paint(getGraphics());
+	}
+
+	/**
+	 * Convierte un valor a la coordenada pixel correspondiente
+	 * @param value
+	 * @return
+	 */
+	private int valuetopixel(double value) {
+		return (int) (((value - minimum) * (width - 3.0 - LEFT_PAD - RIGHT_PAD) / (maximum - minimum)) + 1.0 + LEFT_PAD);
+	}
+
+	/**
+	 * Convierte un pixel al valor que deber�a tener
+	 * @param value
+	 * @return
+	 */
+	private double pixeltovalue(int value) {
+		return ((((value - 1 - LEFT_PAD) * (maximum - minimum)) / (width - 3.0 - LEFT_PAD - RIGHT_PAD)) + minimum);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#paint(java.awt.Graphics)
+	 */
+	public void paint(Graphics g) {
+		redrawBuffer();
+		g.drawImage(bufferImage, 0, 0, this);
+		super.paint(g);
+	}
+
+	int valuePressed = 0;
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+	 */
+	public void mousePressed(MouseEvent e) {
+		if (!isEnabled())
+			return;
+		if (e.getButton() != MouseEvent.BUTTON1) return;
+
+		double aux = pixeltovalue(e.getX());
+		double aux2 = aux - x1;
+		double aux3 = x2 - aux;
+		if (aux3 < aux2)
+			valuePressed = 2;
+		else
+			valuePressed = 1;
+
+		if (!twoSliders)
+			valuePressed = 1;
+
+		changeValue(e.getX());
+		callValueDraggedListeners();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
+	 */
+	public void mouseReleased(MouseEvent e) {
+		valuePressed = 0;
+		callValueChangedListeners();
+	}
+
+	/**
+	 * Establecer los l�mites de los valores en caso de que sean incorrectos
+	 */
+	private void validateValues() {
+		if (x1 < minimum) x1 = minimum;
+		if (x1 > maximum) x1 = maximum;
+		if (twoSliders) {
+			if (x2 < minimum) x2 = minimum;
+			if (x2 > maximum) x2 = maximum;
+		}
+	}
+
+	/**
+	 * Establecer el valor del extremo izquierdo del slider
+	 * @param value
+	 */
+	public void setX1(int value) {
+		setX1((double) value);
+	}
+
+	/**
+	 * Establecer el valor del extremo izquierdo del slider
+	 * @param value
+	 */
+	public void setX1(double value) {
+		x1 = value;
+		if (twoSliders)
+			if (x1 > x2)
+				x2 = x1;
+		validateValues();
+		refreshImage();
+	}
+
+	/**
+	 * Es lo mismo que setX1()
+	 * @param value
+	 */
+	public void setValue(int value) {
+		setX1(value);
+	}
+
+	/**
+	 * Establecer el valor del extremo derecho del slider
+	 * @param value
+	 */
+	public void setX2(int value) {
+		setX2((double) value);
+	}
+
+	/**
+	 * Establecer el valor del extremo derecho del slider
+	 * @param value
+	 */
+	public void setX2(double value) {
+		x2 = value;
+		if (x2 < x1) x1 = x2;
+		validateValues();
+		refreshImage();
+	}
+
+	/**
+	 * Obtener el valor del extremo izquierdo del componente
+	 * @return
+	 */
+	public int getX1() {
+		return (int) x1;
+	}
+
+	/**
+	 * Devuelve lo mismo que getX1()
+	 * @return
+	 */
+	public int getValue() {
+		return getX1();
+	}
+
+	/**
+	 * Obtener el valor del extremo derecho del componente
+	 * @return
+	 */
+	public int getX2() {
+		return (int) x2;
+	}
+
+	/**
+	 * M�todo usado por los eventos del rat�n para establecer una nueva posici�n
+	 * del slider
+	 * @param pos
+	 */
+	private void changeValue(int pos) {
+		if (!isEnabled())
+			return;
+		if (valuePressed == 0) return;
+
+		double aux = pixeltovalue(pos);
+
+		if (valuePressed == 1) setX1(aux);
+		if (valuePressed == 2) setX2(aux);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
+	 */
+	public void mouseDragged(MouseEvent arg0) {
+		if (!isEnabled())
+			return;
+		changeValue(arg0.getX());
+		callValueDraggedListeners();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
+	 */
+	public void mouseMoved(MouseEvent e) {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+	 */
+	public void mouseClicked(MouseEvent e) {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
+	 */
+	public void mouseEntered(MouseEvent e) {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
+	 */
+	public void mouseExited(MouseEvent e) {
+	}
+
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addValueChangedListener(DoubleSliderListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeValueChangedListener(DoubleSliderListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void callValueChangedListeners() {
+		Iterator<DoubleSliderListener> iterator = actionCommandListeners.iterator();
+		while (iterator.hasNext()) {
+			DoubleSliderListener listener = iterator.next();
+			listener.actionValueChanged(new DoubleSliderEvent(this));
+		}
+	}
+
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void callValueDraggedListeners() {
+		Iterator<DoubleSliderListener> iterator = actionCommandListeners.iterator();
+		while (iterator.hasNext()) {
+			DoubleSliderListener listener = iterator.next();
+			listener.actionValueDragged(new DoubleSliderEvent(this));
+		}
+	}
+
+	/**
+	 * @return the twoSliders
+	 */
+	public boolean isTwoSliders() {
+		return twoSliders;
+	}
+
+	/**
+	 * @param twoSliders the twoSliders to set
+	 */
+	public void setTwoSliders(boolean twoSliders) {
+		this.twoSliders = twoSliders;
+		refreshImage();
+	}
+
+	/**
+	 * @param color1 the color1 to set
+	 */
+	public void setColor1(Color color1, boolean refresh) {
+		this.color1 = color1;
+		if (refresh)
+			refreshImage();
+	}
+
+	/**
+	 * @param color2 the color2 to set
+	 */
+	public void setColor2(Color color2, boolean refresh) {
+		this.color2 = color2;
+		if (refresh)
+			refreshImage();
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.swing.JComponent#setEnabled(boolean)
+	 */
+	public void setEnabled(boolean enabled) {
+		super.setEnabled(enabled);
+		refreshImage();
+	}
+
+	public void mouseWheelMoved(MouseWheelEvent e) {
+		if (!isEnabled())
+			return;
+
+		double aux = pixeltovalue(e.getX());
+		double aux2 = aux - x1;
+		double aux3 = x2 - aux;
+		if (aux3 < aux2)
+			valuePressed = 2;
+		else
+			valuePressed = 1;
+
+		if (!twoSliders)
+			valuePressed = 1;
+
+		if (valuePressed == 1)
+			setX1(getX1() - e.getWheelRotation());
+		else
+			setX2(getX2() - e.getWheelRotation());
+		valuePressed = 0;
+
+		callValueChangedListeners();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSlider.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSliderEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSliderEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSliderEvent.java	(revision 38348)
@@ -0,0 +1,29 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.doubleslider;
+
+import org.gvsig.gui.beans.slidertext.listeners.SliderEvent;
+
+public class DoubleSliderEvent extends SliderEvent {
+	private static final long serialVersionUID = -684281519921935004L;
+
+	public DoubleSliderEvent(Object source) {
+		super(source);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSliderEvent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSliderListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSliderListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSliderListener.java	(revision 38348)
@@ -0,0 +1,44 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.doubleslider;
+
+import java.util.EventListener;
+/**
+ * Interfaz para los eventos del componente DoubleSlider. Existe ValueChanged
+ * y ValueDragged, son los disparadores de los eventos, Changed para cuando
+ * el evento a finalizado, y Dragged mientras esta transcurriendo.
+ *
+ * @version 07/08/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface DoubleSliderListener extends EventListener {
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente. Nunca
+	 * se dispara mientras se hace un dragged con el rat�n.
+	 * @param e
+	 */
+	public void actionValueChanged(DoubleSliderEvent e);
+
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente mientras se
+	 * hace un dragged con el rat�n.
+	 * @param e
+	 */
+	public void actionValueDragged(DoubleSliderEvent e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/doubleslider/DoubleSliderListener.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserEvent.java	(revision 38348)
@@ -0,0 +1,29 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.textincreaser;
+
+import java.util.EventObject;
+
+public class TextIncreaserEvent extends EventObject {
+	private static final long serialVersionUID = -684281519921935004L;
+
+	public TextIncreaserEvent(Object source) {
+		super(source);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserEvent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserContainer.java	(revision 38348)
@@ -0,0 +1,259 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.textincreaser;
+
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+/**
+ * Nacho Brodin (brodin_ign@gva.es)
+ */
+public class TextIncreaserContainer extends JPanel implements ActionListener, KeyListener{
+	private static final long serialVersionUID = 7570162018139822874L;
+	private ArrayList actionCommandListeners = new ArrayList();
+	private JTextField tText            = null;
+	private JPanel     pButtons         = null;
+	private JButton    bmas             = null;
+	private JButton    bmenos           = null;
+	private JPanel     pGeneral         = null;
+	private double     minValue         = 0;
+	private double     maxValue         = 100;
+	private double     value            = 0.0;
+	private String     pathToImages     = "images/"; // "/com/iver/cit/gvsig/gui/panels/images/";
+	/**
+	 * Variable que est� a true si los controles est�n a la derecha
+	 */
+	private boolean    isRight          = true;
+
+	private boolean    bDoCallListeners = true;
+	static private int eventId          = Integer.MIN_VALUE;
+
+	/**
+	 * Creaci�n de un componente TextIncrearserContainer
+	 * @param width Ancho del componente
+	 * @param minValue M�nimo valor que puede tomar el texto del control
+	 * @param maxValue M�ximo valor que puede tomar el texto del control
+	 * @param right	a true si queremos que los controles se muestren a la derecha del TextBox
+	 * y false si los queremos a la izquierda
+	 */
+	public TextIncreaserContainer(int width, double minValue, double maxValue, double init, boolean right) {
+		super();
+		getTText().setPreferredSize(new Dimension(width - 25, (int) getTText().getPreferredSize().getHeight()));
+		this.minValue = minValue;
+		this.maxValue = maxValue;
+		this.isRight = right;
+		setValue(init);
+		initialize();
+	}
+
+	/**
+	 * This method initializes this
+	 */
+	private void initialize() {
+		FlowLayout flowLayout = new FlowLayout();
+		flowLayout.setHgap(0);
+		flowLayout.setVgap(0);
+		FlowLayout flowLayout5 = new FlowLayout();
+		flowLayout5.setHgap(0);
+		flowLayout5.setVgap(0);
+		this.setLayout(flowLayout5);
+		this.add(getPGeneral(), null);
+	}
+
+	/**
+	 * Asigna un valor al textBox
+	 * @param value
+	 */
+	public void setValue(double value){
+		this.value = value;
+		getTText().setText(Double.toString(value));
+	}
+
+	/**
+	 * Obtiene el valor del textBox
+	 * @return value
+	 */
+	public double getValue(){
+		return value;
+	}
+
+	/**
+	 * This method initializes jTextField
+	 *
+	 * @return javax.swing.JTextField
+	 */
+	private JTextField getTText() {
+		if (tText == null) {
+			tText = new JTextField();
+			tText.setText(Double.toString(value));
+			tText.setPreferredSize(new java.awt.Dimension(45, (int) tText.getPreferredSize().getHeight()));
+			tText.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+			tText.addKeyListener(this);
+		}
+		return tText;
+	}
+
+	/**
+	 * This method initializes jPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getPButtons() {
+		if (pButtons == null) {
+			GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
+			gridBagConstraints3.insets = new java.awt.Insets(0,0,0,0);
+			gridBagConstraints3.gridy = 1;
+			gridBagConstraints3.gridx = 0;
+			GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
+			gridBagConstraints2.insets = new java.awt.Insets(0,0,0,0);
+			gridBagConstraints2.gridy = 0;
+			gridBagConstraints2.gridx = 0;
+			pButtons = new JPanel();
+			pButtons.setLayout(new GridBagLayout());
+			pButtons.add(getBmas(), gridBagConstraints2);
+			pButtons.add(getBmenos(), gridBagConstraints3);
+		}
+		return pButtons;
+	}
+
+	/**
+	 * This method initializes jButton
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private JButton getBmas() {
+		if (bmas == null) {
+			bmas = new JButton();
+			bmas.setPreferredSize(new java.awt.Dimension(16, (int) getTText().getPreferredSize().getHeight()/2));
+			bmas.addActionListener(this);
+			bmas.setIcon(new ImageIcon(getClass().getResource(pathToImages + "mas.png")));
+		}
+		return bmas;
+	}
+
+	/**
+	 * This method initializes jButton1
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private JButton getBmenos() {
+		if (bmenos == null) {
+			bmenos = new JButton();
+			bmenos.setPreferredSize(new java.awt.Dimension(16, (int) getTText().getPreferredSize().getHeight()/2));
+			bmenos.addActionListener(this);
+			bmenos.setIcon(new ImageIcon(getClass().getResource(pathToImages + "menos.png")));
+		}
+		return bmenos;
+	}
+
+	/**
+	 * This method initializes jPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getPGeneral() {
+		if (pGeneral == null) {
+			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+
+			GridBagConstraints gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
+			if(isRight){
+				gridBagConstraints1.gridx = 1;
+				gridBagConstraints.gridx = 0;
+			}else{
+				gridBagConstraints1.gridx = 0;
+				gridBagConstraints.gridx = 1;
+			}
+			gridBagConstraints.gridy = 0;
+			gridBagConstraints1.gridy = 0;
+			gridBagConstraints.weightx = 1.0;
+			pGeneral = new JPanel();
+			pGeneral.setLayout(new GridBagLayout());
+			pGeneral.add(getTText(), gridBagConstraints);
+			pGeneral.add(getPButtons(), gridBagConstraints1);
+		}
+		return pGeneral;
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		if (e.getSource() == bmas) {
+			value ++;
+			checkValues();
+		}
+
+		if (e.getSource() == bmenos) {
+			value --;
+			checkValues();
+		}
+		callValueChangedListeners();
+	}
+
+	public void addValueChangedListener(TextIncreaserListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	public void removeValueChangedListener(TextIncreaserListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	private void callValueChangedListeners() {
+		if (!bDoCallListeners)
+			return;
+		Iterator acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			TextIncreaserListener listener = (TextIncreaserListener) acIterator.next();
+			listener.actionValueChanged(new TextIncreaserEvent(this));
+		}
+		eventId++;
+	}
+
+	private void checkValues() {
+		if (value >= maxValue) value = maxValue;
+		if (value <= minValue) value = minValue;
+		getTText().setText(Double.toString(value));
+	}
+
+	public void keyPressed(KeyEvent e) {
+		if (e.getKeyCode() == 10) {
+			try {
+				value = new Double(getTText().getText()).doubleValue();
+			} catch (NumberFormatException exc) {
+			}
+
+			checkValues();
+			callValueChangedListeners();
+		}
+	}
+
+	public void keyReleased(KeyEvent e) {}
+	public void keyTyped(KeyEvent e) {}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserContainer.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/images/mas.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/images/mas.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/images/menos.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/images/menos.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserListener.java	(revision 38348)
@@ -0,0 +1,25 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.textincreaser;
+
+import java.util.EventListener;
+
+public interface TextIncreaserListener extends EventListener {
+  public void actionValueChanged(TextIncreaserEvent e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/textincreaser/TextIncreaserListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/progresspanel/LogControl.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/progresspanel/LogControl.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/progresspanel/LogControl.java	(revision 38348)
@@ -0,0 +1,72 @@
+package org.gvsig.gui.beans.progresspanel;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+/**
+ * <code>LogControl</code>. Objeto para un control b�sico de un log. Para a�adir
+ * y reemplazar la �ltima l�nea a�adida.
+ *
+ * @version 27/03/2007
+ * @author BorSanZa - Borja Sanchez Zamorano (borja.sanchez@iver.es)
+ */
+public class LogControl {
+	String text = "";
+
+	/**
+	 * A�ade una l�nea al log.
+	 * @param line
+	 */
+	public void addLine(String line) {
+		if (text.length() > 0)
+			text += "\n";
+		text += line;
+	}
+
+	/**
+	 * Reemplaza la �ltima l�nea a�adida al log.
+	 * @param line
+	 */
+	public void replaceLastLine(String line) {
+		int index = text.lastIndexOf("\n");
+		if (index < 0)
+			index = 0;
+		text = text.substring(0, index);
+		addLine(line);
+	}
+
+	/**
+	 * Establece el texto completo del log.
+	 * @param value
+	 */
+	public void setText(String value) {
+		text = value;
+	}
+
+	/**
+	 * Devuelve el contenido del log.
+	 * @return String
+	 */
+	public String getText() {
+		return text;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/progresspanel/LogControl.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/progresspanel/ProgressPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/progresspanel/ProgressPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/progresspanel/ProgressPanel.java	(revision 38348)
@@ -0,0 +1,402 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+package org.gvsig.gui.beans.progresspanel;
+
+import java.awt.Dialog;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.GraphicsConfiguration;
+import java.awt.HeadlessException;
+import java.awt.Toolkit;
+
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JScrollPane;
+import javax.swing.JTextPane;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
+import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
+
+/**
+ * <code>ProgressPanel</code>. Muestra una ventana de di�logo para representar
+ * una barra de progreso con su ventana de registro.
+ *
+ * @version 15/07/2008
+ *
+ * @author BorSanZa - Borja Sanchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ProgressPanel extends JDialog {
+	private static final long serialVersionUID = 4321011219898234352L;
+
+	private JPanel              jPanel              = null;
+	private JLabel              jLabel              = null;
+	private JLabel              jLabel1             = null;
+	private JPanel              jPanel1             = null;
+	private JPanel              njp                 = null;
+	private DefaultButtonsPanel defaultButtonsPanel = null;
+	private JProgressBar        jProgressBar        = null;
+	private JScrollPane         jScrollPane         = null;
+	private JTextPane           jTextPane           = null;
+	private LogControl          text                = new LogControl();
+	private long                startTime           = System.currentTimeMillis();
+	private boolean             showPause           = true;
+
+	/**
+	 * Constructor
+	 */
+	public ProgressPanel() {
+		super();
+		initialize();
+	}
+
+	public ProgressPanel(boolean showPause) {
+		super();
+		this.showPause = showPause;
+		initialize();
+	}
+	
+	/**
+	 * @see JDialog#JDialog(Dialog, boolean)
+	 */
+	public ProgressPanel(Dialog owner, boolean modal) throws HeadlessException {
+		super(owner, modal);
+		initialize();
+	}
+
+	/**
+	 * @see JDialog#JDialog(Dialog, String, boolean, GraphicsConfiguration)
+	 */
+	public ProgressPanel(Dialog owner, String title, boolean modal,	GraphicsConfiguration gc) throws HeadlessException {
+		super(owner, title, modal, gc);
+		initialize();
+	}
+
+	/**
+	 * @see JDialog#JDialog(Dialog, String, boolean)
+	 */
+	public ProgressPanel(Dialog owner, String title, boolean modal)
+			throws HeadlessException {
+		super(owner, title, modal);
+		initialize();
+	}
+
+	/**
+	 * @see JDialog#JDialog(Dialog, String)
+	 */
+	public ProgressPanel(Dialog owner, String title) throws HeadlessException {
+		super(owner, title);
+		initialize();
+	}
+
+	/**
+	 * @see JDialog#JDialog(Dialog)
+	 */
+	public ProgressPanel(Dialog owner) throws HeadlessException {
+		super(owner);
+		initialize();
+	}
+
+	/**
+	 * @see JDialog#JDialog(Frame, boolean)
+	 */
+	public ProgressPanel(Frame owner, boolean modal) throws HeadlessException {
+		super(owner, modal);
+		initialize();
+	}
+
+	/**
+	 * @see JDialog#JDialog(Frame, String, boolean, GraphicsConfiguration)
+	 */
+	public ProgressPanel(Frame owner, String title, boolean modal, GraphicsConfiguration gc) {
+		super(owner, title, modal, gc);
+		initialize();
+	}
+
+	/**
+	 * @see JDialog#JDialog(Frame, String, boolean)
+	 */
+	public ProgressPanel(Frame owner, String title, boolean modal)
+			throws HeadlessException {
+		super(owner, title, modal);
+		initialize();
+	}
+
+	/**
+	 * @see JDialog#JDialog(Frame, String)
+	 */
+	public ProgressPanel(Frame owner, String title) throws HeadlessException {
+		super(owner, title);
+		initialize();
+	}
+
+	/**
+	 * @see JDialog#JDialog(Frame)
+	 */
+	public ProgressPanel(Frame owner) throws HeadlessException {
+		super(owner);
+		initialize();
+	}	
+	
+	/**
+	 * This method initializes this
+	 */
+	private void initialize() {
+		njp = new JPanel();
+		njp.setLayout(new java.awt.BorderLayout(5, 5));
+		njp.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 15, 5, 15));
+		this.setContentPane(njp);
+		this.setResizable(false);
+		njp.add(getJPanel(), java.awt.BorderLayout.NORTH);
+		njp.add(getJPanel1(), java.awt.BorderLayout.CENTER);
+		njp.add(getButtonsPanel(), java.awt.BorderLayout.SOUTH);
+		showLog(false);
+		setPercent(0);
+		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
+		this.setLocation(
+				(int) (d.getWidth() - this.getWidth()) >> 1,
+				(int) (d.getHeight() - this.getHeight()) >> 1);
+		this.setVisible(true);
+	}
+
+	/**
+	 * This method initializes jPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getJPanel() {
+		if (jPanel == null) {
+			jLabel1 = new JLabel();
+			jLabel = new JLabel();
+			jLabel.setText(Messages.getText("espere") + "...");
+			jPanel = new JPanel();
+			jPanel.setLayout(new java.awt.BorderLayout(5, 5));
+			jPanel.add(jLabel, java.awt.BorderLayout.WEST);
+			jPanel.add(jLabel1, java.awt.BorderLayout.EAST);
+		}
+		return jPanel;
+	}
+
+	/**
+	 * This method initializes jPanel1
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getJPanel1() {
+		if (jPanel1 == null) {
+			jPanel1 = new JPanel();
+			jPanel1.setLayout(new java.awt.BorderLayout(5, 5));
+			jPanel1.add(getJProgressBar(), java.awt.BorderLayout.NORTH);
+			jPanel1.add(getJScrollPane(), java.awt.BorderLayout.CENTER);
+		}
+		return jPanel1;
+	}
+
+	public void addButtonPressedListener(ButtonsPanelListener listener) {
+		getDefaultButtonsPanel().addButtonPressedListener(listener);
+	}
+
+	public void removeButtonPressedListener(ButtonsPanelListener listener) {
+		getDefaultButtonsPanel().removeButtonPressedListener(listener);
+	}
+
+	public void showLog(boolean visible) {
+		getButtonsPanel().getButton(ButtonsPanel.BUTTON_SEEDETAILS).setVisible(!visible);
+		getButtonsPanel().getButton(ButtonsPanel.BUTTON_HIDEDETAILS).setVisible(visible);
+		jScrollPane.setVisible(visible);
+
+		this.setIgnoreRepaint(true);
+
+		if (visible)
+			this.setSize(this.getWidth(), 300);
+		else
+			this.pack();
+
+		this.setIgnoreRepaint(false);
+		if (this.isVisible())
+			this.setVisible(true);
+	}
+
+	public void showPause(boolean visible) {
+		if (showPause) {
+			getButtonsPanel().getButton(ButtonsPanel.BUTTON_RESTART).setVisible(!visible);
+			getButtonsPanel().getButton(ButtonsPanel.BUTTON_PAUSE).setVisible(visible);
+		} else {
+			getButtonsPanel().getButton(ButtonsPanel.BUTTON_RESTART).setVisible(false);
+			getButtonsPanel().getButton(ButtonsPanel.BUTTON_PAUSE).setVisible(false);
+		}
+	}
+
+	/**
+	 * @see DefaultButtonsPanel#getButtonsPanel()
+	 */
+	public ButtonsPanel getButtonsPanel() {
+		return getDefaultButtonsPanel().getButtonsPanel();
+	}
+	
+	/**
+	 * This method initializes DefaultButtonsPanel
+	 *
+	 * @return DefaultButtonsPanel
+	 */
+	public DefaultButtonsPanel getDefaultButtonsPanel() {
+		if (defaultButtonsPanel == null) {
+			defaultButtonsPanel = new DefaultButtonsPanel(ButtonsPanel.BUTTONS_NONE);
+			getButtonsPanel().addSeeDetails();
+			getButtonsPanel().addHideDetails();
+			getButtonsPanel().addPause();
+			getButtonsPanel().addRestart();
+			showPause(true);
+			getButtonsPanel().addCancel();
+			getButtonsPanel().setLayout(new java.awt.FlowLayout(FlowLayout.CENTER));
+			getButtonsPanel().addButtonPressedListener(new ButtonsPanelListener() {
+				public void actionButtonPressed(ButtonsPanelEvent e) {
+					switch (e.getButton()) {
+						case ButtonsPanel.BUTTON_SEEDETAILS:
+							showLog(true);
+							break;
+						case ButtonsPanel.BUTTON_HIDEDETAILS:
+							showLog(false);
+							break;
+						case ButtonsPanel.BUTTON_PAUSE:
+							showPause(false);
+							break;
+						case ButtonsPanel.BUTTON_RESTART:
+							showPause(true);
+							break;
+					}
+				}
+			});
+		}
+		return defaultButtonsPanel;
+	}
+
+	/**
+	 * This method initializes jProgressBar
+	 *
+	 * @return javax.swing.JProgressBar
+	 */
+	private JProgressBar getJProgressBar() {
+		if (jProgressBar == null) {
+			jProgressBar = new JProgressBar();
+			jProgressBar.setValue(50);
+			jProgressBar.setPreferredSize(new Dimension(450, 18));
+		}
+		return jProgressBar;
+	}
+
+	/**
+	 * This method initializes jScrollPane
+	 *
+	 * @return javax.swing.JScrollPane
+	 */
+	private JScrollPane getJScrollPane() {
+		if (jScrollPane == null) {
+			jScrollPane = new JScrollPane();
+			jScrollPane.setViewportView(getJTextPane());
+			jScrollPane.setVisible(false);
+		}
+		return jScrollPane;
+	}
+
+	/**
+	 * This method initializes jTextPane
+	 *
+	 * @return javax.swing.JTextPane
+	 */
+	private JTextPane getJTextPane() {
+		if (jTextPane == null) {
+			jTextPane = new JTextPane();
+			jTextPane.setEditable(false);
+		}
+		return jTextPane;
+	}
+
+	private void updateLog() {
+		jTextPane.setText(text.getText());
+		jTextPane.setCaretPosition(jTextPane.getText().length());
+	}
+
+	public void addLineLog(String line) {
+		text.addLine(line);
+		updateLog();
+	}
+
+	public void replaceLastLineLog(String line) {
+		text.replaceLastLine(line);
+		updateLog();
+	}
+
+	public void setLog(String value) {
+		long time = (System.currentTimeMillis() - startTime) / 1000;
+		text.setText(value + "\n" + Messages.getText("tiempo_transcurrido") + ": " + time + "s");
+		updateLog();
+	}
+
+	public int getPercent() {
+		return jProgressBar.getValue();
+	}
+
+	public void setPercent(int value) {
+		if ((value == 0) && (!jProgressBar.isIndeterminate())) {
+			jProgressBar.setIndeterminate(true);
+			jLabel1.setVisible(false);
+		}
+		if ((value != 0) && (jProgressBar.isIndeterminate())) {
+			jProgressBar.setIndeterminate(false);
+			jLabel1.setVisible(true);
+		}
+		jProgressBar.setValue(value);
+		jLabel1.setText(value + "%");
+	}
+
+	public void setLabel(String value) {
+		jLabel.setText(value);
+	}
+
+	/**
+	 * <p>Sets whether this panel will show a normal progress bar
+	 * or an indeterminate one.</p>
+	 *
+	 * @see JProgressBar.setIndeterminate(boolean)
+	 * @param indeterminate
+	 */
+	public void setIndeterminate(boolean indeterminate) {
+		getJProgressBar().setIndeterminate(indeterminate);
+	}
+
+	/**
+	 * <p>Gets whether this panel will show a normal progress bar
+	 * or an indeterminate one.</p>
+	 *
+	 * @see JProgressBar.setIndeterminate(boolean)
+	 * @param indeterminate
+	 */
+	public boolean getIndeterminate() {
+		return getJProgressBar().isIndeterminate();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/progresspanel/ProgressPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/labelslidertext/LabelSliderTextContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/labelslidertext/LabelSliderTextContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/labelslidertext/LabelSliderTextContainer.java	(revision 38348)
@@ -0,0 +1,111 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.labelslidertext;
+
+import java.awt.BorderLayout;
+import java.awt.FlowLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.slidertext.SliderTextContainer;
+/**
+ * A�ade una etiqueta al componente Slider ajustando el tama�o del componente
+ * a la longitud de la etiqueta. Al redimensionar el componente varia el tama�o
+ * del slider
+ * 
+ * @author Nacho Brodin(nachobrodin@gmail.com) 
+ */
+public class LabelSliderTextContainer extends SliderTextContainer {
+	private static final long serialVersionUID = -4617272063786945078L;
+	public JLabel lName = null;
+	private JPanel pLabel = null;
+
+	/**
+	 * Constructor	
+	 * @param min Valor m�nimo del slider
+	 * @param max Valor m�ximo del slider
+	 * @param defaultPos Posici�n inicial
+	 * @param up Si es true el texto se coloca sobre el componente y si es false a la izquierda 
+	 * @param txt Texto de la etiqueta
+	 */
+	public LabelSliderTextContainer(int min, int max, int defaultPos, boolean up, String txt){
+		super(min, max, defaultPos);
+		GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+		gridBagConstraints1.insets = new Insets(0,0,0,0);
+		if(!up)
+			super.add(getPLabel(up), BorderLayout.WEST);
+		else
+			super.add(getPLabel(up), BorderLayout.NORTH);
+		getLName().setText(txt);
+	}
+
+	/**
+	 * This method initializes jPanel	
+	 * 	
+	 * @return javax.swing.JPanel	
+	 */
+	private JPanel getPLabel(boolean up) {
+		if (pLabel == null) {
+			pLabel = new JPanel();
+			if(!up){
+				GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+				gridBagConstraints1.insets = new java.awt.Insets(0, 10, 8, 0);
+				pLabel.setLayout(new GridBagLayout());
+				pLabel.add(getLName(), gridBagConstraints1);
+			}else{
+				FlowLayout fl = new FlowLayout();
+				fl.setAlignment(FlowLayout.LEFT);
+				pLabel.setLayout(fl);
+				pLabel.add(getLName(), null);
+			}
+
+		}
+		return pLabel;
+	}
+
+	/**
+	 * This method initializes JLabel
+	 * @return
+	 */
+	public JLabel getLName(){
+		if(lName == null)
+			lName = new JLabel();
+		return lName;
+	}
+
+	/**
+	 * Asigna el texto de la etiqueta
+	 * @param Texto de la etiqueta
+	 */
+	public void setName(String name){
+		lName.setText(name);
+	}
+
+	/**
+	 * Activa o desactiva el control
+	 */
+	public void setControlEnabled(boolean active){
+		this.lName.setEnabled(active);
+		super.setControlEnabled(active);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/labelslidertext/LabelSliderTextContainer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/TableControlerPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/TableControlerPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/TableControlerPanel.java	(revision 38348)
@@ -0,0 +1,409 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table;
+
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.table.listeners.TableListener;
+import org.gvsig.gui.util.StatusComponent;
+
+/**
+ * Control para el manejo de tablas. No contiene eventos, estos deben ser
+ * manejados desde la clase que lo llame.
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class TableControlerPanel extends JPanel {
+	private static final long serialVersionUID = -6442685244347917638L;
+	private int               HEIGHT_BUTTONS   = 19;                   // 16
+																																			// estaria
+																																			// bien
+	// **********************Vars**********************************
+	private JButton           bPrev            = null;
+	private JComboBox         cPoint           = null;
+	private JButton           bNext            = null;
+	private JButton           bFirst           = null;
+	private JButton           bLast            = null;
+	private JLabel            lPoints          = null;
+	private JLabel            lNumberOfPoints  = null;
+	private JButton           bNew             = null;
+	private JButton           bDelPoint        = null;
+	private JButton           bClear           = null;
+
+	private String            pathToImages     = "images/";            // "/com/iver/cit/gvsig/gui/panels/images/";
+
+	/**
+	 * Objeto para controlar el estado de los componentes visuales
+	 */
+	private StatusComponent   statusComponent  = null;
+
+	// **********************End Vars******************************
+
+	// **********************Methods*******************************
+	/**
+	 * This is the default constructor
+	 */
+	public TableControlerPanel(TableListener tableListener) {
+		initialize(tableListener);
+	}
+
+	/**
+	 * This method initializes this
+	 * @return void
+	 */
+	private void initialize(TableListener tableListener) {
+		statusComponent = new StatusComponent(this);
+
+		this.setLayout(new FlowLayout(FlowLayout.CENTER, 1, 0));
+		this.setAlignmentX(0);
+
+		lPoints = new JLabel();
+		lPoints.setText(Messages.getText("registro") + " ");
+		this.add(lPoints);
+
+		this.add(getBFirst());
+		this.add(getBPrev());
+		this.add(getCPoint());
+		this.add(getBNext());
+		this.add(getBLast());
+		this.add(getBNew());
+		this.add(getLNumberOfPoints());
+		this.add(getBDelPoint());
+		this.add(getBClear());
+
+		getBFirst().addActionListener(tableListener);
+		getBPrev().addActionListener(tableListener);
+		getCPoint().addActionListener(tableListener);
+		getBNext().addActionListener(tableListener);
+		getBLast().addActionListener(tableListener);
+		getBNew().addActionListener(tableListener);
+		getBDelPoint().addActionListener(tableListener);
+		getBClear().addActionListener(tableListener);
+	}
+
+	/**
+	 * Esta funci�n deshabilita todos los controles y guarda sus valores de
+	 * habilitado o deshabilitado para que cuando se ejecute restoreControlsValue
+	 * se vuelvan a quedar como estaba
+	 */
+	public void disableAllControls() {
+		statusComponent.setEnabled(false);
+	}
+
+	/**
+	 * Esta funci�n deja los controles como estaban al ejecutar la funci�n
+	 * disableAllControls
+	 */
+	public void restoreControlsValue() {
+		statusComponent.setEnabled(true);
+	}
+
+	// **********************Methods*******************************
+	/**
+	 * This method initializes jButton
+	 * @return javax.swing.JButton
+	 */
+	public JButton getBFirst() {
+		if (bFirst == null) {
+			bFirst = new JButton();
+			bFirst.setPreferredSize(new Dimension(22, HEIGHT_BUTTONS));
+			bFirst.setEnabled(false);
+			bFirst.setIcon(new ImageIcon(getClass().getResource(pathToImages + "first.png")));
+			bFirst.setToolTipText(Messages.getText("primero"));
+		}
+		return bFirst;
+	}
+
+	/**
+	 * This method initializes jButton
+	 * @return javax.swing.JButton
+	 */
+	public JButton getBLast() {
+		if (bLast == null) {
+			bLast = new JButton();
+			bLast.setPreferredSize(new Dimension(22, HEIGHT_BUTTONS));
+			bLast.setEnabled(false);
+			bLast.setIcon(new ImageIcon(getClass().getResource(pathToImages + "last.png")));
+			bLast.setToolTipText(Messages.getText("ultimo"));
+		}
+		return bLast;
+	}
+
+	/**
+	 * This method initializes bBefore
+	 * @return javax.swing.JButton
+	 */
+	public JButton getBPrev() {
+		if (bPrev == null) {
+			bPrev = new JButton();
+			bPrev.setText("");
+			bPrev.setEnabled(false);
+			bPrev.setPreferredSize(new Dimension(22, HEIGHT_BUTTONS));
+			bPrev.setIcon(new ImageIcon(getClass().getResource(pathToImages + "prev.png")));
+			bPrev.setActionCommand("");
+			bPrev.setToolTipText(Messages.getText("anterior"));
+		}
+		return bPrev;
+	}
+
+	/**
+	 * This method initializes bNext
+	 * @return javax.swing.JButton
+	 */
+	public JButton getBNext() {
+		if (bNext == null) {
+			bNext = new JButton("");
+			bNext.setEnabled(false);
+			bNext.setPreferredSize(new Dimension(22, HEIGHT_BUTTONS));
+			bNext.setIcon(new ImageIcon(getClass().getResource(pathToImages + "next.png")));
+			bNext.setActionCommand("");
+			bNext.setToolTipText(Messages.getText("siguiente"));
+		}
+		return bNext;
+	}
+
+	/**
+	 * Este m�todo inicializa el combo que contiene el n�mero de puntos.
+	 * @return javax.swing.JComboBox
+	 */
+	public JComboBox getCPoint() {
+		if (cPoint == null) {
+			cPoint = new JComboBox();
+			cPoint.setPreferredSize(new Dimension(64, HEIGHT_BUTTONS));
+		}
+		return cPoint;
+	}
+
+	/**
+	 * @return Returns the lNumberOfPoints.
+	 */
+	public JLabel getLNumberOfPoints() {
+		if (lNumberOfPoints == null) {
+			lNumberOfPoints = new JLabel();
+			lNumberOfPoints.setText(Messages.getText("de") + " 0");
+			// lNumberOfPoints.setPreferredSize(new java.awt.Dimension(35,15));
+		}
+		return lNumberOfPoints;
+	}
+
+	/**
+	 * This method initializes jButton
+	 * @return javax.swing.JButton
+	 */
+	public JButton getBNew() {
+		if (bNew == null) {
+			bNew = new JButton();
+			bNew.setPreferredSize(new Dimension(22, HEIGHT_BUTTONS));
+			bNew.setIcon(new ImageIcon(getClass().getResource(pathToImages + "newpoint.png")));
+			bNew.setToolTipText(Messages.getText("nuevo"));
+		}
+		return bNew;
+	}
+
+	/**
+	 * Este m�todo inicializa el bot�n del eliminar punto que har� que se elimine
+	 * el punto seleccionado.
+	 * @return javax.swing.JButton
+	 */
+	public JButton getBDelPoint() {
+		if (bDelPoint == null) {
+			bDelPoint = new JButton();
+			bDelPoint.setText("");
+			bDelPoint.setEnabled(false);
+			bDelPoint.setPreferredSize(new Dimension(22, HEIGHT_BUTTONS));
+			bDelPoint.setIcon(new ImageIcon(getClass().getResource(pathToImages + "delone.png")));
+			bDelPoint.setToolTipText(Messages.getText("borrar_uno"));
+		}
+		return bDelPoint;
+	}
+
+	/**
+	 * Este m�todo inicializa el bot�n del clear que har� que se eliminen todos
+	 * los puntos seleccionados.
+	 * @return javax.swing.JButton
+	 */
+	public JButton getBClear() {
+		if (bClear == null) {
+			bClear = new JButton();
+			bClear.setText("");
+			bClear.setPreferredSize(new Dimension(22, HEIGHT_BUTTONS));
+			bClear.setEnabled(false);
+			bClear.setIcon(new ImageIcon(getClass().getResource(pathToImages + "delall.png")));
+			bClear.setActionCommand("");
+			bClear.setToolTipText(Messages.getText("borrar_todos"));
+		}
+		return bClear;
+	}
+
+	/**
+	 * Resetea el control al estado inicial. Limpia el combo, pone el n�mero de
+	 * elementos a 0 y desactiva las flechas.
+	 */
+	public void resetControls() {
+		getCPoint().removeAllItems();
+		getLNumberOfPoints().setText(Messages.getText("de 0"));
+		checkArrows();
+	}
+
+	/**
+	 * Elimina del control un elemento de una posici�n.
+	 * <UL>
+	 * <LI>Actualiza el combo</LI>
+	 * <LI>Actualiza el texto que dice el n�mero de elementos</LI>
+	 * <LI>Actualiza las flechas</LI>
+	 * </UL>
+	 * @param pos Posici�n del elemento a eliminar.
+	 */
+	public void setNItems(int n) {
+		// if(n < 1)
+		// return;
+		getCPoint().removeAllItems();
+		for (int i = 1; i <= n; i++) {
+			try {
+				getCPoint().addItem(String.valueOf(i));
+			} catch (ArrayIndexOutOfBoundsException ex) {
+				// No a�adimos nada
+			}
+		}
+		getLNumberOfPoints().setText(Messages.getText("de") + " " + n);
+		checkArrows();
+	}
+
+	/**
+	 * Selecciona un elemento del control
+	 * @param index
+	 */
+	public void setSelectedIndex(int index) {
+		try {
+			getCPoint().setSelectedIndex(index);
+		} catch (IllegalArgumentException ex) {
+
+		}
+		checkArrows();
+	}
+
+	/**
+	 * Devuelve el punto seleccionado
+	 * @return Punto seleccionado.
+	 */
+	public int getSelectedIndex() {
+		return getCPoint().getSelectedIndex();
+	}
+
+	/**
+	 * Obtiene el n�mero de elementos en la lista.
+	 * @return N�mero de elementos
+	 */
+	public int getItemCount() {
+		return getCPoint().getItemCount();
+	}
+
+	/**
+	 * Obtiene el Objeto seleccionado como cadena de texto.
+	 * @return N�mero seleccionado
+	 */
+	public String getSelectedItem() {
+		return getCPoint().getSelectedItem().toString();
+	}
+
+	/**
+	 * Comprueba la posici�n del combo para ver si tiene que habilitar o
+	 * deshabilitar las flechas de delante y detr�s.
+	 */
+	public void checkArrows() {
+		if (!statusComponent.isEnabled())
+			return;
+
+		if (getCPoint().getItemCount() <= 0) {
+			getBClear().setEnabled(false);
+			getBDelPoint().setEnabled(false);
+		} else {
+			getBClear().setEnabled(true);
+			getBDelPoint().setEnabled(true);
+		}
+
+		if (getCPoint().getSelectedIndex() == -1) {
+			getBPrev().setEnabled(false);
+			getBNext().setEnabled(false);
+			getBLast().setEnabled(false);
+			getBFirst().setEnabled(false);
+
+			return;
+		}
+		if (getCPoint().getSelectedIndex() == 0) {
+			getBPrev().setEnabled(false);
+			getBFirst().setEnabled(false);
+		} else {
+			getBPrev().setEnabled(true);
+			getBFirst().setEnabled(true);
+		}
+
+		if (getCPoint().getSelectedIndex() == (getCPoint().getItemCount() - 1)) {
+			getBNext().setEnabled(false);
+			getBLast().setEnabled(false);
+		} else {
+			getBNext().setEnabled(true);
+			getBLast().setEnabled(true);
+		}
+	}
+
+	/**
+	 * A�ade un punto al combo y checkea los controles colocandolos en los valores
+	 * correctos.
+	 * @param countPoints N�mero de punto a a�adir al final del combo
+	 */
+	public void addPointToTable(int countPoints) {
+		getCPoint().addItem("" + countPoints);
+		getLNumberOfPoints().setText(Messages.getText("de") + " " + countPoints);
+		setSelectedIndex(getItemCount() - 1);
+		checkArrows();
+	}
+
+	/**
+	 * Asigna la ruta donde est�n las imagenes
+	 * @param pathToImages
+	 */
+	public void setPathToImages(String pathToImages) {
+		this.pathToImages = pathToImages;
+	}
+
+	/**
+	 * Activa o desactiva este panel y todos los que lo componen
+	 * @param enabled variable booleana para la activaci�n y/o desactivaci�n
+	 */
+	public void setEnabled(boolean enabled) {
+		this.getBDelPoint().setEnabled(enabled);
+		this.getBClear().setEnabled(enabled);
+	}
+
+	/**
+	 * Dice si los controles est�n deshabilitados o no
+	 * @return true si est� habilitado y false si no lo est�
+	 */
+	public boolean isDisableAllControls() {
+		return !statusComponent.isEnabled();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/TableControlerPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/MoveRowsPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/MoveRowsPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/MoveRowsPanel.java	(revision 38348)
@@ -0,0 +1,146 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table;
+
+import java.awt.Dimension;
+
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.table.listeners.TableListener;
+import org.gvsig.gui.util.StatusComponent;
+
+public class MoveRowsPanel extends JPanel {
+  private static final long serialVersionUID = -4496318143555472677L;
+
+	private int             HEIGHT_BUTTONS  = 19;       // 16 estaria bien
+	private JButton         bUp             = null;
+	private JButton         bDown           = null;
+	private int             selected        = -1;
+	private int             cont            = 0;
+	private String          pathToImages    = "images/"; // "/com/iver/cit/gvsig/gui/panels/images/";
+
+	/**
+	 * Objeto para controlar el estado de los componentes visuales 
+	 */
+	private StatusComponent statusComponent = null;
+	
+	/**
+	 * This is the default constructor
+	 */
+	public MoveRowsPanel(TableListener tableListener) {
+		initialize(tableListener);
+	}
+	
+	private void initialize(TableListener tableListener) {
+		statusComponent = new StatusComponent(this);
+
+		setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 1, 0));
+		add(getBUp());
+		add(getBDown());
+
+		getBUp().addActionListener(tableListener);
+		getBDown().addActionListener(tableListener);
+	}
+
+	public void setSelectedIndex(int i, int cont) {
+		selected = i;
+		this.cont = cont;
+		checkArrows();
+	}
+	
+	/**
+	 * Comprueba la posici�n del combo para ver si tiene que
+	 * habilitar o deshabilitar las flechas de delante y detr�s.
+	 */
+	private void checkArrows(){
+		if (!statusComponent.isEnabled())
+			return;
+
+		if (selected == -1) {
+			getBUp().setEnabled(false);
+			getBDown().setEnabled(false);
+			return;
+		}
+
+		if (selected == 0) {
+			getBUp().setEnabled(false);
+		} else {
+			getBUp().setEnabled(true);
+		}
+
+		if (selected == (cont - 1)) {
+			getBDown().setEnabled(false);
+		} else {
+			getBDown().setEnabled(true);
+		}
+	}	
+
+	/**
+	 * This method initializes bUp
+	 * @return javax.swing.JButton
+	 */
+	public JButton getBUp() {
+		if (bUp == null) {
+			bUp = new JButton("");
+			bUp.setEnabled(true);
+			bUp.setPreferredSize(new Dimension(22, HEIGHT_BUTTONS));
+			bUp.setIcon(new ImageIcon(getClass().getResource(pathToImages + "up-16x16.png")));
+			bUp.setActionCommand("");
+			bUp.setToolTipText(Messages.getText("subir"));
+		}
+		return bUp;
+	}
+	
+
+	/**
+	 * This method initializes bDown
+	 * @return javax.swing.JButton
+	 */
+	public JButton getBDown() {
+		if (bDown == null) {
+			bDown = new JButton("");
+			bDown.setEnabled(true);
+			bDown.setPreferredSize(new Dimension(22, HEIGHT_BUTTONS));
+			bDown.setIcon(new ImageIcon(getClass().getResource(pathToImages + "down-16x16.png")));
+			bDown.setActionCommand("");
+			bDown.setToolTipText(Messages.getText("bajar"));
+		}
+		return bDown;
+	}
+	
+	/**
+	 * Esta funci�n deshabilita todos los controles y guarda sus valores
+	 * de habilitado o deshabilitado para que cuando se ejecute restoreControlsValue
+	 * se vuelvan a quedar como estaba
+	 */
+	public void disableAllControls(){
+		statusComponent.setEnabled(false);
+	}
+
+	/**
+	 * Esta funci�n deja los controles como estaban al ejecutar la funci�n
+	 * disableAllControls
+	 */
+	public void restoreControlsValue(){
+		statusComponent.setEnabled(true);
+	}	
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/exceptions/NotInitializeException.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/exceptions/NotInitializeException.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/exceptions/NotInitializeException.java	(revision 38348)
@@ -0,0 +1,59 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.exceptions;
+/**
+ * Excepci�n que indica que una tabla no ha sido inicializada.
+ *
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class NotInitializeException extends Exception {
+	private static final long serialVersionUID = -6411813224550536884L;
+
+	public NotInitializeException() {
+		super();
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 *
+	 * @param message
+	 */
+	public NotInitializeException(String message) {
+		super(message);
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 *
+	 * @param message
+	 * @param cause
+	 */
+	public NotInitializeException(String message, Throwable cause) {
+		super(message, cause);
+	}
+
+	/**
+	 * DOCUMENT ME!
+	 *
+	 * @param cause
+	 */
+	public NotInitializeException(Throwable cause) {
+		super(cause);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/exceptions/NotInitializeException.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableButtonModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableButtonModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableButtonModel.java	(revision 38348)
@@ -0,0 +1,64 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Color;
+
+import javax.swing.JButton;
+import javax.swing.table.DefaultTableModel;
+/**
+ * Componente tabla
+ *
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class TableButtonModel extends DefaultTableModel implements IModel {
+	final private static long serialVersionUID = -3370601314380922368L;
+
+	public TableButtonModel(String[] columnNames) {
+		super(new Object[0][4], columnNames);
+	}
+
+	public Class getColumnClass(int c) {
+		if ((c < 1) || (c == 4))
+			return JButton.class;
+
+		return String.class;
+	}
+
+	public void removeRow(int row) {
+		super.setValueAt(null, row, 0);
+		super.setValueAt("", row, 1);
+		super.setValueAt("", row, 2);
+		super.setValueAt("", row, 3);
+		super.setValueAt(null, row, 4);
+		super.removeRow(row);
+	}
+
+	public void setValueAt(Object value, int row, int col) {
+		super.setValueAt(value, row, col);
+	}
+
+	public Object[] getNewLine() {
+		return new Object[] { Color.WHITE, "", "", "", "255" };
+	}
+
+	public void addRow(Object[] list) {
+		super.addRow(new Object[] { list[0], list[1], list[2], list[3], list[4] });
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableButtonModel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ROIsTableModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ROIsTableModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ROIsTableModel.java	(revision 38348)
@@ -0,0 +1,51 @@
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Color;
+
+import javax.swing.JButton;
+import javax.swing.table.DefaultTableModel;
+
+public class ROIsTableModel extends DefaultTableModel implements IModel {
+	private static final long serialVersionUID = 8716862990277121681L;
+
+	
+	private static boolean[]	canEdit = new boolean[] { true, false, false, false, true};
+	private static Class[]   	types   = new Class[] { String.class, Integer.class, Integer.class, Integer.class, JButton.class};
+	private static Color[]   	colors  = new Color[] {Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW, Color.MAGENTA, Color.CYAN,
+		Color.ORANGE, Color.PINK, Color.WHITE, Color.BLACK};
+	
+	public ROIsTableModel(String[] columnNames) {
+		super(new Object[0][5], columnNames);
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.table.models.IModel#getNewLine()
+	 */
+	public Object[] getNewLine() {
+		Color color = null;
+		if (this.getRowCount() < colors.length) {
+			color = colors[this.getRowCount()];
+		}
+		else{
+			color = new Color((float)Math.random(),(float)Math.random(),(float)Math.random());
+		}
+		return new Object[] {"", new Integer(0), new Integer(0), new Integer(0), color};
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
+	 */
+	public Class getColumnClass(int columnIndex) {
+		return types [columnIndex];
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.table.DefaultTableModel#isCellEditable(int, int)
+	 */
+	public boolean isCellEditable(int rowIndex, int columnIndex) {
+		return canEdit [columnIndex];
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxModel.java	(revision 38348)
@@ -0,0 +1,41 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import javax.swing.table.DefaultTableModel;
+/**
+ * Componente tabla
+ * 
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class CheckBoxModel extends DefaultTableModel implements IModel{
+	final private static long serialVersionUID = -3370601314380922368L;
+
+	public CheckBoxModel(String[] columnNames) {
+		super(new Object[0][columnNames.length], columnNames);
+	}
+
+	public Object[] getNewLine() {
+		return new Object[] { new Boolean(false), "", new Integer(0)};
+	}
+	
+	public boolean isCellEditable(int row, int col) {
+		return (col == 0);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxModel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorButtonColumnEditor.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorButtonColumnEditor.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorButtonColumnEditor.java	(revision 38348)
@@ -0,0 +1,88 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.JButton;
+import javax.swing.JColorChooser;
+import javax.swing.JDialog;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableCellEditor;
+
+import org.gvsig.gui.beans.Messages;
+/**
+ * Editor de celda con un bot�n selector de color-
+ *
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class TableColorButtonColumnEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
+	private static final long serialVersionUID = -6627842834708616873L;
+	Color currentColor;
+	JButton button;
+	JColorChooser colorChooser;
+	JDialog dialog;
+	private DefaultTableModel tableModel = null;
+	private JTable table = null;
+	protected static final String EDIT = "edit";
+
+	public TableColorButtonColumnEditor(DefaultTableModel tableModel, JTable table) {
+		button = new JButton();
+		button.setActionCommand(EDIT);
+		button.addActionListener(this);
+		button.setBorderPainted(false);
+		this.tableModel = tableModel;
+		this.table = table;
+
+		colorChooser = new JColorChooser();
+		dialog = JColorChooser.createDialog(button, Messages.getText("select_color"), true, colorChooser, this, null);
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		if (EDIT.equals(e.getActionCommand())) {
+			button.setBackground(currentColor);
+			colorChooser.setColor(currentColor);
+			dialog.setVisible(true);
+			if ((tableModel != null) && (table != null)) {
+				if (!((tableModel instanceof ProfilesTableModel)||(tableModel instanceof ROIsTableModel))) {
+					String newColor = currentColor.getRed() + "," + currentColor.getGreen() + "," + currentColor.getBlue();
+					if (!newColor.equals(tableModel.getValueAt(table.getSelectedRow(), 2))) {	
+					tableModel.setValueAt(newColor, table.getSelectedRow(), 2);
+					}
+				}
+			}
+			fireEditingStopped();
+		} else
+			currentColor = colorChooser.getColor();
+	}
+
+	public Object getCellEditorValue() {
+		return currentColor;
+	}
+
+	public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
+		currentColor = (Color) value;
+		return button;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorButtonColumnEditor.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorModel.java	(revision 38348)
@@ -0,0 +1,70 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Color;
+
+import javax.swing.JButton;
+import javax.swing.table.DefaultTableModel;
+/**
+ * Componente tabla
+ *
+ * @version 27/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TableColorModel extends DefaultTableModel implements IModel {
+	private static final long serialVersionUID = 5126848457976272945L;
+
+	boolean[] canEdit = new boolean[] { true, true, false, true, false, true };
+	Class[]   types   = new Class[] { JButton.class, String.class, String.class, Double.class, Double.class, JButton.class };
+
+	public TableColorModel(String[] columnNames) {
+		super(new Object[0][6], columnNames);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.table.models.IModel#getNewLine()
+	 */
+	public Object[] getNewLine() {
+		Double valor = new Double(0.0f);
+		Color color = Color.WHITE;
+		if (this.getRowCount() > 0) {
+			valor = (Double) getValueAt(this.getRowCount() - 1, 3);
+			color = (Color) getValueAt(this.getRowCount() - 1, 0);
+		}
+		return new Object[] {color, "", "", valor, null, "255"};
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
+	 */
+	public Class getColumnClass(int columnIndex) {
+		return types [columnIndex];
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.table.DefaultTableModel#isCellEditable(int, int)
+	 */
+	public boolean isCellEditable(int rowIndex, int columnIndex) {
+		return canEdit [columnIndex];
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorModel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableSelectorButtonColumnEditor.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableSelectorButtonColumnEditor.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableSelectorButtonColumnEditor.java	(revision 38348)
@@ -0,0 +1,80 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JTable;
+import javax.swing.table.TableCellEditor;
+
+import org.gvsig.gui.beans.Messages;
+
+/**
+ * Componente tabla
+ *
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ *
+ */
+public class TableSelectorButtonColumnEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
+	private static final long serialVersionUID = -2028530090765546942L;
+	String currentText = "255";
+	JButton button;
+	JValueSelector valueSelector;
+	JDialog dialog;
+	protected static final String EDIT = "edit";
+
+	public TableSelectorButtonColumnEditor() {
+		button = new JButton();
+		button.setActionCommand(EDIT);
+		button.addActionListener(this);
+		button.setBorderPainted(false);
+
+		valueSelector = new JValueSelector();
+		dialog = JValueSelector.createDialog(button, Messages.getText("seleccion_alpha"), true, valueSelector, this, null, currentText);
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		if (EDIT.equals(e.getActionCommand())) {
+			button.setText(currentText);
+			((ValueSelector)dialog).setValue(Integer.valueOf(currentText).intValue());
+			dialog.setVisible(true);
+
+			fireEditingStopped();
+
+		}else{
+			currentText = String.valueOf((int)((ValueSelector)dialog).getValue());
+			button.setText(currentText);
+		}
+	}
+
+	public Object getCellEditorValue() {
+		return currentText;
+	}
+
+	public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
+															 int row, int column) {
+		currentText = (String)value;
+		return button;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableSelectorButtonColumnEditor.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/IModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/IModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/IModel.java	(revision 38348)
@@ -0,0 +1,30 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+
+/**
+ * Interfaz que implementan los modelos de tabla
+ * 
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ *
+ */
+public interface IModel{
+    public Object[] getNewLine();
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/IModel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxColumnEditor.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxColumnEditor.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxColumnEditor.java	(revision 38348)
@@ -0,0 +1,67 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.JCheckBox;
+import javax.swing.JTable;
+import javax.swing.SwingUtilities;
+import javax.swing.table.TableCellEditor;
+
+/**
+ * Componente tabla
+ * 
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ *
+ */
+public class CheckBoxColumnEditor extends AbstractCellEditor
+implements TableCellEditor {
+    final private static long serialVersionUID = -3370601314380922368L;
+    public JCheckBox theCheckBox;
+
+    public CheckBoxColumnEditor() {
+        super();
+        theCheckBox = new JCheckBox();
+        theCheckBox.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent event) {
+                    fireEditingStopped() ;
+                    
+                }
+            });
+    }
+
+    public Component getTableCellEditorComponent(JTable table, Object obj,
+                                                 boolean isSelected,
+                                                 int row, int col) {
+    	theCheckBox.setHorizontalAlignment(SwingUtilities.CENTER);
+
+        Boolean lValueAsBoolean = (Boolean) obj;
+        theCheckBox.setSelected(lValueAsBoolean.booleanValue());
+
+        return theCheckBox;
+    }
+
+    public Object getCellEditorValue() {
+        return new Boolean(theCheckBox.isSelected());
+    }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxColumnEditor.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/RadioButtonModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/RadioButtonModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/RadioButtonModel.java	(revision 38348)
@@ -0,0 +1,49 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import javax.swing.table.DefaultTableModel;
+
+public class RadioButtonModel extends DefaultTableModel implements IModel {
+	private static final long serialVersionUID = 7113401200946271448L;
+
+	public RadioButtonModel(String[] columnNames) {
+		super(new Object[0][2], columnNames);
+	}
+
+	public Class getColumnClass(int c) {
+		if (c < 1) {
+			return Boolean.class;
+		}
+
+		return String.class;
+	}
+
+	public void setValueAt(Object value, int row, int col) {
+		super.setValueAt(value, row, col);
+	}
+
+	public void addNew() {
+		super.addRow(new Object[] { new Boolean(false), "" });
+	}
+
+	public Object[] getNewLine() {
+		return new Object[] { new Boolean(false), "" };
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/RadioButtonModel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ProfilesTableModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ProfilesTableModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ProfilesTableModel.java	(revision 38348)
@@ -0,0 +1,53 @@
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Color;
+
+import javax.swing.JButton;
+import javax.swing.table.DefaultTableModel;
+
+public class ProfilesTableModel extends DefaultTableModel implements IModel{
+	
+private static final long serialVersionUID = 8716862990277121681L;
+
+	
+	private static boolean[]	canEdit = new boolean[] { true, true, false, false, false };
+	private static Class[]   	types   = new Class[] { String.class, JButton.class, Double.class, Double.class, Double.class };
+	private static Color[]   	colors  = new Color[] {Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW, Color.MAGENTA, Color.CYAN,
+		Color.ORANGE, Color.PINK, Color.WHITE, Color.BLACK};
+	
+	public ProfilesTableModel(String[] columnNames) {
+		super(new Object[0][5], columnNames);
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.table.models.IModel#getNewLine()
+	 */
+	public Object[] getNewLine() {
+		Color color = null;
+		if (this.getRowCount() < colors.length) {
+			color = colors[this.getRowCount()];
+		}
+		else{
+			color = new Color((float)Math.random(),(float)Math.random(),(float)Math.random());
+		}
+		return new Object[] {"",color, new Double(0), new Double(0), new Double(0)};
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.table.AbstractTableModel#getColumnClass(int)
+	 */
+	public Class getColumnClass(int columnIndex) {
+		return types [columnIndex];
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.table.DefaultTableModel#isCellEditable(int, int)
+	 */
+	public boolean isCellEditable(int rowIndex, int columnIndex) {
+		return canEdit [columnIndex];
+	}
+
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonColumnRenderer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonColumnRenderer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonColumnRenderer.java	(revision 38348)
@@ -0,0 +1,54 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Component;
+
+import javax.swing.JRadioButton;
+import javax.swing.JTable;
+import javax.swing.SwingConstants;
+import javax.swing.table.TableCellRenderer;
+
+/**
+ * Componente tabla
+ * 
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ *
+ */
+public class TreeRadioButtonColumnRenderer extends JRadioButton implements TableCellRenderer {
+    final private static long serialVersionUID = -3370601314380922368L;
+
+    public Component getTableCellRendererComponent(JTable table,
+                                                   Object value,
+                                                   boolean isSelected,
+                                                   boolean hasFocus,
+                                                   int row, int column) {
+        if (value == null) {
+            this.setSelected(false);
+        }
+        
+        if(value instanceof Boolean){
+	        Boolean ValueAsBoolean = (Boolean) value;
+	        this.setSelected(ValueAsBoolean.booleanValue());
+	        this.setHorizontalAlignment(SwingConstants.CENTER);
+        }
+        	
+        return this;
+    }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonColumnRenderer.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ARGBBandSelectorModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ARGBBandSelectorModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ARGBBandSelectorModel.java	(revision 38348)
@@ -0,0 +1,62 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import javax.swing.table.DefaultTableModel;
+/**
+ * Componente tabla. Selector de bandas ARGB para la visualizaci�n. Una file consta
+ * de cuatro JRadioButtons para la selecci�n de ARGB y una entrada de texto para 
+ * el nombre de la banda.
+ * 
+ * @author Nacho Brodin (nachobrodin@gmail.com)
+ */
+public class ARGBBandSelectorModel extends DefaultTableModel implements IModel {
+	final private static long serialVersionUID = -3370601314380922368L;
+
+	public ARGBBandSelectorModel(String[] columnNames) {
+		super(new Object[0][5], columnNames);
+	}
+
+	public Class getColumnClass(int c) {
+		if (c < 4) {
+			return Boolean.class;
+		}
+
+		return String.class;
+	}
+
+	public void setValueAt(Object value, int row, int col) {
+		if ((col < 4) && ((Boolean) value).booleanValue()) {
+			for (int i = 0; i < getRowCount(); i++) {
+				if (i != row) {
+					setValueAt(new Boolean(false), i, col);
+				}
+			}
+		}
+		super.setValueAt(value, row, col);
+	}
+
+	public void addNew() {
+		super.addRow(new Object[] { new Boolean(false), new Boolean(false), new Boolean(false), new Boolean(false), "" });
+	}
+
+	public Object[] getNewLine() {
+		return new Object[] { new Boolean(false), new Boolean(false), new Boolean(false), new Boolean(false), "" };
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/JValueSelector.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/JValueSelector.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/JValueSelector.java	(revision 38348)
@@ -0,0 +1,235 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.HeadlessException;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.slidertext.SliderTextContainer;
+
+/**
+ * Ventana con el slider para la selecci�n de Alpha en una entrada de la tabla que representa
+ * a la paleta de color.
+ *
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ *
+ */
+
+public class JValueSelector extends JPanel {
+	private static final long serialVersionUID = -427287107697905904L;
+
+	/**
+		 * Creates and returns a new dialog containing the specified
+		 * <code>ColorChooser</code> pane along with "OK", "Cancel", and "Reset"
+		 * buttons. If the "OK" or "Cancel" buttons are pressed, the dialog is
+		 * automatically hidden (but not disposed).  If the "Reset"
+		 * button is pressed, the color-chooser's color will be reset to the
+		 * color which was set the last time <code>show</code> was invoked on the
+		 * dialog and the dialog will remain showing.
+		 *
+		 * @param c              the parent component for the dialog
+		 * @param title          the title for the dialog
+		 * @param modal          a boolean. When true, the remainder of the program
+		 *                       is inactive until the dialog is closed.
+		 * @param valueSelector  the value-selector to be placed inside the dialog
+		 * @param okListener     the ActionListener invoked when "OK" is pressed
+		 * @param cancelListener the ActionListener invoked when "Cancel" is pressed
+		 * @return a new dialog containing the color-chooser pane
+		 * @exception HeadlessException if GraphicsEnvironment.isHeadless()
+		 * returns true.
+		 * @see java.awt.GraphicsEnvironment#isHeadless
+		 */
+		public static JDialog createDialog(Component c, String title, boolean modal,
+				JValueSelector valueSelector, ActionListener okListener,
+				ActionListener cancelListener, String initValue) throws HeadlessException {
+
+				return new ValueSelector(c, title, modal, valueSelector,
+																								okListener, cancelListener, initValue);
+		}
+
+}
+
+class ValueSelector extends JDialog implements ActionListener {
+	private static final long serialVersionUID = -1510744508318912657L;
+	private int	 				initValue;
+	private ActionListener			okListener;
+	private ActionListener			cancelListener;
+
+	private int 					HBUTTONS = 30;
+	private int 					HSLIDER = 50;
+	private JPanel					buttons = null;
+	private JPanel					pMain = null;
+	private SliderTextContainer 	pSlider = null;
+	private int 					width = 315, height = 115;
+	private int 					widthMargin = 300;
+	private JButton				bAccept = null;
+	private JButton				bCancel = null;
+
+	/**
+	 * Constructor
+	 * @param pp PalettePanel
+	 */
+	public ValueSelector(Component c, String title, boolean modal,
+					JValueSelector valueSelector, ActionListener okListener,
+					ActionListener cancelListener, String initValue)throws HeadlessException {
+
+				super(JOptionPane.getFrameForComponent(c), title, modal);
+				this.okListener = okListener;
+				this.cancelListener = cancelListener;
+
+				try{
+					init(Integer.valueOf(initValue).intValue());
+					this.initValue = Integer.valueOf(initValue).intValue();
+				}catch(NumberFormatException ex){
+					init(0);
+				}
+
+				setLocationRelativeTo(c);
+	}
+
+	public void init(int initValue){
+		getPSlider().setValue(initValue);
+
+		Container contentPane = getContentPane();
+		FlowLayout layout = new FlowLayout();
+		layout.setHgap(0);
+		layout.setVgap(0);
+				contentPane.setLayout(layout);
+				setSize(width, height + 10);
+				contentPane.add(getPMain(), null);
+	}
+
+	/**
+	 * Asigna el valor de inicializaci�n para el Slider
+	 * @param value
+	 */
+	public void setValue(int value){
+			this.initValue = value;
+			this.getPSlider().setValue((double)value);
+		}
+
+	/**
+	 * Asigna el valor de inicializaci�n para el Slider
+	 * @param value
+	 */
+	public double getValue(){
+		 return initValue;
+		}
+
+	/**
+	 * Obtiene el panel principal que contiene el panel de botones y el panel
+	 * con el slider
+	 * @return JPanel
+	 */
+	private JPanel getPMain(){
+		if(pMain == null){
+			GridBagConstraints gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.gridy = 0;
+			gridBagConstraints.gridx = 0;
+			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+			gridBagConstraints1.gridy = 1;
+			gridBagConstraints1.gridx = 0;
+			pMain = new JPanel();
+			pMain.setLayout(new GridBagLayout());
+			pMain.setPreferredSize(new java.awt.Dimension(widthMargin, height));
+			pMain.add(getPSlider(), gridBagConstraints);
+			pMain.add(getPButtons(), gridBagConstraints1);
+		}
+		return pMain;
+	}
+
+	/**
+	 * Obtiene el panel de botones
+	 * @return JPanel
+	 */
+	private JPanel getPButtons(){
+		if(buttons == null){
+			buttons = new JPanel();
+			buttons.setPreferredSize(new java.awt.Dimension(widthMargin, HBUTTONS));
+			FlowLayout flowLayout = new FlowLayout();
+			flowLayout.setAlignment(java.awt.FlowLayout.RIGHT);
+			flowLayout.setVgap(0);
+			flowLayout.setHgap(2);
+			buttons.setLayout(flowLayout);
+			buttons.add(getBAccept(), null);
+			buttons.add(getBCancel(), null);
+		}
+		return buttons;
+	}
+
+	/**
+	 * Obtiene el panel con el slider
+	 * @return
+	 */
+	public SliderTextContainer getPSlider(){
+		if(pSlider == null){
+			pSlider = new SliderTextContainer(0, 255, this.initValue);
+			pSlider.setPreferredSize(new java.awt.Dimension(widthMargin, HSLIDER));
+		}
+		return pSlider;
+	}
+
+	/**
+	 * Obtiene el bot�n de aceptar
+	 * @return JButton
+	 */
+	public JButton getBAccept(){
+		if(bAccept == null){
+			bAccept = new JButton("aceptar");
+			bAccept.addActionListener(okListener);
+			bAccept.addActionListener(this);
+		}
+		return bAccept;
+	}
+
+	/**
+	 * Obtiene el bot�n de cancelar
+	 * @return JButton
+	 */
+	public JButton getBCancel(){
+		if(bCancel == null){
+			bCancel = new JButton("cancelar");
+			bAccept.addActionListener(cancelListener);
+			bCancel.addActionListener(this);
+		}
+		return bCancel;
+	}
+
+	/**
+	 * Al aceptar asignamos el valor del slider al bot�n de alpha y al cancelar cerramos la ventana
+	 */
+	public void actionPerformed(ActionEvent e) {
+		if(e.getSource() == this.getBAccept()){
+			initValue = (int)getPSlider().getValue();
+		}
+		this.setVisible(false);
+	}
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/JValueSelector.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ModelLoader.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ModelLoader.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ModelLoader.java	(revision 38348)
@@ -0,0 +1,171 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumn;
+/**
+ * Cargador de Modelos
+ *
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class ModelLoader {
+	private static DefaultTableModel tableModel = null;
+
+	public JTable load(String model, String[] columnNames, ArrayList listeners) {
+		if (model == null || model.equals(""))
+			return null;
+
+		ActionListener actionListener = null;
+		if(listeners != null) {
+			for (int i = 0; i < listeners.size(); i++) {
+				if(listeners.get(i) instanceof ActionListener) 
+					actionListener = (ActionListener)listeners.get(i);
+			}
+		}
+		
+		JTable table = null;
+
+		if (model.equals("ListModel")) {
+			tableModel = new ListModel(columnNames);
+			table = new JTable(tableModel);
+		}
+
+		if (model.equals("TreeRadioButtonModel")) {
+			tableModel = new TreeRadioButtonModel(columnNames);
+			table = new JTable(tableModel);
+			TableColumn column = null;
+			
+			for (int i = 0; i < columnNames.length - 1; i++) {
+				column = table.getColumnModel().getColumn(i);
+				column.setCellRenderer(new TreeRadioButtonColumnRenderer());
+				column.setCellEditor(new TreeRadioButtonColumnEditor());
+			}
+		}
+		
+		if (model.equals("ARGBBandSelectorModel")) {
+			tableModel = new ARGBBandSelectorModel(columnNames);
+			table = new JTable(tableModel);
+			TableColumn column = null;
+
+			for (int i = 0; i < columnNames.length - 1; i++) {
+				column = table.getColumnModel().getColumn(i);
+				column.setMaxWidth(52);
+				column.setMinWidth(26);
+				column.setCellRenderer(new TreeRadioButtonColumnRenderer());
+				TreeRadioButtonColumnEditor trbce = new TreeRadioButtonColumnEditor();
+				trbce.setActionListener(actionListener);
+				column.setCellEditor(trbce);
+			}
+		}
+
+		if (model.equals("RadioButtonModel")) {
+			tableModel = new RadioButtonModel(columnNames);
+			table = new JTable(tableModel);
+			TableColumn column = null;
+
+			for (int i = 0; i < columnNames.length - 1; i++) {
+				column = table.getColumnModel().getColumn(i);
+				column.setCellRenderer(new TreeRadioButtonColumnRenderer());
+				column.setCellEditor(new TreeRadioButtonColumnEditor());
+			}
+		}
+
+		if (model.equals("CheckBoxModel")) {
+			tableModel = new CheckBoxModel(columnNames);
+			table = new JTable(tableModel);
+			TableColumn column = null;
+
+			column = table.getColumnModel().getColumn(0);
+			column.setCellRenderer(new CheckBoxColumnRenderer());
+			column.setCellEditor(new CheckBoxColumnEditor());
+		}
+
+		if (model.equals("TableButtonModel")) {
+			tableModel = new TableButtonModel(columnNames);
+			table = new JTable(tableModel);
+			TableColumn column = null;
+
+			column = table.getColumnModel().getColumn(0);
+			column.setCellRenderer(new TableColorButtonColumnRenderer(true));
+			column.setCellEditor(new TableColorButtonColumnEditor((DefaultTableModel) tableModel, table));
+
+			column = table.getColumnModel().getColumn(4);
+			column.setCellRenderer(new TableSelectorButtonColumnRenderer());
+			column.setCellEditor(new TableSelectorButtonColumnEditor());
+		}
+
+		if (model.equals("TableColorModel")) {
+			tableModel = new TableColorModel(columnNames);
+			table = new JTable(tableModel);
+			TableColumn column = null;
+
+			column = table.getColumnModel().getColumn(0);
+			column.setCellRenderer(new TableColorButtonColumnRenderer(true));
+			column.setCellEditor(new TableColorButtonColumnEditor((DefaultTableModel) tableModel, table));
+
+			column = table.getColumnModel().getColumn(5);
+			column.setCellRenderer(new TableSelectorButtonColumnRenderer());
+			column.setCellEditor(new TableSelectorButtonColumnEditor());
+		}
+		
+		if (model.equals("ROIsTableModel")) {
+			tableModel = new ROIsTableModel(columnNames);
+			table = new JTable(tableModel);
+			TableColumn column = null;
+	
+			column = table.getColumnModel().getColumn(4);
+			column.setCellRenderer(new TableColorButtonColumnRenderer(true));
+			column.setCellEditor(new TableColorButtonColumnEditor((DefaultTableModel) tableModel, table));	
+		}
+		if (model.equals("ProfilesTableModel")) {
+			tableModel = new ProfilesTableModel(columnNames);
+			table = new JTable(tableModel);
+			TableColumn column = null;
+	
+			column = table.getColumnModel().getColumn(1);
+			column.setCellRenderer(new TableColorButtonColumnRenderer(true));
+			column.setCellEditor(new TableColorButtonColumnEditor((DefaultTableModel) tableModel, table));	
+		}
+		
+		if (model.equals("GCPModel")) {
+			tableModel = new GCPModel(columnNames);
+			table = new JTable(tableModel);
+			TableColumn column = null;
+
+			column = table.getColumnModel().getColumn(0);
+			column.setCellRenderer(new CheckBoxColumnRenderer(actionListener));
+			column.setCellEditor(new CheckBoxColumnEditor());
+		}
+		
+		return table;
+	}
+
+	/**
+	 * Obtiene el modelo de la tabla
+	 * @return DefaultTableModel
+	 */
+	public DefaultTableModel getTableModel() {
+		return tableModel;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ModelLoader.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorButtonColumnRenderer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorButtonColumnRenderer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorButtonColumnRenderer.java	(revision 38348)
@@ -0,0 +1,68 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Color;
+import java.awt.Component;
+
+import javax.swing.BorderFactory;
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.border.Border;
+import javax.swing.table.TableCellRenderer;
+/**
+ * Componente tabla
+ *
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class TableColorButtonColumnRenderer extends JLabel implements TableCellRenderer {
+	private static final long serialVersionUID = 4792441413562824229L;
+	Border unselectedBorder = null;
+	Border selectedBorder = null;
+	boolean isBordered = true;
+
+	public TableColorButtonColumnRenderer(boolean isBordered) {
+		this.isBordered = isBordered;
+		setOpaque(true);
+	}
+
+	public Component getTableCellRendererComponent(JTable table, Object color, boolean isSelected, boolean hasFocus, int row, int column) {
+		if (!(color instanceof Color))
+			return this;
+
+		Color newColor = (Color) color;
+		setBackground(newColor);
+		if (isBordered) {
+			if (isSelected) {
+				if (selectedBorder == null) {
+					selectedBorder = BorderFactory.createMatteBorder(2, 5, 2, 5, table.getSelectionBackground());
+				}
+				setBorder(selectedBorder);
+			} else {
+				if (unselectedBorder == null) {
+					unselectedBorder = BorderFactory.createMatteBorder(2, 5, 2, 5, table.getBackground());
+				}
+				setBorder(unselectedBorder);
+			}
+		}
+
+		setToolTipText("RGB value: " + newColor.getRed() + ", " + newColor.getGreen() + ", " + newColor.getBlue());
+		return this;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableColorButtonColumnRenderer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableSelectorButtonColumnRenderer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableSelectorButtonColumnRenderer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableSelectorButtonColumnRenderer.java	(revision 38348)
@@ -0,0 +1,51 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Component;
+
+import javax.swing.JLabel;
+import javax.swing.JTable;
+import javax.swing.table.TableCellRenderer;
+
+/**
+ * Componente tabla
+ * 
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ *
+ */
+public class TableSelectorButtonColumnRenderer extends JLabel implements TableCellRenderer {
+	private static final long serialVersionUID = 2387857417420654102L;
+
+		public TableSelectorButtonColumnRenderer() {
+        setOpaque(true);
+    }
+
+    public Component getTableCellRendererComponent(
+                            JTable table, Object value,
+                            boolean isSelected, boolean hasFocus,
+                            int row, int column) {
+    	if(!(value instanceof String))
+    		return this;
+    	
+        setText((String)value);
+     
+        return this;
+    }
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TableSelectorButtonColumnRenderer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/GCPModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/GCPModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/GCPModel.java	(revision 38348)
@@ -0,0 +1,59 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import javax.swing.table.DefaultTableModel;
+/**
+ * Modelo correspondiente a una tabla de puntos de control
+ * 
+ * @author Nacho Brodin (nachobrodin@gmail.com)
+ */
+public class GCPModel extends DefaultTableModel implements IModel {
+	final private static long serialVersionUID = -3370601314380922368L;
+	private int               nColumns         = 0;
+
+	public GCPModel(String[] columnNames) {
+		super(new Object[0][columnNames.length], columnNames);
+		this.nColumns = columnNames.length;
+	}
+
+	public Class getColumnClass(int c) {
+		return String.class;
+	}
+
+	public void setValueAt(Object value, int row, int col) {
+		super.setValueAt(value, row, col);
+	}
+
+	public void addNew() {
+		Object[] line = new Object[nColumns];
+		line[0] = new Boolean(true);
+		for (int i = 0; i < nColumns; i++)
+			line[i] = new String("");
+		super.addRow(line);
+	}
+
+	public Object[] getNewLine() {
+		Object[] o = new Object[nColumns];
+		o[0] = new Boolean(true);
+		for (int i = 1; i < nColumns; i++)
+			o[i] = "";
+		return o;
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxColumnRenderer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxColumnRenderer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxColumnRenderer.java	(revision 38348)
@@ -0,0 +1,66 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JCheckBox;
+import javax.swing.JTable;
+import javax.swing.SwingConstants;
+import javax.swing.table.TableCellRenderer;
+
+/**
+ * Componente tabla
+ * 
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ *
+ */
+public class CheckBoxColumnRenderer extends JCheckBox implements TableCellRenderer {
+    final private static long            serialVersionUID = -3370601314380922368L;
+    private ActionListener               listener = null;
+
+    public CheckBoxColumnRenderer() {}
+    
+    public CheckBoxColumnRenderer(ActionListener listener) {
+    	this.listener = listener;
+    }
+    
+    public Component getTableCellRendererComponent(JTable table,
+                                                   Object value,
+                                                   boolean isSelected,
+                                                   boolean hasFocus,
+                                                   int row, int column) {
+        if (value == null) {
+            this.setSelected(false);
+        }
+        if(isSelected)
+        	if(listener != null) 
+        		listener.actionPerformed(new ActionEvent(this, row, "SELECT_ROW"));
+        	
+        if(value instanceof Boolean){
+	        Boolean ValueAsBoolean = (Boolean) value;
+	        this.setSelected(ValueAsBoolean.booleanValue());
+	        this.setHorizontalAlignment(SwingConstants.CENTER);
+        }
+        	
+        return this;
+    }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/CheckBoxColumnRenderer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonModel.java	(revision 38348)
@@ -0,0 +1,60 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import javax.swing.table.DefaultTableModel;
+/**
+ * Componente tabla
+ * 
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class TreeRadioButtonModel extends DefaultTableModel implements IModel {
+	final private static long serialVersionUID = -3370601314380922368L;
+
+	public TreeRadioButtonModel(String[] columnNames) {
+		super(new Object[0][4], columnNames);
+	}
+
+	public Class getColumnClass(int c) {
+		if (c < 3) {
+			return Boolean.class;
+		}
+
+		return String.class;
+	}
+
+	public void setValueAt(Object value, int row, int col) {
+		if ((col < 3) && ((Boolean) value).booleanValue()) {
+			for (int i = 0; i < getRowCount(); i++) {
+				if (i != row) {
+					setValueAt(new Boolean(false), i, col);
+				}
+			}
+		}
+		super.setValueAt(value, row, col);
+	}
+
+	public void addNew() {
+		super.addRow(new Object[] { new Boolean(false), new Boolean(false), new Boolean(false), "" });
+	}
+
+	public Object[] getNewLine() {
+		return new Object[] { new Boolean(false), new Boolean(false), new Boolean(false), "" };
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonModel.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ListModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ListModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ListModel.java	(revision 38348)
@@ -0,0 +1,57 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import javax.swing.table.DefaultTableModel;
+/**
+ * Componente tabla
+ * 
+ * @author Nacho Brodin (nachobrodin@gmail.com)
+ */
+public class ListModel extends DefaultTableModel implements IModel {
+	final private static long serialVersionUID = -3370601314380922368L;
+	private int               nColumns         = 0;
+
+	public ListModel(String[] columnNames) {
+		super(new Object[0][columnNames.length], columnNames);
+		this.nColumns = columnNames.length;
+	}
+
+	public Class getColumnClass(int c) {
+		return String.class;
+	}
+
+	public void setValueAt(Object value, int row, int col) {
+		super.setValueAt(value, row, col);
+	}
+
+	public void addNew() {
+		Object[] line = new Object[nColumns];
+		for (int i = 0; i < nColumns; i++)
+			line[i] = new String("");
+		super.addRow(line);
+	}
+
+	public Object[] getNewLine() {
+		Object[] o = new Object[nColumns];
+		for (int i = 0; i < nColumns; i++)
+			o[i] = "";
+		return o;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/ListModel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonColumnEditor.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonColumnEditor.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonColumnEditor.java	(revision 38348)
@@ -0,0 +1,77 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table.models;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.JRadioButton;
+import javax.swing.JTable;
+import javax.swing.SwingUtilities;
+import javax.swing.table.TableCellEditor;
+
+/**
+ * Componente tabla
+ * 
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ *
+ */
+public class TreeRadioButtonColumnEditor extends AbstractCellEditor
+implements TableCellEditor {
+    final private static long   serialVersionUID = -3370601314380922368L;
+    public JRadioButton         theRadioButton;
+	private ActionListener      listener = null;
+    
+    public TreeRadioButtonColumnEditor() {
+        super();
+        theRadioButton = new JRadioButton();
+        theRadioButton.addActionListener(new ActionListener() {
+                public void actionPerformed(ActionEvent event) {
+                    fireEditingStopped() ;
+                    if(listener != null)
+                    	listener.actionPerformed(event);
+                }
+            });
+    }
+    
+    /**
+     * Asigna un listener externo
+     * @param listener
+     */
+    public void setActionListener(ActionListener listener) {
+    	this.     listener = listener;
+    }
+
+    public Component getTableCellEditorComponent(JTable table, Object obj,
+                                                 boolean isSelected,
+                                                 int row, int col) {
+        theRadioButton.setHorizontalAlignment(SwingUtilities.CENTER);
+
+        Boolean lValueAsBoolean = (Boolean) obj;
+        theRadioButton.setSelected(lValueAsBoolean.booleanValue());
+
+        return theRadioButton;
+    }
+
+    public Object getCellEditorValue() {
+        return new Boolean(theRadioButton.isSelected());
+    }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/models/TreeRadioButtonColumnEditor.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/last.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/last.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/newpoint.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/newpoint.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/delone.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/delone.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/first.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/first.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/up-16x16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/up-16x16.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/down-16x16.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/down-16x16.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/prev.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/prev.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/delall.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/delall.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/next.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/images/next.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/Table.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/Table.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/Table.java	(revision 38348)
@@ -0,0 +1,190 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table;
+
+import java.awt.BorderLayout;
+import java.util.ArrayList;
+
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumn;
+
+import org.gvsig.gui.beans.table.models.ModelLoader;
+/**
+ * Componente tabla
+ *
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class Table extends JPanel {
+	private static final long serialVersionUID = -4375500244443538451L;
+	private JTable            jTable           = null;
+	private JScrollPane       scrollPanel      = null;
+	private DefaultTableModel tableModel       = null;
+	private String[]          columnNames      = null;
+	private int[]             columnWidths     = null;
+	private TableContainer    tableContainer   = null;
+	public String             tableModelClass  = null;
+	private ArrayList         listeners        = null;
+
+	/**
+	 *
+	 * @param width Ancho de la tabla en pixeles
+	 * @param height Alto de la tabla en pixeles
+	 * @param columnNames Vector de nombres de columna
+	 * @param columnsWidth	Vector de anchos para cada columna. Ha de tener el mismo n�mero de elementos que columnNames.
+	 * Si vale null las columnas se pondr�n equidistantes.
+	 */
+	public Table(String[] columnNames, int[] columnWidths, String tableModelClass){
+		this.columnNames = columnNames;
+		this.columnWidths = columnWidths;
+		this.tableModelClass = tableModelClass;
+		initialize();
+	}
+	
+	/**
+	 *
+	 * @param width Ancho de la tabla en pixeles
+	 * @param height Alto de la tabla en pixeles
+	 * @param columnNames Vector de nombres de columna
+	 * @param columnsWidth	Vector de anchos para cada columna. Ha de tener el mismo n�mero de elementos que columnNames.
+	 * @para listener Liste de eventos para recoger en las tablas. Cada modelo tiene la posibilida de recoger unos listener
+	 * u otros. El usuario le pasar� el listener y el modelo se encargar� de gestionarlos si puede hacerlo. Si no puede no
+	 * har� nada con ellos.
+	 * Si vale null las columnas se pondr�n equidistantes.
+	 */
+	public Table(String[] columnNames, int[] columnWidths, String tableModelClass, ArrayList listeners){
+		this.columnNames = columnNames;
+		this.columnWidths = columnWidths;
+		this.tableModelClass = tableModelClass;
+		this.listeners = listeners;
+		initialize();
+	}
+
+
+		/**
+	 * This method initializes this
+	 */
+	private void initialize() {
+		this.setLayout(new BorderLayout(5, 5));
+		this.add(getJScrollPane(), BorderLayout.CENTER);
+	}
+
+	/**
+	 * Obtiene la Tabla
+	 * @return Tabla de bandas de la imagen
+	 */
+	public JTable getJTable() {
+			if (jTable == null) {
+			// tableModel = new ListModel(columnNames);
+			ModelLoader loader = new ModelLoader();
+			jTable = loader.load(tableModelClass, columnNames, listeners);
+			tableModel = loader.getTableModel();
+
+			TableColumn column = null;
+
+			int widthPerColumn = (int) (this.getWidth() / columnNames.length);
+			for (int i = 0; i < columnNames.length; i++) {
+				column = jTable.getColumnModel().getColumn(i);
+				column.setResizable(true);
+				if (columnWidths == null)
+					column.setPreferredWidth(widthPerColumn);
+				else
+					column.setPreferredWidth(columnWidths[i]);
+			}
+		}
+
+		return jTable;
+	}
+
+	/**
+	 * This method initializes jScrollPane
+	 * @return javax.swing.JPanel
+	 */
+	private JScrollPane getJScrollPane() {
+		if (scrollPanel == null) {
+			scrollPanel = new JScrollPane(getJTable());
+		}
+		return scrollPanel;
+	}
+
+	/**
+	 * Obtiene el contenedor padre de la tabla
+	 * @return
+	 */
+	public TableContainer getTableContainer() {
+		return tableContainer;
+	}
+
+	/**
+	 * Asigna el contenedor padre de la tabla
+	 * @param tableContainer
+	 */
+	public void setTableContainer(TableContainer tableContainer) {
+		this.tableContainer = tableContainer;
+	}
+
+	/**
+	 * Obtiene el modelo de la tabla
+	 * @return
+	 */
+	public DefaultTableModel getTableModel() {
+		return tableModel;
+	}
+
+	//********************M�todos de Tabla*****************************//
+
+	/**
+	 * A�ade una fila a la tabla.
+	 * @param list Lista de cadenas
+	 */
+	public void addRow(Object[] list){
+		((DefaultTableModel)this.getJTable().getModel()).addRow(list);
+	}
+
+	/**
+	 * Elimina una fila de la tabla.
+	 * @param i Fila a eliminar
+	 */
+	public void delRow(int i){
+		((DefaultTableModel)this.getJTable().getModel()).removeRow(i);
+	}
+	
+	/**
+	 * Intercambia una fila de la tabla por otra.
+	 * @param i
+	 * @param j
+	 */
+	public void swapRow(int i, int j) {
+		DefaultTableModel model = (DefaultTableModel) this.getJTable().getModel();
+		if ((i < 0) || (j < 0))
+			return;
+		if ((i >= model.getRowCount()) || (j >= model.getRowCount()))
+			return;
+		model.moveRow(i, i, j);
+	}
+
+	/**
+	 * Elimina todas las filas de la tabla.
+	 */
+	public void removeAllRows(){
+		((DefaultTableModel)this.getJTable().getModel()).setNumRows(0);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/Table.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/listeners/TableListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/listeners/TableListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/listeners/TableListener.java	(revision 38348)
@@ -0,0 +1,156 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.table.listeners;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+import org.gvsig.gui.beans.table.MoveRowsPanel;
+import org.gvsig.gui.beans.table.Table;
+import org.gvsig.gui.beans.table.TableContainer;
+import org.gvsig.gui.beans.table.TableControlerPanel;
+import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
+import org.gvsig.gui.beans.table.models.IModel;
+/**
+ * Listener para la tabla
+ * @author Nacho Brodin <brodin_ign@gva.es>
+ */
+public class TableListener implements ActionListener, ListSelectionListener {
+	public static boolean       comboEventEnable      = true;
+	private TableContainer      tableContainer        = null;
+	private TableControlerPanel controlPanel          = null;
+	private MoveRowsPanel       moveRowsPanel         = null;
+	private Table               table                 = null;
+	public boolean              enableNewLineListener = true;
+
+	/**
+	 * Constructor
+	 * @param tableContainer
+	 */
+	public TableListener(TableContainer tableContainer){
+		this.tableContainer = tableContainer;
+	}
+
+	private void initialize(){
+		controlPanel = tableContainer.getPTableControl();
+		moveRowsPanel = tableContainer.getMoveRowsPanel();
+		table = tableContainer.getTable();
+	}
+
+	/**
+	 * Captura y gestiona los eventos del control de la tabla para a�adir filas,
+	 * eliminar filas y moverse por la tabla.
+	 */
+	public void actionPerformed(ActionEvent e) {
+		if (controlPanel == null || table == null)
+			initialize();
+
+		try {
+			/**
+			 * Nueva entrada
+			 */
+			if (enableNewLineListener && e.getSource() == controlPanel.getBNew()) {
+				if (table.getTableModel() instanceof IModel)
+					tableContainer.addRow(((IModel) table.getTableModel()).getNewLine());
+			}
+
+			/**
+			 * Eliminar todas las filas
+			 */
+			if (enableNewLineListener && e.getSource() == controlPanel.getBClear()) {
+				tableContainer.removeAllRows();
+			}
+
+			/**
+			 * Elimina una entrada concreta de la tabla
+			 */
+			if (enableNewLineListener && e.getSource() == controlPanel.getBDelPoint()) {
+				int[] lista = tableContainer.getSelectedRows();
+				for (int i = lista.length - 1; i>=0; i--)
+					tableContainer.delRow(lista[i]);
+			}
+
+			/**
+			 * Subir un elemento
+			 */
+			if (e.getSource() == moveRowsPanel.getBUp()) {
+				int[] lista = tableContainer.getSelectedRows();
+				if (lista.length > 0) {
+  				for (int i = 0; i < lista.length; i++)
+  					tableContainer.swapRow(lista[i] - 1, lista[i]);
+  				if (lista[0] > 0)
+  					tableContainer.setSelectedIndex(lista[0] - 1);
+				}
+			}
+
+			/**
+			 * Bajar un elemento
+			 */
+			if (e.getSource() == moveRowsPanel.getBDown()) {
+				int[] lista = tableContainer.getSelectedRows();
+				if (lista.length > 0) {
+  				for (int i = lista.length - 1; i >= 0; i--)
+  					tableContainer.swapRow(lista[i], lista[i] + 1);
+  				tableContainer.setSelectedIndex(lista[0] + 1);
+				}
+			}
+
+			if (e.getSource() == controlPanel.getBFirst()) {
+				tableContainer.setSelectedIndex(0);
+			}
+
+			if (e.getSource() == controlPanel.getBLast()) {
+				tableContainer.setSelectedIndex(tableContainer.getRowCount() - 1);
+			}
+
+			if (e.getSource() == controlPanel.getBNext()) {
+				if (tableContainer.getSelectedRow() < tableContainer.getRowCount())
+					tableContainer.setSelectedIndex(tableContainer.getSelectedRow() + 1);
+			}
+
+			if (e.getSource() == controlPanel.getBPrev()) {
+				if (tableContainer.getSelectedRow() > 0)
+					tableContainer.setSelectedIndex(tableContainer.getSelectedRow() - 1);
+			}
+
+			if (e.getSource() == controlPanel.getCPoint()) {
+				if (comboEventEnable)
+					tableContainer.setSelectedIndex(controlPanel.getCPoint().getSelectedIndex());
+			}
+
+		} catch (NotInitializeException ex) {
+
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent)
+	 */
+	public void valueChanged(ListSelectionEvent e) {
+		try {
+	    tableContainer.setSelectedIndex(tableContainer.getSelectedRow());
+    } catch (NotInitializeException e1) {
+	    e1.printStackTrace();
+    }
+  }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/listeners/TableListener.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:executable
   + *
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/TableContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/TableContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/TableContainer.java	(revision 38348)
@@ -0,0 +1,345 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.FlowLayout;
+import java.util.ArrayList;
+
+import javax.swing.JPanel;
+import javax.swing.table.DefaultTableModel;
+
+import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
+import org.gvsig.gui.beans.table.listeners.TableListener;
+
+/**
+ * Contenedor para los componentes de la tabla. Incluye la tabla y el panel de
+ * control.
+ * @author Nacho Brodin (brodin_ign@gva.es)
+ */
+public class TableContainer extends JPanel {
+	private static final long   serialVersionUID = 384372026944926838L;
+
+	private Table               table           = null;
+	private TableControlerPanel pTableControl   = null;
+	private MoveRowsPanel       moveRowsPanel   = null;
+	private String[]            columnNames     = null;
+	private int[]               columnWidths    = null;
+	private TableListener       tableListener   = null;
+	// Variable que indica si la tabla ha sido inicializada
+	private boolean             initTable       = false;
+	private String              tableModelClass = "ListModel";
+	private ArrayList           listeners       = null;
+
+	/**
+	 * @param width Ancho de la tabla en pixeles
+	 * @param height Alto de la tabla en pixeles
+	 * @param columnNames Vector de nombres de columna
+	 * @param columnsWidth Vector de anchos para cada columna. Ha de tener el
+	 *          mismo n�mero de elementos que columnNames. Si vale null las
+	 *          columnas se pondr�n equidistantes.
+	 */
+	public TableContainer(String[] columnNames, int[] columnWidths) {
+		this.columnNames = columnNames;
+		this.columnWidths = columnWidths;
+	}
+	
+	/**
+	 * @param width Ancho de la tabla en pixeles
+	 * @param height Alto de la tabla en pixeles
+	 * @param columnNames Vector de nombres de columna
+	 * @param columnsWidth Vector de anchos para cada columna. Ha de tener el
+	 *          mismo n�mero de elementos que columnNames. Si vale null las
+	 *          columnas se pondr�n equidistantes.
+	 * @para listener Liste de eventos para recoger en las tablas. Cada modelo tiene la posibilida de recoger unos listener
+	 * u otros. El usuario le pasar� el listener y el modelo se encargar� de gestionarlos si puede hacerlo. Si no puede no
+	 * har� nada con ellos.
+	 */
+	public TableContainer(String[] columnNames, int[] columnWidths, ArrayList listeners) {
+		this.columnNames = columnNames;
+		this.columnWidths = columnWidths;
+		this.listeners = listeners;
+	}
+
+	/**
+	 * This method initializes this
+	 */
+	public void initialize() {
+		initTable = true;
+		tableListener = new TableListener(this);
+		getTable().getJTable().getSelectionModel().addListSelectionListener(tableListener);
+
+		this.setLayout(new BorderLayout(5, 5));
+		this.setBorder(javax.swing.BorderFactory.createEmptyBorder(8, 8, 8, 8));
+		this.add(getTable(), BorderLayout.CENTER);
+
+		JPanel panel = new JPanel();
+
+		panel.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
+		panel.add(getPTableControl());
+		panel.add(getMoveRowsPanel());
+		this.add(panel, BorderLayout.SOUTH);
+	}
+
+	/**
+	 * This method initializes jPanel
+	 * @return javax.swing.JPanel
+	 */
+	public Table getTable() {
+		if (table == null) {
+			table = new Table(columnNames, columnWidths, tableModelClass, listeners);
+			table.setTableContainer(this);
+		}
+		return table;
+	}
+
+	/**
+	 * This method initializes jPanel
+	 * @return javax.swing.JPanel
+	 */
+	public TableControlerPanel getPTableControl() {
+		if (pTableControl == null) {
+			pTableControl = new TableControlerPanel(tableListener);
+		}
+		return pTableControl;
+	}
+
+	/**
+	 * This method initializes jPanel
+	 * @return javax.swing.JPanel
+	 */
+	public MoveRowsPanel getMoveRowsPanel() {
+		if (moveRowsPanel == null) {
+			moveRowsPanel = new MoveRowsPanel(tableListener);
+			moveRowsPanel.setVisible(false);
+		}
+		return moveRowsPanel;
+	}
+
+	// ********************M�todos de Tabla*****************************//
+
+	/**
+	 * A�ade una fila a la tabla.
+	 * @param list Lista de cadenas
+	 */
+	public void addRow(Object[] list) throws NotInitializeException {
+		if (!initTable)
+			throw new NotInitializeException();
+
+		TableListener.comboEventEnable = false;
+		getTable().addRow(list);
+		getPTableControl().addPointToTable((getTable()).getJTable().getRowCount());
+		setSelectedIndex(getRowCount() - 1);
+		TableListener.comboEventEnable = true;
+	}
+
+	/**
+	 * Elimina una fila de la tabla.
+	 * @param i Fila a eliminar
+	 */
+	public void delRow(int i) throws NotInitializeException {
+		if (!initTable)
+			throw new NotInitializeException();
+
+		TableListener.comboEventEnable = false;
+		try {
+			setSelectedIndex(getSelectedRow() - 1);
+		} catch (ArrayIndexOutOfBoundsException ex) {
+			try {
+				setSelectedIndex(getSelectedRow() + 1);
+			} catch (ArrayIndexOutOfBoundsException exc) {
+			}
+		}
+		getTable().delRow(i);
+		getPTableControl().setNItems(getRowCount());
+		TableListener.comboEventEnable = true;
+	}
+
+	/**
+	 * Intercambia una fila de la tabla por otra.
+	 * @param i Fila a eliminar
+	 */
+	public void swapRow(int i, int j) throws NotInitializeException {
+		if (!initTable)
+			throw new NotInitializeException();
+
+		TableListener.comboEventEnable = false;
+		getTable().swapRow(i, j);
+		TableListener.comboEventEnable = true;
+	}
+
+	/**
+	 * Elimina todas las filas de la tabla.
+	 */
+	public void removeAllRows() throws NotInitializeException {
+		if (!initTable)
+			throw new NotInitializeException();
+
+		TableListener.comboEventEnable = false;
+		getTable().removeAllRows();
+		getPTableControl().setNItems(0);
+		TableListener.comboEventEnable = true;
+	}
+
+	/**
+	 * Obtiene el n�mero de filas en la tabla
+	 * @return N�mero de filas de la tabla
+	 */
+	public int getRowCount() throws NotInitializeException {
+		if (!initTable)
+			throw new NotInitializeException();
+
+		return getTable().getJTable().getRowCount();
+	}
+
+	/**
+	 * Selecciona un punto de la lista
+	 * @param i punto a seleccionar
+	 */
+	public void setSelectedIndex(int i) throws NotInitializeException {
+		if (!initTable)
+			throw new NotInitializeException();
+
+		TableListener.comboEventEnable = false;
+		try {
+			getPTableControl().setSelectedIndex(i);
+			getMoveRowsPanel().setSelectedIndex(i, getRowCount());
+			getTable().getJTable().setRowSelectionInterval(i, i);
+		} catch (IllegalArgumentException ex) {
+
+		}
+		TableListener.comboEventEnable = true;
+	}
+
+	/**
+	 * Obtiene el punto seleccionado de la lista
+	 * @return Posici�n del punto seleccionado de la tabla
+	 */
+	public int getSelectedRow() throws NotInitializeException {
+		if (!initTable)
+			throw new NotInitializeException();
+
+		return getTable().getJTable().getSelectedRow();
+	}
+
+	/**
+	 * Obtiene los puntos seleccionados de la lista
+	 * @return Posici�n del punto seleccionado de la tabla
+	 */
+	public int[] getSelectedRows() throws NotInitializeException {
+		if (!initTable)
+			throw new NotInitializeException();
+
+		return getTable().getJTable().getSelectedRows();
+	}
+
+	/**
+	 * Asigna un valor a una posici�n de la tabla
+	 * @param value Valor
+	 * @param row Fila
+	 * @param col Columna
+	 */
+	public void setValueAt(Object value, int row, int col) throws NotInitializeException {
+		if (!initTable)
+			throw new NotInitializeException();
+
+		getTable().getJTable().setValueAt(value, row, col);
+	}
+
+	/**
+	 * Dice si una tabla es editable o no. Este flag hay que asignarlo antes de la
+	 * inicializaci�n de tabla.
+	 * @param editable
+	 */
+	public void setEditable(boolean editable) throws NotInitializeException {
+		if (!initTable)
+			throw new NotInitializeException();
+
+		if (!editable)
+			getTable().getJTable().setBackground(this.getBackground());
+		else
+			getTable().getJTable().setBackground(Color.white);
+
+		getTable().getJTable().setEnabled(editable);
+	}
+
+	/**
+	 * Asigna el modelo de la tabla
+	 * @param model cadena con el nombre del modelo
+	 */
+	public void setModel(String model) {
+		tableModelClass = model;
+	}
+
+	/**
+	 * Obtiene el model de la tabla
+	 * @return
+	 */
+	public DefaultTableModel getModel() {
+		return (DefaultTableModel) getTable().getJTable().getModel();
+	}
+
+	/**
+	 * Asigna al panel de control de tabla la propiedad de visible/invisible a
+	 * true o false
+	 * @param visible
+	 */
+	public void setControlVisible(boolean visible) {
+		getPTableControl().setVisible(visible);
+	}
+	
+	/**
+	 * Asigna al panel de control de tabla la propiedad de visible/invisible a
+	 * true o false
+	 * @param visible
+	 */
+	public void setMoveRowsButtonsVisible(boolean visible) {
+		getMoveRowsPanel().setVisible(visible);
+	}
+
+	/**
+	 * Obtiene el control de tabla
+	 * @return TableControlerPanel
+	 */
+	public TableControlerPanel getControl() {
+		return getPTableControl();
+	}
+
+	/**
+	 * Desactiva o activa el evento de nueva linea. Si se desactiva tendr� que ser
+	 * gestionado por el cliente
+	 * @param enabled true para activar y false para desactivar
+	 */
+	public void setEnableControlsListener(boolean enabled) {
+		tableListener.enableNewLineListener = enabled;
+	}
+
+	/**
+	 * Activar o desactivar los componentes del panel
+	 */
+	public void setEnabled(boolean enabled) {
+		getTable().getJTable().setEnabled(enabled);
+
+		if (!enabled)
+			getPTableControl().disableAllControls();
+		else
+			getPTableControl().restoreControlsValue();
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/table/TableContainer.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/CancellableComponent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/CancellableComponent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/CancellableComponent.java	(revision 38348)
@@ -0,0 +1,65 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id$
+* $Log$
+* Revision 1.1  2007-08-20 08:34:45  evercher
+* He fusionado LibUI con LibUIComponents
+*
+* Revision 1.1  2006/05/17 17:20:11  jaume
+* *** empty log message ***
+*
+*
+*/
+package org.gvsig.gui.beans;
+/**
+ * Interface implemented by those components that can cancel an action at anytime.
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ *
+ */
+public interface CancellableComponent {
+	/**
+	 * Invoked to cancel the current executing action.
+	 */
+	public abstract void cancel();
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/CancellableComponent.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/datainput/DataInputContainerListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/datainput/DataInputContainerListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/datainput/DataInputContainerListener.java	(revision 38348)
@@ -0,0 +1,34 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.datainput;
+
+import java.util.EventListener;
+import java.util.EventObject;
+/**
+ * 
+ * @version 06/09/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface DataInputContainerListener extends EventListener {
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente.
+	 * @param e
+	 */
+	public void actionValueChanged(EventObject e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/datainput/DataInputContainerListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/datainput/DataInputContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/datainput/DataInputContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/datainput/DataInputContainer.java	(revision 38348)
@@ -0,0 +1,157 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.datainput;
+
+import java.awt.ComponentOrientation;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.KeyListener;
+
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+/**
+ * Campo de texto que controla el contenido de datos del componente y solo
+ * dispara un evento cuando realmente ha cambiado su valor. Contiene un
+ * label para ponerle un nombre.<p>
+ * 
+ * <b>RECOMENDABLE:</b> Usar JFormattedTextFields<p>
+ * 
+ * Ejemplo de Sun:<br>
+ * &nbsp;&nbsp;<a href="http://java.sun.com/docs/books/tutorial/uiswing/examples/components/FormatterFactoryDemoProject/src/components/FormatterFactoryDemo.java">FormatterFactoryDemo.java</a>
+ * 
+ * @version 06/09/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class DataInputContainer extends JPanel {
+	private static final long serialVersionUID = 7084105134015956663L;
+
+	private JLabel          jLabel         = null;
+	private DataInputField  dataInputField = null;
+
+	/**
+	 * This is the default constructor
+	 */
+	public DataInputContainer() {
+		initialize();
+	}
+
+	/**
+	 * This method initializes this
+	 * @return void
+	 */
+	private void initialize() {
+		setLayout(new GridBagLayout());
+
+		GridBagConstraints gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.insets = new Insets(0, 0, 0, 0);
+		add(getLText(), gridBagConstraints);
+
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.weightx = 1.0;
+		add(getDataInputField(), gridBagConstraints);
+	}
+
+	private JLabel getLText() {
+		if (jLabel == null) {
+			jLabel = new JLabel();
+			jLabel.setText("JLabel");
+			jLabel.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
+		}
+		return jLabel;
+	}
+
+	/**
+	 * Da nombre al campo de texto del componente.
+	 * @param text
+	 */
+	public void setLabelText(String text){
+		getLText().setText(text + ":");
+	}
+
+	/**
+	 * This method initializes jTextField
+	 *
+	 * @return javax.swing.JTextField
+	 */
+	public DataInputField getDataInputField() {
+		if (dataInputField == null) {
+			dataInputField = new DataInputField();
+		}
+		return dataInputField;
+	}
+
+	/**
+	 * Devuelve el valor del campo de texto.
+	 * @return
+	 */
+	public String getValue() {
+		return getDataInputField().getValue();
+	}
+
+	/**
+	 * Habilita o deshabilita el control
+	 * @param en
+	 */
+	public void setControlEnabled(boolean en){
+		getLText().setEnabled(en);
+		getDataInputField().setControlEnabled(en);
+	}
+
+	/**
+	 * Asigna el valor al campo de texto.
+	 * @return
+	 */
+	public void setValue(String value) {
+		getDataInputField().setValue(value);
+	}
+
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addValueChangedListener(DataInputContainerListener listener) {
+		getDataInputField().addValueChangedListener(listener);
+	}
+	
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addKeyListener(KeyListener listener) {
+		getDataInputField().addKeyListener(listener);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeValueChangedListener(DataInputContainerListener listener) {
+		getDataInputField().removeValueChangedListener(listener);
+	}
+	
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeKeyListener(KeyListener listener) {
+		getDataInputField().removeKeyListener(listener);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/datainput/DataInputContainer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/datainput/DataInputField.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/datainput/DataInputField.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/datainput/DataInputField.java	(revision 38348)
@@ -0,0 +1,178 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.datainput;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Container;
+import java.awt.event.KeyListener;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.text.NumberFormat;
+import java.util.ArrayList;
+import java.util.EventObject;
+import java.util.Iterator;
+
+import javax.swing.JFormattedTextField;
+import javax.swing.text.DefaultFormatterFactory;
+import javax.swing.text.NumberFormatter;
+/**
+ * Campo de texto que controla el contenido de datos del componente y solo
+ * dispara un evento cuando realmente ha cambiado su valor.<p>
+ * 
+ * <b>RECOMENDABLE:</b> Usar JFormattedTextFields<p>
+ * 
+ * Ejemplo de Sun:<br>
+ * &nbsp;&nbsp;<a href="http://java.sun.com/docs/books/tutorial/uiswing/examples/components/FormatterFactoryDemoProject/src/components/FormatterFactoryDemo.java">FormatterFactoryDemo.java</a>
+ * 
+ * @version 06/09/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class DataInputField extends Container implements PropertyChangeListener {
+  private static final long serialVersionUID = 8633824284253287604L;
+
+	private JFormattedTextField textField              = null;
+	private ArrayList           actionChangedListeners = new ArrayList();
+
+	private NumberFormat        doubleDisplayFormat;
+	private NumberFormat        doubleEditFormat;
+	private boolean eventsEnabled = true;
+
+
+	/**
+  * This is the default constructor
+  */
+	public DataInputField() {
+		setUpFormats();
+		initialize();
+	}
+
+  /**
+	 * Create and set up number formats. These objects also parse numbers input by
+	 * user.
+	 */
+  private void setUpFormats() {
+      doubleDisplayFormat = NumberFormat.getNumberInstance();
+      doubleDisplayFormat.setMinimumFractionDigits(0);
+      doubleEditFormat = NumberFormat.getNumberInstance();
+  }
+
+	/**
+	 * This method initializes this
+	 * @return void
+	 */
+	private void initialize() {
+		setLayout(new BorderLayout());
+
+		add(getJFormattedTextField(), BorderLayout.CENTER);
+	}
+	
+	/**
+	 * This method initializes jTextField
+	 *
+	 * @return javax.swing.JTextField
+	 */
+	private JFormattedTextField getJFormattedTextField() {
+		if (textField == null) {
+			textField = new JFormattedTextField(new DefaultFormatterFactory(
+          new NumberFormatter(doubleDisplayFormat),
+          new NumberFormatter(doubleDisplayFormat),
+          new NumberFormatter(doubleEditFormat)));
+			textField.setBackground(Color.white);
+			textField.setValue(new Double(0));
+			textField.setColumns(10);
+			textField.addPropertyChangeListener("value", this);
+		}
+		return textField;
+	}
+
+	/**
+	 * Devuelve el valor del campo de texto.
+	 * @return
+	 */
+	public String getValue(){
+		double value = ((Number) getJFormattedTextField().getValue()).doubleValue();
+
+		return Double.toString(value);
+	}
+
+	/**
+	 * Habilita o deshabilita el control
+	 * @param en
+	 */
+	public void setControlEnabled(boolean en){
+		getJFormattedTextField().setEnabled(en);
+		if (en)
+			getJFormattedTextField().setBackground(Color.white);
+		else
+			getJFormattedTextField().setBackground(getBackground());
+	}
+
+	/**
+	 * Asigna el valor al campo de texto.
+	 * @return
+	 */
+	public void setValue(String value) {
+		eventsEnabled = false;
+		getJFormattedTextField().setValue(new Double(value));
+		eventsEnabled = true;
+	}
+
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addValueChangedListener(DataInputContainerListener listener) {
+		if (!actionChangedListeners.contains(listener))
+			actionChangedListeners.add(listener);
+	}
+
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addKeyListener(KeyListener listener) {
+		textField.addKeyListener(listener);
+	}
+	
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeValueChangedListener(DataInputContainerListener listener) {
+		actionChangedListeners.remove(listener);
+	}
+	
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void callValueChangedListeners() {
+		if (eventsEnabled == false)
+			return;
+		Iterator acIterator = actionChangedListeners.iterator();
+		while (acIterator.hasNext()) {
+			DataInputContainerListener listener = (DataInputContainerListener) acIterator.next();
+			listener.actionValueChanged(new EventObject(this));
+		}
+	}
+
+	public void propertyChange(PropertyChangeEvent evt) {
+	  callValueChangedListeners();
+  }
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/DefaultBean.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/DefaultBean.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/DefaultBean.java	(revision 38348)
@@ -0,0 +1,129 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id$
+* $Log$
+* Revision 1.2  2007-08-21 08:38:21  bsanchez
+* - Quitados warnings en imports innecesarios
+*
+* Revision 1.1  2007/08/20 08:34:45  evercher
+* He fusionado LibUI con LibUIComponents
+*
+* Revision 1.4  2006/09/14 08:30:11  cesar
+* Remove static initialization of gvsig-i18n; it's done in the Messages class now
+*
+* Revision 1.3.2.1  2006/09/14 07:55:48  cesar
+* Remove static initialization of gvsig-i18n; it's done in the Messages class now
+*
+* Revision 1.3  2006/08/10 07:33:12  cesar
+* *** empty log message ***
+*
+* Revision 1.2  2006/07/11 12:42:10  cesar
+* Load properties for libUI
+*
+* Revision 1.1  2006/03/22 11:18:29  jaume
+* *** empty log message ***
+*
+* Revision 1.4  2006/02/28 15:25:14  jaume
+* *** empty log message ***
+*
+* Revision 1.2.2.3  2006/01/31 16:25:24  jaume
+* correcciones de bugs
+*
+* Revision 1.3  2006/01/26 16:07:14  jaume
+* *** empty log message ***
+*
+* Revision 1.2.2.1  2006/01/26 12:59:32  jaume
+* 0.5
+*
+* Revision 1.2  2006/01/24 14:36:33  jaume
+* This is the new version
+*
+* Revision 1.1.2.3  2006/01/10 13:11:38  jaume
+* *** empty log message ***
+*
+* Revision 1.1.2.2  2006/01/10 11:33:31  jaume
+* Time dimension working against Jet Propulsion Laboratory's WMS server
+*
+* Revision 1.1.2.1  2005/12/30 08:56:19  jaume
+* *** empty log message ***
+*
+*
+*/
+/**
+ *
+ */
+package org.gvsig.gui.beans;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.listeners.BeanListener;
+/**
+ * A JPanel with addListener(BeanListener l), removeListener(BeanListener l),
+ * and callValueChange(Object value) methods for adding and removing listeners,
+ * and firing BeanValueChange events.
+ *
+ * @author jaume
+ */
+public abstract class DefaultBean extends JPanel {
+	ArrayList<BeanListener> listeners = new ArrayList<BeanListener>();
+
+	public void addListener(BeanListener l) {
+		listeners.add(l);
+	}
+
+	public void removeListener(BeanListener l) {
+		listeners.remove(l);
+	}
+
+	public void callValueChanged(Object value) {
+		Iterator<BeanListener> i = listeners.iterator();
+
+		while (i.hasNext()) {
+			i.next().beanValueChanged(value);
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/DefaultBean.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesListener.java	(revision 38348)
@@ -0,0 +1,33 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.coordinatespanel;
+
+import java.util.EventListener;
+/**
+ * 
+ * @version 06/09/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface CoordinatesListener extends EventListener {
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente.
+	 * @param e
+	 */
+	public void actionValueChanged(CoordinatesEvent e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesListener.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/images/upleft.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/images/upleft.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/images/downright.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/images/downright.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesPanel.java	(revision 38348)
@@ -0,0 +1,333 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.coordinatespanel;
+
+import java.awt.BorderLayout;
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.util.ArrayList;
+import java.util.EventObject;
+import java.util.Iterator;
+
+import javax.swing.BorderFactory;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.border.TitledBorder;
+
+import org.gvsig.gui.beans.datainput.DataInputContainer;
+import org.gvsig.gui.beans.datainput.DataInputContainerListener;
+/**
+ * 
+ * @version 06/09/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class CoordinatesPanel extends JPanel implements DataInputContainerListener {
+	private static final long  serialVersionUID       = 3336324382874763427L;
+	private String             pathToImages           = "images/";
+	private ArrayList          actionChangedListeners = new ArrayList();
+
+	private JPanel             pCoord                 = null;
+	private JLabel             lTitulo1               = null;
+	private JLabel             lTitulo2               = null;
+	private DataInputContainer dataInputContainer11   = null;
+	private DataInputContainer dataInputContainer12   = null;
+	private DataInputContainer dataInputContainer21   = null;
+	private DataInputContainer dataInputContainer22   = null;
+
+	/**
+	 * This is the default constructor
+	 */
+	public CoordinatesPanel() {
+		initialize();
+	}
+
+	/**
+	 * This method initializes this
+	 *
+	 * @return void
+	 */
+	private void initialize() {
+		setLayout(new BorderLayout());
+		add(getPCoord(), BorderLayout.CENTER);
+	}
+
+	/**
+	 * This method initializes jPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	private JPanel getPCoord() {
+		if (pCoord == null) {
+			GridBagConstraints gridBagConstraints;
+			pCoord = new JPanel();
+			pCoord.setLayout(new GridBagLayout());
+
+			int y = 0;
+			gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.gridx = 0;
+			gridBagConstraints.gridy = y;
+			gridBagConstraints.insets = new Insets(5, 5, 2, 2);
+			pCoord.add(getLTitulo1(), gridBagConstraints);
+
+			gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.gridx = 1;
+			gridBagConstraints.gridy = y;
+			gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+			gridBagConstraints.weightx = 1.0;
+			gridBagConstraints.insets = new Insets(5, 2, 2, 2);
+			pCoord.add(getDataInputContainer11(), gridBagConstraints);
+
+			gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.gridx = 2;
+			gridBagConstraints.gridy = y;
+			gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+			gridBagConstraints.weightx = 1.0;
+			gridBagConstraints.insets = new Insets(5, 2, 2, 5);
+			pCoord.add(getDataInputContainer12(), gridBagConstraints);
+
+			y++;
+			gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.gridx = 0;
+			gridBagConstraints.gridy = y;
+			gridBagConstraints.insets = new Insets(2, 5, 5, 2);
+			pCoord.add(getLTitulo2(), gridBagConstraints);
+
+			gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.gridx = 1;
+			gridBagConstraints.gridy = y;
+			gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+			gridBagConstraints.weightx = 1.0;
+			gridBagConstraints.insets = new Insets(2, 2, 5, 2);
+			pCoord.add(getDataInputContainer21(), gridBagConstraints);
+
+
+			gridBagConstraints = new GridBagConstraints();
+			gridBagConstraints.gridx = 2;
+			gridBagConstraints.gridy = y;
+			gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+			gridBagConstraints.weightx = 1.0;
+			gridBagConstraints.insets = new Insets(2, 2, 5, 5);
+			pCoord.add(getDataInputContainer22(), gridBagConstraints);		
+		}
+		return pCoord;
+	}
+
+	private JLabel getLTitulo1(){
+		if (lTitulo1 == null){
+			lTitulo1 = new JLabel(new ImageIcon(getClass().getResource(pathToImages + "upleft.png")));
+		}
+		return lTitulo1;
+	}
+
+	private JLabel getLTitulo2(){
+		if (lTitulo2 == null){
+			lTitulo2 = new JLabel(new ImageIcon(getClass().getResource(pathToImages + "downright.png")));
+		}
+		return lTitulo2;
+	}
+
+	/**
+	 * This method initializes jPanel
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	public DataInputContainer getDataInputContainer11() {
+		if (dataInputContainer11 == null) {
+			dataInputContainer11 = new DataInputContainer();
+			dataInputContainer11.setLabelText("X");
+			dataInputContainer11.addValueChangedListener(this);
+		}
+		return dataInputContainer11;
+	}
+
+	/**
+	 * This method initializes jPanel1
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	public DataInputContainer getDataInputContainer12() {
+		if (dataInputContainer12 == null) {
+			dataInputContainer12 = new DataInputContainer();
+			dataInputContainer12.setLabelText("Y");
+			dataInputContainer12.addValueChangedListener(this);
+		}
+		return dataInputContainer12;
+	}
+
+	/**
+	 * This method initializes jPanel2
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	public DataInputContainer getDataInputContainer21() {
+		if (dataInputContainer21 == null) {
+			dataInputContainer21 = new DataInputContainer();
+			dataInputContainer21.setLabelText("X");
+			dataInputContainer21.addValueChangedListener(this);
+		}
+		return dataInputContainer21;
+	}
+
+	/**
+	 * This method initializes jPanel3
+	 *
+	 * @return javax.swing.JPanel
+	 */
+	public DataInputContainer getDataInputContainer22() {
+		if (dataInputContainer22 == null) {
+			dataInputContainer22 = new DataInputContainer();
+			dataInputContainer22.setLabelText("Y");
+			dataInputContainer22.addValueChangedListener(this);
+		}
+		return dataInputContainer22;
+	}
+
+	/**
+	 * M�todo para poner un titulo al panel.
+	 * 
+	 * @param titlePanel
+	 */
+	public void setTitlePanel(String titlePanel) {
+		getPCoord().setBorder(BorderFactory.createTitledBorder(null, titlePanel, TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, new Font("Dialog", Font.PLAIN, 10), null));
+	}
+
+	/**
+	 * Devuelve los valores del panel por orden de izquierda a derecha
+	 * y de arriba a bajo.
+	 * @return
+	 */
+	public String[] getValues(){
+		String[] values = {
+			getDataInputContainer11().getValue(),
+			getDataInputContainer12().getValue(),
+			getDataInputContainer21().getValue(),
+			getDataInputContainer22().getValue()
+		};
+		return values;
+	}
+
+	/**
+	 * Asigna los valores del panel por orden de izquierda a derecha
+	 * y de arriba a bajo.
+	 * @return
+	 */
+	public void setValues(String[] values){
+		getDataInputContainer11().setValue(values[0]);
+		getDataInputContainer12().setValue(values[1]);
+		getDataInputContainer21().setValue(values[2]);
+		getDataInputContainer22().setValue(values[3]);
+	}
+	
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addValueChangedListener(CoordinatesListener listener) {
+		if (!actionChangedListeners.contains(listener))
+			actionChangedListeners.add(listener);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeValueChangedListener(CoordinatesListener listener) {
+		actionChangedListeners.remove(listener);
+	}
+	
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void callValueChangedListeners(String component) {
+		Iterator acIterator = actionChangedListeners.iterator();
+		while (acIterator.hasNext()) {
+			CoordinatesListener listener = (CoordinatesListener) acIterator.next();
+			listener.actionValueChanged(new CoordinatesEvent(this, component));
+		}
+	}
+
+	public void actionValueChanged(EventObject e) {
+		if (e.getSource() == getDataInputContainer11().getDataInputField()) {
+			callValueChangedListeners("11");
+			return;
+		}
+		if (e.getSource() == getDataInputContainer12().getDataInputField()) {
+			callValueChangedListeners("12");
+			return;
+		}
+		if (e.getSource() == getDataInputContainer21().getDataInputField()) {
+			callValueChangedListeners("21");
+			return;
+		}
+		if (e.getSource() == getDataInputContainer22().getDataInputField()) {
+			callValueChangedListeners("22");
+			return;
+		}
+  }
+	
+	public String getValue11() {
+		return getDataInputContainer11().getValue();
+	}
+	
+	public String getValue12() {
+		return getDataInputContainer12().getValue();
+	}
+	
+	public String getValue21() {
+		return getDataInputContainer21().getValue();
+	}
+	
+	public String getValue22() {
+		return getDataInputContainer22().getValue();
+	}
+	
+	public void setValue11(String value) {
+		getDataInputContainer11().setValue(value);
+	}
+	
+	public void setValue12(String value) {
+		getDataInputContainer12().setValue(value);
+	}
+	
+	public void setValue21(String value) {
+		getDataInputContainer21().setValue(value);
+	}
+	
+	public void setValue22(String value) {
+		getDataInputContainer22().setValue(value);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#setEnabled(boolean)
+	 */
+	public void setEnabled(boolean enabled) {
+	  super.setEnabled(enabled);
+	  getPCoord().setEnabled(enabled);
+	  getLTitulo1().setEnabled(enabled);
+	  getLTitulo2().setEnabled(enabled);
+	  getDataInputContainer11().setControlEnabled(enabled);
+	  getDataInputContainer12().setControlEnabled(enabled);
+	  getDataInputContainer21().setControlEnabled(enabled);
+	  getDataInputContainer22().setControlEnabled(enabled);
+  }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesEvent.java	(revision 38348)
@@ -0,0 +1,39 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.coordinatespanel;
+
+import java.util.EventObject;
+/**
+ *
+ * @version 07/08/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class CoordinatesEvent extends EventObject {
+	private static final long serialVersionUID = -1649548367781607532L;
+	private String name = "";
+
+	public CoordinatesEvent(Object source, String component) {
+		super(source);
+		name = component;
+	}
+	
+	public String getName() {
+		return name;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/coordinatespanel/CoordinatesEvent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IIncrementable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IIncrementable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IIncrementable.java	(revision 38348)
@@ -0,0 +1,71 @@
+package org.gvsig.gui.beans.incrementabletask;
+
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+/**
+ * 
+ *
+ * @version 20/08/2008
+ * 
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface IIncrementable {
+	/**
+	 * Devuelve el titulo de la ventana IncrementableTask
+	 * @return String
+	 */
+	public String getTitle();
+
+	/**
+	 * Devuelve el contenido del log de la ventana IncrementableTask
+	 * @return String
+	 */
+	public String getLog();
+
+	/**
+	 * Devuelve la etiqueta de la ventana IncrementableTask
+	 * @return String
+	 */
+	public String getLabel();
+	
+	/**
+	 * Devuelve el porcentaje de 0 a 100 de la ventana IncrementableTask
+	 * @return int
+	 */
+	public int getPercent();
+
+	/**
+	 * <p>Determines if this process can be canceled.</p>
+	 * 
+	 * @return <code>true</code> if this process can be canceled, otherwise <code>false</code>
+	 */
+	public boolean isCancelable();
+
+	/**
+	 * <p>Determines if this process can be paused.</p>
+	 * 
+	 * @return <code>true</code> if this process can be paused, otherwise <code>false</code>
+	 */
+	public boolean isPausable();
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IIncrementable.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/Cancel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/Cancel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/Cancel.java	(revision 38348)
@@ -0,0 +1,29 @@
+package org.gvsig.gui.beans.incrementabletask;
+
+public class Cancel implements Cancellable {
+	private boolean cancel = false;
+
+	/**
+	 * Crea un nuevo CancelDraw.
+	 */
+	public Cancel() {
+	}
+
+	/**
+	 * Insertar si se debe cancelar el dibujado.
+	 * 
+	 * @param b
+	 *            true si se debe cancelar el dibujado.
+	 */
+	public void setCanceled(boolean b) {
+		cancel = b;
+	}
+
+	/**
+	 * @see com.iver.utiles.swing.threads.Cancellable#isCanceled()
+	 */
+	public boolean isCanceled() {
+		return cancel;
+	}
+
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/Cancellable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/Cancellable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/Cancellable.java	(revision 38348)
@@ -0,0 +1,72 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.incrementabletask;
+
+
+/**
+ * <p><code>Cancellable</code> interface is designed for adding support to notify that a task must be cancelled.</p>
+ * 
+ * <p>This is useful if a process is hung up, blocking, or simply if user wants cancel it, for instance, a
+ *  drawing process of a heavy layer.</p>
+ * 
+ * <p>The classes which implement this interface are force to share the canceling information, in order to be
+ *  notified about the current status of it. This implies a synchronous canceling process, that could be implemented by
+ *  another object.</p>
+ */
+public interface Cancellable {
+	/**
+	 * <p>Determines if the related task must be canceled.</p>
+	 * 
+	 * @return <code>true</code> if task must been canceled; otherwise <code>false</code>
+	 * 
+	 * @see #setCanceled(boolean)
+	 */
+	boolean isCanceled();
+
+	/**
+	 * <p>Sets if the related task must be canceled.</p>
+	 * 
+	 * @param canceled <code>true</code> if the task must be canceled; otherwise <code>false</code>
+	 * 
+	 * @see #isCanceled()
+	 */
+	void setCanceled(boolean canceled);
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableProcess.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableProcess.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableProcess.java	(revision 38348)
@@ -0,0 +1,398 @@
+package org.gvsig.gui.beans.incrementabletask;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+import javax.swing.JButton;
+import javax.swing.JOptionPane;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.progresspanel.LogControl;
+
+/**
+ * Process to be executed by an {@link IncrementableTask IncrementableTask}.
+ * 
+ * @version 20/08/2008
+ * 
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public abstract class IncrementableProcess implements IIncrementable, IncrementableListener, Runnable {
+
+    private static final Logger LOG = LoggerFactory
+        .getLogger(IncrementableProcess.class);
+
+	protected IncrementableTask 	iTask	 		= null;
+	protected LogControl 			log		 		= new LogControl();
+	protected int 					percentage		= 0;
+	protected boolean 				ended			= false;
+	protected volatile boolean		threadSuspended = false;
+	protected volatile Thread 		blinker			= null;
+	protected long 					t0 				= 0;
+	protected static Cancellable 	cancelProcess 	= null;
+	protected boolean 				isCancellable 	= true;
+	protected boolean 				isPausable	 	= false;
+	
+
+	protected String 				title 			= "";
+	protected String 				label 			= "";
+
+	/**
+	 * Creates a new process.
+	 * 
+	 * @param title title for the dialog that displays the evolution of the process
+	 */
+	public IncrementableProcess(String title) {
+		super();
+		this.title = title;
+		this.cancelProcess = new Cancel();
+	}
+
+	/**
+	 * Creates a new process.
+	 * 
+	 * @param title title for the dialog that displays the evolution of the process
+	 * @param label brief of this process, that will be displayed in the dialog
+	 */
+	public IncrementableProcess(String title, String label) {
+		super();
+		this.title = title;
+		this.label = label;
+		this.cancelProcess = new Cancel();
+	}
+
+	/**
+	 * Creates a new process.
+	 * 
+	 * @param title title for the dialog that displays the evolution of the process
+	 * @param label brief of this process, that will be displayed in the dialog
+ 	 * @param cancellable determines if this process can be canceled
+ 	 * @param pausable determines if this process can be paused
+	 */
+	public IncrementableProcess(String title, String label, boolean cancellable, boolean pausable) {
+		super();
+		this.title = title;
+		this.label = label;
+		this.cancelProcess = new Cancel();
+		this.isCancellable = cancellable;
+		this.isPausable = pausable;
+	}
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.gvsig.gui.beans.incrementabletask.IIncrementable#getTitle()
+	 */
+	public String getTitle() {
+		return title;
+	}
+
+	/**
+	 * Adds a new line to the log.
+	 * 
+	 * @param line
+	 *            the line to add
+	 */
+	protected void insertLineLog(String line) {
+		log.addLine(line);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.gvsig.gui.beans.incrementabletask.IIncrementable#getLabel()
+	 */
+	public String getLabel() {
+		return label;
+	}
+
+	/**
+	 * <p>Sets a brief of the current subprocess.</p>
+	 * 
+	 * @param label brief of the current subprocess
+	 */
+	public void setLabel(String label) {
+		this.label = label;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.gvsig.gui.beans.incrementabletask.IIncrementable#getLog()
+	 */
+	public String getLog() {
+		return log.getText();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.gvsig.gui.beans.incrementabletask.IIncrementable#getPercent()
+	 */
+	public int getPercent() {
+		if (percentage > 100)
+			percentage = 100;
+
+		if (percentage == 100)
+			ended = true;
+
+		return percentage;
+	}
+
+	/**
+	 * Creates and starts a new thread to execute this importation process.
+	 * 
+	 * @see Thread#start()
+	 * @see #stop()
+	 */
+	public void start() {
+		blinker = new Thread(this);
+		blinker.start();
+	}
+
+	/**
+	 * @see Thread#stop()
+	 * @see #start()
+	 */
+	public synchronized void stop() {
+		ended = true;
+		blinker = null;
+		notify();
+	}
+
+	/**
+	 * @see Thread#isAlive()
+	 * @see #start()
+	 */
+	public boolean isAlive() {
+		return blinker.isAlive();
+	}
+
+	/**
+	 * Ends the thread that displays the progress dialog with the evolution of
+	 * the loading process.
+	 * 
+	 * @see IncrementableTask#processFinalize()
+	 */
+	protected void processFinalize() {
+		iTask.processFinalize();
+	}
+
+	/**
+	 * Sets the object that will display the evolution of this loading process
+	 * as a progress dialog.
+	 * 
+	 * @param iTask
+	 *            the object that will display the evolution of this loading
+	 *            process
+	 */
+	public void setIncrementableTask(IncrementableTask iTask) {
+		this.iTask = iTask;
+		iTask.setAskCancel(true);
+		iTask.getButtonsPanel().addAccept();
+		iTask.getButtonsPanel().setEnabled(ButtonsPanel.BUTTON_ACCEPT, false);
+
+		JButton jButton = iTask.getButtonsPanel().getButton(
+				ButtonsPanel.BUTTON_ACCEPT);
+		jButton.addMouseListener(new MouseAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * 
+			 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+			 */
+			public void mouseClicked(MouseEvent e) {
+				processFinalize();
+			}
+		});
+	}
+
+	/**
+	 * Determines if this thread has been suspended.
+	 * 
+	 * @return <code>true</code> if this thread has been suspended; otherwise <code>false</code>
+	 */
+	public boolean isSuspended() {
+		return threadSuspended;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.lang.Runnable#run()
+	 */
+	public void run() {
+		String text = null;
+
+		try {
+			process();
+			while (! ended) {
+				t0 += 500;
+                Thread.currentThread().sleep(150);
+			}
+		} catch (Exception ie) {
+			if (! cancelProcess.isCanceled()) {
+                LOG.error("", ie);
+				label = Messages.getText("Process_failed");
+				iTask.getProgressPanel().setLabel(label);
+				text = Messages.getText("Failed_the_process");
+			}
+			else {
+				label = Messages.getText("Process_canceled");
+				iTask.getProgressPanel().setLabel(label);
+				text = Messages.getText("Process_canceled");
+			}
+		}
+		finally {
+			iTask.setAskCancel(false);
+			iTask.getButtonsPanel().setEnabled(ButtonsPanel.BUTTON_ACCEPT, true);
+			iTask.getButtonsPanel().setEnabled(ButtonsPanel.BUTTON_CANCEL, false);
+
+			if (text != null) {
+				log.addLine(Messages.getText("Percent") + ": " + getPercent());
+				log.addLine(text);
+				
+				if (cancelProcess.isCanceled())
+					JOptionPane.showMessageDialog(iTask.getButtonsPanel(), text, Messages.getText("Information"), JOptionPane.INFORMATION_MESSAGE);
+				else
+					JOptionPane.showMessageDialog(iTask.getButtonsPanel(), text, Messages.getText("Error"), JOptionPane.ERROR_MESSAGE);
+			}
+			
+			if (percentage == 100) {
+				label = Messages.getText("Process_finished");
+				iTask.getProgressPanel().setLabel(label);
+//				iTask.getProgressPanel().setPercent(100); // Forces setting the progress bar at 100 %
+			}
+
+			// Ends this process
+			ended = true;
+			
+			// Ends the progress panel
+			iTask.stop();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.gvsig.gui.beans.incrementabletask.IncrementableListener#actionCanceled(org.gvsig.gui.beans.incrementabletask.IncrementableEvent)
+	 */
+	public void actionCanceled(IncrementableEvent e) {
+		if (percentage < 100) {
+			// If was cancelled
+			if (ended == true)
+				processFinalize();
+
+			if (isCancellable)
+				cancelProcess.setCanceled(true);
+			else
+				JOptionPane.showMessageDialog(null, Messages.getText("The_process_cant_be_cancelled"), Messages.getText("Warning"), JOptionPane.WARNING_MESSAGE);
+		}
+		else {
+            LOG.warn(Messages.getText("Process_finished_wont_be_cancelled"));
+
+			processFinalize();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.incrementabletask.IncrementableListener#actionResumed(org.gvsig.gui.beans.incrementabletask.IncrementableEvent)
+	 */
+	public void actionResumed(IncrementableEvent e) {
+//		if (isPausable)
+//			resume();
+		if ((isPausable) && (threadSuspended)) {
+			threadSuspended = false;
+	
+			blinker.resume();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.incrementabletask.IncrementableListener#actionSuspended(org.gvsig.gui.beans.incrementabletask.IncrementableEvent)
+	 */
+	public void actionSuspended(IncrementableEvent e) {
+		try {
+			if (isPausable) {
+				if ( ! threadSuspended) {
+					threadSuspended = true;
+			
+					blinker.suspend();
+				}
+			}
+			
+			
+//			if (isPausable)
+//				suspend();
+			else
+				JOptionPane.showMessageDialog(null, Messages.getText("The_process_cant_be_paused"), Messages.getText("Warning"), JOptionPane.WARNING_MESSAGE);
+		}
+		catch (Exception iex) {
+            LOG.error("", iex);
+			JOptionPane.showMessageDialog(null, Messages.getText("Failed_pausing_the_process"), Messages.getText("Error"), JOptionPane.ERROR_MESSAGE);
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.incrementabletask.IIncrementable#isCancelable()
+	 */
+	public boolean isCancelable() {
+		return isCancellable;
+	}
+
+	/**
+	 * <p>Sets if this process can be canceled.</p>
+	 * 
+	 * @param b <code>true</code> if this process can be canceled, otherwise <code>false</code>
+	 */
+	public void setCancelable(boolean b) {
+		isCancellable = b;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.incrementabletask.IIncrementable#isPausable()
+	 */
+	public boolean isPausable() {
+		return isPausable;
+	}
+
+	/**
+	 * <p>Sets if this process can be paused.</p>
+	 * 
+	 * @param b <code>true</code> if this process can be paused, otherwise <code>false</code>
+	 */
+	public void setPausable(boolean b) {
+		isPausable = b;
+	}
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.incrementabletask.IIncrementable#process()
+	 */
+	public abstract void process() throws InterruptedException, Exception;
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableEvent.java	(revision 38348)
@@ -0,0 +1,58 @@
+package org.gvsig.gui.beans.incrementabletask;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+import java.util.EventObject;
+/**
+ * Se utiliza para poder definir que acci�n esta ocurriendo en un momento dado
+ * en la ventana IncrementableTask
+ *
+ * @version 23/04/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class IncrementableEvent extends EventObject {
+	private static final long serialVersionUID = 75795297813891036L;
+
+	/**
+	 * Definir si la acci�n que esta ocurriendo es la de resumir.
+	 */
+	public static final int RESUMED = 1;
+
+	/**
+	 * Definir si la acci�n que esta ocurriendo es la de suspender
+	 */
+	public static final int SUSPENDED = 2;
+
+	/**
+	 * Definir si la acci�n que esta ocurriendo es la de cancelar.
+	 */
+	public static final int CANCELED = 3;
+
+	/**
+	 * Constructor de IncrementableEvent
+	 * @param source
+	 */
+	public IncrementableEvent(Object source) {
+		super(source);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableEvent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableTask.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableTask.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableTask.java	(revision 38348)
@@ -0,0 +1,343 @@
+package org.gvsig.gui.beans.incrementabletask;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.JDialog;
+import javax.swing.JOptionPane;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
+import org.gvsig.gui.beans.progresspanel.ProgressPanel;
+
+/**
+ * <code>IncrementableTask</code>. Es un dialogo que contiene un ProgressPanel.
+ * Se ejecuta bajo un Thread y va consultando a un objeto de tipo IIncrementable
+ * para modificar sus valores.
+ *
+ * @version 20/08/2008
+ *
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class IncrementableTask implements Runnable, ButtonsPanelListener {
+
+    private static final Logger LOG = LoggerFactory
+        .getLogger(IncrementableTask.class);
+
+	IIncrementable                            iIncrementable         = null;
+	private volatile ProgressPanel            progressPanel          = null;
+	private volatile Thread                   blinker                = null;
+	private boolean                           threadSuspended        = false;
+	private boolean                           ended                  = false;
+	private boolean                           askOnCancel            = true;
+	private ArrayList<IncrementableListener>  actionCommandListeners = new ArrayList<IncrementableListener>();
+	private boolean                           bDoCallListeners       = true;
+	static private int                        eventId                = Integer.MIN_VALUE;
+	
+	/**
+	 * Constructor del IncrementableTask.
+	 * @param incrementable
+	 */
+	public IncrementableTask(IIncrementable incrementable, ProgressPanel dialog) {
+		iIncrementable = incrementable;
+		progressPanel = dialog;
+		configureProgressPanel();
+	}
+	
+	/**
+	 * Constructor del IncrementableTask.
+	 * @param incrementable
+	 */
+	public IncrementableTask(IIncrementable incrementable) {
+		iIncrementable = incrementable;
+		configureProgressPanel();
+	}
+
+	/**
+	 * Inicio del thread para que la ventana vaya consultando por si sola al
+	 * iIncrementable
+	 */
+	public void start() {
+		blinker = new Thread(this);
+		blinker.start();
+	}
+
+	/**
+	 * Detiene el proceso de consulta de la ventana.
+	 */
+	public void stop() {
+		ended = true;
+	}
+	
+	/**
+	 * Este thread va leyendo el porcentaje hasta que se completa el histograma.
+	 */
+	public synchronized void run() {
+//		while (!ended && (iIncrementable.getPercent() <= 100)) {
+		while (! ended) {
+			try {
+				getProgressPanel().setLabel(iIncrementable.getLabel());
+				getProgressPanel().setPercent(iIncrementable.getPercent());
+				getProgressPanel().setTitle(iIncrementable.getTitle());
+				getProgressPanel().setLog(iIncrementable.getLog());
+				Thread.sleep(100);
+				synchronized (this) {
+					while (threadSuspended && !ended)
+						wait(500);
+				}
+			} catch (InterruptedException e) {
+			}
+		}
+		
+		// Forces to refresh the log with the last changes
+		getProgressPanel().setLog(iIncrementable.getLog());
+	}
+
+	/**
+	 * Termina el proceso de lectura de porcentajes y logs de la ventana y
+	 * cierra esta.
+	 */
+	public void processFinalize() {
+		stop();
+		while (isAlive());
+		hide();
+	}
+
+	/**
+	 * Ocultar la ventana y parar el proceso
+	 */
+	private void hide() {
+		hideWindow();
+		progressPanel = null;
+		blinker = null;
+	}
+	
+	/**
+	 * Ocultar la ventana
+	 */
+	public void hideWindow() {
+//		getProgressPanel().dispose();
+		getProgressPanel().setVisible(false);
+	}
+
+	/**
+	 * Devuelve un booleano indicando si esta activa la ventana.
+	 * @return boolean
+	 */
+	public boolean isAlive() {
+		if (blinker == null)
+			return false;
+		return blinker.isAlive();
+	}
+
+	/**
+	 * Muestra la ventana de incremento con el porcentaje de la construcci�n del
+	 * histograma.
+	 */
+	public void showWindow() {
+		getProgressPanel().setTitle(iIncrementable.getTitle());
+		getProgressPanel().showLog(false);
+		getProgressPanel().setVisible(true);
+	}
+
+	/**
+	 * Devuelve el componente ProgressPanel de la ventana incrementable.
+	 * @return ProgressPanel
+	 */
+	public ProgressPanel getProgressPanel() {
+		if (progressPanel == null) {
+			progressPanel = new ProgressPanel(false);
+		}
+		return progressPanel;
+	}
+	
+	protected void configureProgressPanel() {
+		getProgressPanel().setAlwaysOnTop(true);
+		getProgressPanel().addButtonPressedListener(this);
+		
+		// Must ask if user wants to cancel the process, avoid closing the dialog
+		getProgressPanel().setDefaultCloseOperation( JDialog.DO_NOTHING_ON_CLOSE );
+		getProgressPanel().addWindowListener(new WindowAdapter() {
+			public void windowClosing(WindowEvent e) {
+				// Simulates an event like the produced pressing the cancel button of the associated progress panel
+				actionButtonPressed(new ButtonsPanelEvent(getProgressPanel(), ButtonsPanel.BUTTON_CANCEL));				
+			}
+		});
+	}
+
+	private void callActionCommandListeners(int actions) {
+		if (!bDoCallListeners)
+			return;
+		Iterator<IncrementableListener> acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			IncrementableListener listener = (IncrementableListener) acIterator.next();
+			switch (actions) {
+				case IncrementableEvent.RESUMED:
+					listener.actionResumed(new IncrementableEvent(this));
+					break;
+				case IncrementableEvent.SUSPENDED:
+					listener.actionSuspended(new IncrementableEvent(this));
+					break;
+				case IncrementableEvent.CANCELED:
+					listener.actionCanceled(new IncrementableEvent(this));
+					break;
+			}
+		}
+		eventId++;
+	}
+
+	/**
+	 * A�adir el manejador de eventos para atender las peticiones de start,
+	 * stop...
+	 *
+	 * @param listener
+	 */
+	public void addIncrementableListener(IncrementableListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Borrar un manejador de eventos.
+	 * @param listener
+	 */
+	public void removeIncrementableListener(IncrementableListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	/**
+	 * Definir si queremos que confirme al usuario si realmente desea cancelar el
+	 * proceso
+	 *
+	 * @param value
+	 */
+	public void setAskCancel(boolean value) {
+		askOnCancel = value;
+	}
+
+	/**
+	 * Metodo para gestionar todos los eventos del objeto.
+	 */
+	public void actionButtonPressed(ButtonsPanelEvent e) {
+		switch (e.getButton()) {
+			case ButtonsPanel.BUTTON_CANCEL:
+				boolean cancelled = true;
+				if (askOnCancel) {
+					if (! iIncrementable.isCancelable()) {
+						JOptionPane.showMessageDialog(null, Messages.getText("The_process_cant_be_cancelled"), Messages.getText("Information"), JOptionPane.INFORMATION_MESSAGE);
+						return;
+					}
+
+					/* Pauses the process */
+					if (iIncrementable.isPausable()) {
+						try {
+							callActionCommandListeners(IncrementableEvent.SUSPENDED);
+						}
+						catch (Exception iex) {
+                        LOG.error("", iex);
+							JOptionPane.showMessageDialog(null, Messages.getText("Failed_pausing_the_process"), Messages.getText("Error"), JOptionPane.ERROR_MESSAGE);
+						}
+					}
+	
+					/* Asks user to cancel or not the process */
+					cancelled = false;
+					String string1 = Messages.getText("Yes");
+					String string2 = Messages.getText("No");
+					Object[] options = { string1, string2 };
+					int answer = JOptionPane.showOptionDialog(getProgressPanel(), Messages
+							.getText("msg_cancel_incrementable"), Messages
+							.getText("title_cancel_incrementable"),
+							JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
+							options, string1);
+					if (answer == JOptionPane.YES_OPTION) {
+						cancelled = true;
+
+						/* Continues the process */
+						try {
+							if (iIncrementable.isPausable())
+								callActionCommandListeners(IncrementableEvent.RESUMED);
+						} catch (Exception e2) {
+                        LOG.error("", e2);
+							Messages.getText("Failed_resuming_the_process");
+						}
+					}
+					else {
+						/* Continues the process */
+						try {
+							if (iIncrementable.isPausable())
+								callActionCommandListeners(IncrementableEvent.RESUMED);
+						} catch (Exception e2) {
+                        LOG.error("", e2);
+							Messages.getText("Failed_resuming_the_process");
+						}
+					}
+				}
+				if (cancelled) {
+//					ended = true;
+					// Will wait the process to finish and notify this to stop
+					callActionCommandListeners(IncrementableEvent.CANCELED);
+				}
+				break;
+			case ButtonsPanel.BUTTON_PAUSE:
+				threadSuspended = true;
+
+				/* Pauses the associated process */
+				try {
+					if (! iIncrementable.isPausable()) {
+						JOptionPane.showMessageDialog(null, Messages.getText("The_process_cant_be_paused"), Messages.getText("Information"), JOptionPane.INFORMATION_MESSAGE);
+					}
+					else {
+						callActionCommandListeners(IncrementableEvent.SUSPENDED);
+					}
+				}
+				catch (Exception iex) {
+                LOG.error("", iex);
+					JOptionPane.showMessageDialog(null, Messages.getText("Failed_pausing_the_process"), Messages.getText("Error"), JOptionPane.ERROR_MESSAGE);
+				}
+
+				break;
+			case ButtonsPanel.BUTTON_RESTART:
+				threadSuspended = false;
+
+				/* Resumes the associated process */
+				callActionCommandListeners(IncrementableEvent.RESUMED);
+				break;
+		}
+	}
+
+	/**
+	 * @see ProgressPanel#getButtonsPanel()
+	 */
+	public ButtonsPanel getButtonsPanel() {
+		return getProgressPanel().getButtonsPanel();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableTask.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableListener.java	(revision 38348)
@@ -0,0 +1,52 @@
+package org.gvsig.gui.beans.incrementabletask;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+import java.util.EventListener;
+
+/**
+ * Interfaz para la ventana IncrementableTask, aqui se define los
+ * comportamientos de los botones de la ventana.
+ *
+ * @version 23/04/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface IncrementableListener extends EventListener {
+	/**
+	 * Invocado cuando se aprieta el boton Resumir de la ventana
+	 * @param e
+	 */
+	public void actionResumed(IncrementableEvent e);
+
+	/**
+	 * Invocado cuando se aprieta el boton Suspender de la ventana
+	 * @param e
+	 */
+	public void actionSuspended(IncrementableEvent e);
+
+	/**
+	 * Invocado cuando se aprieta el boton Cancelar de la ventana
+	 * @param e
+	 */
+	public void actionCanceled(IncrementableEvent e);
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/incrementabletask/IncrementableListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderListener.java	(revision 38348)
@@ -0,0 +1,42 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.colorslideredition;
+
+import java.util.EventListener;
+
+public interface ColorSliderListener extends EventListener {
+	/**
+	 * Evento que se dispara cuando cambia el item seleccionado.
+	 * @param e
+	 */
+	public void actionSelectionChanged(ColorSliderEvent e);
+
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente mientras se
+	 * hace un dragged con el rat�n.
+	 * @param e
+	 */
+	public void actionValueDragged(ColorSliderEvent e);
+
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente.
+	 * @param e
+	 */
+	public void actionValueChanged(ColorSliderEvent e);
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderEdition.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderEdition.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderEdition.java	(revision 38348)
@@ -0,0 +1,694 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.colorslideredition;
+
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Polygon;
+import java.awt.Shape;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.JComponent;
+/**
+ * <code>DoubleSlider</code> representa un componente que tiene dos
+ * deslizadores. Se puede definir un m�ximo y un m�nimo.
+ *
+ * @version 04/05/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ColorSliderEdition extends JComponent implements MouseListener, MouseMotionListener {
+	private static final long serialVersionUID = 663355422780987493L;
+
+	private ArrayList<ColorSliderListener> actionCommandListeners   = new ArrayList<ColorSliderListener>();
+	private ArrayList<ColorSliderListener> actionSelectionListeners = new ArrayList<ColorSliderListener>();
+	private ArrayList<ItemColorSlider>     items                    = new ArrayList<ItemColorSlider>();
+
+	private final int LEFT_PAD       = 3;
+	private final int RIGHT_PAD      = 3;
+
+	private Image     bufferImage    = null;
+	private int       width          = 0;
+	private int       height         = 0;
+	private Graphics  bufferGraphics = null;
+	private boolean   interpolated   = true;
+
+	/**
+	 * Crea un DoubleSlider con las opciones por defecto.
+	 */
+	public ColorSliderEdition() {
+		this.setPreferredSize(new Dimension(100, 46));
+		addMouseListener(this);
+		addMouseMotionListener(this);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#addNotify()
+	 */
+	public void addNotify() {
+		super.addNotify();
+
+		refreshImage();
+	}
+
+	public void addItem(ItemColorSlider value) {
+		addItem(value, true);
+	}
+
+	public void addItem(ItemColorSlider value, boolean repaint) {
+		items.add(value);
+		if (repaint)
+			refreshImage();
+	}
+
+	/**
+	 * Devuelve un color de interpolacion entre dos colores
+	 * @param value
+	 * @param pos
+	 * @return
+	 */
+	private Color interpolatedColor(ArrayList newItems, double value, int pos) {
+		if (newItems.size() <= 0)
+			return Color.black;
+
+		if ((pos + 1) == newItems.size())
+			return ((ItemColorSlider) newItems.get(pos)).getColor();
+
+		if (value <= ((ItemColorSlider) newItems.get(0)).getValue())
+			return ((ItemColorSlider) newItems.get(0)).getColor();
+
+		ItemColorSlider item1 = (ItemColorSlider) newItems.get(pos);
+		ItemColorSlider item2 = (ItemColorSlider) newItems.get(pos + 1);
+
+		double percValue = ((value - item1.getValue()) * 100) / (item2.getValue() - item1.getValue());
+
+		Color halfColor = new Color(
+				(item2.getColor().getRed() + item1.getColor().getRed()) >> 1,
+				(item2.getColor().getGreen() + item1.getColor().getGreen()) >> 1,
+				(item2.getColor().getBlue() + item1.getColor().getBlue()) >> 1,
+				(item2.getColor().getAlpha() + item1.getColor().getAlpha()) >> 1);
+
+		Color color1, color2;
+		double perc1, perc2;
+
+		if (percValue > item2.getInterpolated()) {
+			color1 = halfColor;
+			color2 = item2.getColor();
+			perc1 = item2.getInterpolated();
+			perc2 = 100;
+		} else {
+			color1 = item1.getColor();
+			color2 = halfColor;
+			perc1 = 0;
+			perc2 = item2.getInterpolated();
+		}
+
+		double percNew = (percValue - perc1) / (perc2 - perc1);
+
+		Color newColor = new Color(
+				(int) (color1.getRed() + ((color2.getRed() - color1.getRed()) * percNew)) & 0xff,
+				(int) (color1.getGreen() + ((color2.getGreen() - color1.getGreen()) * percNew)) & 0xff,
+				(int) (color1.getBlue() + ((color2.getBlue() - color1.getBlue()) * percNew)) & 0xff,
+				(int) (color1.getAlpha() + ((color2.getAlpha() - color1.getAlpha()) * percNew)) & 0xff);
+
+
+		return newColor;
+	}
+
+	/**
+	 * Crea un graphics con las dimensiones del componente si no estaba creado y
+	 * lo devuelve para poder usarlo para dibujar en �l.
+	 * @return Graphics
+	 */
+	private Graphics getBufferGraphics() {
+		int width2 = getBounds().width;
+		int height2 = getBounds().height;
+		if (width2 <= 0)
+			width2 = 1;
+		if (height2 <= 0)
+			height2 = 1;
+
+		if ((width != width2) || (height != height2)) {
+			bufferImage = createImage(width2, height2);
+			if (bufferImage == null)
+				return null;
+			bufferGraphics = bufferImage.getGraphics();
+		}
+
+		width = width2;
+		height = height2;
+
+		return bufferGraphics;
+	}
+
+	private void sortItems() {
+		for (int i = 0; i < items.size(); i++) {
+			for (int j = i + 1; j < items.size(); j++) {
+				if (items.get(j).getValue() < items.get(i).getValue()) {
+					ItemColorSlider aux = items.get(i);
+					items.set(i, items.get(j));
+					items.set(j, aux);
+				}
+			}
+		}
+	}
+
+	private int getPosForValue(double value, ArrayList newArray) {
+		int pos = 0;
+		for (int j = 1; j <= newArray.size(); j++) {
+			if (j < newArray.size()) {
+				if (value < ((ItemColorSlider) newArray.get(j)).getValue()) {
+					pos = j - 1;
+					break;
+				}
+			} else {
+				pos = j - 1;
+				break;
+			}
+		}
+		return pos;
+	}
+
+	/**
+	 * Convierte a gris y aclara el color si esta inactivo el componente, en caso
+	 * contrario devuelve el color tal cual
+	 */
+	private Color convertColor(Color value) {
+		if (isEnabled())
+			return value;
+
+		int aux = (value.getRed() + value.getGreen() + value.getBlue()) / 3;
+
+		aux = (int) ((aux * 91.0 / 255.0) + 164.0);
+
+		return new Color(aux, aux, aux, value.getAlpha());
+	}
+
+	/**
+	 * Redibujar el componente en el graphics temporal
+	 */
+	private void redrawBuffer() {
+		if (getBufferGraphics() == null)
+			return;
+
+		sortItems();
+
+		getBufferGraphics().setColor(this.getBackground());
+
+		getBufferGraphics().fillRect(0, 0, width, height);
+
+		getBufferGraphics().setColor(Color.black);
+		getBufferGraphics().drawRect(LEFT_PAD, 0, width - 1 - LEFT_PAD - RIGHT_PAD, height - 18);
+
+		Shape oldClip = getBufferGraphics().getClip();
+		getBufferGraphics().setClip(LEFT_PAD + 2, 2, width - 4 - LEFT_PAD - RIGHT_PAD, height - 21);
+		for (int i = 0; (i * 4 + 2) <= (width - 3 - LEFT_PAD - RIGHT_PAD); i++) {
+			for (int j = 0; (j * 4 + 2) <= (height - 20); j++) {
+				if ((i + j) % 2 == 0)
+					getBufferGraphics().setColor(Color.white);
+				else
+					getBufferGraphics().setColor(new Color(204, 204, 204));
+				getBufferGraphics().fillRect(i * 4 + 2 + LEFT_PAD, j * 4 + 2, 4, 4);
+			}
+		}
+		Color newColor = Color.black;
+
+		ArrayList<ItemColorSlider> newArray = getItemsShowed();
+
+		for (int i = LEFT_PAD + 2; i <= width - 2 - RIGHT_PAD; i++) {
+			int pos = getPosForValue(pixelToValue(i), newArray);
+
+			if (isInterpolated()) {
+				newColor = interpolatedColor(newArray, pixelToValue(i), pos);
+			} else {
+				if ((pos + 1) < newArray.size()) {
+					double min = newArray.get(pos).getValue();
+					double max = newArray.get(pos + 1).getValue();
+					if ((min + ((max - min) * newArray.get(pos + 1).getInterpolated() / 100)) < pixelToValue(i))
+						pos++;
+				}
+				if (pos < newArray.size())
+					newColor = newArray.get(pos).getColor();
+			}
+			if (newColor != null) {
+				getBufferGraphics().setColor(convertColor(newColor));
+				getBufferGraphics().drawLine(i, 2, i, height - 18);
+			}
+		}
+
+		getBufferGraphics().setClip(oldClip);
+
+		boolean paintNext = false;
+		for (int i = 0; i < items.size(); i++) {
+			ItemColorSlider aux = items.get(i);
+			if (!aux.isVisible())
+				continue;
+			// Dibujar los deslizadores de la interpolacion
+			if (aux.getSelected() != -1)
+				paintNext = true;
+			if (paintNext && isEnabled()) {
+				if (i != 0) {
+					double value = items.get(i - 1).getValue() + ((items.get(i).getValue() - items.get(i - 1).getValue()) * items.get(i).getInterpolated() / 100);
+
+					drawSliderInterpolation(valueToPixel(value), height - 17, aux.getColor(), (aux.getSelected() == 2));
+				}
+				paintNext = false;
+			}
+			if (aux.getSelected() == 1)
+				paintNext = true;
+		}
+
+		for (int i = items.size() - 1; i >= 0; i--) {
+			ItemColorSlider aux = items.get(i);
+			if (!aux.isVisible())
+				continue;
+			drawSliderColor(valueToPixel(aux.getValue()), height - 17, convertColor(aux.getColor()), (aux.getSelected() == 1) && (isEnabled()));
+		}
+	}
+
+	/**
+	 * Convierte un porcentaje al valor pixel en X
+	 * @param value
+	 * @return
+	 */
+	private int valueToPixel(double value) {
+		if (value < 0)
+			value = 0;
+		if (value > 100)
+			value = 100;
+		return (int) (((width - 5 - LEFT_PAD - RIGHT_PAD) * value) / 100) + 2 + LEFT_PAD;
+	}
+
+	/**
+	 * Convierte un valor en X en porcentaje
+	 * @param value
+	 * @return
+	 */
+	private double pixelToValue(int value) {
+		double aux = value - LEFT_PAD - 1;
+		return (aux * 100.0f) / (width - LEFT_PAD - RIGHT_PAD - 4.0f);
+	}
+
+	/**
+	 * Dibujar un triangulo, un triangulo es un deslizador del componente. Puedes
+	 * indicarle que color tendra y en que posici�n estar�.
+	 * @param x
+	 * @param color
+	 */
+	private void drawSliderColor(int x, int y, Color color, boolean isSelected) {
+		if (color == null)
+			return;
+		Polygon p = new Polygon();
+		p.addPoint(x, y);
+		p.addPoint(x - 5, y + 6);
+		p.addPoint(x - 5, y + 16);
+		p.addPoint(x + 5, y + 16);
+		p.addPoint(x + 5, y + 6);
+		if (!isSelected) {
+			getBufferGraphics().setColor(this.getBackground());
+			getBufferGraphics().fillPolygon(p);
+			getBufferGraphics().setColor(new Color(172, 168, 153));
+			getBufferGraphics().drawLine(x + 1, y + 2, x + 4, y + 6);
+			getBufferGraphics().drawLine(x - 4, y + 6, x + 4, y + 6);
+		} else {
+			getBufferGraphics().setColor(Color.black);
+			getBufferGraphics().fillPolygon(p);
+		}
+
+		getBufferGraphics().setColor(Color.black);
+		getBufferGraphics().drawPolygon(p);
+
+		getBufferGraphics().setColor(new Color(172, 168, 153));
+		getBufferGraphics().drawLine(x - 3, y + 15, x + 4, y + 15);
+		getBufferGraphics().drawLine(x + 4, y + 8, x + 4, y + 15);
+
+		getBufferGraphics().setColor(Color.white);
+		getBufferGraphics().drawLine(x - 4, y + 7, x - 4, y + 15);
+		getBufferGraphics().drawLine(x - 4, y + 7, x + 4, y + 7);
+
+		getBufferGraphics().setColor(new Color(color.getRed(), color.getGreen(), color.getBlue()));
+		getBufferGraphics().fillRect(x - 3, y + 8, 7, 7);
+	}
+
+	/**
+	 * Dibujar un triangulo, un triangulo es un deslizador del componente. Puedes
+	 * indicarle que color tendra y en que posici�n estar�.
+	 * @param x
+	 * @param color
+	 */
+	private void drawSliderInterpolation(int x, int y, Color color, boolean isSelected) {
+		Polygon p = new Polygon();
+		p.addPoint(x, y);
+		p.addPoint(x - 3, y + 3);
+		p.addPoint(x, y + 6);
+		p.addPoint(x + 3, y + 3);
+		if (isSelected)
+			getBufferGraphics().setColor(new Color(color.getRed(), color.getGreen(), color.getBlue()));
+		else
+			getBufferGraphics().setColor(this.getBackground());
+
+		getBufferGraphics().fillPolygon(p);
+
+		getBufferGraphics().setColor(Color.black);
+		getBufferGraphics().drawPolygon(p);
+	}
+
+	/**
+	 * Redibujar el componente en el graphics temporal y representarlo en el
+	 * componente
+	 */
+	private void refreshImage() {
+		redrawBuffer();
+		if (bufferImage != null)
+			getGraphics().drawImage(bufferImage, 0, 0, this);
+		super.paint(getGraphics());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#paint(java.awt.Graphics)
+	 */
+	public void paint(Graphics g) {
+		redrawBuffer();
+		g.drawImage(bufferImage, 0, 0, this);
+		super.paint(g);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+	 */
+	public void mousePressed(MouseEvent e) {
+		if (!isEnabled())
+			return;
+		int onmask = MouseEvent.BUTTON1_DOWN_MASK;
+		if ((e.getModifiersEx() & onmask) != onmask)
+			return;
+		onmask = MouseEvent.ALT_DOWN_MASK;
+		boolean newItem = false;
+		if ((e.getModifiersEx() & onmask) == onmask)
+			newItem = true;
+
+		if ((e.getY() > height) || (e.getY() < (height - 18))) {
+			clearSelected();
+			refreshImage();
+			return;
+		}
+
+		int type = 1;
+		ItemColorSlider itemSelected = getItem(e.getX(), e.getY());
+		if ((itemSelected == null) || (newItem)) {
+			itemSelected = getItemInterpolated(e.getX(), e.getY());
+			if ((itemSelected == null) || (newItem)) {
+				int pos = getPosForValue(pixelToValue(e.getX()), items);
+
+				Color newColor = interpolatedColor(items, pixelToValue(e.getX()), pos);
+
+				itemSelected = new ItemColorSlider(pixelToValue(e.getX()), newColor);
+				items.add(itemSelected);
+			} else {
+				type = 2;
+			}
+		}
+		setItemSelected(itemSelected, type);
+
+		callSelectionChangedListeners();
+		callValueChangedListeners();
+
+		refreshImage();
+	}
+
+	private void clearSelected() {
+		for (int i = items.size() - 1; i >= 0; i--)
+			items.get(i).setSelected(-1);
+	}
+
+	private void setItemSelected(ItemColorSlider aux, int type) {
+		clearSelected();
+		aux.setSelected(type);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
+	 */
+	public void mouseReleased(MouseEvent e) {
+		if (!isEnabled())
+			return;
+		try {
+			for (int i = items.size() - 1; i >= 0; i--) {
+				if (items.size() <= 2)
+					return;
+				if (items.get(i).isVisible() == false)
+					items.remove(i);
+			}
+		} finally {
+			callValueChangedListeners();
+		}
+	}
+
+	public ItemColorSlider getSelectedItem() {
+		for (int i = 0; i < items.size(); i++) {
+			if (items.get(i).getSelected() != -1)
+				return items.get(i);
+		}
+		return null;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
+	 */
+	public void mouseDragged(MouseEvent e) {
+		if (!isEnabled())
+			return;
+		ItemColorSlider aux = getSelectedItem();
+		if (aux != null) {
+			if (aux.getSelected() == 1) {
+				aux.setValue(pixelToValue(e.getX()));
+				refreshImage();
+				setMouseCursor(e.getX(), e.getY());
+				aux.setVisible((e.getY() <= height) && (e.getY() >= 0) || items.size() <= 2);
+				callValueDraggedListeners();
+				return;
+			}
+			if (aux.getSelected() == 2) {
+				int pos = -1;
+				for (int i = 0; i < items.size(); i++) {
+					if (items.get(i) == aux)
+						pos = i;
+				}
+				if (pos > 0) {
+					double min = items.get(pos - 1).getValue();
+					double max = items.get(pos).getValue();
+
+					double newValue = 100 * (pixelToValue(e.getX()) - min) / (max - min);
+
+					aux.setInterpolated(newValue);
+					refreshImage();
+					setMouseCursor(e.getX(), e.getY());
+					callValueDraggedListeners();
+				}
+				return;
+			}
+		}
+	}
+
+	private ItemColorSlider getItem(int x, int y) {
+		for (int i = 0; i < items.size(); i++) {
+			if ((x >= (valueToPixel(items.get(i).getValue()) - 5)) &&
+					(x <= (valueToPixel(items.get(i).getValue()) + 5)) &&
+					(y <= height) &&
+					(y >= (height - 18))) {
+				return items.get(i);
+			}
+		}
+		return null;
+	}
+
+	private ItemColorSlider getItemInterpolated(int x, int y) {
+		for (int i = 1; i < items.size(); i++) {
+			int value = valueToPixel(items.get(i - 1).getValue() + ((items.get(i).getValue() - items.get(i - 1).getValue()) * items.get(i).getInterpolated() / 100));
+
+			if ((x >= value - 3) &&
+					(x <= value + 3) &&
+					(y <= (height - 11)) &&
+					(y >= (height - 18))) {
+				if (items.get(i).getSelected() != -1)
+					return items.get(i);
+				if (items.get(i - 1).getSelected() == 1)
+					return items.get(i);
+			}
+		}
+		return null;
+	}
+
+	private void setMouseCursor(int x, int y) {
+		if (getItem(x, y) != null) {
+			setCursor(new Cursor(Cursor.E_RESIZE_CURSOR));
+			return;
+		}
+		if (getItemInterpolated(x, y) != null) {
+			setCursor(new Cursor(Cursor.E_RESIZE_CURSOR));
+			return;
+		}
+		if ((y <= height) && (y >= (height - 18))) {
+			setCursor(new Cursor(Cursor.HAND_CURSOR));
+			return;
+		}
+		setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
+		return;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
+	 */
+	public void mouseMoved(MouseEvent e) {
+		if (!isEnabled())
+			return;
+		setMouseCursor(e.getX(), e.getY());
+	}
+
+	/**
+	 * @return the interpolated
+	 */
+	public boolean isInterpolated() {
+		return interpolated;
+	}
+
+	/**
+	 * @param interpolated the interpolated to set
+	 */
+	public void setInterpolated(boolean interpolated) {
+		this.interpolated = interpolated;
+		refreshImage();
+	}
+
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addValueChangedListener(ColorSliderListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeValueChangedListener(ColorSliderListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addSelectionChangedListener(ColorSliderListener listener) {
+		if (!actionSelectionListeners.contains(listener))
+			actionSelectionListeners.add(listener);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeSelectionChangedListener(ColorSliderListener listener) {
+		actionSelectionListeners.remove(listener);
+	}
+
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void callSelectionChangedListeners() {
+		Iterator<ColorSliderListener> acIterator = actionSelectionListeners.iterator();
+		while (acIterator.hasNext()) {
+			ColorSliderListener listener = acIterator.next();
+			listener.actionSelectionChanged(new ColorSliderEvent(this));
+		}
+	}
+
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void callValueChangedListeners() {
+		Iterator<ColorSliderListener> acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			ColorSliderListener listener = acIterator.next();
+			listener.actionValueChanged(new ColorSliderEvent(this));
+		}
+	}
+
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void callValueDraggedListeners() {
+		Iterator<ColorSliderListener> acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			ColorSliderListener listener = acIterator.next();
+			listener.actionValueDragged(new ColorSliderEvent(this));
+		}
+	}
+
+	public void removeAllItems() {
+		items.clear();
+	}
+
+	/**
+	 * @return the items
+	 */
+	public ArrayList getItems() {
+		return items;
+	}
+
+	/**
+	 * Devuelve los items que estan visibles en el componente
+	 * @return the items
+	 */
+	public ArrayList getItemsShowed() {
+		ArrayList newArray = (ArrayList) items.clone();
+		for (int i = newArray.size() - 1; i >= 0; i--) {
+			if (((ItemColorSlider) newArray.get(i)).isVisible() == false)
+				newArray.remove(i);
+		}
+
+		return newArray;
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.swing.JComponent#setEnabled(boolean)
+	 */
+	public void setEnabled(boolean enabled) {
+		super.setEnabled(enabled);
+		refreshImage();
+	}
+
+	public void mouseClicked(MouseEvent e) {}
+	public void mouseEntered(MouseEvent e) {}
+	public void mouseExited(MouseEvent e) {}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderEdition.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ItemColorSlider.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ItemColorSlider.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ItemColorSlider.java	(revision 38348)
@@ -0,0 +1,163 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.colorslideredition;
+
+import java.awt.Color;
+/**
+ * 
+ * @version 26/09/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ItemColorSlider {
+	private double value = 0;
+	private double interpolated = 50; // Atencion, es la interpolacion izquierda
+	private Color color = Color.black;
+	private boolean visible = true;
+	private String name = "";
+	private Object tag = null;
+
+	/**
+	 * Seleted:
+	 * -1: No seleccionado
+	 * 1: Seleccionado el item
+	 * 2: Seleccionado la interpolacion izquierda
+	 */
+	private int selected = -1;
+
+	public ItemColorSlider(double value, Color color) {
+		setValue(value);
+		setColor(color);
+	}
+
+	/**
+	 * @return the color
+	 */
+	public Color getColor() {
+		return color;
+	}
+
+	/**
+	 * @param color the color to set
+	 */
+	public void setColor(Color color) {
+		this.color = color;
+	}
+
+	/**
+	 * @return the interpolation
+	 */
+	public double getInterpolated() {
+		return interpolated;
+	}
+
+	/**
+	 * @param interpolation the interpolation to set
+	 */
+	public void setInterpolated(double interpolation) {
+		this.interpolated = interpolation;
+		if (this.interpolated < 5)
+			this.interpolated = 5;
+		if (this.interpolated > 95)
+			this.interpolated = 95;
+	}
+
+	/**
+	 * @return the value
+	 */
+	public double getValue() {
+		return value;
+	}
+
+	/**
+	 * @param value the value to set
+	 */
+	public void setValue(double value) {
+		this.value = value;
+		if (this.value < 0)
+			this.value = 0;
+		if (this.value > 100)
+			this.value = 100;
+	}
+
+	/**
+	 * @return the visible
+	 */
+	public boolean isVisible() {
+		return visible;
+	}
+
+	/**
+	 * @param visible the visible to set
+	 */
+	public void setVisible(boolean visible) {
+		this.visible = visible;
+	}
+
+	/**
+	 * @return the selected
+	 */
+	public int getSelected() {
+		return selected;
+	}
+
+	/**
+	 * @param selected the selected to set
+	 */
+	public void setSelected(int selected) {
+		switch (selected) {
+			case 1:
+			case 2:
+				this.selected = selected;
+				break;
+			default:
+				this.selected = -1;
+				break;
+		}
+	}
+
+	/**
+	 * @return the name
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * @param name the name to set
+	 */
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	/**
+	 * Obtiene el campo extra de cada elemento
+	 * @return
+	 */
+	public Object getTag() {
+  	return tag;
+  }
+
+	/**
+	 * Especifica un campo extra a cada elemento
+	 * @param tag
+	 */
+	public void setTag(Object tag) {
+  	this.tag = tag;
+  }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ItemColorSlider.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderEvent.java	(revision 38348)
@@ -0,0 +1,29 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.colorslideredition;
+
+import org.gvsig.gui.beans.slidertext.listeners.SliderEvent;
+
+public class ColorSliderEvent extends SliderEvent {
+	private static final long serialVersionUID = -684281519921935004L;
+
+	public ColorSliderEvent(Object source) {
+		super(source);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/colorslideredition/ColorSliderEvent.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/FileFilter.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/FileFilter.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/FileFilter.java	(revision 38348)
@@ -0,0 +1,15 @@
+package org.gvsig.gui.beans.openfile;
+
+import java.io.File;
+
+public abstract class FileFilter extends javax.swing.filechooser.FileFilter {
+
+	/**
+	 * <p>Gets the default file extension, which will be
+	 * added to the selected file if its extension is not
+	 * valid.</p>
+	 * 
+	 * @return
+	 */
+	public abstract String getDefaultExtension();
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/FileFilter.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/FileTextField.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/FileTextField.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/FileTextField.java	(revision 38348)
@@ -0,0 +1,212 @@
+package org.gvsig.gui.beans.openfile;
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.io.File;
+import java.util.ArrayList;
+
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.swing.JFileChooser;
+
+public class FileTextField extends JPanel {
+	private static final long serialVersionUID = 1L;
+	private JTextField tf_fileName = null;
+	private JButton bt_chooseFile = null;
+	private File selectedFile = null;
+	private ArrayList enabledListeners = new ArrayList();
+	private JFileChooser jfc;
+	/**
+	 * Used to create file choosers with 'memory'
+	 */
+	private String JFC_ID = null;
+
+	public static final int ACTION_EVENT_FIELD_DISABLED = 0;
+	public static final int ACTION_EVENT_FIELD_ENABLED = 1;
+	public static final int ACTION_EVENT_VALUE_CHANGED = 1;
+
+	public FileTextField() {
+		super();
+		JFC_ID = this.getClass().getName();
+		initializeUI();
+	}
+
+	public FileTextField(String id) {
+		super();
+		JFC_ID = id;
+		initializeUI();
+	}
+
+	private void initializeUI() {
+		 jfc = new JFileChooser(JFC_ID, (String) null);
+		setLayout(new GridBagLayout());
+
+		GridBagConstraints constraints = new GridBagConstraints();
+		constraints.gridx = 0;
+		constraints.gridy = 0;
+		constraints.gridwidth = 1;
+		constraints.gridheight = 1;
+		constraints.fill = GridBagConstraints.BOTH;
+		constraints.anchor = GridBagConstraints.WEST;
+		constraints.weightx = 1.0;
+		constraints.weighty = 1.0;
+		constraints.insets = new Insets(0,0,0,4);
+		this.add(getNameField(), constraints);
+
+		getChooseFileButton().addActionListener(new ActionListener() {
+
+			public void actionPerformed(ActionEvent e) {
+				if (e.getSource()==getChooseFileButton()) {
+					int action = jfc.showDialog(FileTextField.this, Messages.getText("Open"));
+					if (action == JFileChooser.APPROVE_OPTION) {
+						setSelectedFile(jfc.getSelectedFile());
+						setEnabled(true);	
+					}
+				}
+			}
+		});
+		constraints.gridx = 1;
+		constraints.gridy = 0;
+		constraints.gridwidth = 1;
+		constraints.gridheight = 1;
+		constraints.fill = GridBagConstraints.BOTH;
+		constraints.anchor = GridBagConstraints.WEST;
+		constraints.weightx = 0.0;
+		constraints.weighty = 1.0;
+		constraints.insets = new Insets(0,0,0,0);
+		this.add(getChooseFileButton(), constraints);
+	}
+
+	private JTextField getNameField() {
+		if (tf_fileName==null) {
+			tf_fileName = new JTextField();
+			tf_fileName.addFocusListener(new FocusListener() {
+				public void focusGained(FocusEvent e) {}
+
+				public void focusLost(FocusEvent e) {
+					updateSelectedFile();
+				}
+			});
+		}
+		return tf_fileName;
+	}
+	
+	private JButton getChooseFileButton() {
+		if (bt_chooseFile==null) {
+			bt_chooseFile = new JButton("...");
+		}
+		return bt_chooseFile;
+	}
+
+
+	public void setSelectedFile(File file) {
+		File oldFile = selectedFile;
+		selectedFile = normalizeExtension(file);
+		getNameField().setText(selectedFile.toString());
+		if (file.isDirectory()) {
+			jfc.setLastPath(file);
+		}
+		else {
+		    jfc.setSelectedFile(file);
+            jfc.setLastPath(file.getParentFile());
+		}
+		fireValueChanged(oldFile, file);
+	}
+
+	public File getSelectedFile() {
+		return updateSelectedFile();
+	}
+	
+	private File normalizeExtension(File file) {
+		javax.swing.filechooser.FileFilter filter = (javax.swing.filechooser.FileFilter) jfc.getFileFilter();
+		if (!filter.accept(file)) {
+			String path = file.getPath();
+			if (filter instanceof FileFilter)  {
+				FileFilter ourFilter = (FileFilter) filter;
+			if (path.endsWith(".")) {
+				path = path+ourFilter.getDefaultExtension();
+			}
+			else {
+				path = path+"."+ourFilter.getDefaultExtension();
+			}
+			file = new File(path);
+			}
+		}
+		return file;	
+	}
+	
+	private File updateSelectedFile() {
+		File oldFile = selectedFile;
+		String text = getNameField().getText();
+		if ( (oldFile!=null && !oldFile.getPath().equals(text))
+				|| ((oldFile==null) && !text.equals(""))){
+			File newFile = normalizeExtension(new File(getNameField().getText()));
+			selectedFile = newFile;
+			fireValueChanged(oldFile, newFile);
+		}
+		return selectedFile;
+	}
+
+	protected void fireValueChanged(File oldValue, File newValue) {
+		firePropertyChange("selectedFileChanged", oldValue, newValue);
+	}
+
+	protected void fireEnabledChanged(boolean oldValue, boolean newValue) {
+		firePropertyChange("enabled", oldValue, newValue);
+	}
+
+	public void setEnabled(boolean enabled) {
+		boolean oldValue = isEnabled();
+		super.setEnabled(enabled);
+		getNameField().setEnabled(enabled);
+        getChooseFileButton().setEnabled(enabled);
+		fireEnabledChanged(oldValue, enabled);
+	}
+
+	public javax.swing.filechooser.FileFilter getFileFilter() {
+		return jfc.getFileFilter();
+	}
+
+	public int getFileSelectionMode() {
+		return jfc.getFileSelectionMode();
+	}
+
+	public boolean removeChoosableFileFilter(FileFilter f) {
+		return jfc.removeChoosableFileFilter(f);
+	}
+
+	public void setFileFilter(FileFilter filter) {
+
+		jfc.setFileFilter(filter);
+		
+	}
+
+	public void addChoosableFileFilter(FileFilter filter) {
+		jfc.addChoosableFileFilter(filter);
+	}
+
+	public FileFilter getAcceptAllFileFilter() {
+		return (FileFilter) jfc.getAcceptAllFileFilter();
+	}
+
+	public boolean isAcceptAllFileFilterUsed() {
+		return jfc.isAcceptAllFileFilterUsed();
+	}
+
+	public void resetChoosableFileFilters() {
+		jfc.resetChoosableFileFilters();
+	}
+
+	public void setAcceptAllFileFilterUsed(boolean b) {
+		jfc.setAcceptAllFileFilterUsed(b);
+	}
+	
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/FileTextField.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/listeners/OpenFileListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/listeners/OpenFileListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/listeners/OpenFileListener.java	(revision 38348)
@@ -0,0 +1,83 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.openfile.listeners;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+
+import org.gvsig.gui.beans.openfile.OpenFileContainer;
+
+public class OpenFileListener implements ActionListener{
+
+	private JButton button = null;
+	private String fName = null;
+	private OpenFileContainer controlPanel= null;
+	
+	public OpenFileListener(OpenFileContainer panel){
+		this.controlPanel = panel;
+	}
+	
+	public void setButton(JButton but){
+		this.button = but;
+	}
+	
+	
+	public void actionPerformed(ActionEvent e) {
+		if(e.getSource() == this.button){
+			JFileChooser file = new JFileChooser();
+			file.setDialogTitle("Select File");
+			file.addChoosableFileFilter(new ReadFilter(file, "raw"));
+			int returnVal = file.showOpenDialog(controlPanel);
+			if(returnVal == JFileChooser.APPROVE_OPTION){
+				fName = file.getSelectedFile().toString();
+				controlPanel.getTOpen().setText(fName);
+			}
+		}
+		
+	}
+
+	public String getFileName(){
+		return fName;
+	}
+	
+}
+
+class ReadFilter extends javax.swing.filechooser.FileFilter{
+
+	JFileChooser chooser = null;
+	String filter = null;
+	
+	public ReadFilter(JFileChooser cho,String fil){
+		this.chooser = cho;
+		this.filter = fil;
+	}
+	
+	public boolean accept(File f) {
+		 return f.isDirectory() || f.getName().toLowerCase().endsWith("."+filter);
+	}
+
+	public String getDescription() {
+		return "."+filter;
+	}
+	
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/listeners/OpenFileListener.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/OpenFileContainer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/OpenFileContainer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/OpenFileContainer.java	(revision 38348)
@@ -0,0 +1,174 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.openfile;
+
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.io.File;
+
+import javax.swing.JButton;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.openfile.listeners.OpenFileListener;
+/**
+ *
+ * @version 13/07/2007
+ */
+public class OpenFileContainer extends JPanel {
+	private static final long serialVersionUID = 5823371652872582451L;
+	private int 					wComp = 500, hComp = 55;
+	private int						wButton = 165;
+	private int						wText = (int)Math.floor(0.63 * wComp);
+	private int						hButton = 22;
+
+	private JButton jButton = null;
+	private JTextField tOpen = null;
+	private OpenFileListener listener = null;
+
+	private boolean isButtonVisible = true;
+
+	public OpenFileContainer() {
+		super();
+		listener = new OpenFileListener(this);
+		initialize();
+		listener.setButton(this.getJButton());
+	}
+
+	/**
+	 * Constructor
+	 * @param WIDTH
+	 * Window width
+	 * @param HEIGHT
+	 * Window height
+	 * @param isButtonVisible
+	 * If the open button is visible
+	 */
+	public OpenFileContainer(int WIDTH,int HEIGHT,boolean isButtonVisible){
+		super();
+		this.isButtonVisible = isButtonVisible;
+		this.wComp = WIDTH;
+		this.hComp = HEIGHT;
+		listener = new OpenFileListener(this);
+		initialize();
+		listener.setButton(this.getJButton());
+	}
+
+	/**
+	 * This method initializes this
+	 *
+	 */
+	private void initialize() {
+				GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
+				gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL;
+				gridBagConstraints1.gridx = 1;
+				gridBagConstraints1.gridy = 0;
+				gridBagConstraints1.weightx = 10.0;
+				gridBagConstraints1.insets = new java.awt.Insets(0,2,0,0);
+				GridBagConstraints gridBagConstraints = new GridBagConstraints();
+				gridBagConstraints.insets = new java.awt.Insets(0,0,0,2);
+				gridBagConstraints.gridy = 0;
+				gridBagConstraints.gridx = 0;
+				gridBagConstraints.weightx = 1.0;
+				this.setLayout(new GridBagLayout());
+				this.setSize(new java.awt.Dimension(500,50));
+				this.setBorder(javax.swing.BorderFactory.createTitledBorder(null, Messages.getText("open_file"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
+				this.add(getJButton(), gridBagConstraints);
+				this.add(getTOpen(), gridBagConstraints1);
+
+	}
+
+	/**
+	 * This method initializes jButton
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private JButton getJButton() {
+		if (jButton == null) {
+			jButton = new JButton();
+			jButton.setPreferredSize(new java.awt.Dimension(wButton,hButton));
+			jButton.addActionListener(listener);
+			jButton.setSize(wButton, hButton);
+			jButton.setText(Messages.getText("abrir..."));
+			jButton.setVisible(isButtonVisible);
+			getTOpen().setEnabled(isButtonVisible);
+		}
+		return jButton;
+	}
+
+	/**
+	 * This method initializes jTextField
+	 *
+	 * @return javax.swing.JTextField
+	 */
+	public JTextField getTOpen() {
+		if (tOpen == null) {
+			tOpen = new JTextField();
+			if (isButtonVisible){
+				tOpen.setPreferredSize(new java.awt.Dimension(wText,hButton));
+			}else{
+				tOpen.setPreferredSize(new java.awt.Dimension((int)Math.floor(wComp * 0.95),hButton));
+			}
+		}
+		return tOpen;
+	}
+
+	/**
+	 * Pone el texto que le pasamos como texto del borde del panel.
+	 * @param text
+	 */
+/*
+	public void setBorderText(String text){
+		this.borderText = text;
+	}
+*/
+
+
+	public void setComponentSize(int w, int h){
+		wComp = w;
+		hComp = 55;
+		wText = (int)Math.floor(0.63 * wComp);
+
+		this.setPreferredSize(new java.awt.Dimension(wComp, hComp));
+		if (isButtonVisible){
+			this.getTOpen().setPreferredSize(new java.awt.Dimension(wText, hButton));
+		}else{
+			this.getTOpen().setPreferredSize(new java.awt.Dimension((int)Math.floor(wComp * 0.95), hButton));
+		}
+	}
+
+
+	/**
+	 * Devuelve el file cuya ruta corresponde con el campo de texto.
+	 * @return
+	 */
+	public File getFile(){
+		File fil = null;
+		if(this.getTOpen().getText() != ""){
+			try{
+				fil = new File(this.getTOpen().getText());
+			}catch(Exception exc){
+				System.err.println("Ruta o archivo no v�lido");
+			}
+		}
+		return fil;
+	}
+
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/openfile/OpenFileContainer.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/numberTextField/PositiveNumberField.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/numberTextField/PositiveNumberField.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/numberTextField/PositiveNumberField.java	(revision 38348)
@@ -0,0 +1,75 @@
+package org.gvsig.gui.beans.numberTextField;
+
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.text.ParseException;
+
+/**
+ * <p>Provides a TextField component suitable for numbers. No error is
+ * produced when other characters are introduced, but just numbers are kept
+ * in the field after pressing enter or after focus is lost.</p>
+ * 
+ * <p>The component parses numbers according to the default Locale. For example
+ * when es_ES locale is active, a comma (",") is expected to separate the
+ * fractional part from the integer part, and when en_US is the default locale,
+ * then a dot (".") is expected to separate them.</p>
+ * 
+ * <p>The format of the accepted numbers can be modified by using the
+ *  {@link #getFormat()} method. For example, to get a TextField that accepts
+ *  just integer numbes we would use:</p>
+ *  <pre>
+ *    NumberTextField field = new NumberTextField();
+ *    field.getFormat().setParseIntegerOnly(true);</pre>
+ *  
+ *  <p>In order to get a TextField that accepts double values with a minimum
+ *  of two fractional digits and a maximum of five, we would use:</p>
+ *  <pre>
+ *    NumberTextField field = new NumberTextField();
+ *    field.getFormat().setMinimumFractionDigits(0);
+ *    field.getFormat().setMaximumFractionDigits(5);
+ *  </pre>
+ *  
+ *  <p>NumberTextField commits the value to the Field when the focus is lost,
+ *  while standard JFormattedTextField just commits the value to the Field
+ *  when the user presses ENTER.</p>
+ */
+public class PositiveNumberField extends NumberTextField
+	implements FocusListener{
+
+	private static final long serialVersionUID = 1289959692215502516L;
+
+	public PositiveNumberField() {
+        super();
+        initialize();
+	}
+
+	public PositiveNumberField(int columns) {
+		super(columns);
+		initialize();
+	}
+
+	public PositiveNumberField(double value, int columns) {
+		super(value, columns);
+		initialize();
+	}
+
+	public PositiveNumberField(int value, int columns) {
+		super(value, columns);
+		initialize();
+	}
+
+	private void initialize() {
+		addFocusListener(this);
+		getFormat().setParseIntegerOnly(true);
+		getFormat().setGroupingUsed(false);
+	}
+
+	public void focusLost(FocusEvent e) {
+		try {
+			commitEdit();
+		} catch (ParseException e1) {}
+		if (getIntValue()<0) {
+			setValue(-getIntValue());
+		}
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/numberTextField/PositiveNumberField.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/numberTextField/NumberTextField.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/numberTextField/NumberTextField.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/numberTextField/NumberTextField.java	(revision 38348)
@@ -0,0 +1,203 @@
+package org.gvsig.gui.beans.numberTextField;
+
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.text.NumberFormat;
+import java.text.ParseException;
+
+import javax.swing.JFormattedTextField;
+import javax.swing.JTextField;
+import javax.swing.text.DefaultFormatterFactory;
+import javax.swing.text.NumberFormatter;
+
+/**
+ * <p>Provides a TextField component suitable for numbers. No error is
+ * produced when other characters are introduced, but just numbers are kept
+ * in the field after pressing enter or after focus is lost.</p>
+ * 
+ * <p>The component parses numbers according to the default Locale. For example
+ * when es_ES locale is active, a comma (",") is expected to separate the
+ * fractional part from the integer part, and when en_US is the default locale,
+ * then a dot (".") is expected to separate them.</p>
+ * 
+ * <p>The format of the accepted numbers can be modified by using the
+ *  {@link #getFormat()} method. For example, to get a TextField that accepts
+ *  just integer numbes we would use:</p>
+ *  <pre>
+ *    NumberTextField field = new NumberTextField();
+ *    field.getFormat().setParseIntegerOnly(true);</pre>
+ *  
+ *  <p>In order to get a TextField that accepts double values with a minimum
+ *  of two fractional digits and a maximum of five, we would use:</p>
+ *  <pre>
+ *    NumberTextField field = new NumberTextField();
+ *    field.getFormat().setMinimumFractionDigits(0);
+ *    field.getFormat().setMaximumFractionDigits(5);
+ *  </pre>
+ *  
+ *  <p>NumberTextField commits the value to the Field when the focus is lost,
+ *  while standard JFormattedTextField just commits the value to the Field
+ *  when the user presses ENTER.</p>
+ */
+public class NumberTextField extends JFormattedTextField
+	implements FocusListener{
+	private static final long serialVersionUID = 1045806433744300963L;
+	private NumberFormat format;
+
+	public NumberTextField() {
+        super();
+        format = NumberFormat.getInstance();
+        setFormatterFactory(new DefaultFormatterFactory(new NumberFormatter(
+                (NumberFormat)format)));
+		initialize();
+	}
+	
+	public NumberTextField(int columns) {
+		this();
+		setColumns(columns);
+	}
+
+	public NumberTextField(double value, int columns) {
+		this();
+		setColumns(columns);
+		super.setValue(new Double(value));
+	}
+
+	public NumberTextField(int value, int columns) {
+		this();
+		setColumns(columns);
+		super.setValue(new Integer(value));
+	}
+
+	/**
+	 * <p>Gets the NumberFormat accepted by this text field. It can be
+	 * used to change the format accepted by this text field.</p>
+	 * 
+	 * <p>Examples:</p>
+	 * 
+	 * <ul>
+	 * <li>To accept numbers with 0 to 5 fraction digits (as 2, 2.232, 6.23211):
+	 * <pre>
+	 *   getFormat().setMinimumFractionDigits(0);
+	 *   getFormat().setMaximumFractionDigits(5);</pre></li>
+	 * <li>To accept numbers with exactly two fraction digits (as 76.23, 12.00):
+	 * <pre>
+	 *   getFormat().setMinimumFractionDigits(2);
+	 *   getFormat().setMaximumFractionDigits(2);</pre></li>
+	 * <li>To accept just integer numbers (as 23, 5542, 0):
+	 * <pre>
+	 *   getFormat().setParseIntegerOnly(true);</pre></li>
+	 * <li>To enable digit grouping (enabled by default):
+	 * <pre>
+	 *   getFormat().setGroupingUsed(true);</pre></li></ul>
+	 * <p>Note: digit grouping enabled means to display 2534313.23 as
+	 * 2,534,313.23</p> 
+	 * 
+	 * @return
+	 */
+	public NumberFormat getFormat() {
+		return format;
+	}
+	
+	private void initialize() {
+		addFocusListener(this);
+		setHorizontalAlignment(JTextField.RIGHT);
+	}
+	
+	/**
+	 * <p>Sets the value of this TextField as a
+	 * <code>double</code> primitive type.</p>
+	 * 
+	 */
+	public void setValue(double value) {
+		setValue(new Double(value));
+	}
+
+	/**
+	 * <p>Sets the value of this TextField as an
+	 * <code>int</code> primitive type.</p>
+	 */
+	public void setValue(int value) {
+		setValue(new Integer(value));
+	}
+
+	/**
+	 * <p>Sets the value of this TextField as a
+	 * <code>long</code> primitive type.</p>
+	 * 
+	 */
+	public void setValue(long value) {
+		setValue(new Long(value));
+	}
+
+	/**
+	 * <p>Gets the value of this TextField as a
+	 * <code>double</code> primitive type.</p>
+	 * 
+	 * @return The value as a <code>double</code>
+	 */
+	public double getDoubleValue() {
+		Object value = getValue();
+		if (value instanceof Double) {
+			return ((Double)value).doubleValue();
+		}
+		else if (value instanceof Long) {
+			return ((Long)value).doubleValue();
+		}
+		else if (value instanceof Integer) {
+			return ((Integer)value).doubleValue();
+		}
+		else
+			return 0;
+	}
+
+	/**
+	 * <p>Gets the value of this TextField as an
+	 * <code>int</code> primitive type.</p>
+	 * 
+	 * @return The value as an <code>int</code>
+	 */
+	public int getIntValue() {
+		Object value = getValue();
+		if (value instanceof Long) {
+			return ((Long)value).intValue();
+		}
+		else if (value instanceof Double) {
+			return ((Double)value).intValue();
+		}
+		else if (value instanceof Integer) {
+			return ((Integer)value).intValue();
+		}
+		else
+			return 0;
+	}
+
+	/**
+	 * <p>Gets the value of this TextField as a
+	 * <code>long</code> primitive type.</p>
+	 * 
+	 * @return The value as a <code>long</code>
+	 */
+	public long getLongValue() {
+		Object value = getValue();
+		if (value instanceof Long) {
+			return ((Long)value).longValue();
+		}
+		else if (value instanceof Double) {
+			return ((Double)value).longValue();
+		}
+		else if (value instanceof Integer) {
+			return ((Integer)value).longValue();
+		}
+		else
+			return 0;
+	}
+
+	public void focusGained(FocusEvent e) {}
+
+	public void focusLost(FocusEvent e) {
+		try {
+			commitEdit();
+		} catch (ParseException e1) {}
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/numberTextField/NumberTextField.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/IEditableText.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/IEditableText.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/IEditableText.java	(revision 38348)
@@ -0,0 +1,77 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.editabletextcomponent;
+
+import javax.swing.text.JTextComponent;
+
+import org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener;
+
+/**
+ * <p>All graphical components which inherit from {@link JTextComponent JTextComponent}
+ *  can enhance their functionality with graphical edition options support implementing
+ *  this interface.</p>
+ * 
+ * @version 03/01/2008
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public interface IEditableText {
+	/**
+     * Sets the limit of actions that can hold the UndoManager of this component.
+     * 
+     * @param limit sets the limit of actions that can hold
+     */
+	public void setUndoRedoLimitActions(int limit);
+
+	/**
+     * Gets the limit of actions that can hold the UndoManager.
+     * 
+     * @return int limit of actions that can hold
+     */
+	public int getUndoRedoLimitActions();
+	
+	/**
+     * Adds a listener for notification of an <i>undo</i> or <i>redo</i> operation executed.
+     *
+     * @param listener the listener to be added
+     * @see javax.swing.event.UndoRedoEditEvent
+     */
+    public void addUndoRedoEditListener(UndoRedoEditListener listener);
+
+    /**
+     * Removes a listener for notification of an <i>undo</i> or <i>redo</i> operation executed.
+     *
+     * @param listener the listener to be removed
+     * @see javax.swing.event.UndoRedoEditEvent
+     */
+    public void removeUndoRedoEditListener(UndoRedoEditListener listener);
+
+    /**
+     * Returns an array of all the <code>UndoRedoEditListener</code>
+     * registered on this text component.
+     *
+     * @return all of this component's <code>UndoRedoEditListener</code>s 
+     *         or an empty
+     *         array if no listeners of that kind are currently registered
+     *
+     * @see #addUndoRedoEditListener
+     * @see #removeUndoRedoEditListener
+     */
+    public UndoRedoEditListener[] getUndoRedoEditListeners();
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/JEditableTextField.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/JEditableTextField.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/JEditableTextField.java	(revision 38348)
@@ -0,0 +1,154 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.editabletextcomponent;
+
+import javax.swing.JTextField;
+import javax.swing.text.Document;
+
+import org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener;
+
+/**
+ * <p>Text field with options to edit its text easily.</p>
+ * 
+ * @see JTextField
+ * 
+ * @version 03/01/2008
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class JEditableTextField extends JTextField implements IEditableText {
+	private static final long serialVersionUID = 5504131442718795532L;
+
+	// REFERENCE TO THE TEXT EDITOR DECORATOR
+	private EditableTextDecorator editableTextDecorator;
+	// END REFERENCE TO THE TEXT EDITOR DECORATOR
+
+	/**
+	 * @see JTextField#JTextField()
+	 */
+	public JEditableTextField() {
+		super();
+		
+		initialize();
+	}
+
+	/**
+	 * @see JTextField#JTextField(Document, String, int)
+	 */
+	public JEditableTextField(Document doc, String text, int columns) {
+		super(doc, text, columns);
+		
+		initialize();
+	}
+
+	/**
+	 * @see JTextField#JTextField(int)
+	 */
+	public JEditableTextField(int columns) {
+		super(columns);
+		
+		initialize();
+	}
+
+	/**
+	 * @see JTextField#JTextField(String, int)
+	 */
+	public JEditableTextField(String text, int columns) {
+		super(text, columns);
+		
+		initialize();
+	}
+
+	/**
+	 * @see JTextField#JTextField(String)
+	 */
+	public JEditableTextField(String text) {
+		super(text);
+		
+		initialize();
+	}
+
+	/**
+	 * <p>Fits this component to be ready to be used.</p>
+	 */
+	protected void initialize() {
+		editableTextDecorator = new EditableTextDecorator(this);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#getUndoRedoLimitActions()
+	 */
+	public int getUndoRedoLimitActions() {
+		return editableTextDecorator.getUndoRedoLimitActions();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#setUndoRedoLimitActions(int)
+	 */
+	public void setUndoRedoLimitActions(int limit) {
+		editableTextDecorator.setUndoRedoLimitActions(limit);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#addUndoRedoEditListener(org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener)
+	 */
+	public void addUndoRedoEditListener(UndoRedoEditListener listener) {
+		editableTextDecorator.addUndoRedoEditListener(listener);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#getUndoRedoEditListeners()
+	 */
+	public UndoRedoEditListener[] getUndoRedoEditListeners() {
+		return editableTextDecorator.getUndoRedoEditListeners();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#removeUndoRedoEditListener(org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener)
+	 */
+	public void removeUndoRedoEditListener(UndoRedoEditListener listener) {
+		editableTextDecorator.removeUndoRedoEditListener(listener);
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/EditableTextDecorator.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/EditableTextDecorator.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/EditableTextDecorator.java	(revision 38348)
@@ -0,0 +1,525 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.beans.editabletextcomponent;
+
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+
+import javax.swing.ComboBoxEditor;
+import javax.swing.event.EventListenerList;
+import javax.swing.event.UndoableEditEvent;
+import javax.swing.event.UndoableEditListener;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.JTextComponent;
+import javax.swing.text.PlainDocument;
+import javax.swing.undo.CannotRedoException;
+import javax.swing.undo.CannotUndoException;
+import javax.swing.undo.UndoManager;
+
+import org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditEvent;
+import org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener;
+import org.gvsig.gui.beans.editionpopupmenu.JOptionsEditionByMousePopupMenu;
+
+/**
+ * <p>Extra functionality that allows a {@link JTextComponent JTextComponent} having graphical edition options,
+ * which allows user to select any: <i>COPY, CUT, PASTE, SELECT ALL, REMOVE, UNDO, REDO</i> in a popup menu.</p>
+ * 
+ * <p>All options will be about the edition of the text in the component.</p>
+ *  
+ * <p><b><i>How select an edition option using the mouse:</i></b> press the right button of the mouse on the text area, and a popup with the options will be displayed. Select and option.<br>
+ * <b><i>Default fast-access keys:</i></b> 
+ * <ul>
+ *  <li><b>COPY:</b> </li> CTRL + C. Copies from the text field to the clipboard.
+ *  <li><b>CUT:</b> </li> CTRL + X. Cuts from the text field to the clipboad.
+ *  <li><b>PASTE:</b> </li> CTRL + V. Copies from the clipboard to the text field.
+ *  <li><b>REMOVE:</b> </li> SUPR (in spanish keyboard, and the equivalent in others). Removes the selected text.
+ *  <li><b>SELECT ALL:</b> </li> CTRL + A. Selects all the text.
+ *  <li><b>UNDO:</b> </li> CTRL + Z. Undoes.
+ *  <li><b>REDO:</b> </li> SHIFT + CTRL + Z. Redoes.
+ * </ul></p>
+ * 
+ * <p>This component by default stores 100 undo/redo actions. This value can be modified.</p>
+ * 
+ * <p>A developer would have to re-implement {@linkplain #defineEditorKeyListener() #defineEditorKeyListener()}, creating
+ *  a new <code>editorKeyListener</code> for changing any fast-access key.</p>
+ * 
+ * @version 27/02/2008
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class EditableTextDecorator implements IEditableText {
+	// CONSTANTS
+	public static final int DEFAULT_UNDO_REDO_LIMIT_ACTIONS = 100;
+	// END CONSTANTS
+
+	// A POPUPMENU FOR EDITION OPTIONS
+	private JOptionsEditionByMousePopupMenu optionsEditionByMouse;
+    // END A POPUPMENU FOR EDITION OPTIONS
+	
+	// UNDO-REDO
+	private UndoManager undoManager;
+	private int undoRedoLimitActions;
+	// END UNDO-REDO
+	
+	// LISTENERS
+	protected KeyListener editorKeyListener;
+	private MouseAdapter editorMouseListener;
+	private PropertyChangeListener editionMenuListener;
+	private EventListenerList undoRedoEditListeners;
+	// END LISTENERS
+	
+	// REFERENCE TO THE JTEXTCOMPONENT
+	private JTextComponent jTextComponent;
+	// END REFERENCE TO THE JTEXTCOMPONENT
+	
+	/**
+	 * Default constructor
+	 */
+	public EditableTextDecorator(JTextComponent jTextComponent) {
+		super();
+
+		// Reference to the JTextComponent
+		this.jTextComponent = jTextComponent;
+		
+		initialize();
+		
+		// Other configuration tasks
+		this.createDefaultListeners();
+		this.configure();
+	}
+	
+	/**
+	 * This method sets the start values of inner attributes and creates the necessary inner objects
+	 */
+	private void initialize() {
+		undoRedoEditListeners = new EventListenerList();
+		
+        // Allows user to edit
+		jTextComponent.setEditable(true);
+		
+		// Text options edition popupmenu initialization
+		optionsEditionByMouse = new JOptionsEditionByMousePopupMenu();
+		
+		// Undo-Redo initialization
+		undoManager = new UndoManager();
+		undoRedoLimitActions = DEFAULT_UNDO_REDO_LIMIT_ACTIONS; // By default is 1
+		undoManager.setLimit(undoRedoLimitActions);
+	}
+	
+	/**
+	 * Creation of default listeners that will use the component
+	 */
+	private void createDefaultListeners() {
+		// Defines a listener for the PopupMenu of text edition options: when a change is produced in that component, it fires an event
+		//   and this listener captures it
+		defineEditionMenuPropertyChangeListener();
+
+        // Defines a key listener for the editor of this component
+        defineEditorKeyListener();
+
+        // Defines a mouse listener for the editor of this component
+        defineEditorMouseListener();
+	}
+	
+	/**
+	 * Defines a listener for the PopupMenu of text edition options: when a change is produced in that component, it fires an event
+	 *    and this listener captures and treats it
+	 */
+	private void defineEditionMenuPropertyChangeListener() {
+		editionMenuListener = new PropertyChangeListener() {
+			/*
+			 * (non-Javadoc)
+			 * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
+			 */
+			public void propertyChange(PropertyChangeEvent arg0) {
+				if (arg0.getPropertyName().equals(JOptionsEditionByMousePopupMenu.SELECTEDOPTION)) {
+	            						
+			          switch(Integer.parseInt(arg0.getNewValue().toString()))
+			          {
+				          case JOptionsEditionByMousePopupMenu.UNDO:
+				        	  undoOperationLogic();
+				        	  break;
+				          case JOptionsEditionByMousePopupMenu.REDO:
+				        	  redoOperationLogic();
+				        	  break;
+				          case JOptionsEditionByMousePopupMenu.CUT:
+				        	  jTextComponent.cut();
+				        	  break;
+				          case JOptionsEditionByMousePopupMenu.COPY:
+				        	  jTextComponent.copy();
+				        	  break;
+				          case JOptionsEditionByMousePopupMenu.PASTE:
+				        	  jTextComponent.paste();
+				        	  break;
+				          case JOptionsEditionByMousePopupMenu.DELETE:
+				        	  deleteTextLogic();
+				        	  break;
+				          case JOptionsEditionByMousePopupMenu.SELECT_ALL:
+				        	  jTextComponent.selectAll();
+				        	  break;
+				          default: // do anything
+			          }
+				}
+/*
+				else
+				{
+					if (arg0.getPropertyName().equals(JOptionsEditionByMousePopupMenu.VISIBILITYCHANGED))
+					{
+						// First True, after False (when false -> optionsEditorWasVisible = true)
+						if (!optionsEditionByMouse.isVisible())
+							optionsEditorWasVisible = true;
+						else
+							optionsEditorWasVisible = false;
+
+					}
+				}
+*/
+			}			
+		};
+	}
+
+	/**
+	 * Defines a key listener for the editor of the text component.
+	 */
+	protected void defineEditorKeyListener() {
+		editorKeyListener = new KeyAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * @see java.awt.event.KeyAdapter#keyPressed(java.awt.event.KeyEvent)
+			 */
+			public void keyPressed(KeyEvent ke)  // Executed on the Start view state or Search view state
+			{
+				// COPY, CUT, PASTE, SELECT ALL, UNDO AND REDO WITH THE KEYBOARD (Combination of keys; REMOVE is implemented after: KV_DELETE (supr spanish key))
+				if (ke.isControlDown())
+				{
+					// COPY
+				    if (ke.getKeyCode() == KeyEvent.VK_C) {
+				    	jTextComponent.copy();
+				    	ke.consume();
+				    	return;
+				    }
+				    
+				    // CUT
+				    if (ke.getKeyCode() == KeyEvent.VK_X) {
+				    	jTextComponent.cut();
+				    	ke.consume();
+				    	return;
+				    }
+				    
+				    // PASTE
+				    if (ke.getKeyCode() == KeyEvent.VK_V) {
+				    	jTextComponent.paste();
+				    	ke.consume();
+				    	return;
+				    }
+				    
+				    // SELECT ALL
+				    if (ke.getKeyCode() == KeyEvent.VK_A) {
+				    	jTextComponent.selectAll();
+				    	ke.consume();
+				    	return;
+				    }
+
+				    // UNDO OR REDO
+				    if (ke.getKeyCode() == KeyEvent.VK_Z) {
+				    	if (ke.isShiftDown()) // REDO
+				    		redoOperationLogic();					    		
+				    	else //UNDO
+				    		undoOperationLogic();
+				    	
+				    	ke.consume();
+				    	return;
+			 	    }
+				}
+				
+				// According the key pressed, do some actions or others
+				switch (ke.getKeyCode())
+				{
+					case KeyEvent.VK_DELETE : // 'supr' key in spanish keyboard
+						deleteTextLogic();
+						ke.consume();
+					break;
+				}
+			}
+		};
+	}
+
+	/**
+	 * Defines a mouse listener for the editor of the text component.
+	 */
+	private void defineEditorMouseListener() {
+		editorMouseListener = new MouseAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+			 */
+			public void mouseClicked(MouseEvent e) {
+	
+				if (e.getButton() == MouseEvent.BUTTON3) {	            	
+	            	// By default disable all options
+	            	optionsEditionByMouse.setEnabledAllOptions(false);
+	            	
+	            	// Enable the "Undo" option if there is any previous state to restore
+	            	if (undoManager.canUndo())
+	            		optionsEditionByMouse.setEnabledUndoOption(true);
+	            	
+	            	// Enable the "Redo" option if there is any later state to restore
+	            	if (undoManager.canRedo())
+	            		optionsEditionByMouse.setEnabledRedoOption(true);
+	            	
+	            	// Enable the "Copy", "Cut" and "Delete" options if there is text selected
+	            	if (jTextComponent.getCaretPosition() != jTextComponent.getCaret().getMark())
+	            	{
+	            		optionsEditionByMouse.setEnabledCopyOption(true);
+	            		optionsEditionByMouse.setEnabledCutOption(true);
+	            		optionsEditionByMouse.setEnabledDeleteOption(true);
+	            	}
+	            	
+	            	// Enable the "Paste" option if there is text on the system's clipboard
+	            	if ( jTextComponent.getToolkit().getSystemClipboard().getContents(this).toString().length() > 0 )
+	            		optionsEditionByMouse.setEnabledPasteOption(true);//
+	            	
+	            	// Enable the "Select-All" option (by default it's always enabled)
+	            	optionsEditionByMouse.setEnabledSelectAllOption(true);
+	            	
+					optionsEditionByMouse.setLocation((int)jTextComponent.getLocationOnScreen().getX() + e.getX(), (int)jTextComponent.getLocationOnScreen().getY() + e.getY());
+	            	optionsEditionByMouse.setInvoker(jTextComponent);
+	            	optionsEditionByMouse.setVisible(true);
+	            }
+	        }
+		};
+	}
+	
+	/**
+	 * Configures the component and some of its parts
+	 */
+	private void configure() {
+		// Configures the document of the editor of this component
+		PlainDocument document = this.configureDocument();
+
+		// Configures the editor (ComboBoxEditor) of this component
+		configureEditor(document);
+		
+		// Configures the text-edition-options popupmenu
+		configureOptionsEditionByMouse();
+	}
+
+	/**
+	 * Configures the document of the editor of the text component
+	 */
+	private PlainDocument configureDocument() {
+		// Creates the document of the editor of this component
+		PlainDocument document = new PlainDocument();
+        
+		// Configures the document
+		configureUndoManager(document);
+		
+		return document;
+	}
+	
+	/**
+	 * Configures the editor {@link ComboBoxEditor ComboBoxEditor} of the text component.
+	 * 
+	 * @param document the document to display/edit
+	 */
+	private void configureEditor(PlainDocument document) {
+        if (jTextComponent != null) {
+           	// Removes some previous listeners and adds some new others:     
+        	
+        	// Adds the new Key Listener (tries to remove it if it existed before)
+        	jTextComponent.removeKeyListener(this.editorKeyListener);
+        	jTextComponent.addKeyListener(this.editorKeyListener);
+        	
+           	// Adds the new Mouse Listener (tries to remove it if it existed before)
+        	jTextComponent.removeMouseListener(this.editorMouseListener);
+        	jTextComponent.addMouseListener(this.editorMouseListener);
+        	
+        	// Adds the new document (tries to remove it if it existed before)
+        	jTextComponent.setDocument(document);
+        }
+	}
+
+	/** 
+	 * Configures the text-edition-options popup menu.
+	 */
+	private void configureOptionsEditionByMouse() {
+		this.optionsEditionByMouse.addPropertyChangeListener(editionMenuListener);
+	}
+	
+	/**
+	 * Configures the UndoManager for Undo-Redo operations.
+	 */
+	private void configureUndoManager(PlainDocument document) {
+        // Listen for undo and redo events
+        document.addUndoableEditListener(new UndoableEditListener() {
+        	/*
+        	 * (non-Javadoc)
+        	 * @see javax.swing.event.UndoableEditListener#undoableEditHappened(javax.swing.event.UndoableEditEvent)
+        	 */
+            public void undoableEditHappened(UndoableEditEvent evt) {
+            	undoManager.addEdit(evt.getEdit());
+            }
+        });
+	}
+	
+	/**
+	 * This method has the logic for a "undo" operation.
+	 */
+	private void undoOperationLogic() {
+		try {
+            if (undoManager.canUndo()) {
+            	String previousText = jTextComponent.getText();
+            	undoManager.undo();
+         	   	String newText = jTextComponent.getText();
+         	   	fireUndoRedoEditUpdate(new UndoRedoEditEvent(jTextComponent, UndoRedoEditEvent.UNDO, previousText, newText));
+            }
+		} catch (CannotUndoException e) {
+        	e.printStackTrace();
+        }
+	}
+	
+	/**
+	 * This method has the logic for a "redo" operation.
+	 */
+	private void redoOperationLogic() {
+        try {
+            if (undoManager.canRedo()) {
+            	String previousText = jTextComponent.getText();
+         	   	undoManager.redo();
+         	   	String newText = jTextComponent.getText();
+         	   	fireUndoRedoEditUpdate(new UndoRedoEditEvent(jTextComponent, UndoRedoEditEvent.REDO, previousText, newText));
+            }
+	    } catch (CannotRedoException e) {
+	    	e.printStackTrace();
+	    }
+	}
+
+	////// OTHER METHODS //////
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#setUndoRedoLimitActions(int)
+	 */
+	public void setUndoRedoLimitActions(int limit) {
+    	this.undoRedoLimitActions = limit;
+    	undoManager.setLimit(undoRedoLimitActions);
+    }
+    
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#getUndoRedoLimitActions()
+	 */
+	public int getUndoRedoLimitActions() {
+    	return this.undoRedoLimitActions;
+    }
+     
+	/**
+	 * This method is invoked when some text has to be removed: With the 'Delete' option of the text-edition-popupmenu or with the 'delete' ('supr'
+	 *    in spanish keyboard) key.
+	 */
+	private void deleteTextLogic() {
+		//		 Get the new text:		
+	  	try {
+	  		PlainDocument document = (PlainDocument)jTextComponent.getDocument();
+	  		int caretPosition = jTextComponent.getCaretPosition();
+	  		int markPosition = jTextComponent.getCaret().getMark();
+	  		  
+	  		int min_index = Math.min(caretPosition, markPosition);
+	  		int length = Math.abs(caretPosition - markPosition);
+	  		  
+	  		document.remove(min_index, length);
+	  	} catch (BadLocationException e) {
+	  		e.printStackTrace();
+	  	}
+	}
+	
+   /*
+    * (non-Javadoc)
+    * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#addUndoRedoEditListener(org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener)
+    */
+    public void addUndoRedoEditListener(UndoRedoEditListener listener) {
+    	undoRedoEditListeners.add(UndoRedoEditListener.class, listener);
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#removeCaretListener(org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener)
+     */
+    public void removeUndoRedoEditListener(UndoRedoEditListener listener) {
+    	undoRedoEditListeners.remove(UndoRedoEditListener.class, listener);
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#getUndoRedoEditListeners()
+     */
+    public UndoRedoEditListener[] getUndoRedoEditListeners() {
+        return (UndoRedoEditListener[])undoRedoEditListeners.getListeners(UndoRedoEditListener.class);
+    }
+    
+    /**
+     * Notifies all listeners that have registered interest for
+     * notification on this event type.  The event instance 
+     * is lazily created using the parameters passed into 
+     * the fire method.  The listener list is processed in a
+     * last-to-first manner.
+     *
+     * @param e the event
+     * @see EventListenerList
+     */
+    protected void fireUndoRedoEditUpdate(UndoRedoEditEvent e) {
+        // Guaranteed to return a non-null array
+        Object[] listeners = undoRedoEditListeners.getListenerList();
+        
+    	if (listeners != null) {
+    	    for (int i = 1; i < listeners.length; i+=2) {
+    	    	if (listeners[i] instanceof UndoRedoEditListener) {
+                  ((UndoRedoEditListener)listeners[i]).operationExecuted(e);
+              }
+    	    }
+    	}
+    }
+    ////// END OTHER METHODS //////
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/JEditableTextArea.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/JEditableTextArea.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/JEditableTextArea.java	(revision 38348)
@@ -0,0 +1,142 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.editabletextcomponent;
+
+import javax.swing.JTextArea;
+import javax.swing.text.Document;
+
+import org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener;
+
+/**
+ * <p>Text area with options to edit its text easily.</p>
+ * 
+ * @see JTextArea
+ * 
+ * @version 03/01/2008
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class JEditableTextArea extends JTextArea implements IEditableText {
+	private static final long serialVersionUID = -8094155271679157582L;
+
+	// REFERENCE TO THE TEXT EDITOR DECORATOR
+	private EditableTextDecorator editableTextDecorator;
+	// END REFERENCE TO THE TEXT EDITOR DECORATOR
+	
+	/**
+	 * @see JEditableTextArea#JEditableTextArea()
+	 */
+	public JEditableTextArea() {
+		super();
+		
+		initialize();
+	}
+
+	/**
+	 * @see JEditableTextArea#JEditableTextArea(Document, String, int, int)
+	 */
+	public JEditableTextArea(Document doc, String text, int rows, int columns) {
+		super(doc, text, rows, columns);
+		
+		initialize();
+	}
+
+	/**
+	 * @see JEditableTextArea#JEditableTextArea(Document)
+	 */
+	public JEditableTextArea(Document doc) {
+		super(doc);
+		
+		initialize();
+	}
+
+	/**
+	 * @see JEditableTextArea#JEditableTextArea(int, int)
+	 */
+	public JEditableTextArea(int rows, int columns) {
+		super(rows, columns);
+		
+		initialize();
+	}
+
+	/**
+	 * @see JEditableTextArea#JEditableTextArea(String, int, int)
+	 */
+	public JEditableTextArea(String text, int rows, int columns) {
+		super(text, rows, columns);
+		
+		initialize();
+	}
+
+	/**
+	 * @see JEditableTextArea#JEditableTextArea(String)
+	 */
+	public JEditableTextArea(String text) {
+		super(text);
+		
+		initialize();
+	}
+
+	/**
+	 * <p>Fits this component to be ready to be used.</p>
+	 */
+	protected void initialize() {
+		editableTextDecorator = new EditableTextDecorator(this);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#getUndoRedoLimitActions()
+	 */
+	public int getUndoRedoLimitActions() {
+		return editableTextDecorator.getUndoRedoLimitActions();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#setUndoRedoLimitActions(int)
+	 */
+	public void setUndoRedoLimitActions(int limit) {
+		editableTextDecorator.setUndoRedoLimitActions(limit);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#addUndoRedoEditListener(org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener)
+	 */
+	public void addUndoRedoEditListener(UndoRedoEditListener listener) {
+		editableTextDecorator.addUndoRedoEditListener(listener);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#getUndoRedoEditListeners()
+	 */
+	public UndoRedoEditListener[] getUndoRedoEditListeners() {
+		return editableTextDecorator.getUndoRedoEditListeners();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.editabletextcomponent.IEditableText#removeUndoRedoEditListener(org.gvsig.gui.beans.editabletextcomponent.event.UndoRedoEditListener)
+	 */
+	public void removeUndoRedoEditListener(UndoRedoEditListener listener) {
+		editableTextDecorator.removeUndoRedoEditListener(listener);
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/event/UndoRedoEditListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/event/UndoRedoEditListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/event/UndoRedoEditListener.java	(revision 38348)
@@ -0,0 +1,45 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.editabletextcomponent.event;
+
+import java.util.EventListener;
+
+/**
+ * <p>The listener interface for receiving events from undo or redo operations on a text edition.</p>
+ * 
+ * <p>The listener object created from that class is then registered with a
+ * component using the component's <code>addUndoRedoEditListener</code> 
+ * method. An event of this kind of operations is generated when an <code>EditableTextDecorator</code>
+ * executes an <code>undo</code> or <code>redo</code> operation. The relevant method in the listener 
+ * object is then invoked, and the <code>UndoRedoEditEvent</code> is passed to it.</p>
+ * 
+ * @see UndoRedoEditEvent
+ * 
+ * @version 12/02/2008
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public interface UndoRedoEditListener extends EventListener {
+    /**
+     * Invoked when an <i>undo</i> or <i>redo</i> operation has been executed.
+     * See the class description for {@link UndoRedoEditEvent UndoRedoEditEvent} for a notification of 
+     * an <i>undo</i> or <i>redo</i> operation executed on an editable text component.
+     */
+    public void operationExecuted(UndoRedoEditEvent e);
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/event/UndoRedoEditEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/event/UndoRedoEditEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editabletextcomponent/event/UndoRedoEditEvent.java	(revision 38348)
@@ -0,0 +1,92 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.editabletextcomponent.event;
+
+
+/**
+ * <p>An event indicating the kind of operation occurred: undo or redo.</p>
+ * 
+ * @version 12/02/2008
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class UndoRedoEditEvent extends java.util.EventObject {
+	public static final short UNDO = 0;
+	public static final short REDO = 1;
+
+	protected transient short myType;
+	protected transient String myOldText;
+	protected transient String myNewText;
+	
+    /**
+     * Constructs an UndoableEditEvent object.
+     *
+     * @param source  the Object that originated the event
+     *                (typically <code>this</code>)
+     * @param type    type of operation done <i>(undo or redo)</i>
+     * @param oldText text before the operation
+     * @param newText text after the operation
+     */
+    public UndoRedoEditEvent(Object source, short type, String oldText, String newText) {
+    	super(source);
+    	myType = type;
+    	myOldText = oldText;
+    	myNewText = newText;
+    }
+    
+    /**
+     * Returns the edit operation identifier value.
+     *
+     * @return the UndoableEdit object encapsulating the edit
+     */
+    public short getType() {
+    	return myType;
+    }
+    
+    /**
+     * Returns the previous text.
+     *
+     * @return the previous text
+     */
+    public String getOldText() {
+    	return myOldText;
+    }
+    
+    /**
+     * Returns the new text.
+     *
+     * @return the new text
+     */
+    public String getNewText() {
+    	return myNewText;
+    }
+
+    /**
+     * Returns a <code>String</code> representation of this <code>UndoRedoEditEvent</code>.
+     *
+     * @return a <code>String</code> representation of this <code>UndoRedoEditEvent</code>
+     */
+    public String toString() {
+        return getClass().getName() + "[source=" + source +
+        ",myType=" + myType +
+    	",myOldText=" + myOldText +
+    	",myNewText=" + myNewText +
+        "]" ;
+    }
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/MultiLineToolTip.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/MultiLineToolTip.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/MultiLineToolTip.java	(revision 38348)
@@ -0,0 +1,104 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.controls;
+
+import java.awt.Dimension;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Enumeration;
+import java.util.Vector;
+
+import javax.swing.JComponent;
+import javax.swing.JToolTip;
+import javax.swing.SwingUtilities;
+import javax.swing.plaf.metal.MetalToolTipUI;
+/**
+ * <p>
+ * Allows using more than one line length tooltips. It also automatically
+ * calculates the size of the screen rectangle used and the preferred sized up
+ * on the contained text. It does NOT format the text to fit within a given
+ * size. The user must provide the text as she/he wishes to show it.
+ * </p>
+ * <p>
+ * It means that new line characters must be placed in the string as well as it
+ * was a System.out.println statement.
+ * </p>
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ */
+public class MultiLineToolTip extends JToolTip {
+	private static final long serialVersionUID = -3727623742187461577L;
+
+	public MultiLineToolTip() {
+		setUI(new MultiLineToolTipUI());
+	}
+
+	private class MultiLineToolTipUI extends MetalToolTipUI {
+		private String[] strs;
+
+		public void paint(Graphics g, JComponent c) {
+			FontMetrics metrics = g.getFontMetrics();
+			Dimension size = c.getSize();
+			g.setColor(c.getBackground());
+			g.fillRect(0, 0, size.width, size.height);
+			g.setColor(c.getForeground());
+			if (strs != null) {
+				for (int i = 0; i < strs.length; i++) {
+					g.drawString(strs[i], 3, (metrics.getHeight()) * (i + 1));
+				}
+			}
+		}
+
+		public Dimension getPreferredSize(JComponent c) {
+			FontMetrics metrics = c.getFontMetrics(c.getFont());
+			String tipText = ((JToolTip) c).getTipText();
+			if (tipText == null) {
+				tipText = "";
+			}
+			BufferedReader br = new BufferedReader(new StringReader(tipText));
+			String line;
+			int _maxWidth = 0;
+			Vector v = new Vector();
+			try {
+				while ((line = br.readLine()) != null) {
+					int width = SwingUtilities.computeStringWidth(metrics, line);
+					_maxWidth = (_maxWidth < width) ? width : _maxWidth;
+					v.addElement(line);
+				}
+			} catch (IOException ex) {
+				ex.printStackTrace();
+			}
+			int lines = v.size();
+			if (lines < 1) {
+				strs = null;
+				lines = 1;
+			} else {
+				strs = new String[lines];
+				int i = 0;
+				for (Enumeration e = v.elements(); e.hasMoreElements(); i++) {
+					strs[i] = (String) e.nextElement();
+				}
+			}
+			int height = metrics.getHeight() * lines;
+			return new Dimension(_maxWidth + 6, height + 4);
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/MultiLineToolTip.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/label/Label.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/label/Label.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/label/Label.java	(revision 38348)
@@ -0,0 +1,85 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+package org.gvsig.gui.beans.controls.label;
+
+import java.awt.event.ActionListener;
+
+import javax.swing.JLabel;
+
+import org.gvsig.gui.beans.controls.IControl;
+
+/**
+ * @author Cesar Martinez Izquierdo <cesar.martinez@iver.es>
+ *
+ */
+public class Label extends JLabel implements IControl {
+	private static final long serialVersionUID = 1L;
+
+
+	/* (non-Javadoc)
+	 * @see org.gvsig.gui.beans.controls.IControl#addActionListener(java.awt.event.ActionListener)
+	 */
+	public void addActionListener(ActionListener listener) {
+		// Labels doesn't have any action, so we discard actionListeners
+	}
+
+	/* (non-Javadoc)
+	 * @see org.gvsig.gui.beans.controls.IControl#removeActionListener(java.awt.event.ActionListener)
+	 */
+	public void removeActionListener(ActionListener listener) {
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.gvsig.gui.beans.controls.IControl#setValue(java.lang.Object)
+	 */
+	public Object setValue(Object value) {
+		try {
+			String text = (String) value;
+			setText(text);
+			return text;
+		}
+		catch (ClassCastException ex) {
+			return null;
+		}
+	}
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/label/Label.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDTable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDTable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDTable.java	(revision 38348)
@@ -0,0 +1,348 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id$
+* $Log$
+* Revision 1.3  2007-09-12 16:28:23  bsanchez
+* *** empty log message ***
+*
+* Revision 1.2  2007/08/21 09:56:44  bsanchez
+* - Variable no usada
+*
+* Revision 1.1  2007/08/20 08:34:46  evercher
+* He fusionado LibUI con LibUIComponents
+*
+* Revision 1.1  2006/09/21 16:35:12  jaume
+* *** empty log message ***
+*
+*
+*/
+package org.gvsig.gui.beans.controls.dnd;
+
+import java.awt.Component;
+import java.awt.Point;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragGestureListener;
+import java.awt.dnd.DragSource;
+import java.awt.dnd.DragSourceDragEvent;
+import java.awt.dnd.DragSourceDropEvent;
+import java.awt.dnd.DragSourceEvent;
+import java.awt.dnd.DragSourceListener;
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.DropTargetDragEvent;
+import java.awt.dnd.DropTargetDropEvent;
+import java.awt.dnd.DropTargetEvent;
+import java.awt.dnd.DropTargetListener;
+import java.awt.geom.Point2D;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import javax.swing.JTable;
+import javax.swing.table.TableCellRenderer;
+/**
+ * Preten ser una taula que accepte arrossegar i soltar. Ja mou coses i aix�
+ * per� encara est� en proves.
+ *
+ * La intenci� �s que pugues moure columnes, per� una volta posats, que moga
+ * l�nies i cel�les lliurement.
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ *
+ */
+public class JDnDTable extends JTable implements DragSourceListener,
+								DragGestureListener, DropTargetListener{
+  private static final long serialVersionUID = -5479369256188567414L;
+	private CellCoordinates	overCellCoordinates = null;
+	private DragSource	dragSource;
+	private CellCoordinates[]	selectedCells;
+	private boolean	dragging;
+	private CellCoordinates currSelectedCell;
+	static final short FREE_CELL_MOVING = -4;
+	public static final short ONLY_ALLOW_MOVING_ROWS = -2;
+	public static final short ONLY_ALLOW_MOVING_COLUMNS = -1;
+
+
+
+	public JDnDTable() {
+		// Configure ourselves to be a drag source
+		dragSource = new DragSource();
+		dragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_MOVE, this);
+
+		// Configure ourselves to be a drop target
+		new DropTarget(this, this);
+	}
+
+	public JDnDTable( JDnDTableModel model ) {
+        super( model );
+        // Configure ourselves to be a drag source
+        dragSource = new DragSource();
+        dragSource.createDefaultDragGestureRecognizer( this, DnDConstants.ACTION_MOVE, this);
+
+        // Configure ourselves to be a drop target
+        new DropTarget( this, this );
+    }
+
+	public void dragEnter(DragSourceDragEvent dsde) {
+		Point thisLocation = this.getLocationOnScreen();
+		Point clickLocation = dsde.getLocation();
+
+		Point2D relativeLocation = new Point2D.Double(
+				(clickLocation.getX() - thisLocation.getX()),
+				(clickLocation.getY() - thisLocation.getY()));
+
+		this.overCellCoordinates = locationToCellCoord(relativeLocation);
+	}
+
+	public void setSelectionMode(short mode) {
+		if (mode == ONLY_ALLOW_MOVING_COLUMNS) {
+			setColumnSelectionAllowed(true);
+			setRowSelectionAllowed(false);
+		} else if ( mode == ONLY_ALLOW_MOVING_ROWS) {
+			setColumnSelectionAllowed(false);
+			setRowSelectionAllowed(true);
+		}
+		((JDnDTableModel) this.getModel()).setSelectionMode(mode);
+	}
+	private CellCoordinates locationToCellCoord(Point2D location) {
+
+		int[] ij = new int[2];
+		int width = (int) location.getX();
+		int height = (int) location.getY();
+
+		for (int i = 0; i < this.getColumnCount(); i++) {
+			int iColumnWidth = this.getColumnModel().getColumn(i).getWidth();
+			// it seems to be right, but just in case consideer to use:
+			// ? int iColumnWidth = this.getColumnModel().getColumn(i).getPreferredWidth();
+			if ((width - iColumnWidth) <= 0) {
+				ij[1] = i;
+				break;
+			}
+			width = width - iColumnWidth;
+		}
+
+		// Get the current default height for all rows
+        int jRowHeight = this.getRowHeight();
+		for (int j = 0; j < this.getRowCount(); j++) {
+	        // Determine highest cell in the row
+	        for (int c=0; c<this.getColumnCount(); c++) {
+	            TableCellRenderer renderer = this.getCellRenderer(j, c);
+	            Component comp = this.prepareRenderer(renderer, j, c);
+	            int h = comp.getPreferredSize().height - 2*rowMargin;
+	            jRowHeight = Math.max(jRowHeight, h);
+	        }
+
+	        if ((height - jRowHeight) <= 0) {
+	        	ij[0] = j;
+	        	break;
+	        }
+	        height = height - jRowHeight;
+		}
+
+		return new CellCoordinates(ij[0], ij[1]);
+	}
+
+
+	public void dragOver(DragSourceDragEvent dsde) {
+		// TODO Auto-generated method stub
+	}
+
+	public void dropActionChanged(DragSourceDragEvent dsde) {
+		// TODO Auto-generated method stub
+	}
+
+	public void dragDropEnd(DragSourceDropEvent dsde) {
+		System.out.println("dragDropEnd");
+		this.dragging = false;
+	}
+
+	public void dragExit(DragSourceEvent dse) {
+		this.overCellCoordinates = null;
+	}
+
+	public void dragGestureRecognized(DragGestureEvent dge) {
+		// TODO Auto-generated method stub
+		this.selectedCells = this.getSelectedCells();
+		Object[] selectedObjects = this.getSelectedValues();
+		if (selectedObjects.length>0) {
+			StringBuffer sb = new StringBuffer();
+            for( int i=0; i<selectedObjects.length; i++ ) {
+                sb.append( selectedObjects[ i ].toString() + "\n" );
+            }
+
+            // Build a StringSelection object that the Drag Source
+            // can use to transport a string to the Drop Target
+            StringSelection text = new StringSelection( sb.toString() );
+
+            // Start dragging the object
+            this.dragging = true;
+            dragSource.startDrag( dge, DragSource.DefaultMoveDrop, text, this );
+            System.err.println("Selected objects\n"+sb.toString());
+		}
+	}
+
+	private Object[] getSelectedValues() {
+		ArrayList values = new ArrayList(selectedCells.length);
+		for (int i = 0; i < selectedCells.length; i++) {
+			values.add(this.getValueAt(selectedCells[i].i, selectedCells[i].j));
+		}
+		return values.toArray();
+	}
+
+	private CellCoordinates[] getSelectedCells() {
+		ArrayList cells = new ArrayList();
+		for (int i = 0; i < this.getColumnCount(); i++) {
+			for (int j = 0; j < this.getRowCount(); j++) {
+				if (this.isCellSelected(i, j))
+					cells.add( new CellCoordinates(i,j) );
+			}
+		}
+		return (CellCoordinates[]) cells.toArray(new CellCoordinates[0]);
+	}
+
+	public void dragEnter(DropTargetDragEvent dtde) {
+		// TODO
+		System.out.println("dragEnter");
+	}
+
+	public void dragOver(DropTargetDragEvent dtde) {
+		 // See who we are over...
+		CellCoordinates overCellCoordinates = this.locationToCellCoord( dtde.getLocation());
+        if( overCellCoordinates != null && !overCellCoordinates.equals(this.overCellCoordinates) ) {
+            // If the value has changed from what we were previously over
+            // then change the selected object to the one we are over; this
+            // is a visual representation that this is where the drop will occur
+            this.overCellCoordinates = overCellCoordinates;
+
+            currSelectedCell = this.overCellCoordinates;
+            System.out.println("Current cell  ["+currSelectedCell.i+","+currSelectedCell.j+"]");
+
+        }
+	}
+
+	public void dropActionChanged(DropTargetDragEvent dtde) {
+		// TODO Auto-generated method stub
+	}
+
+	public void drop(DropTargetDropEvent dtde) {
+		try {
+			Transferable transferable = dtde.getTransferable();
+			if( transferable.isDataFlavorSupported( DataFlavor.stringFlavor ) ) {
+				dtde.acceptDrop( DnDConstants.ACTION_MOVE );
+
+				// Find out where the item was dropped
+				CellCoordinates newCellCoord = locationToCellCoord(dtde.getLocation());
+
+				// Get the items out of the transferable object and build an
+				// array out of them...
+				String s = ( String ) transferable.getTransferData( DataFlavor.stringFlavor );
+				StringTokenizer st = new StringTokenizer( s );
+				ArrayList items = new ArrayList();
+				while( st.hasMoreTokens() ) {
+					items.add( st.nextToken() );
+				}
+
+				JDnDTableModel model = (JDnDTableModel) this.getModel();
+
+                // If we are dragging from our this to our list them move the items,
+                // otherwise just add them...
+                if( this.dragging ) {
+                    //model.itemsMoved( newIndex, items );
+                    model.itemsMoved( newCellCoord, this.selectedCells );
+                } else {
+                    model.insertItems( newCellCoord, items );
+                }
+
+                // Update the selected cells
+                /* TODO
+                int[] newIndicies = new int[ items.size() ];
+                for( int i=0; i<items.size(); i++ ) {
+                    newIndicies[ i ] = newIndex + i;
+                }
+                this.setSelectedIndices( newIndicies );
+                */
+                // Reset the over index
+                this.overCellCoordinates = null;
+
+                dtde.getDropTargetContext().dropComplete( true );
+			} else {
+				dtde.rejectDrop();
+			}
+		} catch( IOException exception ) {
+			exception.printStackTrace();
+			System.err.println( "Exception" + exception.getMessage());
+			dtde.rejectDrop();
+		} catch( UnsupportedFlavorException ufException ) {
+			ufException.printStackTrace();
+			System.err.println( "Exception" + ufException.getMessage());
+			dtde.rejectDrop();
+		}
+	}
+
+	public void dragExit(DropTargetEvent dte) {
+		// TODO Auto-generated method stub
+		System.out.println("dragExit");
+	}
+
+}
+
+class CellCoordinates {
+	int i, j;
+
+	public CellCoordinates(int i, int j) {
+		this.i = i;
+		this.j = j;
+	}
+
+	public boolean equals(Object obj) {
+		if (!(obj instanceof CellCoordinates))
+			return false;
+
+		CellCoordinates other = (CellCoordinates) obj;
+		return (this.i == other.i) && (this.j == other.j);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDTable.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDTableModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDTableModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDTableModel.java	(revision 38348)
@@ -0,0 +1,155 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id$
+* $Log$
+* Revision 1.2  2007-09-12 16:28:23  bsanchez
+* *** empty log message ***
+*
+* Revision 1.1  2007/08/20 08:34:46  evercher
+* He fusionado LibUI con LibUIComponents
+*
+* Revision 1.2  2006/09/27 13:34:57  jaume
+* *** empty log message ***
+*
+* Revision 1.1  2006/09/21 16:35:12  jaume
+* *** empty log message ***
+*
+*
+*/
+package org.gvsig.gui.beans.controls.dnd;
+
+import java.util.ArrayList;
+
+import javax.swing.table.AbstractTableModel;
+
+public class JDnDTableModel extends AbstractTableModel{
+  private static final long serialVersionUID = 7508610018581206163L;
+		public static final short ONLY_ALLOW_MOVING_COLUMNS = JDnDTable.ONLY_ALLOW_MOVING_COLUMNS;
+    public static final short ONLY_ALLOW_MOVING_ROWS = JDnDTable.ONLY_ALLOW_MOVING_ROWS;
+	private static final short FREE_CELL_MOVING = JDnDTable.FREE_CELL_MOVING;
+
+    private short mode = ONLY_ALLOW_MOVING_COLUMNS;
+
+    private String[] colNames;
+    private Object[][] values;
+
+    public JDnDTableModel(Object[][] values, String[] colNames) {
+        super();
+        this.colNames = colNames;
+        this.values = values;
+    }
+
+    public int getColumnCount() {
+        // TODO Auto-generated method stub
+        return colNames.length;
+    }
+
+    public int getRowCount() {
+        // TODO Auto-generated method stub
+        return values[0].length;
+    }
+
+    public Object getValueAt(int rowIndex, int columnIndex) {
+        // TODO Auto-generated method stub
+        return values[rowIndex][columnIndex];
+    }
+
+    public void itemsMoved(CellCoordinates newCellCoord, CellCoordinates[] coordinates) {
+        // TODO Auto-generated method stub
+        System.out.println("Model itemsMoved");
+
+
+        switch (mode) {
+        case ONLY_ALLOW_MOVING_COLUMNS:
+
+        	// last selected cell defines which column
+        	int srcColumnIndex = coordinates[coordinates.length-1].i;
+        	int dstColumnIndex = newCellCoord.i;
+        	System.out.println("movent columna "+ srcColumnIndex + " a columna "+dstColumnIndex);
+            for (int i = 0; i < getRowCount(); i++) {
+            	CellCoordinates srcCoord = new CellCoordinates(i, srcColumnIndex);
+            	CellCoordinates dstCoord = new CellCoordinates(i, dstColumnIndex);
+            	swapCells(srcCoord, dstCoord);
+            }
+            swapColumnNames(dstColumnIndex, srcColumnIndex);
+            break;
+        case ONLY_ALLOW_MOVING_ROWS:
+            // last selected cell defines which row
+            int rowIndex = coordinates[coordinates.length-1].i;
+            coordinates = new CellCoordinates[getColumnCount()];
+            for (int i = 0; i < coordinates.length; i++) {
+                coordinates[i].i = rowIndex;
+                coordinates[i].j = i;
+            }
+            newCellCoord.j = 0;
+            break;
+        case FREE_CELL_MOVING:
+        	// TODO implement it
+        	break;
+        }
+        this.fireTableDataChanged();
+    }
+
+    private void swapColumnNames(int ind1, int ind2) {
+        String aux = colNames[ind2];
+        colNames[ind2] = colNames[ind1];
+        colNames[ind1] = aux;
+    }
+
+    private void swapCells(CellCoordinates cell1, CellCoordinates cell2) {
+    	Object aux = values[cell1.i][cell1.j];
+    	values[cell1.i][cell1.j] = values[cell2.i][cell2.j];
+    	values[cell2.i][cell2.j] = aux;
+    }
+
+    public void insertItems(CellCoordinates cellCoord, ArrayList items) {
+        // TODO Auto-generated method stub
+        System.out.println("Model inserItems");
+    }
+
+	public void setSelectionMode(short mode) {
+		this.mode = mode;
+	}
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDTableModel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDList.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDList.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDList.java	(revision 38348)
@@ -0,0 +1,292 @@
+package org.gvsig.gui.beans.controls.dnd;
+
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DragGestureEvent;
+import java.awt.dnd.DragGestureListener;
+import java.awt.dnd.DragSource;
+import java.awt.dnd.DragSourceDragEvent;
+import java.awt.dnd.DragSourceDropEvent;
+import java.awt.dnd.DragSourceEvent;
+import java.awt.dnd.DragSourceListener;
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.DropTargetDragEvent;
+import java.awt.dnd.DropTargetDropEvent;
+import java.awt.dnd.DropTargetEvent;
+import java.awt.dnd.DropTargetListener;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import javax.swing.JList;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+ *
+ * $Id$
+ * $Log$
+ * Revision 1.3  2007-09-12 16:28:23  bsanchez
+ * *** empty log message ***
+ *
+ * Revision 1.2  2007/08/21 09:57:17  bsanchez
+ * - Variable no usada
+ *
+ * Revision 1.1  2007/08/20 08:34:46  evercher
+ * He fusionado LibUI con LibUIComponents
+ *
+ * Revision 1.2  2006/03/23 10:37:11  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.1  2006/03/22 11:18:29  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.4  2006/02/28 15:25:14  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.2.2.3  2006/01/31 16:25:24  jaume
+ * correcciones de bugs
+ *
+ * Revision 1.3  2006/01/26 16:07:14  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.2.2.1  2006/01/26 12:59:33  jaume
+ * 0.5
+ *
+ * Revision 1.2  2006/01/24 14:36:33  jaume
+ * This is the new version
+ *
+ * Revision 1.1.2.1  2006/01/10 13:11:38  jaume
+ * *** empty log message ***
+ *
+ * Revision 1.1.2.1  2005/12/29 08:26:54  jaume
+ * some gui issues where fixed
+ *
+ * Revision 1.1.2.1  2005/12/19 18:12:35  jaume
+ * *** empty log message ***
+ *
+ *
+ */
+/**
+ * <p>
+ * A JList that allows drag'n'drop elements. It accepts changing position of
+ * one or more elements within the list, adding other from other JDnDList's,
+ * removing sets of selected items, and other features.
+ * </p>
+ * <p>
+ * In order to use this features you have to use a JDnDListModel as the list's
+ * model.
+ * </p>
+ * jaume dominguez faus - jaume.dominguez@iver.es
+ */
+public class JDnDList extends JList implements DragSourceListener, DragGestureListener, DropTargetListener{
+  private static final long serialVersionUID = -9071985815215584362L;
+		private DragSource dragSource;
+    private boolean    dragging;
+    private int overIndex;
+    private int[] selectedIndices;
+    
+    
+    public JDnDList() {
+        new DropTarget (this, this);
+        dragSource = new DragSource();
+        dragSource.createDefaultDragGestureRecognizer( this, DnDConstants.ACTION_MOVE, this);
+      }
+    
+    public JDnDList( JDnDListModel model ) {
+        super( model );
+        // Configure ourselves to be a drag source
+        dragSource = new DragSource();
+        dragSource.createDefaultDragGestureRecognizer( this, DnDConstants.ACTION_MOVE, this);
+        
+        // Configure ourselves to be a drop target
+        new DropTarget( this, this );
+    }
+    
+    public void dragGestureRecognized(DragGestureEvent dge)  {
+        this.selectedIndices = this.getSelectedIndices();
+        Object[] selectedObjects = this.getSelectedValues();
+        if( selectedObjects.length > 0 ) {
+            StringBuffer sb = new StringBuffer();
+            for( int i=0; i<selectedObjects.length; i++ ) {
+                sb.append( selectedObjects[ i ].toString() + "\n" );
+            }
+            
+            // Build a StringSelection object that the Drag Source
+            // can use to transport a string to the Drop Target
+            StringSelection text = new StringSelection( sb.toString() ); 
+            
+            // Start dragging the object 
+            this.dragging = true;
+            dragSource.startDrag( dge, DragSource.DefaultMoveDrop, text, this );
+        }
+    }
+    
+    public void dragDropEnd(DragSourceDropEvent dsde) {
+        this.dragging = false;
+    }
+    
+    public void dragExit(DropTargetEvent dte) {
+        this.overIndex = -1;
+    }
+    public void dragEnter(DropTargetDragEvent dtde) {
+        this.overIndex = this.locationToIndex( dtde.getLocation() );
+        this.setSelectedIndex( this.overIndex );
+    }
+    public void dragOver(DropTargetDragEvent dtde) {
+        // See who we are over...
+        int overIndex = this.locationToIndex( dtde.getLocation() );
+        if( overIndex != -1 && overIndex != this.overIndex ) {
+            // If the value has changed from what we were previously over
+            // then change the selected object to the one we are over; this 
+            // is a visual representation that this is where the drop will occur
+            this.overIndex = overIndex;
+            this.setSelectedIndex( this.overIndex );
+        }
+    }
+    
+    public void drop(DropTargetDropEvent dtde) {
+        try {
+            Transferable transferable = dtde.getTransferable();
+            if( transferable.isDataFlavorSupported( DataFlavor.stringFlavor ) ) {
+                dtde.acceptDrop( DnDConstants.ACTION_MOVE );
+                
+                // Find out where the item was dropped
+                int newIndex = this.locationToIndex( dtde.getLocation() );
+                
+                // Get the items out of the transferable object and build an
+                // array out of them...
+                String s = ( String )transferable.getTransferData( DataFlavor.stringFlavor );
+                StringTokenizer st = new StringTokenizer( s );
+                ArrayList items = new ArrayList();
+                while( st.hasMoreTokens() ) {
+                    items.add( st.nextToken() );
+                }
+                JDnDListModel model = ( JDnDListModel )this.getModel();
+                
+                // If we are dragging from our this to our list them move the items,
+                // otherwise just add them...
+                if( this.dragging ) {
+                    //model.itemsMoved( newIndex, items );
+                    model.itemsMoved( newIndex, this.selectedIndices );
+                } else {
+                    model.insertItems( newIndex, items );
+                }
+                
+                // Update the selected indicies
+                int[] newIndicies = new int[ items.size() ];
+                for( int i=0; i<items.size(); i++ ) {
+                    newIndicies[ i ] = newIndex + i;
+                }
+                this.setSelectedIndices( newIndicies );
+                
+                // Reset the over index
+                this.overIndex = -1;
+                
+                dtde.getDropTargetContext().dropComplete( true );
+            } else {
+                dtde.rejectDrop();
+            }
+        } catch( IOException exception ) {
+            exception.printStackTrace();
+            System.err.println( "Exception" + exception.getMessage());
+            dtde.rejectDrop();
+        } catch( UnsupportedFlavorException ufException ) {
+            ufException.printStackTrace();
+            System.err.println( "Exception" + ufException.getMessage());
+            dtde.rejectDrop();
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see java.awt.dnd.DragSourceListener#dragEnter(java.awt.dnd.DragSourceDragEvent)
+     */
+    public void dragEnter(DragSourceDragEvent dsde) {
+        
+    }
+
+    /* (non-Javadoc)
+     * @see java.awt.dnd.DragSourceListener#dragOver(java.awt.dnd.DragSourceDragEvent)
+     */
+    public void dragOver(DragSourceDragEvent dsde) {
+        
+    }
+
+    /* (non-Javadoc)
+     * @see java.awt.dnd.DragSourceListener#dropActionChanged(java.awt.dnd.DragSourceDragEvent)
+     */
+    public void dropActionChanged(DragSourceDragEvent dsde) {
+        
+    }
+
+    /* (non-Javadoc)
+     * @see java.awt.dnd.DragSourceListener#dragExit(java.awt.dnd.DragSourceEvent)
+     */
+    public void dragExit(DragSourceEvent dse) {
+        
+    }
+
+    /* (non-Javadoc)
+     * @see java.awt.dnd.DropTargetListener#dropActionChanged(java.awt.dnd.DropTargetDragEvent)
+     */
+    public void dropActionChanged(DropTargetDragEvent dtde) {
+        
+    }
+    
+    /**
+     * Constructs a <b>JDnDListModel</b> from an array of objects and then applies setModel to it. 
+     * @param listData an array of Objects containing the items to display in the list
+     * @see	setModel
+     * @author jaume
+     */
+    public void setListData(Object[] obj) {
+    	JDnDListModel model = new JDnDListModel();
+		for (int i = 0; i < obj.length; i++) {
+			model.addElement(obj[i]);
+		}
+		this.setModel(model);
+    }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDList.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDListModel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDListModel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDListModel.java	(revision 38348)
@@ -0,0 +1,248 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id$
+* $Log$
+* Revision 1.2  2007-09-12 16:28:23  bsanchez
+* *** empty log message ***
+*
+* Revision 1.1  2007/08/20 08:34:46  evercher
+* He fusionado LibUI con LibUIComponents
+*
+* Revision 1.1  2006/03/22 11:18:29  jaume
+* *** empty log message ***
+*
+* Revision 1.4  2006/02/28 15:25:14  jaume
+* *** empty log message ***
+*
+* Revision 1.2.2.3  2006/01/31 16:25:24  jaume
+* correcciones de bugs
+*
+* Revision 1.3  2006/01/26 16:07:14  jaume
+* *** empty log message ***
+*
+* Revision 1.2.2.1  2006/01/26 12:59:33  jaume
+* 0.5
+*
+* Revision 1.2  2006/01/24 14:36:33  jaume
+* This is the new version
+*
+* Revision 1.1.2.2  2006/01/17 12:55:40  jaume
+* *** empty log message ***
+*
+* Revision 1.1.2.1  2006/01/10 13:11:38  jaume
+* *** empty log message ***
+*
+* Revision 1.1.2.1  2005/12/29 08:26:54  jaume
+* some gui issues where fixed
+*
+* Revision 1.1.2.2  2005/12/22 16:46:00  jaume
+* puede borrar m�ltiples intervalos de entradas dentro de la lista
+*
+* Revision 1.1.2.1  2005/12/19 18:12:35  jaume
+* *** empty log message ***
+*
+*
+*/
+/**
+ * 
+ */
+package org.gvsig.gui.beans.controls.dnd;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.swing.AbstractListModel;
+
+
+/**
+ * List model to use in junction the JDnDList. Contains some useful tools.
+ *
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ *
+ */
+public class JDnDListModel extends AbstractListModel {
+  private static final long serialVersionUID = 8998356167841647319L;
+		private ArrayList items = new ArrayList();
+    /**
+     * Inserts a collection of items before the specified index
+     */
+    public void insertItems( int index, Collection objects ) {
+        // Handle the case where the items are being added to the end of the list
+        if( index == -1 ) {
+            // Add the items
+            for( Iterator i = objects.iterator(); i.hasNext(); ) {
+                String item = ( String )i.next();
+                addElement(items.size(), item );
+            }
+        } else {
+            // Insert the items
+            for( Iterator i = objects.iterator(); i.hasNext(); ) {
+                Object item = i.next();
+                insertElement( index++, item );
+            }
+        }
+        
+        // Tell the list to update itself
+        this.fireContentsChanged( this, 0, this.items.size() - 1 );
+    }
+    
+    /**
+     * Inserts a new element into the list at the position mentioned in the index param.
+     * @param index
+     * @param item
+     */
+    public boolean insertElement(int index, Object element) {
+        if (element == null) {
+            return false;
+        }
+        for (int i = 0; i < items.size(); i++) {
+            
+            if (items.get(i).equals(items)) {
+                return false;
+            }
+        }
+        
+        this.items.add(index, element);
+        return true;
+    }
+
+    /**
+     * Adds a new element at the position indicated by pos of the list.
+     * @param j 
+     * @param pos 
+     */
+    public boolean addElement(int j, Object element) {
+        if (element == null) {
+            return false;
+        }
+        
+        for (int i = 0; i < items.size(); i++) {
+            if (items.get(i).equals(items)) {
+                return false;
+            }
+        }
+        this.items.add(j, element);
+        fireContentsChanged(this, items.size() - 1, items.size() - 1);
+        return true;
+    }
+    
+    /**
+     * Adds a new element at the position indicated by pos of the list.
+     * @param j 
+     * @param pos 
+     */
+    public boolean addElement(Object element) {
+        return addElement(items.size(), element);
+    }
+    
+    /**
+     * Removes every elements contained in the collection from this list.
+     */
+    public void delElements(Collection c) {
+        items.removeAll(c);
+        this.fireContentsChanged(this, 0, items.size());
+    }
+    
+    /**
+     * Removes the items of the list mentioned by the index array passed as argument.
+     * @param indices
+     */
+    public void delIndices(int[] indices){
+        int removed = 0;
+        for (int i = 0; i < indices.length; i++) {
+            items.remove(indices[i]-removed);
+            removed++;
+        }
+    }
+
+    public void itemsMoved( int newIndex, int[] indicies ) {
+        
+        // Copy the objects to a temporary ArrayList
+        ArrayList objects = new ArrayList();
+        for( int i=0; i<indicies.length; i++ ) {
+            objects.add( this.items.get( indicies[ i ] ) );
+        }
+        
+        // Delete the objects from the list
+        for( int i=indicies.length-1; i>=0; i-- ) {
+            this.items.remove( indicies[ i ] );
+        }
+        
+        // Insert the items at the new location
+        insertItems( newIndex, objects );
+    }
+    
+    /* (non-Javadoc)
+     * @see javax.swing.ListModel#getSize()
+     */
+    public int getSize() {
+        return items.size();
+    }
+    
+    /* (non-Javadoc)
+     * @see javax.swing.ListModel#getElementAt(int)
+     */
+    public Object getElementAt(int index) {
+        return items.get(index);
+    }
+    
+    /**
+     * Removes any item currently contained by this list.
+     *
+     */
+    public void clear() {
+        items.clear();
+        fireContentsChanged(this, 0, 0);
+    }
+    
+    /**
+     * Returns an ArrayList containing the elements of this list.
+     */
+    public ArrayList getElements() {
+        return items;
+    }
+
+    
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/dnd/JDnDListModel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/comboscale/ComboScaleListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/comboscale/ComboScaleListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/comboscale/ComboScaleListener.java	(revision 38348)
@@ -0,0 +1,27 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+package org.gvsig.gui.beans.controls.comboscale;
+
+public interface ComboScaleListener {
+
+	public void changeScale(long l);
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/comboscale/ComboScaleListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/comboscale/ComboScale.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/comboscale/ComboScale.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/comboscale/ComboScale.java	(revision 38348)
@@ -0,0 +1,292 @@
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+package org.gvsig.gui.beans.controls.comboscale;
+
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.text.NumberFormat;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.controls.IControl;
+
+public class ComboScale extends JPanel implements IControl {
+
+    private static final long serialVersionUID = 6483498713300082876L;
+
+    private JLabel jLabel = null;
+
+    private JComboBox jComboBox = null;
+
+    private List<ActionListener> actionCommandListeners =
+        new ArrayList<ActionListener>();
+
+    private boolean bDoCallListeners = true;
+
+    private boolean isScaleCombo;
+
+    static private int eventId = Integer.MIN_VALUE;
+
+    // jaume
+    private class ComboScaleItem {
+
+        private long value;
+
+        public ComboScaleItem(long itemScale) {
+            this.value = itemScale;
+        }
+
+        public String toString() {
+            return NumberFormat.getNumberInstance().format(value);
+        }
+
+        public boolean equals(Object obj) {
+            return obj instanceof ComboScaleItem
+                && ((ComboScaleItem) obj).getValue() == value;
+        }
+
+        public long getValue() {
+            return value;
+        }
+    }
+
+    /**
+     * This is the default constructor
+     */
+    public ComboScale() {
+        super();
+        initialize();
+    }
+
+    /**
+     * This method initializes this
+     * 
+     * @return void
+     */
+    private void initialize() {
+        FlowLayout flowLayout = new FlowLayout(FlowLayout.CENTER, 0, 0);
+        jLabel = new JLabel();
+        jLabel.setText("1:");
+        this.setLayout(flowLayout);
+        // this.setSize(155, 16);
+        this.add(jLabel, null);
+        this.add(getJComboBox(), null);
+    }
+
+    /**
+     * This method initializes jComboBox
+     * 
+     * @return javax.swing.JComboBox
+     */
+    private JComboBox getJComboBox() {
+        if (jComboBox == null) {
+            jComboBox = new JComboBox();
+            jComboBox.setEditable(true);
+            jComboBox.setMaximumRowCount(5);
+            jComboBox.setBackground(java.awt.SystemColor.window);
+            jComboBox
+                .setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
+            jComboBox.addActionListener(new java.awt.event.ActionListener() {
+
+                public void actionPerformed(java.awt.event.ActionEvent e) {
+                    if (e.getActionCommand().equals("comboBoxChanged")) {
+
+                        // callActionCommandListeners(((Long)jComboBox.getSelectedItem()).longValue());
+                        // setScale(((Long)jComboBox.getSelectedItem()).longValue());
+                        Object item = jComboBox.getSelectedItem();
+                        long scale = 0;
+                        if (item instanceof String) {
+                            StringBuffer sb = new StringBuffer((String) item);
+                            // remove any point in the number
+                            final String digits = "0123456789";
+                            int i = sb.charAt(0) == '-' ? 1 : 0;
+                            BitSet deleteChars = new BitSet();
+                            while (i < sb.length()) {
+                                if (digits.indexOf(sb.charAt(i)) == -1)
+                                    deleteChars.set(i);
+                                i++;
+                            }
+                            for (int k = deleteChars.size(); k >= 0; k--) {
+                                if (deleteChars.get(k))
+                                    sb.deleteCharAt(k);
+                            }
+                            jComboBox.removeItem(item);
+                            try {
+                                scale = Long.parseLong(sb.toString());
+                            } catch (NumberFormatException e1) {
+                            }
+                        } else {
+                            scale =
+                                ((ComboScaleItem) jComboBox.getSelectedItem())
+                                    .getValue();
+                        }
+                        insertScaleIfNotPresent(scale);
+                        callActionCommandListeners(scale);
+                    }
+                }
+            });
+        }
+        return jComboBox;
+    }
+
+    public void setItems(long[] items) {
+        ComboScaleItem[] scales = new ComboScaleItem[items.length];
+        for (int i = 0; i < items.length; i++) {
+            scales[i] = new ComboScaleItem(items[i]);
+        }
+        DefaultComboBoxModel newModel = new DefaultComboBoxModel(scales);
+        getJComboBox().setModel(newModel);
+    }
+
+    /**
+     * This funcion ONLY sets the text in combo. It will NOT call listeners.
+     * 
+     * @param scale
+     */
+    public void setScale(long item) {
+        bDoCallListeners = false;
+        getJComboBox().setSelectedItem(new ComboScaleItem(item));
+        bDoCallListeners = true;
+    }
+
+    /**
+     * @param scale
+     */
+    private void insertScaleIfNotPresent(long scale) {
+        // Si viene de un setScale, no insertamos la escala en el combo
+        if (!bDoCallListeners)
+            return;
+
+        DefaultComboBoxModel model =
+            (DefaultComboBoxModel) jComboBox.getModel();
+        // model=new DefaultComboBoxModel();
+        boolean inserted = false;
+        for (int i = 0; i < model.getSize(); i++) {
+            ComboScaleItem itemScale = (ComboScaleItem) model.getElementAt(i);
+            if (scale == itemScale.getValue()) {
+                inserted = true;
+                break;
+            }
+        }
+        if (!inserted) {
+            for (int i = 0; i < model.getSize(); i++) {
+                ComboScaleItem itemScale =
+                    (ComboScaleItem) model.getElementAt(i);
+                if (scale < itemScale.getValue()) {
+                    model.insertElementAt(new ComboScaleItem(scale), i);
+                    inserted = true;
+                    break;
+                }
+            }
+            if (!inserted)
+                model.addElement(new ComboScaleItem(scale));
+        }
+        jComboBox.setSelectedItem(new ComboScaleItem(scale));
+        isScaleCombo = true;
+    }
+
+    private void callActionCommandListeners(long scale) {
+        if (!bDoCallListeners)
+            return;
+
+        Iterator<ActionListener> acIterator = actionCommandListeners.iterator();
+        while (acIterator.hasNext()) {
+            ActionListener listener = acIterator.next();
+            listener.actionPerformed(new ActionEvent(this, eventId,
+                "CHANGE_SCALE_" + scale));
+        }
+        eventId++;
+    }
+
+    public void addActionListener(ActionListener listener) {
+        if (!actionCommandListeners.contains(listener))
+            actionCommandListeners.add(listener);
+    }
+
+    public void removeActionListener(ActionListener listener) {
+        actionCommandListeners.remove(listener);
+    }
+
+    /**
+     * Returns the current selected item.
+     * 
+     * @return The value of the selected scale, or -1 if there was an invalid
+     *         value (ie. not long value).
+     */
+    public long getScale() {
+        return ((ComboScaleItem) jComboBox.getSelectedItem()).getValue();
+    }
+
+    /**
+     * Sets the label to be displayed on the left of the combo
+     */
+    public void setLabel(String label) {
+        jLabel.setText(label);
+    }
+
+    /**
+     * Gets the label
+     */
+    public String getLabel() {
+        return jLabel.getText();
+    }
+
+    public Object setValue(Object value) {
+        if (isScaleCombo) {
+            isScaleCombo = false;
+            return null;
+        }
+        try {
+            long scale = Long.parseLong((String) value);
+
+            if (scale < 0)
+                return null;
+
+            ComboScaleItem item = new ComboScaleItem(scale);
+            if (item.equals(jComboBox.getSelectedItem()))
+                return item;
+            this.setScale(scale);
+            return item;
+        } catch (NumberFormatException ex) {
+            // don't change the status if the provided value was not valid
+            return null;
+        }
+    }
+
+    public void setEnabled(boolean enabled) {
+        boolean oldEnabled = jComboBox.isEnabled();
+        jComboBox.setEnabled(enabled);
+        jComboBox.firePropertyChange("enabled", oldEnabled, enabled);
+        if (enabled != oldEnabled) {
+            jComboBox.repaint();
+        }
+    }
+
+} // @jve:decl-index=0:visual-constraint="10,10"

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/comboscale/ComboScale.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/IControl.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/IControl.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/IControl.java	(revision 38348)
@@ -0,0 +1,89 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+package org.gvsig.gui.beans.controls;
+
+import java.awt.event.ActionListener;
+
+/**
+ * This interface models a control to be used in Andami.
+ *
+ * @author Cesar Martinez Izquierdo <cesar.martinez@iver.es>
+ *
+ */
+public interface IControl {
+	/**
+	 *  Adds an ActionListener to the control
+	 *
+	 * @param listener
+	 */
+	public void addActionListener(ActionListener listener);
+
+	/**
+	 *  Removes an ActionListener from the control
+	 *
+	 * @param listener
+	 */
+	public void removeActionListener(ActionListener listener);
+
+	/**
+	 *  Sets the value of the control. It may mean different things for
+	 *  different kinds of controls.
+	 *
+	 *  @return The value which was set, or null if the value was not valid
+	 *  for this control
+	 */
+	public Object setValue(Object value);
+
+	/**
+	 * Gets the name of the control, used to identify it
+	 * @return the name of the control
+	 */
+	public String getName();
+
+	/**
+	 * Sets the name of the control, used to identify it
+	 *
+	 * @param name
+	 * @return
+	 */
+	public void setName(String name);
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/IControl.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ComboButtonListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ComboButtonListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ComboButtonListener.java	(revision 38348)
@@ -0,0 +1,33 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.controls.combobutton;
+
+import java.util.EventListener;
+/**
+ *
+ * @version 07/08/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public interface ComboButtonListener extends EventListener {
+	/**
+	 * Evento que se dispara cuando cambia el valor del componente.
+	 * @param e
+	 */
+	public void actionComboButtonClicked(ComboButtonEvent e);
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ComboButton.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ComboButton.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ComboButton.java	(revision 38348)
@@ -0,0 +1,365 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.controls.combobutton;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseListener;
+import java.awt.event.MouseMotionListener;
+import java.awt.geom.GeneralPath;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.JButton;
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+
+import org.gvsig.gui.beans.controls.IControl;
+/**
+ * Boton destinado a ser usado en un JToolBar que ofrece un desplegable de 
+ * items de menu.
+ *
+ * @version 06/02/2008
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ComboButton extends JButton implements IControl, MouseListener, MouseMotionListener, ActionListener {
+	private static final long serialVersionUID = -1412453774004951410L;
+	private JPopupMenu popMenu         = new JPopupMenu();
+	private static int BORDER          = 6;
+	private int        offsetTrianglex = -4;
+	private int        offsetTriangley = -4;
+	private int        triangleWidth   = 8;
+	private int        triangleHeight  = 7;
+	private boolean    showToolTipText = true;
+	private boolean    showMenuAlways  = true;
+	private boolean    alwaysMenuOnClick = false;
+	
+	private ArrayList<ComboButtonListener> actionCommandListeners = new ArrayList<ComboButtonListener>();
+	
+	/**
+	 * Indica si en la siguiente agregacion de un item ha de llevar un separador
+	 * previo
+	 */
+	private boolean nextSeparator = false;
+
+	public ComboButton() {
+		addMouseListener(this);
+		addMouseMotionListener(this);
+		addActionListener(this);
+	}
+	
+	/**
+	 * @deprecated Mantego el metodo para posibles compatibilidades
+	 * @param mode
+	 * @return
+	 */
+	public boolean selectMode(int mode) {
+		String modeText = mode + "";
+
+		for (int i = 0; i < popMenu.getSubElements().length; i++) {
+			JMenuItem mi = (JMenuItem) popMenu.getSubElements()[i];
+			// found item for mode?
+			if (mi.getActionCommand().equals(modeText)) {
+				selectItem(mi);
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private void selectItem(JMenuItem mi) {
+		setIcon(mi.getIcon());
+		setToolTipText(mi.getText());
+		setActionCommand(mi.getActionCommand());
+//		requestFocus();
+	}
+	
+	public void setSelectedItem(String actionCommand) {
+		for (int i = 0; i < popMenu.getSubElements().length; i++) {
+			if (((JMenuItem) popMenu.getSubElements()[i].getComponent()).getActionCommand().equals(actionCommand)) {
+				selectItem((JMenuItem) popMenu.getSubElements()[i].getComponent());
+				break;
+			}
+		}
+//		popMenu.requestFocus();
+	}
+
+	/**
+	 * Borra todos los items de la lista desplegable
+	 */
+	public void clearButtons() {
+		popMenu.removeAll();
+	}
+	
+	/**
+	 * A�ade un JMenuItem al menu desplegable
+	 * @param menu
+	 */
+	public void addButton(JButton menu) {
+		JMenuItem mi = new JMenuItem();
+		mi.setText(menu.getText());
+		mi.setIcon(menu.getIcon());
+		mi.setEnabled(menu.isEnabled());
+		mi.setActionCommand(menu.getActionCommand());
+		mi.addActionListener(this);
+		
+		if (nextSeparator) {
+			popMenu.addSeparator();
+			nextSeparator = false;
+		}
+
+		popMenu.add(mi);
+
+		if (popMenu.getSubElements().length == 1) {
+			// init tbutton
+			setIcon(menu.getIcon());
+			setActionCommand(menu.getActionCommand());
+			setToolTipText(menu.getText());
+		}
+	}
+
+	/**
+	 * Indica que en la siguiente agregaci�n de un item al menu ha de llevar un
+	 * separador
+	 */
+	public void addSeparator() {
+		nextSeparator = true;
+	}
+
+	/**
+	 * Muestra/Oculta el menu
+	 * @param flag
+	 */
+	public void setPopupVisible(boolean flag) {
+		if (flag) {
+			if (popMenu.isShowing())
+				return;
+			popMenu.show(this, 0, getHeight());
+		} else {
+			popMenu.setVisible(false);
+		}
+	}
+
+	public void setAction(ActionEvent action) {
+		for (int i = 0; i < popMenu.getSubElements().length; i++) {
+			if (((JMenuItem) popMenu.getSubElements()[i].getComponent()).getActionCommand().equals(action.getActionCommand())) {
+				((JMenuItem) popMenu.getSubElements()[i].getComponent()).doClick();
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.controls.IControl#setValue(java.lang.Object)
+	 */
+	public Object setValue(Object value) {
+		return value;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+	 */
+	public void actionPerformed(ActionEvent e) {
+		for (int i = 0; i < popMenu.getSubElements().length; i++) {
+			if (e.getSource() instanceof JMenuItem && popMenu.getSubElements()[i] == e.getSource()) {
+				selectItem((JMenuItem) e.getSource());
+				callComboButtonClickedListeners();
+				return;
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#paint(java.awt.Graphics)
+	 */
+	public void paint(Graphics g) {
+		super.paint(g);
+
+		Graphics2D g2 = (Graphics2D) g;
+		if (showMenuAlways || popMenu.getSubElements().length > 1) {
+			g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+			// draw little arrow (for popup menu)
+			drawTriangle(g2);
+		}
+	}
+
+	private void drawTriangle(Graphics2D g2) {
+		GeneralPath gp = new GeneralPath();
+
+		int x = 0;
+		if (offsetTrianglex < 0)
+			x = this.getWidth() + offsetTrianglex - BORDER;
+		else
+			x = offsetTrianglex + BORDER;
+
+		int y = 0;
+		if (offsetTriangley < 0)
+			y = this.getHeight() + offsetTriangley - BORDER;
+		else
+			y = offsetTriangley + BORDER;
+
+		gp.moveTo(x, y);
+		gp.lineTo(x + triangleWidth, y);
+		gp.lineTo(x + (triangleWidth / 2), y + triangleHeight);
+		gp.closePath();
+
+		g2.setColor(Color.white);
+		g2.fill(gp);
+		g2.setColor(new Color(0, 0, 0, 130));
+		g2.draw(gp);
+	}
+
+	private boolean popupTriangleClicked(int x, int y) {
+		if (alwaysMenuOnClick)
+			return true;
+
+		if (!showMenuAlways && (popMenu.getSubElements().length <= 1))
+			return false;
+
+		if (offsetTrianglex < 0) {
+			if (x < (this.getWidth() - BORDER + offsetTrianglex))
+				return false;
+		} else {
+			if (x > (BORDER + offsetTrianglex + triangleWidth))
+				return false;
+		}
+	
+		if (offsetTriangley < 0) {
+			if (y < (this.getHeight() - BORDER + offsetTriangley))
+				return false;
+		} else {
+			if (y > (BORDER + offsetTriangley + triangleHeight))
+				return false;
+		}
+
+		return true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
+	 */
+	public void mousePressed(MouseEvent e) {
+		boolean showPopup = popupTriangleClicked(e.getX(), e.getY());
+		if (showPopup)
+			setPopupVisible(showPopup);
+		else
+			callComboButtonClickedListeners();
+	}
+	
+	/**
+	 * A�adir un listener a la lista de eventos
+	 * @param listener
+	 */
+	public void addComboButtonClickedListener(ComboButtonListener listener) {
+		if (!actionCommandListeners.contains(listener))
+			actionCommandListeners.add(listener);
+	}
+
+	/**
+	 * Borrar un listener de la lista de eventos
+	 * @param listener
+	 */
+	public void removeComboButtonClickedListener(ComboButtonListener listener) {
+		actionCommandListeners.remove(listener);
+	}
+	
+	/**
+	 * Invocar a los eventos asociados al componente
+	 */
+	private void callComboButtonClickedListeners() {
+		Iterator<ComboButtonListener> acIterator = actionCommandListeners.iterator();
+		while (acIterator.hasNext()) {
+			ComboButtonListener listener = acIterator.next();
+			listener.actionComboButtonClicked(new ComboButtonEvent(this));
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.JComponent#getToolTipText()
+	 */
+	public String getToolTipText() {
+		if (showToolTipText)
+			return super.getToolTipText();
+		return null;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
+	 */
+	public void mouseDragged(MouseEvent e) {
+		if (popupTriangleClicked(e.getX(), e.getY()))
+			setPopupVisible(true);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
+	 */
+	public void mouseMoved(MouseEvent e) {
+		showToolTipText = !popMenu.isShowing();
+	}
+
+	/**
+	 * Devuelve si esta visible siempre
+	 * @return the showMenuAlways
+	 */
+	public boolean isShowMenuAlways() {
+		return showMenuAlways;
+	}
+
+	/**
+	 * Especifica si el menu se ha de visualizar siempre o solo cuando haya mas de
+	 * un item
+	 * @param showMenuAlways the showMenuAlways to set
+	 */
+	public void setShowMenuAlways(boolean showMenuAlways) {
+		this.showMenuAlways = showMenuAlways;
+	}
+	
+	public void mouseReleased(MouseEvent e) {
+		
+	}
+	public void mouseClicked(MouseEvent e) {}
+	public void mouseEntered(MouseEvent arg0) {}
+	public void mouseExited(MouseEvent arg0) {}
+
+	/**
+	 * @return the alwaysMenuOnClick
+	 */
+	public boolean isAlwaysMenuOnClick() {
+		return alwaysMenuOnClick;
+	}
+
+	/**
+	 * @param alwaysMenuOnClick the alwaysMenuOnClick to set
+	 */
+	public void setAlwaysMenuOnClick(boolean alwaysMenuOnClick) {
+		this.alwaysMenuOnClick = alwaysMenuOnClick;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ComboButton.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ComboButtonEvent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ComboButtonEvent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ComboButtonEvent.java	(revision 38348)
@@ -0,0 +1,33 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.controls.combobutton;
+
+import java.util.EventObject;
+/**
+ *
+ * @version 07/08/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class ComboButtonEvent extends EventObject {
+	private static final long serialVersionUID = -1649548367781607532L;
+
+	public ComboButtonEvent(Object source) {
+		super(source);
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ModeToggleButtonGroup.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ModeToggleButtonGroup.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ModeToggleButtonGroup.java	(revision 38348)
@@ -0,0 +1,28 @@
+/* 
+GeoGebra - Dynamic Geometry and Algebra
+Copyright Markus Hohenwarter, http://www.geogebra.at
+
+This file is part of GeoGebra.
+
+This program is free software; you can redistribute it and/or modify it 
+under the terms of the GNU General Public License as published by 
+the Free Software Foundation; either version 2 of the License, or 
+(at your option) any later version.
+*/
+package org.gvsig.gui.beans.controls.combobutton;
+
+import javax.swing.ButtonGroup;
+import javax.swing.JPopupMenu;
+
+public class ModeToggleButtonGroup extends ButtonGroup {
+  private static final long serialVersionUID = 7060814534660638147L;
+	private JPopupMenu activePopMenu;
+	
+	public void setActivePopupMenu(JPopupMenu popMenu) {
+		activePopMenu = popMenu;			
+	}	
+	
+	public JPopupMenu getActivePopupMenu() {
+		return activePopMenu;
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/controls/combobutton/ModeToggleButtonGroup.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-redo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-redo.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-copy.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-copy.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-cut.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-cut.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-paste.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-paste.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-delete.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-delete.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-select-all.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-select-all.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-undo.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/images/edit-undo.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/JOptionsEditionByMousePopupMenu.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/JOptionsEditionByMousePopupMenu.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/editionpopupmenu/JOptionsEditionByMousePopupMenu.java	(revision 38348)
@@ -0,0 +1,416 @@
+package org.gvsig.gui.beans.editionpopupmenu;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.Serializable;
+import java.util.HashMap;
+
+import javax.swing.ImageIcon;
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+import javax.swing.border.BevelBorder;
+
+import org.gvsig.gui.beans.Messages;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*
+* For more information, contact:
+*
+*  Generalitat Valenciana
+*   Conselleria d'Infraestructures i Transport
+*   Av. Blasco Ib��ez, 50
+*   46010 VALENCIA
+*   SPAIN
+*
+*      +34 963862235
+*   gvsig@gva.es
+*      www.gvsig.gva.es
+*
+*    or
+*
+*   IVER T.I. S.A
+*   Salamanca 50
+*   46005 Valencia
+*   Spain
+*
+*   +34 963163400
+*   dac@iver.es
+*/
+
+
+/**
+ * <p>This class is a JPopupMenu that can be used with another component.</p>
+ * <p>The items showed in this menu are for editing: UNDO, REDO, CUT, COPY, PASTE, DELETE and SELECT ALL.</p>
+ * <p>When the user clicks on a item, this Component fires a property change event that its value allows identify the item clicked.</p>
+ * <p>(The icons used are from the open-source 'Tango Icon Library' project: (http://tango.freedesktop.org/Tango_Icon_Library)).</p>
+ *  
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class JOptionsEditionByMousePopupMenu extends JPopupMenu implements Serializable{
+	private static final long serialVersionUID = -142360699557710223L;
+
+	// Items of this JPopupMenu
+	private JMenuItem jMenuItemUndo = null;
+	private JMenuItem jMenuItemRedo = null;
+	private JMenuItem jMenuItemCut = null;
+	private JMenuItem jMenuItemCopy = null;
+	private JMenuItem jMenuItemPaste = null;
+	private JMenuItem jMenuItemDelete = null;
+	private JMenuItem jMenuItemSelectAll = null;
+	
+	// Values of the events fired when has been clicked an item
+	public static final int DEFAULT = 0;
+	public static final int UNDO = 1;
+	public static final int REDO = 2;
+	public static final int CUT = 3;
+	public static final int COPY = 4;
+	public static final int PASTE = 5;
+	public static final int DELETE = 6;
+	public static final int SELECT_ALL = 7;
+	
+	// Values of the type of event fired
+	public static final int VISIBILITY = 8;
+	public static final String SELECTEDOPTION = "SelectedOption";
+	public static final String VISIBILITYCHANGED = "Visibility";
+	
+	// Hash map for the items
+	private HashMap<String, String> map;
+
+	// Action listener for notify (fire) some events that had happened to this component
+	private ActionListener menuListener = null;
+
+ 	/**
+	 * Default constructor 
+	 */
+	public JOptionsEditionByMousePopupMenu() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * This method initializes this component 
+	 */
+	private void initialize() {
+        map = new HashMap<String, String>();
+        this.add(getJMenuItemUndo());
+        this.add(getJMenuItemRedo());
+        this.addSeparator();
+        this.add(getJMenuItemCut());
+        this.add(getJMenuItemCopy());
+        this.add(getJMenuItemPaste());
+        this.add(getJMenuItemDelete());
+        this.addSeparator();
+        this.add(getJMenuItemSelectAll());
+        this.setLabel("Edition");
+        this.setBorder(new BevelBorder(BevelBorder.RAISED));
+	}
+	
+	/**
+	 * This method initializes jMenuItemUndo	
+	 * 	
+	 * @return javax.swing.JMenuItem
+	 */
+	private JMenuItem getJMenuItemUndo() {
+		if (jMenuItemUndo == null) {
+			ImageIcon undoIcon = new ImageIcon(JOptionsEditionByMousePopupMenu.class.getResource("images/edit-undo.png"), Messages.getText("edit_undo"));
+			jMenuItemUndo = new JMenuItem(Messages.getText("edit_undo"), undoIcon);
+			jMenuItemUndo.setHorizontalTextPosition(JMenuItem.RIGHT);
+			jMenuItemUndo.addActionListener(this.getMenuListener());
+			map.put(Messages.getText("edit_undo"), Integer.toString(JOptionsEditionByMousePopupMenu.UNDO));
+		}
+		return jMenuItemUndo;
+	}
+
+	/**
+	 * This method initializes jMenuItemRedo	
+	 * 	
+	 * @return javax.swing.JMenuItem	
+	 */
+	private JMenuItem getJMenuItemRedo() {
+		if (jMenuItemRedo == null) {
+			ImageIcon redoIcon = new ImageIcon(JOptionsEditionByMousePopupMenu.class.getResource("images/edit-redo.png"), Messages.getText("edit_redo"));
+			jMenuItemRedo = new JMenuItem(Messages.getText("edit_redo"), redoIcon);
+			jMenuItemRedo.setHorizontalTextPosition(JMenuItem.RIGHT);
+			jMenuItemRedo.addActionListener(this.getMenuListener());
+			map.put(Messages.getText("edit_redo"), Integer.toString(JOptionsEditionByMousePopupMenu.REDO));
+		}
+		return jMenuItemRedo;
+	}
+
+	/**
+	 * This method initializes jMenuItemCut	
+	 * 	
+	 * @return javax.swing.JMenuItem	
+	 */
+	private JMenuItem getJMenuItemCut() {
+		if (jMenuItemCut == null) {
+			ImageIcon cutIcon = new ImageIcon(JOptionsEditionByMousePopupMenu.class.getResource("images/edit-cut.png"), Messages.getText("edit_cut"));
+			jMenuItemCut = new JMenuItem(Messages.getText("edit_cut"), cutIcon);
+			jMenuItemCut.setHorizontalTextPosition(JMenuItem.RIGHT);
+			jMenuItemCut.addActionListener(this.getMenuListener());
+			map.put(Messages.getText("edit_cut"), Integer.toString(JOptionsEditionByMousePopupMenu.CUT));
+		}
+		return jMenuItemCut;
+	}
+	
+	/**
+	 * This method initializes jMenuItemCopy	
+	 * 	
+	 * @return javax.swing.JMenuItem	
+	 */
+	private JMenuItem getJMenuItemCopy() {
+		if (jMenuItemCopy == null) {
+			ImageIcon copyIcon = new ImageIcon(JOptionsEditionByMousePopupMenu.class.getResource("images/edit-copy.png"), Messages.getText("edit_copy"));
+			jMenuItemCopy = new JMenuItem(Messages.getText("edit_copy"), copyIcon);
+			jMenuItemCopy.setHorizontalTextPosition(JMenuItem.RIGHT);
+			jMenuItemCopy.addActionListener(this.getMenuListener());
+			map.put(Messages.getText("edit_copy"), Integer.toString(JOptionsEditionByMousePopupMenu.COPY));
+		}
+		return jMenuItemCopy;
+	}
+
+	/**
+	 * This method initializes jMenuItemPaste	
+	 * 	
+	 * @return javax.swing.JMenuItem	
+	 */
+	private JMenuItem getJMenuItemPaste() {
+		if (jMenuItemPaste == null) {
+			ImageIcon pasteIcon = new ImageIcon(JOptionsEditionByMousePopupMenu.class.getResource("images/edit-paste.png"), Messages.getText("edit_paste"));
+			jMenuItemPaste = new JMenuItem(Messages.getText("edit_paste"), pasteIcon);
+			jMenuItemPaste.setHorizontalTextPosition(JMenuItem.RIGHT);
+			jMenuItemPaste.addActionListener(this.getMenuListener());
+			map.put(Messages.getText("edit_paste"), Integer.toString(JOptionsEditionByMousePopupMenu.PASTE));
+		}
+		return jMenuItemPaste;
+	}
+
+	/**
+	 * This method initializes jMenuItemDelete	
+	 * 	
+	 * @return javax.swing.JMenuItem	
+	 */
+	private JMenuItem getJMenuItemDelete() {
+		if (jMenuItemDelete == null) {
+			ImageIcon deleteIcon = new ImageIcon(JOptionsEditionByMousePopupMenu.class.getResource("images/edit-delete.png"), Messages.getText("edit_delete"));
+			jMenuItemDelete = new JMenuItem(Messages.getText("edit_delete"), deleteIcon);
+			jMenuItemDelete.setHorizontalTextPosition(JMenuItem.RIGHT);
+			jMenuItemDelete.addActionListener(this.getMenuListener());
+			map.put(Messages.getText("edit_delete"), Integer.toString(JOptionsEditionByMousePopupMenu.DELETE));
+		}
+		return jMenuItemDelete;
+	}	
+
+	/**
+	 * This method initializes jMenuItemSelectAll	
+	 * 	
+	 * @return javax.swing.JMenuItem	
+	 */
+	private JMenuItem getJMenuItemSelectAll() {
+		if (jMenuItemSelectAll == null) {
+			ImageIcon selectAllIcon = new ImageIcon(JOptionsEditionByMousePopupMenu.class.getResource("images/edit-select-all.png"), Messages.getText("edit_select_all"));
+			jMenuItemSelectAll = new JMenuItem(Messages.getText("edit_select_all"), selectAllIcon);
+			jMenuItemSelectAll.setHorizontalTextPosition(JMenuItem.RIGHT);
+			jMenuItemSelectAll.addActionListener(this.getMenuListener());
+			map.put(Messages.getText("edit_select_all"), Integer.toString(JOptionsEditionByMousePopupMenu.SELECT_ALL));
+		}
+		return jMenuItemSelectAll;
+	}
+	
+	/**
+	 * This method initializes the "menuListener" ActionListener
+	 * 
+	 * @return ActionListener
+	 */
+	private ActionListener getMenuListener() {
+		if (menuListener == null) {
+		    menuListener = new ActionListener() {
+		    	/*
+		    	 * (non-Javadoc)
+		    	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+		    	 */
+		        public void actionPerformed(ActionEvent event) {
+		        	// Notifies that the Visibility of this component has changed
+		        	if (event.getActionCommand().equals(JOptionsEditionByMousePopupMenu.VISIBILITYCHANGED))
+						firePropertyChange(
+								JOptionsEditionByMousePopupMenu.VISIBILITYCHANGED,
+								JOptionsEditionByMousePopupMenu.DEFAULT,
+								JOptionsEditionByMousePopupMenu.VISIBILITY);
+		         	else // Notifies that has been clicked on an item
+						firePropertyChange(
+								JOptionsEditionByMousePopupMenu.SELECTEDOPTION,
+								JOptionsEditionByMousePopupMenu.DEFAULT,
+								map.get(event.getActionCommand()));
+		        }
+		    };
+		}
+		return menuListener;
+	} 
+
+	/**
+	 * Enables or disables the undo option item
+	 * 
+	 * @param b Value true or false
+	 */
+	public void setEnabledUndoOption(boolean b) {
+		jMenuItemUndo.setEnabled(b);
+	}
+	
+	/**
+	 * Returns if the undo option item is enabled or not
+	 * 
+	 * @return Value true or false
+	 */
+	public boolean isEnabledUndoOption() {
+		return jMenuItemUndo.isEnabled();
+	}
+	
+	/**
+	 * Enables or disables the redo option item
+	 * 
+	 * @param b Value true or false
+	 */
+	public void setEnabledRedoOption(boolean b) {
+		jMenuItemRedo.setEnabled(b);
+	}
+	
+	/**
+	 * Returns if the redo option item is enabled or not
+	 * 
+	 * @return Value true or false
+	 */
+	public boolean isEnabledRedoOption() {
+		return jMenuItemRedo.isEnabled();
+	}
+	
+	/**
+	 * Enables or disables the cut option item
+	 * 
+	 * @param b Value true or false
+	 */
+	public void setEnabledCutOption(boolean b) {
+		jMenuItemCut.setEnabled(b);
+	}
+	
+	/**
+	 * Returns if the cut option item is enabled or not
+	 * 
+	 * @return Value true or false
+	 */
+	public boolean isEnabledCutOption() {
+		return jMenuItemCut.isEnabled();
+	}
+	
+	/**
+	 * Enables or disables the copy option item
+	 * 
+	 * @param b Value true or false
+	 */
+	public void setEnabledCopyOption(boolean b) {
+		jMenuItemCopy.setEnabled(b);
+	}
+	
+	/**
+	 * Returns if the copy option item is enabled or not
+	 * 
+	 * @return Value true or false
+	 */
+	public boolean isEnabledCopyOption() {
+		return jMenuItemCopy.isEnabled();
+	}
+	
+	/**
+	 * Enables or disables the paste option item
+	 * 
+	 * @param b Value true or false
+	 */
+	public void setEnabledPasteOption(boolean b) {
+		jMenuItemPaste.setEnabled(b);
+	}
+	
+	/**
+	 * Returns if the paste option item is enabled or not
+	 * 
+	 * @return Value true or false
+	 */
+	public boolean isEnabledPasteOption() {
+		return jMenuItemPaste.isEnabled();
+	}
+	
+	/**
+	 * Enables or disables the delete option item
+	 * 
+	 * @param b Value true or false
+	 */
+	public void setEnabledDeleteOption(boolean b) {
+		jMenuItemDelete.setEnabled(b);
+	}
+	
+	/**
+	 * Returns if the delete option item is enabled or not
+	 * 
+	 * @return Value true or false
+	 */
+	public boolean isEnabledDeleteOption() {
+		return jMenuItemDelete.isEnabled();
+	}
+	
+	/**
+	 * Enables or disables the select all option item
+	 * 
+	 * @param b Value true or false
+	 */
+	public void setEnabledSelectAllOption(boolean b) {
+		jMenuItemSelectAll.setEnabled(b);
+	}
+	
+	/**
+	 * Returns if the select all option item is enabled or not
+	 * 
+	 * @return Value true or false
+	 */
+	public boolean isEnabledelectAllOption() {
+		return jMenuItemSelectAll.isEnabled();
+	}	
+
+	/**
+	 * Enables or disables all option items
+	 * 
+	 * @param b Value true or false
+	 */
+	public void setEnabledAllOptions(boolean b) {
+		this.setEnabledUndoOption(b);
+		this.setEnabledRedoOption(b);
+		this.setEnabledCutOption(b);
+		this.setEnabledCopyOption(b);
+		this.setEnabledPasteOption(b);
+		this.setEnabledDeleteOption(b);
+		this.setEnabledSelectAllOption(b);
+	}	
+	
+	/* 
+	 * (non-Javadoc)
+	 * @see javax.swing.JPopupMenu#setVisible(boolean)
+	 */
+	public void setVisible(boolean b) {
+		// Notifies that has changed the visibility of this component
+		super.setVisible(b);
+		this.getMenuListener().actionPerformed(new ActionEvent(this, JOptionsEditionByMousePopupMenu.VISIBILITY, JOptionsEditionByMousePopupMenu.VISIBILITYCHANGED));
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/AcceptCancelPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/AcceptCancelPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/AcceptCancelPanel.java	(revision 38348)
@@ -0,0 +1,226 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id$
+* $Log$
+* Revision 1.2  2007-09-12 16:28:23  bsanchez
+* *** empty log message ***
+*
+* Revision 1.1  2007/08/20 08:34:45  evercher
+* He fusionado LibUI con LibUIComponents
+*
+* Revision 1.5  2006/11/06 07:29:04  jaume
+* *** empty log message ***
+*
+* Revision 1.4  2006/09/14 08:31:58  cesar
+* Replace PluginServices.getText by the new Messages bridge class from libUI
+*
+* Revision 1.3.2.1  2006/09/13 13:13:19  cesar
+* Replace PluginServices.getText by the new Messages bridge class from libUI
+*
+* Revision 1.3  2006/07/20 11:12:25  jaume
+* *** empty log message ***
+*
+* Revision 1.2  2006/07/20 10:42:37  jaume
+* *** empty log message ***
+*
+* Revision 1.1  2006/07/03 07:12:28  jaume
+* *** empty log message ***
+*
+*
+*/
+package org.gvsig.gui.beans;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionListener;
+
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.swing.JButton;
+
+/**
+ * A JPanel representing a normative sized and aligned Ok and Cancel buttons according
+ * on the gvSIG's style sheet. The buttons size is automatically handled as far as the
+ * panel is BorderLayout-ed.
+ *
+ * @author jaume dominguez faus - jaume.dominguez@iver.es
+ *
+ */
+public class AcceptCancelPanel extends JPanel {
+  private static final long serialVersionUID = -1834568346328338410L;
+
+	private JButton btnOk = null;
+	private JButton btnCancel = null;
+
+	/**
+	 * Creates a new instance of the panel with the buttons aligned to the right
+	 * and with the respective action handlers.
+	 * @param okAction, the handler for the ok button clicking.
+	 * @param cancelAction, the handler for the cancel button clicking.
+	 *
+	 */
+	public AcceptCancelPanel(ActionListener okAction, ActionListener cancelAction) {
+		super();
+		initialize(okAction, cancelAction);
+	}
+	/**
+	 * Creates a new instance of the panel with the buttons aligned to the right
+	 * with no listeners set.
+	 *
+	 */
+	public AcceptCancelPanel() {
+		super();
+		initialize(null, null);
+	}
+	/**
+	 * This method initializes this
+	 *
+	 */
+	private void initialize(ActionListener okAction, ActionListener cancelAction) {
+        this.setLayout(new BorderLayout());
+        JPanel aux = new JPanel();
+        aux.add(getBtnOk(okAction), java.awt.BorderLayout.EAST);
+        aux.add(getCancelButton(cancelAction), java.awt.BorderLayout.EAST);
+        this.add(aux, java.awt.BorderLayout.EAST);
+	}
+
+	/**
+	 * This method initializes btnOk
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private JButton getBtnOk(ActionListener okAction) {
+		if (btnOk == null) {
+			btnOk = new JButton();
+			btnOk.setText(Messages.getText("ok" ));
+			btnOk.setActionCommand("OK");
+			if (okAction != null)
+				btnOk.addActionListener(okAction);
+		}
+		return btnOk;
+	}
+
+	/**
+	 * This method initializes btnCancel
+	 *
+	 * @return javax.swing.JButton
+	 */
+	private JButton getCancelButton(ActionListener cancelAction) {
+		if (btnCancel == null) {
+			btnCancel = new JButton();
+			btnCancel.setText(Messages.getText("cancel" ));
+			btnCancel.setActionCommand("CANCEL");
+			if (cancelAction != null)
+				btnCancel.addActionListener(cancelAction);
+		}
+		return btnCancel;
+	}
+
+	/**
+	 * Adds an ActionListener to the <b>cancel</b> button.
+	 * @param l
+	 */
+	public void addCancelButtonActionListener(ActionListener l) {
+		btnCancel.addActionListener(l);
+	}
+
+	/**
+	 * Sets the ActionListener to the <b>OK</b> button removing any other previous one.
+	 * @param l
+	 */
+	public void setOkButtonActionListener(ActionListener l) {
+		ActionListener[] listeners = btnOk.getActionListeners();
+		for (int i = 0; i < listeners.length; i++) {
+			btnOk.removeActionListener(listeners[i]);
+		}
+		btnOk.addActionListener(l);
+	}
+
+	/**
+	 * Sets the ActionListener to the <b>cancel</b> button removing any other previous one.
+	 * @param l
+	 */
+	public void setCancelButtonActionListener(ActionListener l) {
+		ActionListener[] listeners = btnCancel.getActionListeners();
+		for (int i = 0; i < listeners.length; i++) {
+			btnCancel.removeActionListener(listeners[i]);
+		}
+		btnCancel.addActionListener(l);
+	}
+
+	/**
+	 * Adds an ActionListener to the <b>OK</b> button.
+	 * @param l
+	 */
+	public void addOkButtonActionListener(ActionListener l) {
+		btnOk.addActionListener(l);
+	}
+
+	/**
+	 * Returns the ok button contained by this panel since resizing issues should be
+	 * automatically handled by the layout manager. The use of this method is discouraged,
+	 * it is keeped only for compatibility issues. Try using specific button properties
+	 * access methods contained by this class instead.
+	 * @return the Ok button
+	 * @deprecated
+	 */
+	public JButton getOkButton() {
+		return btnOk;
+	}
+
+	public boolean isOkButtonEnabled() {
+		return btnOk.isEnabled();
+	}
+
+	public boolean isCancelButtonEnabled() {
+		return btnCancel.isEnabled();
+	}
+
+	public void setOkButtonEnabled(boolean b) {
+		btnOk.setEnabled(b);
+	}
+
+	public void setCancelButtonEnabled(boolean b) {
+		btnCancel.setEnabled(b);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/AcceptCancelPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/images/fastforward.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/images/fastforward.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/images/forward.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/images/forward.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/images/fastbackward.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/images/fastbackward.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/images/backward.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/images/backward.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listeners/BeanListener.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listeners/BeanListener.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listeners/BeanListener.java	(revision 38348)
@@ -0,0 +1,94 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id$
+* $Log$
+* Revision 1.1  2007-08-20 08:34:46  evercher
+* He fusionado LibUI con LibUIComponents
+*
+* Revision 1.2  2006/07/03 09:29:09  jaume
+* javadoc
+*
+* Revision 1.1  2006/03/22 11:18:29  jaume
+* *** empty log message ***
+*
+* Revision 1.4  2006/02/28 15:25:14  jaume
+* *** empty log message ***
+*
+* Revision 1.2.2.3  2006/01/31 16:25:24  jaume
+* correcciones de bugs
+*
+* Revision 1.3  2006/01/26 16:07:14  jaume
+* *** empty log message ***
+*
+* Revision 1.2.2.1  2006/01/26 12:59:33  jaume
+* 0.5
+*
+* Revision 1.2  2006/01/24 14:36:33  jaume
+* This is the new version
+*
+* Revision 1.1.2.1  2006/01/10 13:11:38  jaume
+* *** empty log message ***
+*
+* Revision 1.1.2.2  2006/01/02 18:08:01  jaume
+* Tree de estilos
+*
+* Revision 1.1.2.1  2005/12/30 08:56:19  jaume
+* *** empty log message ***
+*
+*
+*/
+package org.gvsig.gui.beans.listeners;
+
+/**
+ * Defines an object which listens for changes in the value produced by a bean.
+ *
+ * @author jaume dominguez faus
+ */
+public interface BeanListener {
+    /**
+     * Invoked when the target of the listener has changed its value.
+     * @param value, the new value obtained from the target.
+     */
+    public void beanValueChanged(Object value);
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/beans/listeners/BeanListener.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/javax/swing/jLabelCellRenderer/JLabelCellRenderer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/javax/swing/jLabelCellRenderer/JLabelCellRenderer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/javax/swing/jLabelCellRenderer/JLabelCellRenderer.java	(revision 38348)
@@ -0,0 +1,83 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.javax.swing.jLabelCellRenderer;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.io.Serializable;
+
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.ListCellRenderer;
+
+/**
+ * This class allows render a JLabel in a Cell of other graphic component (as a JList)
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class JLabelCellRenderer extends DefaultListCellRenderer implements ListCellRenderer, Serializable {
+	private static final long serialVersionUID = -3820198983465837422L;
+
+	/* (non-Javadoc)
+	 * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
+	 */
+	public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+        /* The DefaultListCellRenderer class will take care of
+         * the JLabels text property, it's foreground and background
+         * colors, and so on.
+         */
+        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+		
+		// Set the text property, background and foreground color
+        if (value instanceof JLabel) {
+        	setText(((JLabel)value).getText());
+    		setBackground(((JLabel)value).getBackground());
+    		
+    		if (isSelected)
+    			setForeground(Color.red);
+    		else
+    			setForeground(((JLabel)value).getForeground());
+        }
+
+		return this;
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/javax/swing/jLabelCellRenderer/JLabelCellRenderer.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/javax/swing/jLabelCellRenderer/JLabelCellRendererWithTextAsToolTipText.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/javax/swing/jLabelCellRenderer/JLabelCellRendererWithTextAsToolTipText.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/javax/swing/jLabelCellRenderer/JLabelCellRendererWithTextAsToolTipText.java	(revision 38348)
@@ -0,0 +1,94 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.gui.javax.swing.jLabelCellRenderer;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.io.Serializable;
+
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.ListCellRenderer;
+/**
+ * This class allows render a JLabel in a Cell of other graphic component (as a JList) and
+ * if mouse is on this cell, a tool tip text with the text value will be shown
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class JLabelCellRendererWithTextAsToolTipText extends JLabelCellRenderer implements ListCellRenderer, Serializable {
+	private static final long serialVersionUID = 4799667459274027212L;
+
+	/* (non-Javadoc)
+	 * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
+	 */
+	public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+        /* The DefaultListCellRenderer class will take care of
+         * the JLabels text property, it's foreground and background
+         * colors, and so on.
+         */
+        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+		
+		// Set the text property, background and foreground color
+        if (value instanceof JLabel) {
+        	setText(((JLabel)value).getText());
+    		setBackground(((JLabel)value).getBackground());
+    		
+    		if (isSelected)
+    			setForeground(Color.red);
+    		else
+    			setForeground(((JLabel)value).getForeground());
+        }
+        
+		return this;
+	}
+	
+	/*
+	 *  (non-Javadoc)
+	 * @see javax.swing.JLabel#setText(java.lang.String)
+	 */
+	public void setText(String text) {
+		super.setText(text);
+		
+		// Set as tool tip text for this cell, it's text value
+		if (text != null)
+			super.setToolTipText(text);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/javax/swing/jLabelCellRenderer/JLabelCellRendererWithTextAsToolTipText.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/IColorTablesFactory.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/IColorTablesFactory.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/IColorTablesFactory.java	(revision 38348)
@@ -0,0 +1,5 @@
+package org.gvsig.gui;
+
+public interface IColorTablesFactory {
+	public IColorTables createColorTables();
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/IColorTablesFactory.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/awt/event/specificCaretPosition/ISpecificCaretPosition.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/awt/event/specificCaretPosition/ISpecificCaretPosition.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/awt/event/specificCaretPosition/ISpecificCaretPosition.java	(revision 38348)
@@ -0,0 +1,67 @@
+package org.gvsig.gui.awt.event.specificCaretPosition;
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Interface with the prototype of methods to have a component with an specific
+ *   caret position
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public interface ISpecificCaretPosition {
+	public static final int LEFT_POSITIONS = 1;
+	public static final int RIGHT_POSITIONS = 2;
+	public static final int LIKE_JTEXTCOMPONENT = 3;
+	
+	/**
+	 * Gets the position of text that will be seen
+	 *
+	 * @return The position of text that will be seen (LEFT_POSITIONS, RIGHT_POSITIONS or LIKE_JTEXTCOMPONENT)
+	 */
+	public int getCaretPositionMode();
+
+	/**
+	 * Sets the position of text that will be seen
+	 * 
+	 * @param caretPositionMode The position of text that will be seen (LEFT_POSITIONS, RIGHT_POSITIONS or LIKE_JTEXTCOMPONENT)
+	 */
+	public void setCaretPositionMode(int caretPositionMode);
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/awt/event/specificCaretPosition/ISpecificCaretPosition.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/awt/event/specificCaretPosition/SpecificCaretPositionListeners.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/awt/event/specificCaretPosition/SpecificCaretPositionListeners.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/awt/event/specificCaretPosition/SpecificCaretPositionListeners.java	(revision 38348)
@@ -0,0 +1,172 @@
+package org.gvsig.gui.awt.event.specificCaretPosition;
+
+import java.awt.event.FocusAdapter;
+import java.awt.event.FocusEvent;
+
+import javax.swing.event.CaretEvent;
+import javax.swing.event.CaretListener;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.text.JTextComponent;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * This class has a method which adds the necessary listeners for convert a JTextComponent to another which can be configurated
+ *   its 'text visible positions when isn't edited' behaviour: left positions, right positions or like JTextComponent (doesn't change text visible positions)
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class SpecificCaretPositionListeners {
+	/**
+	 * Adds three listeners to a JTextComponent component:
+	 *  - A FocusListener -> if this component loses its focus -> set caret position to 0
+	 *  - A DocumentListener -> if this component doesn't have the focus and its caret position has changed -> set caret position to 0
+	 *  - A CaretListener -> sometimes DocumentListener doesn't take effect, but this listener does
+	 * @param component
+	 */
+	public static void setListeners(final JTextComponent component) {
+		// The Focus Listener
+		component.addFocusListener(new FocusAdapter() {
+			/*
+			 *  (non-Javadoc)
+			 * @see java.awt.event.FocusListener#focusLost(java.awt.event.FocusEvent)
+			 */
+			public void focusLost(FocusEvent e) {
+				switch (((ISpecificCaretPosition)component).getCaretPositionMode()) {
+					case ISpecificCaretPosition.LEFT_POSITIONS:
+						(component).setCaretPosition(0);
+						break;
+					case ISpecificCaretPosition.RIGHT_POSITIONS:
+						(component).setCaretPosition(component.getDocument().getLength());
+						break;
+					case ISpecificCaretPosition.LIKE_JTEXTCOMPONENT: // Do nothing
+						break;
+				}
+			}
+		});
+		
+		// The Document Listener
+		component.getDocument().addDocumentListener(new DocumentListener() {
+			/*
+			 *  (non-Javadoc)
+			 * @see javax.swing.event.DocumentListener#changedUpdate(javax.swing.event.DocumentEvent)
+			 */
+			public void changedUpdate(DocumentEvent e) {				
+				if (!component.isFocusOwner()) {
+					switch (((ISpecificCaretPosition)component).getCaretPositionMode()) {
+						case ISpecificCaretPosition.LEFT_POSITIONS:
+							(component).setCaretPosition(0);
+							break;
+						case ISpecificCaretPosition.RIGHT_POSITIONS:
+							(component).setCaretPosition(component.getDocument().getLength());
+							break;
+						case ISpecificCaretPosition.LIKE_JTEXTCOMPONENT: // Do nothing
+							break;
+					}
+				}
+			}
+
+			/*
+			 *  (non-Javadoc)
+			 * @see javax.swing.event.DocumentListener#insertUpdate(javax.swing.event.DocumentEvent)
+			 */
+			public void insertUpdate(DocumentEvent e) {
+				if (!component.isFocusOwner()) {
+					switch (((ISpecificCaretPosition)component).getCaretPositionMode()) {
+						case ISpecificCaretPosition.LEFT_POSITIONS:
+							(component).setCaretPosition(0);
+							break;
+						case ISpecificCaretPosition.RIGHT_POSITIONS:
+							(component).setCaretPosition(component.getDocument().getLength());
+							break;
+						case ISpecificCaretPosition.LIKE_JTEXTCOMPONENT: // Do nothing
+							break;
+					}
+				}
+			}
+
+			/*
+			 *  (non-Javadoc)
+			 * @see javax.swing.event.DocumentListener#removeUpdate(javax.swing.event.DocumentEvent)
+			 */
+			public void removeUpdate(DocumentEvent e) {
+				if (!component.isFocusOwner()) {
+					switch (((ISpecificCaretPosition)component).getCaretPositionMode()) {
+						case ISpecificCaretPosition.LEFT_POSITIONS:
+							(component).setCaretPosition(0);
+							break;
+						case ISpecificCaretPosition.RIGHT_POSITIONS:
+							(component).setCaretPosition(component.getDocument().getLength());
+							break;
+						case ISpecificCaretPosition.LIKE_JTEXTCOMPONENT: // Do nothing
+							break;
+					}
+				}
+			}			
+		});
+
+		// The Caret Listener
+		component.addCaretListener(new CaretListener() {
+			/*
+			 *  (non-Javadoc)
+			 * @see javax.swing.event.CaretListener#caretUpdate(javax.swing.event.CaretEvent)
+			 */
+			public void caretUpdate(CaretEvent e) {				
+				if (!component.isFocusOwner()) {
+					switch (((ISpecificCaretPosition)component).getCaretPositionMode()) {
+						case ISpecificCaretPosition.LEFT_POSITIONS:
+							if ((component).getCaretPosition() != 0)
+								(component).setCaretPosition(0);
+							break;
+						case ISpecificCaretPosition.RIGHT_POSITIONS:
+							if ((component).getCaretPosition() != component.getDocument().getLength())
+							(component).setCaretPosition(component.getDocument().getLength());
+							break;
+						case ISpecificCaretPosition.LIKE_JTEXTCOMPONENT: // Do nothing
+							break;
+					}
+				}
+			}
+		});
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/awt/event/specificCaretPosition/SpecificCaretPositionListeners.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/util/StatusComponent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/util/StatusComponent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/util/StatusComponent.java	(revision 38348)
@@ -0,0 +1,178 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.util;
+
+import java.util.ArrayList;
+
+import javax.swing.JComponent;
+/**
+ * Clase para poder cambiar el estado de un componente y sus componentes hijos.
+ *
+ * Tiene dos formas de uso:
+ *
+ * 1.- Desactivar un componente y todos sus hijos sin necesidad de guardar su
+ *     estado. Para este caso solo es necesario usar el m�todo est�tico
+ *     setDisabled(componente). El hecho de que no exista un activar es que para
+ *     desactivar esta claro que queremos desactivar un componente y sus hijos,
+ *     pero a la hora de activar no todos los hijos deben estar activos, para
+ *     estos casos es necesario ver la segunda opci�n.
+ *
+ * 2.- Desactivar un componente guardando todos sus estados y volver a recuperar
+ *     sus estados como estaba inicialmente. Ejemplo:
+ *
+ *     // Creamos el StatusComponent asoci�ndolo al componente en cuesti�n
+ *     StatusComponent statusComponent = new StatusComponent(miControl);
+ *
+ *     // Desactivamos el componente y sus hijos guardando todos los estados.
+ *     statusComponent.setEnabled(false);
+ *
+ *     ......
+ *     // Activamos el componente recuperando su estado inicial
+ *     statusComponent.setEnabled(true);
+ *
+ * @version 07/09/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class StatusComponent {
+	private ArrayList<StatusComponentStruct> statusList = new ArrayList<StatusComponentStruct>();
+	private boolean    enabled   = true;
+	private JComponent component = null;
+
+	/**
+	 * Estructura de datos para poder tener el estado de un componente
+	 * @version 07/09/2007
+	 * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+	 */
+	public class StatusComponentStruct {
+		private JComponent object;
+		private boolean enabled;
+
+		public boolean isEnabled() {
+			return enabled;
+		}
+
+		public void setEnabled(boolean enabled) {
+			this.enabled = enabled;
+		}
+
+		public JComponent getObject() {
+			return object;
+		}
+
+		public void setObject(JComponent object) {
+			this.object = object;
+		}
+	}
+
+	/**
+	 * Construye un StatusComponent. Es necesario pasarle el componente que
+	 * queremos tratar.
+	 * @param component
+	 */
+	public StatusComponent(JComponent component) {
+		this.component = component;
+	}
+
+	/**
+	 * Recupera el estado de un componente y todos sus hijos, vaciando la pila de
+	 * estados. Eso quiere decir que no se podra volver a recuperar su estado sin
+	 * haberlo guardado previamente.
+	 * @param component
+	 */
+	private void restoreStatus(JComponent component) {
+		boolean auxEnabled = false;
+		boolean finded = false;
+		// Buscar estado de dicho componente
+		for (int i = 0; i < statusList.size(); i++) {
+			StatusComponentStruct auxStatus = (StatusComponentStruct) statusList.get(i);
+			if (auxStatus.getObject() == component) {
+				auxEnabled = auxStatus.isEnabled();
+				statusList.remove(i);
+				finded = true;
+				break;
+			}
+		}
+
+		// Asignar su estado
+		if (finded)
+			component.setEnabled(auxEnabled);
+
+		for (int i = 0; i < component.getComponentCount(); i++)
+			if (component.getComponent(i) instanceof JComponent)
+				restoreStatus((JComponent) component.getComponent(i));
+	}
+
+	/**
+	 * Desactivar el componente y todos sus hijos sin guardar los estados. Hay que
+	 * tener cuidado con no confundirlo con setEnabled(false). Este metodo nunca
+	 * guardara el estado, asi que no se podra recuperar despues dicho estado.
+	 * @param component
+	 */
+	static public void setDisabled(JComponent component) {
+		component.setEnabled(false);
+		for (int i = 0; i < component.getComponentCount(); i++)
+			if (component.getComponent(i) instanceof JComponent)
+				setDisabled((JComponent) component.getComponent(i));
+	}
+
+	/**
+	 * Guarda el estado de un componente. Este proceso es recursivo. El estado
+	 * se guarda en un array y este array no es vaciado inicialmente. La idea es
+	 * guardar en un disabled y recuperar en un enabled y asegurarse que no puede
+	 * ocurrir un disabled o un enabled dos veces.
+	 * @param component
+	 */
+	private void saveComponentsStatus(JComponent component) {
+		// Guardar estado
+		StatusComponentStruct auxStatus = new StatusComponentStruct();
+		auxStatus.setEnabled(component.isEnabled());
+		auxStatus.setObject(component);
+		statusList.add(auxStatus);
+
+		for (int i = 0; i < component.getComponentCount(); i++)
+			if (component.getComponent(i) instanceof JComponent)
+				saveComponentsStatus((JComponent) component.getComponent(i));
+	}
+
+	/**
+	 * Activa o desactiva un componente y todos sus componentes hijos. No se puede
+	 * activar o desactivar dos veces seguidas. Siendo ignoradas las peticiones
+	 * repetitivas.
+	 * @param enabled
+	 */
+	public void setEnabled(boolean enabled) {
+		// Si el estado ha cambiado, hacemos algo
+		if (this.enabled != enabled) {
+			if (enabled) {
+				restoreStatus(component);
+			} else {
+				saveComponentsStatus(component);
+				setDisabled(component);
+			}
+			this.enabled = enabled;
+		}
+	}
+
+	/**
+	 * @return the enabled
+	 */
+	public boolean isEnabled() {
+		return enabled;
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/gui/util/StatusComponent.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/app/gui/panels/ColorPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/app/gui/panels/ColorPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/app/gui/panels/ColorPanel.java	(revision 38348)
@@ -0,0 +1,165 @@
+
+/*
+ * The Unified Mapping Platform (JUMP) is an extensible, interactive GUI
+ * for visualizing and manipulating spatial features with geometry and attributes.
+ *
+ * Copyright (C) 2003 Vivid Solutions
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ * For more information, contact:
+ *
+ * Vivid Solutions
+ * Suite #1A
+ * 2328 Government Street
+ * Victoria BC  V8T 5G5
+ * Canada
+ *
+ * (250)385-6040
+ * www.vividsolutions.com
+ */
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.app.gui.panels;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+
+import javax.swing.JPanel;
+
+
+/**
+ * Displays a colour.
+ */
+public class ColorPanel extends JPanel {
+    private Color fillColor = Color.red;
+    private Color lineColor = Color.green;
+    private int margin = 0;
+
+    public ColorPanel() {
+        setBackground(Color.white);
+    }
+
+    protected void paintComponent(Graphics g) {
+        super.paintComponent(g);
+
+        //Before I simply set the ColorPanel's background colour. But I found this
+        //caused weird paint effects e.g. a second copy of the panel appearing
+        //at the top left corner of the rendered image. [Jon Aquino].
+        //<<TODO:DESIGN>> Use the GraphicsState class [Jon Aquino]
+        Color originalColor = g.getColor();
+        g.setColor(getBackground());
+        ((Graphics2D)g).setStroke(fillStroke);
+        g.fillRect(0, 0, getWidth() - 1, getHeight() - 1);
+        g.setColor(fillColor);
+        g.fillRect(margin, margin, getWidth() - 1 - margin - margin,
+            getHeight() - 1 - margin - margin);
+
+        if (lineColor != null) {
+            g.setColor(lineColor);
+            ((Graphics2D)g).setStroke(lineStroke);
+
+            //-1 to ensure the rectangle doesn't extend past the panel [Jon Aquino]
+            g.drawRect(margin, margin, getWidth() - 1 - margin - margin,
+                getHeight() - 1 - margin - margin);
+        }
+
+        //<<TODO:DESIGN>> Put the next line in a finally block [Jon Aquino]
+        g.setColor(originalColor);
+    }
+
+    /** Workaround for bug 4238829 in the Java bug database */
+    public void setBounds(int x, int y, int w, int h) {
+        super.setBounds(x, y, w, h);
+        validate();
+    }
+
+    public void setFillColor(Color fillColor) {
+        this.fillColor = fillColor;
+    }
+
+    /**
+     * @param lineColor the new line colour, or null to not draw the line
+     */
+    public void setLineColor(Color lineColor) {
+        this.lineColor = lineColor;
+    }
+
+    public void setMargin(int margin) {
+        this.margin = margin;
+    }
+    public Color getFillColor() {
+        return fillColor;
+    }
+
+    public Color getLineColor() {
+        return lineColor;
+    }
+    
+    private BasicStroke fillStroke = new BasicStroke(1);
+    private int lineWidth = 1;
+    private BasicStroke lineStroke = new BasicStroke(lineWidth);
+    
+    public void setLineWidth(int lineWidth) {
+        lineStroke = new BasicStroke(lineWidth);
+        this.lineWidth = lineWidth;
+    }
+    
+    public int getLineWidth() {
+        return lineWidth;
+    }
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/app/gui/panels/ColorPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/app/gui/panels/ColorChooserPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/app/gui/panels/ColorChooserPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/app/gui/panels/ColorChooserPanel.java	(revision 38348)
@@ -0,0 +1,442 @@
+
+/*
+ * The Unified Mapping Platform (JUMP) is an extensible, interactive GUI
+ * for visualizing and manipulating spatial features with geometry and attributes.
+ *
+ * Copyright (C) 2003 Vivid Solutions
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ * For more information, contact:
+ *
+ * Vivid Solutions
+ * Suite #1A
+ * 2328 Government Street
+ * Victoria BC  V8T 5G5
+ * Canada
+ *
+ * (250)385-6040
+ * www.vividsolutions.com
+ */
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+package org.gvsig.app.gui.panels;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JColorChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JSlider;
+import javax.swing.SwingUtilities;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.i18n.Messages;
+
+
+
+/**
+ * A custom Colour Scheme Browser - custom choices based on JColorChooser.
+ */
+
+public class ColorChooserPanel extends JPanel {
+	private GridBagLayout gridBagLayout1 = new GridBagLayout();
+	private JButton changeButton = new JButton();
+
+
+    //{DEFECT-PREVENTION} In accessors, it's better to use "workbench = newWorkbench"
+    //rather than "this.workbench = workbench", because otherwise if you misspell the
+    //argument, Java won't complain! We should do this everywhere. [Jon Aquino]
+    private JPanel outerColorPanel = new JPanel();
+    private ColorPanel colorPanel = new ColorPanel();
+    private Color color = Color.black;
+//    private int alpha;
+    private Dimension dim = new Dimension(100, 22);
+    private Dimension dim2 = new Dimension(dim.width, dim.height*2+5);
+    private ArrayList<ActionListener> actionListeners = new ArrayList<ActionListener>();
+    private boolean withTransp;
+    private boolean withTranspPerc;
+	private boolean withNoFill;
+    private JCheckBox chkUseColor;
+	private JSlider sldTransparency;
+	private JLabel lblTransparency;
+	private boolean muteSldTransparency = false;
+	private double perc = 0.392156863 ;/*100/255*/
+	private ChangeListener sldAction = new ChangeListener() {
+		public void stateChanged(ChangeEvent e) {
+			if (!muteSldTransparency) {
+				int alphaValue = sldTransparency.getValue();
+				setAlpha(alphaValue);
+
+				if(withTranspPerc) {
+					int percValue = (int) (alphaValue * perc);
+					lblTransparency.setText( String.valueOf(percValue) + "%");
+				}
+				fireActionPerformed();
+			}
+		}
+
+	};
+
+
+    public ColorChooserPanel() {
+        this(false);
+    }
+
+    /**
+	 * Constructor method
+	 *
+	 * @param withTransparencySlider boolean that specifies if the user
+	 * wants a slider with the color chooser panel to control the transparency
+	 * of the selected color.Also, it will appear a text which specifies the transparency percentage.
+	 * @param withNoFill boolean that specifies if the color chooser panel
+	 * allows a null value for the color selected (true case). If this values
+	 * is false, when the color selected is null then black color is assigned
+	 * automatically.
+	 */
+    public ColorChooserPanel(boolean withTransparencySlider) {
+    	this(withTransparencySlider,false);
+
+    }
+
+	/**
+	 * Constructor method
+	 *
+	 * @param withTransparencySlider boolean that specifies if the user
+	 * wants a slider with the color chooser panel to control the transparency
+	 * of the selected color.
+	 * @param withNoFill boolean that specifies if the color chooser panel
+	 * allows a null value for the color selected (true case). If this values
+	 * is false, when the color selected is null then black color is assigned
+	 * automatically.
+	 */
+	public ColorChooserPanel(boolean withTransparencySlider, boolean withNoFill) {
+
+		this.withTransp=withTransparencySlider;
+		this.withTranspPerc=withTransparencySlider;
+		this.withNoFill=withNoFill;
+
+		try {
+			if (withTransp) {
+				sldTransparency = new JSlider(0, 255);
+				sldTransparency.addChangeListener(sldAction);
+				int width = withNoFill ? dim2.width - 40 : dim2.width;
+				sldTransparency.setPreferredSize(new Dimension(width-5, dim2.height/2));
+				sldTransparency.setToolTipText(Messages.getText("transparencia"));
+
+				if(withTranspPerc) {
+					lblTransparency = new JLabel();
+					int percValue = (int) (sldTransparency.getValue() * perc);
+					lblTransparency.setText(String.valueOf(percValue) +"%");
+					lblTransparency.setPreferredSize(new Dimension(40,20));
+				}
+
+				sldTransparency.setValue(255);
+
+			}
+			jbInit();
+			colorPanel.setLineColor(null);
+			changeButton.setToolTipText(Messages.getText("browse"));
+
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	private void jbInit() throws Exception {
+		JPanel pane = new JPanel(new GridBagLayout());
+		GridBagConstraints c = new GridBagConstraints();
+
+		changeButton.setText("...");
+		changeButton.addActionListener(new java.awt.event.ActionListener() {
+			public void actionPerformed(ActionEvent e) {
+				changeButton_actionPerformed(e);
+			}
+		});
+		outerColorPanel.setBorder(BorderFactory.createLoweredBevelBorder());
+		outerColorPanel.setPreferredSize(new Dimension(dim.width/2, dim.height));
+		outerColorPanel.setBackground(Color.white);
+
+
+		c.fill = GridBagConstraints.HORIZONTAL;
+		c.gridx = 1;
+		c.gridy = 0;
+		c.gridwidth = 2;
+		pane.add(outerColorPanel,c);
+
+		c.fill = GridBagConstraints.HORIZONTAL;
+		c.gridx = 3;
+		c.gridy = 0;
+		c.gridwidth = 1;
+		pane.add(changeButton,c);
+		outerColorPanel.add(colorPanel);
+
+		if(withNoFill) {
+			chkUseColor = new JCheckBox();
+			chkUseColor.setSelected(true);
+			c.fill = GridBagConstraints.HORIZONTAL;
+			c.gridwidth = 1;
+			c.gridx = 0;
+			c.gridy = 1;
+
+
+			chkUseColor.addActionListener(new java.awt.event.ActionListener() {
+				public void actionPerformed(ActionEvent e) {
+					useColor_actionPerformed(e);
+				}
+			});
+			pane.add(chkUseColor,c);
+		}
+
+
+		if (withTransp) {
+
+			c.fill = GridBagConstraints.HORIZONTAL;
+			c.gridwidth = 3;
+			c.gridx = 1;
+			c.gridy = 1;
+			pane.add(sldTransparency,c);
+
+
+			if(withTranspPerc) {
+				c.fill = GridBagConstraints.HORIZONTAL;
+				c.gridwidth = 3;
+				c.gridx = 4;
+				c.gridy = 1;
+				pane.add(lblTransparency,c);
+			}
+
+		}
+
+		add(pane);
+	}
+
+    private void changeButton_actionPerformed(ActionEvent e) {
+    	Color newColor = JColorChooser.showDialog(SwingUtilities.windowForComponent(this), Messages.getText("choose_color"), color);
+
+        if (newColor == null) {
+            return;
+        }
+
+        setColor(newColor);
+        fireActionPerformed();
+    }
+
+    /**
+	 * Returns true if the check box of the color chooser panel is selected.
+	 * False otherwise.
+	 * @return boolean true if the check box is selected. Otherwise, false.
+	 */
+	public boolean getUseColorisSelected() {
+		if(withNoFill)
+			return chkUseColor.isSelected();
+		return false;
+	}
+	/**
+	 * Sets the check box of the color chooser panel
+
+	 * @param b boolean true if the user wants to select it.Otherwise, false.
+	 */
+	public void setUseColorIsSelected(boolean b) {
+		if(withNoFill)
+			chkUseColor.setSelected(b);
+	}
+	/**
+	 * Controls the events when the check box of the color chooser panel
+	 * is modified
+	 *
+	 * @param e Action Event
+	 */
+	private void useColor_actionPerformed(ActionEvent e) {
+		if(chkUseColor.isSelected())
+			setColor(color);
+		else setColor(null);
+		fireActionPerformed();
+	}
+
+     public void addActionListener(ActionListener l) {
+        actionListeners.add(l);
+    }
+
+    public void removeActionListener(ActionListener l) {
+        actionListeners.remove(l);
+    }
+
+    protected void fireActionPerformed() {
+        for (Iterator<ActionListener> i = actionListeners.iterator(); i.hasNext();) {
+            i.next().actionPerformed(new ActionEvent(this, 0, null));
+        }
+    }
+	/**
+	 * Sets the color of the chooser panel.
+	 *
+	 * @param color Color to be selected.
+	 */
+	public void setColor(Color color) {
+
+		if( color != null) {
+			this.color = color;
+			setAlpha(color.getAlpha());
+			updateColorPanel();
+		}
+
+	}
+
+	/**
+	 * Sets the alpha value of the color selected in the color chooser
+	 * panel.
+	 *
+	 * @param alpha Alpha value of the color.
+	 */
+	public void setAlpha(int alpha) {
+		muteSldTransparency = true;
+
+		if (color != null)
+			color=alphaColor(color,alpha);
+
+		if (withTransp) {
+			sldTransparency.setValue(alpha);
+			sldTransparency.validate();
+			int percValue = (int) (alpha * perc);
+			lblTransparency.setText( String.valueOf(percValue)+ "%");
+		}
+
+		updateColorPanel();
+		muteSldTransparency = false;
+//		fireActionPerformed();
+	}
+
+	public int getAlpha() {
+		if (withTransp) {
+			return sldTransparency.getValue();
+		} else {
+			return color.getAlpha();
+		}
+
+	}
+
+    private void updateColorPanel() {
+        colorPanel.setFillColor(color);
+        colorPanel.repaint();
+    }
+
+
+	/**
+	 * Obtains the selected color in the color chooser panel.
+	 *
+	 * @return color the selected color
+	 */
+	public Color getColor() {
+		return color;
+	}
+
+	public void disabledWithTransparency() {
+		changeButton.setEnabled(false);
+		if(withNoFill)
+			chkUseColor.setEnabled(false);
+
+	}
+
+	@Override
+	public void setEnabled(boolean newEnabled) {
+
+		changeButton.setEnabled(newEnabled);
+		if(withTransp) {
+			sldTransparency.setEnabled(newEnabled);
+		}
+		if(withTranspPerc) {
+			lblTransparency.setEnabled(newEnabled);
+		}
+		if(withNoFill) {
+			chkUseColor.setEnabled(newEnabled);
+		}
+
+	}
+
+	public static void main(String[] args) {
+		JFrame f = new JFrame();
+
+		final ColorChooserPanel ce2 = new ColorChooserPanel(true,true);
+
+		JPanel content = new JPanel(new GridLayout(2, 1));
+
+		content.add(ce2);
+
+
+		f.setContentPane(content);
+		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+		f.pack();
+		f.setVisible(true);
+
+	}
+
+    private Color alphaColor(Color color, int alpha) {
+        return new Color(color.getRed(), color.getGreen(), color.getBlue(),
+            alpha);
+    }
+
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src/org/gvsig/app/gui/panels/ColorChooserPanel.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/pom.xml
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/pom.xml	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/pom.xml	(revision 38348)
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+	<modelVersion>4.0.0</modelVersion>
+	<artifactId>org.gvsig.ui</artifactId>
+	<packaging>jar</packaging>
+	<version>2.0.1-SNAPSHOT</version>
+	<name>libUIComponent</name>
+	<description>Swing components collection</description>
+	<parent>
+		<groupId>org.gvsig</groupId>
+		<artifactId>org.gvsig.maven.base.pom</artifactId>
+		<version>1.0.8-SNAPSHOT</version>
+	</parent>
+	<scm>
+		<connection>scm:svn:https://devel.gvsig.org/svn/gvsig-desktop/branches/v2_0_0_prep/libraries/libUIComponent</connection>
+		<developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-desktop/branches/v2_0_0_prep/libraries/libUIComponent</developerConnection>
+		<url>https://devel.gvsig.org/redmine/projects/gvsig-desktop/repository/show/branches/v2_0_0_prep/libraries/libUIComponent</url>
+	</scm>
+	<repositories>
+		<repository>
+			<id>gvsig-public-http-repository</id>
+			<name>gvSIG maven public HTTP repository</name>
+			<url>http://devel.gvsig.org/m2repo/j2se</url>
+			<releases>
+				<enabled>true</enabled>
+				<updatePolicy>daily</updatePolicy>
+				<checksumPolicy>warn</checksumPolicy>
+			</releases>
+			<snapshots>
+				<enabled>true</enabled>
+				<updatePolicy>daily</updatePolicy>
+				<checksumPolicy>warn</checksumPolicy>
+			</snapshots>
+		</repository>
+	</repositories>
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.gvsig</groupId>
+				<artifactId>org.gvsig.core.maven.dependencies</artifactId>
+				<version>2.0.1-SNAPSHOT</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+	<dependencies>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.i18n</artifactId>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig</groupId>
+			<artifactId>org.gvsig.tools.lib</artifactId>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.jfree</groupId>
+			<artifactId>jfreechart</artifactId>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>net.sf</groupId>
+			<artifactId>flib-jcalendar</artifactId>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>jwizardcomponent</groupId>
+			<artifactId>jwizardcomponent</artifactId>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.gvsig.external</groupId>
+			<artifactId>org.gvsig.external.jump</artifactId>
+			<scope>compile</scope>
+			<version>1.0.0-SNAPSHOT</version>
+		</dependency>
+	</dependencies>
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<testSourceDirectory>src-test-ui</testSourceDirectory>
+		<resources>
+			<resource>
+				<directory>src</directory>
+				<includes>
+					<include>**/*.gif</include>
+					<include>**/*.png</include>
+					<include>**/*.PNG</include>
+					<include> **/*.bmp</include>
+					<include> **/*.jpg</include>
+					<include> **/*.jpeg</include>
+					<include> **/*.properties</include>
+				</includes>
+			</resource>
+			<resource>
+				<targetPath>org/gvsig/gui/beans/resources/translations</targetPath>
+				<filtering>false</filtering>
+				<directory>${basedir}/config</directory>
+				<includes>
+					<include>*.properties</include>
+				</includes>
+			</resource>
+		</resources>
+		<!-- TODO: MAKE TESTS WORK AND REMOVE THIS OPTION -->
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<configuration>
+					<skipTests>true</skipTests>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<testExcludes>
+						<exclude>**</exclude>
+					</testExcludes>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+	<profiles>
+		<profile>
+			<id>eclipse-project</id>
+			<build>
+				<plugins>
+					<plugin>
+						<artifactId>maven-antrun-plugin</artifactId>
+						<configuration>
+							<tasks>
+								<ant antfile="${basedir}/../build/ant-tasks/eclipse-tasks.xml"
+									target="eclipse.eclipse" />
+							</tasks>
+						</configuration>
+						<dependencies>
+							<dependency>
+								<groupId>org.apache.ant</groupId>
+								<artifactId>ant-trax</artifactId>
+								<version>1.7.1</version>
+							</dependency>
+							<dependency>
+								<groupId>xalan</groupId>
+								<artifactId>xalan</artifactId>
+								<version>2.6.0</version>
+							</dependency>
+						</dependencies>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+		<profile>
+			<id>gvsig-install</id>
+			<activation>
+				<activeByDefault>true</activeByDefault>
+			</activation>
+			<properties>
+				<!-- gvSIG installation folder -->
+				<gvsig.install.dir>${basedir}/../build/product
+				</gvsig.install.dir>
+			</properties>
+		</profile>
+	</profiles>
+	<properties>
+		<eclipse.project.name>libUIComponent</eclipse.project.name>
+	</properties>
+</project>
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/.cvsignore
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/.cvsignore	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/.cvsignore	(revision 38348)
@@ -0,0 +1,2 @@
+bin
+bin-test

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/.cvsignore
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/listview/TestListView.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/listview/TestListView.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/listview/TestListView.java	(revision 38348)
@@ -0,0 +1,146 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.listview;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+/**
+ * @version 28/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestListView implements ActionListener {
+	private JFrame jFrame = null;
+	private JScrollPane jScrollPane = null;
+	private ListViewComponent listViewComponent = null;
+	JButton botonAdd = null;
+	JButton botonDel = null;
+	JCheckBox multiselect = null;
+	JCheckBox enabled = null;
+
+	public TestListView() {
+		initialize();
+	}
+
+	private void initialize() {
+		jFrame = new JFrame();
+		jScrollPane = new JScrollPane();
+
+		listViewComponent = new ListViewComponent();
+		listViewComponent.setEditable(true);
+		jScrollPane.setViewportView(listViewComponent);
+
+		for (int i=0; i<1000; i++) {
+			ListViewItem item = new ListViewItem(new RampPainter(), "Prueba-" + i);
+			listViewComponent.addItem(item, true);
+		}
+
+		JPanel jpane = new JPanel();
+		jpane.setLayout(new BorderLayout());
+		jpane.add(jScrollPane, BorderLayout.CENTER);
+
+		JPanel jPanel1 = new JPanel();
+		jPanel1.setLayout(new java.awt.GridBagLayout());
+
+		jpane.add(jPanel1, BorderLayout.SOUTH);
+
+		botonAdd = new JButton("Add");
+		botonAdd.addActionListener(this);
+		GridBagConstraints gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.insets = new java.awt.Insets(5, 5, 2, 2);
+		jPanel1.add(botonAdd, gridBagConstraints);
+
+		botonDel = new JButton("Del");
+		botonDel.addActionListener(this);
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 1;
+		gridBagConstraints.gridy = 0;
+		gridBagConstraints.insets = new java.awt.Insets(5, 2, 2, 5);
+		jPanel1.add(botonDel, gridBagConstraints);
+
+		multiselect = new JCheckBox("MultiSelect");
+		multiselect.addActionListener(this);
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 1;
+		gridBagConstraints.gridwidth = 2;
+		gridBagConstraints.insets = new java.awt.Insets(2, 5, 5, 5);
+		jPanel1.add(multiselect, gridBagConstraints);
+
+		enabled = new JCheckBox("Activo");
+		enabled.addActionListener(this);
+		enabled.setSelected(true);
+		gridBagConstraints = new java.awt.GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 2;
+		gridBagConstraints.gridwidth = 2;
+		gridBagConstraints.insets = new java.awt.Insets(2, 5, 5, 5);
+		jPanel1.add(enabled, gridBagConstraints);
+
+		jFrame.setSize(new Dimension(192, 300));
+		jFrame.setContentPane(jpane);
+
+		jFrame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+		jFrame.setVisible(true);
+	}
+
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) {
+		new TestListView();
+	}
+
+	int id = 0;
+	/*
+	 * (non-Javadoc)
+	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+	 */
+	public void actionPerformed(ActionEvent e) {
+		if (e.getSource() == botonAdd) {
+			ListViewItem item = new ListViewItem(new RampPainter(), "Prueba");
+			listViewComponent.addItem(item);
+			return;
+		}
+
+		if (e.getSource() == botonDel) {
+			listViewComponent.removeSelecteds();
+			return;
+		}
+
+		if (e.getSource() == multiselect) {
+			listViewComponent.setMultiSelect(multiselect.isSelected());
+			return;
+		}
+
+		if (e.getSource() == enabled) {
+			listViewComponent.setEnabled(enabled.isSelected());
+			jScrollPane.setEnabled(enabled.isSelected());
+			return;
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/listview/TestListView.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/listview/RampPainter.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/listview/RampPainter.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/listview/RampPainter.java	(revision 38348)
@@ -0,0 +1,54 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.listview;
+
+import java.awt.Color;
+import java.awt.GradientPaint;
+import java.awt.Graphics2D;
+import java.awt.Rectangle;
+import java.awt.Shape;
+/**
+ *
+ * @version 29/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class RampPainter implements IIconPaint {
+
+	public RampPainter() {
+	}
+
+	public void paint(Graphics2D g, boolean isSelected) {
+		Shape clip = g.getClip();
+		Rectangle area = clip.getBounds();
+
+		int x1 = area.x;
+		int x2 = area.x + area.width - 1;
+
+		Color color1 = Color.green;
+		Color color2 = Color.red;
+		g.setPaint(new GradientPaint(area.x, 0, color1, area.x + area.width, 0, color2, false));
+		g.fillRect(area.x, area.y, area.width, area.height);
+
+		if (isSelected)
+			g.setColor(Color.black);
+		else
+			g.setColor(new Color(96, 96, 96));
+		g.drawRect(x1, area.y, x2 - x1, area.height - 1);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/listview/RampPainter.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/AllTests.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/AllTests.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/AllTests.java	(revision 38348)
@@ -0,0 +1,24 @@
+package org.gvsig.gui.beans;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.gvsig.gui.beans.panelGroup.Test1ExceptionsUsingTabbedPanel;
+import org.gvsig.gui.beans.panelGroup.Test1ExceptionsUsingTreePanel;
+import org.gvsig.gui.beans.panelGroup.TestPanelGroupLoaderFromList;
+import org.gvsig.gui.beans.panelGroup.TestPanelGroupManager;
+
+public class AllTests {
+
+	public static Test suite() {
+		TestSuite suite = new TestSuite("Test for org.gvsig.gui.beans");
+		//$JUnit-BEGIN$
+		suite.addTestSuite(TestPanelGroupLoaderFromList.class);
+		suite.addTestSuite(TestPanelGroupManager.class);
+		suite.addTestSuite(Test1ExceptionsUsingTabbedPanel.class);
+		suite.addTestSuite(Test1ExceptionsUsingTreePanel.class);
+		//$JUnit-END$
+		return suite;
+	}
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/AllTests.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1TreePanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1TreePanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1TreePanel.java	(revision 38348)
@@ -0,0 +1,244 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.util.ArrayList;
+
+import javax.swing.JFrame;
+import javax.swing.JTree;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+
+import org.gvsig.tools.exception.BaseException;
+import org.gvsig.gui.beans.panelGroup.loaders.PanelGroupLoaderFromList;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+import org.gvsig.gui.beans.panelGroup.panels.IPanel;
+import org.gvsig.gui.beans.panelGroup.samples.SampleInfoPanel;
+import org.gvsig.gui.beans.panelGroup.samples.SamplePanelWithoutGroupLabel;
+import org.gvsig.gui.beans.panelGroup.samples.Samples_Data;
+import org.gvsig.gui.beans.panelGroup.treePanel.TreePanel;
+
+/**
+ * <p>Tests the creation of a {@link TreePanel TreePanel} object using {@link PanelGroupLoaderFromList PanelGroupLoaderFromList} .</p>
+ * 
+ * @version 17/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class Test1TreePanel {
+	private static JFrame jFrame;
+	private static TreePanel panelGroup;
+	
+	/**
+	 * <p>Test method for the Test1TreePanel.</p>
+	 * 
+	 * @param args optional arguments
+	 */
+	public static void main(String[] args) {
+		try {
+			PanelGroupManager manager = PanelGroupManager.getManager();
+			manager.registerPanelGroup(TreePanel.class);
+			manager.setDefaultType(TreePanel.class);
+
+			// Use the defined  samples 
+//			Class[] panelClass = new Class[Samples_Data.TEST1_CLASSES.length];
+//			int i;
+//			
+//			for (i = 0; i < Samples_Data.TEST1_CLASSES.length; i ++) {
+//				panelClass[i] = Samples_Data.TEST1_CLASSES[i];
+//			}
+
+			panelGroup = (TreePanel) manager.getPanelGroup(Samples_Data.REFERENCE1);
+			PanelGroupLoaderFromList loader = new PanelGroupLoaderFromList(Samples_Data.TEST1_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+			
+			// Begin: Other tests
+			ArrayList<IPanel> panels = new ArrayList<IPanel>();
+
+			loader.loadPanels(panels);
+
+			// Begin: Initialise sample classes
+//			i = 0;
+//
+//			for (AbstractPanel panel: panels) {
+//				panel.setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+//				panel.setReference(Samples_Data.REFERENCE1);
+//				
+//				panel.setID(Samples_Data.PANELS1_IDS[i]);
+//				panel.setLabel(Samples_Data.PANELS1_LABELS[i]);
+//				panel.setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[i++]);
+//				
+//				panelGroup.addPanel(panel);
+//			}
+			// End: Initialise sample classes
+			
+			// Begin: Tests adding and removing a panel without "label" -> this shoudn't add that panel
+			panels = new ArrayList<IPanel>();
+			loader = new PanelGroupLoaderFromList(new Class[]{SampleInfoPanel.class, SampleInfoPanel.class, SamplePanelWithoutGroupLabel.class});
+			loader.loadPanels(panels);
+			((AbstractPanel)panels.get(0)).setPreferredSize(new Dimension(600, 700));
+			panels.get(0).setReference(Samples_Data.REFERENCE1);
+			panels.get(0).setID("ID");
+			panels.get(0).setLabel(null);
+			panels.get(0).setLabelGroup("LABEL_GROUP");
+			panelGroup.addPanel(panels.get(0));
+			AbstractPanel incorrectAPanel = (AbstractPanel) panels.get(0);
+			//panelGroup.removePanel(panels.get(0));
+			// End: Tests adding and removing a panel without "label" -> this shoudn't add that panel
+
+			// Begin: Tests adding and removing a panel
+			((AbstractPanel)panels.get(1)).setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+			panels.get(1).setReference(Samples_Data.REFERENCE1);
+			panels.get(1).setID("ID");
+			panels.get(1).setLabel("LABEL_TEST_REPEATED_GROUP");
+			panels.get(1).setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[0]);
+			panelGroup.addPanel(panels.get(1));
+			AbstractPanel repeatedGroupAPanel = (AbstractPanel) panels.get(1);
+			//panelGroup.removePanel(panels.get(0));
+			// End: Tests adding and removing a panel
+			
+			// Begin: Tests adding and removing a panel without "labelGroup"
+			((AbstractPanel)panels.get(2)).setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+			panels.get(2).setReference(Samples_Data.REFERENCE1);
+			panelGroup.addPanel(panels.get(2));
+			//panelGroup.removePanel(panels.get(1));
+			// End: Tests adding and removing a panel without "labelGroup"
+			
+			// Begin: Test visibility			
+			Object[] oPanels = panelGroup.values().toArray();			
+			panelGroup.setPanelInGUI(repeatedGroupAPanel, false);// test set false a panel with a repeated group
+			panelGroup.setPanelInGUI((IPanel)oPanels[1], false); // intermediate element
+			 ((AbstractPanel)oPanels[1]).setInGroupGUI(true);    // test change the visibility from a panel child
+			 ((AbstractPanel)oPanels[1]).setInGroupGUI(false);    // test change the visibility from a panel child
+			 ((AbstractPanel)oPanels[1]).setInGroupGUI(true);    // test change the visibility from a panel child
+			panelGroup.setPanelInGUI((IPanel)oPanels[0], false); // first element
+			panelGroup.setPanelInGUI(incorrectAPanel, false);	 // incorrect element
+			panelGroup.setPanelInGUI(panels.get(2), false);			 // last element (and labelGroup = null)
+			panelGroup.setPanelInGUI((IPanel)oPanels[2], false); // intermediate element
+			panelGroup.setPanelInGUI((IPanel)oPanels[2], false); // test set false two times the same node
+			panelGroup.setPanelInGUI((IPanel)oPanels[0], true);  // first element
+			panelGroup.setPanelInGUI(incorrectAPanel, true);	 // incorrect element
+			panelGroup.setPanelInGUI((IPanel)oPanels[1], true);  // intermediate element
+			panelGroup.setPanelInGUI((IPanel)oPanels[1], true);  // test set true two times the same node
+			panelGroup.setPanelInGUI((IPanel)oPanels[2], true);  // intermediate element
+			panelGroup.setPanelInGUI(panels.get(2), true); 			 // last element (and labelGroup = null)
+			panelGroup.setPanelInGUI(repeatedGroupAPanel, true); // test set false a panel with a repeated group
+			
+			panels.get(1).setInGroupGUI(false);    // test change the visibility from a panel child
+			if (!panels.get(1).isInGroupGUI()) {
+				System.out.println("Test OK: the panel isn't in the GUI");
+				System.out.println("Hay " + panelGroup.getPanelInGUICount() + " paneles en GUI, de los " + panelGroup.getPanelCount() + " registrados.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel is in the GUI");
+			}
+			
+			panels.get(1).setInGroupGUI(true);     // test change the visibility from a panel child
+			if (panels.get(1).isInGroupGUI()) {
+				System.out.println("Test OK: the panel is in the GUI");
+				System.out.println("Hay " + panelGroup.getPanelInGUICount() + " paneles en GUI, de los " + panelGroup.getPanelCount() + " registrados.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel isn't in the GUI");
+			}
+			
+			panelGroup.setPanelInGUI(panels.get(1), false);
+			if (!panelGroup.isPanelInGUI(panels.get(1))) {
+				System.out.println("Test OK: the panel isn't in the GUI");
+				System.out.println("Hay " + panelGroup.getPanelInGUICount() + " paneles en GUI, de los " + panelGroup.getPanelCount() + " registrados.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel is in the GUI");
+			}
+			
+			panelGroup.setPanelInGUI(panels.get(1), true);
+			if (panelGroup.isPanelInGUI(panels.get(1))) {
+				System.out.println("Test OK: the panel is in the GUI");
+				System.out.println("Hay " + panelGroup.getPanelInGUICount() + " paneles en GUI, de los " + panelGroup.getPanelCount() + " registrados.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel isn't in the GUI");
+			}
+			// End: Test visibility -> True or False
+			
+			jFrame = new JFrame();
+			jFrame.setTitle("Test TreePanel using PanelGroupLoaderFromList");
+		    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+		    jFrame.setSize(panelGroup.getPreferredSize());
+		    jFrame.getContentPane().setLayout(new BorderLayout());
+		    jFrame.getContentPane().add(panelGroup, BorderLayout.CENTER);
+		    
+			jFrame.setVisible(true);
+			
+			// Begin: Test the method 'getSelectedIndex()':
+			panelGroup.addTreeSelectionListener(new TreeSelectionListener() {
+				/*
+				 * (non-Javadoc)
+				 * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
+				 */
+				public void valueChanged(TreeSelectionEvent e) {
+		        	JTree jTree = (JTree) e.getSource();
+		        	
+		        	System.out.println("Selection changed. New selection path: " + jTree.getSelectionPath());
+
+		        	showActivePanelInformation();
+				}
+			});
+			// End: Test the method 'getSelectedIndex()':
+				
+			// Begin: Test the methods: 'getDividerLocation()' and 'setDividerLocation(int)'
+			System.out.println("Divider location before setting it to the position 250 : " + panelGroup.getDividerLocation());
+			panelGroup.setDividerLocation(250);
+			System.out.println("Divider location after setting it to the position 250 : " + panelGroup.getDividerLocation());
+			// End: Test the methods: 'getDividerLocation()' and 'setDividerLocation(int)'
+
+			// Begin: Test the methods: 'getDividerSize()' and 'setDividerSize(int)'
+			System.out.println("Divider size before setting it to the position 10 : " + panelGroup.getDividerSize());
+			panelGroup.setDividerSize(10);
+			System.out.println("Divider size after setting it to the position 10 : " + panelGroup.getDividerSize());
+			// End: Test the methods: 'getDividerSize()' and 'setDividerSize(int)'
+			
+			// End: Other tests
+		} catch (BaseException e) {
+			System.out.println(e.getLocalizedMessageStack());
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	
+	/**
+	 * <p>Shows information about the current active panel using the standard output.</p>
+	 */
+	private static void showActivePanelInformation() {
+		// Test the method 'getActivePanel()'
+		IPanel panel = panelGroup.getActivePanel();
+
+		if (panel == null) {
+			System.out.println("The node selected of the JTree in the TreePanel object isn't a IPanel .");
+		}
+		else {
+			System.out.println("New active panel:\n\tID: " + panel.getID() + "\n\tLABEL_GROUP: " + panel.getLabelGroup() + "\n\tLABEL: " + panel.getLabel() + "\n\tCLASS: " + panel.getClass());
+		}
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1TabbedPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1TabbedPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1TabbedPanel.java	(revision 38348)
@@ -0,0 +1,322 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup;
+
+import java.awt.Dimension;
+import java.util.ArrayList;
+
+import javax.swing.JFrame;
+import javax.swing.JTabbedPane;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.tools.exception.BaseException;
+import org.gvsig.gui.beans.panelGroup.loaders.PanelGroupLoaderFromList;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+import org.gvsig.gui.beans.panelGroup.panels.IPanel;
+import org.gvsig.gui.beans.panelGroup.samples.SampleInfoPanel;
+import org.gvsig.gui.beans.panelGroup.samples.Samples_Data;
+import org.gvsig.gui.beans.panelGroup.tabbedPanel.TabbedPanel;
+
+/**
+ * <p>Tests the creation of a {@link TabbedPanel TabbedPanel} object using {@link PanelGroupLoaderFromList PanelGroupLoaderFromList} .</p>
+ * 
+ * @version 16/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class Test1TabbedPanel {
+	private static TabbedPanel panelGroup;
+	
+	/**
+	 * <p>Test method for the Test1TabbedPanel.</p>
+	 * 
+	 * @param args optional arguments
+	 */
+	public static void main(String[] args) {
+		try {
+			PanelGroupManager manager = PanelGroupManager.getManager();
+			manager.registerPanelGroup(TabbedPanel.class);
+			manager.setDefaultType(TabbedPanel.class);
+
+			panelGroup = (TabbedPanel) manager.getPanelGroup(Samples_Data.REFERENCE1);
+			PanelGroupLoaderFromList loader = new PanelGroupLoaderFromList(Samples_Data.TEST1_CLASSES);
+
+			// Begin: Test the normal load
+			System.out.println("----------> Begin: Test the normal load");
+
+			panelGroup.loadPanels(loader);
+
+			System.out.println("End: Test the normal load <----------");
+			// End: Test the normal load
+			
+			// Begin: Other tests
+			ArrayList<IPanel> panels = new ArrayList<IPanel>();
+
+			// Begin: Initialize sample classes
+//			int i = 0;
+//
+//			for (AbstractPanel panel: panels) {
+//				panel.setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+//				panel.setReference(Samples_Data.REFERENCE1);
+//				
+//				panel.setID(Samples_Data.PANELS1_IDS[i]);
+//				panel.setLabel(Samples_Data.PANELS1_LABELS[i]);
+//				panel.setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[i++]);
+//				
+//				panelGroup.addPanel(panel);
+//			}
+			// End: Initialize sample classes
+
+			// Begin: Tests adding and removing a panel without "label" -> this shoudn't add that panel
+			System.out.println("----------> Begin: Tests adding and removing a panel without \"label\" -> this shoudn't add that panel");
+			loader = new PanelGroupLoaderFromList(new Class[]{SampleInfoPanel.class});
+			loader.loadPanels(panels);
+
+			panels.get(0).setReference(Samples_Data.REFERENCE1);
+			panels.get(0).setID("ID");
+			panels.get(0).setLabel(null);
+			panels.get(0).setLabelGroup("LABEL_GROUP");
+			panelGroup.addPanel(panels.get(0));
+			panelGroup.removePanel(panels.get(0));
+			System.out.println("End: Tests adding and removing a panel without \"label\" -> this shoudn't add that panel <----------");
+			// End: Tests adding and removing a panel without "label" -> this shoudn't add that panel
+
+			// Begin: Tests: has changed?
+			System.out.println("----------> Begin: Tests: has changed?");
+			Object[] oPanels = panelGroup.values().toArray();
+
+			((AbstractPanel)oPanels[0]).setPreferredSize(new Dimension(700, 600));
+			System.out.println("Has the new panel '" + ((AbstractPanel)oPanels[0]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[0]).hasChanged());
+
+			String old_Label = ((AbstractPanel)oPanels[0]).getLabel();
+			((AbstractPanel)oPanels[0]).setLabel(((AbstractPanel)oPanels[0]).getLabel() + " modified");
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[0]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[0]).hasChanged());
+
+			((AbstractPanel)oPanels[0]).setLabel(old_Label);
+			((AbstractPanel)oPanels[0]).resetChangedStatus();
+			((AbstractPanel)oPanels[0]).setID(((AbstractPanel)oPanels[0]).getID() + " modified");
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[0]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[0]).hasChanged());
+
+			((AbstractPanel)oPanels[0]).resetChangedStatus();
+			((AbstractPanel)oPanels[0]).setLabelGroup(((AbstractPanel)oPanels[0]).getLabelGroup() + " modified");
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[0]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[0]).hasChanged());
+
+			((AbstractPanel)oPanels[0]).resetChangedStatus();
+			System.out.println("Has the panel reseted '" + ((AbstractPanel)oPanels[0]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[0]).hasChanged());
+			System.out.println("End: Tests: has changed? <----------");
+			// End: Tests: has changed?
+
+			// Begin: Test visibility
+			System.out.println("----------> Begin: Test visibility");
+			((AbstractPanel)oPanels[0]).setID("ID");
+			((AbstractPanel)oPanels[0]).setLabel("LABEL_TEST_VISIBILITY");
+			((AbstractPanel)oPanels[0]).setLabelGroup("LABEL_GROUP");
+
+			panelGroup.addPanel(((AbstractPanel)oPanels[0]));
+			
+			((AbstractPanel)oPanels[0]).setInGroupGUI(false);    // test change the visibility from a panel child
+			if (!((AbstractPanel)oPanels[0]).isInGroupGUI()) {
+				System.out.println("Test OK: the panel isn't in the GUI");
+				System.out.println("Hay " + panelGroup.getPanelInGUICount() + " paneles en GUI, de los " + panelGroup.getPanelCount() + " registrados.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel is in the GUI");
+			}
+			
+			((AbstractPanel)oPanels[0]).setInGroupGUI(true);     // test change the visibility from a panel child
+			if (((AbstractPanel)oPanels[0]).isInGroupGUI()) {
+				System.out.println("Test OK: the panel is in the GUI");
+				System.out.println("Hay " + panelGroup.getPanelInGUICount() + " paneles en GUI, de los " + panelGroup.getPanelCount() + " registrados.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel isn't in the GUI");
+			}
+			
+			panelGroup.setPanelInGUI(((AbstractPanel)oPanels[0]), false);
+			if (!panelGroup.isPanelInGUI(((AbstractPanel)oPanels[0]))) {
+				System.out.println("Test OK: the panel isn't in the GUI");
+				System.out.println("Hay " + panelGroup.getPanelInGUICount() + " paneles en GUI, de los " + panelGroup.getPanelCount() + " registrados.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel is in the GUI");
+			}
+			
+			panelGroup.setPanelInGUI(((AbstractPanel)oPanels[0]), true);
+			if (panelGroup.isPanelInGUI(((AbstractPanel)oPanels[0]))) {
+				System.out.println("Test OK: the panel is in the GUI");
+				System.out.println("Hay " + panelGroup.getPanelInGUICount() + " paneles en GUI, de los " + panelGroup.getPanelCount() + " registrados.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel isn't in the GUI");
+			}
+			System.out.println("End: Test visibility <----------");
+			// End: Test visibility
+
+			// Begin: Tests: Is a panel enabled?
+			System.out.println("----------> Begin: Tests: Is a panel enabled?");
+			panelGroup.setEnabledAt(0, false); // test change the enable status to a panel
+			if (!panelGroup.isEnabledAt(0)) {
+				System.out.println("Test OK: the panel isn't enabled.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel is enabled.");
+			}
+			
+			panelGroup.setEnabledAt(0, true); // test change the enable status to a panel
+			if (panelGroup.isEnabledAt(0)) {
+				System.out.println("Test OK: the panel is enabled.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel isn't enabled.");
+			}
+			
+			panelGroup.setEnabledAt(3, false); // test change the enable status to a panel
+			if (!panelGroup.isEnabledAt(3)) {
+				System.out.println("Test OK: the panel isn't enabled.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel is enabled.");
+			}
+			
+			panelGroup.setEnabledAt(3, true); // test change the enable status to a panel
+			if (panelGroup.isEnabledAt(3)) {
+				System.out.println("Test OK: the panel is enabled.");
+			}
+			else {
+				System.out.println("Test FAILED: the panel isn't enabled.");
+			}
+			System.out.println("End: Tests: Is a panel enabled? <----------");
+			// End: Tests: Is a panel enabled?
+			
+			// Begin: Test: accept, apply or cancel, after request if has changed?
+			System.out.println("----------> Begin: Test: accept, apply or cancel, after request if has changed?");
+//			Object[] obj_panels = (((Collection<IPanel>) panelGroup.values()).toArray());
+			
+			// First part:
+			System.out.println("First part:");
+			System.out.println("Is the new panel '" + ((AbstractPanel)oPanels[1]).getLabel() + "' always applicable?: " + ((AbstractPanel)oPanels[1]).isAlwaysApplicable());
+			System.out.println("Has the new panel '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			((AbstractPanel)oPanels[1]).setLabel(((AbstractPanel)oPanels[1]).getLabel() + " modified");
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.accept();
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after accept?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			((AbstractPanel)oPanels[1]).setLabel(((AbstractPanel)oPanels[1]).getLabel() + " modified");
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.apply();
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after apply?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			((AbstractPanel)oPanels[1]).setLabel(((AbstractPanel)oPanels[1]).getLabel() + " modified");
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.cancel();
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after cancel?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.accept();
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after accept?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.apply();
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after apply?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.cancel();
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after cancel?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			// Second part:
+			System.out.println("Second part:");
+			((AbstractPanel)oPanels[1]).setAlwaysApplicable(false);
+			System.out.println("Is the new panel '" + ((AbstractPanel)oPanels[1]).getLabel() + "' always applicable?: " + ((AbstractPanel)oPanels[1]).isAlwaysApplicable());
+			System.out.println("Has the new panel '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			((AbstractPanel)oPanels[1]).setLabel(((AbstractPanel)oPanels[1]).getLabel() + " modified");
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.accept();
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after accept?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			((AbstractPanel)oPanels[1]).setLabel(((AbstractPanel)oPanels[1]).getLabel() + " modified");
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.apply();
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after apply?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			((AbstractPanel)oPanels[1]).setLabel(((AbstractPanel)oPanels[1]).getLabel() + " modified");
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.cancel();
+			System.out.println("Has the panel modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after cancel?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.accept();
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after accept?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.apply();
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after apply?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			panelGroup.cancel();
+			System.out.println("Has the panel not modified '" + ((AbstractPanel)oPanels[1]).getLabel() + "' changed after cancel?: " + ((AbstractPanel)oPanels[1]).hasChanged());
+			System.out.println("End: Test: accept, apply or cancel, after request if has changed? <----------");
+			// End: Test: accept, apply or cancel, after request if has changed?
+			
+			JFrame jFrame = new JFrame();
+			jFrame.setTitle("Test TabbedPanel using PanelGroupLoaderFromList");
+		    jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+		    jFrame.setSize(panelGroup.getPreferredSize());
+		    jFrame.getContentPane().add(panelGroup);
+			jFrame.setVisible(true);
+			
+			// Test the methods 'getSelectedIndex()' and 'getActivePanel()'
+			// Register a change listener
+			panelGroup.addChangeListener(new ChangeListener() {
+		        // This method is called whenever the selected tab changes
+		        public void stateChanged(ChangeEvent evt) {
+		        	JTabbedPane jTabbedPanel = (JTabbedPane) evt.getSource();
+		        	
+		        	System.out.println("Selection changed. New selection index: " + jTabbedPanel.getSelectedIndex());
+
+		        	showActivePanelInformation();
+		        }
+		    });
+			
+			// Test the method 'getSelectedIndex()':
+			panelGroup.setSelectedIndex(2);
+			
+			// Test the change of the reference of the group
+			panelGroup.updateReference("NEW REFERENCE");
+
+		// End: Other tests
+		} catch (BaseException e) {
+			System.out.println(e.getLocalizedMessageStack());
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+	
+	/**
+	 * <p>Shows information about the current active panel using the standard output.</p>
+	 */
+	private static void showActivePanelInformation() {
+		// Test the method 'getActivePanel()'
+		IPanel panel = panelGroup.getActivePanel();
+		
+    	System.out.println("New active panel:\n\tID: " + panel.getID() + "\n\tLABEL_GROUP: " + panel.getLabelGroup() + "\n\tLABEL: " + panel.getLabel() + "\n\tCLASS: " + panel.getClass());
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/TestPanelGroupLoaderFromList.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/TestPanelGroupLoaderFromList.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/TestPanelGroupLoaderFromList.java	(revision 38348)
@@ -0,0 +1,82 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup;
+
+import java.util.ArrayList;
+
+import junit.framework.TestCase;
+
+import org.gvsig.tools.exception.BaseException;
+import org.gvsig.gui.beans.panelGroup.loaders.PanelGroupLoaderFromList;
+import org.gvsig.gui.beans.panelGroup.panels.IPanel;
+import org.gvsig.gui.beans.panelGroup.samples.Samples_Data;
+
+/**
+ * <p>Tests {@link PanelGroupLoaderUtilities PanelGroupLoaderUtilities} and {@link PanelGroupLoaderFromList PanelGroupLoaderFromList}.</p>
+ * 
+ * @version 16/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class TestPanelGroupLoaderFromList extends TestCase {
+
+	/*
+	 * (non-Javadoc)
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		super.tearDown();
+	}
+
+	/**
+	 * <p>Test, results must be valid.</p>
+	 */
+	public void test() {
+		try {
+			PanelGroupLoaderFromList loader = new PanelGroupLoaderFromList(Samples_Data.TEST2_CLASSES);
+			ArrayList<IPanel> panels = new ArrayList<IPanel>();
+
+			loader.loadPanels(panels);
+
+			// Check that has loaded all panels
+			assertEquals(Samples_Data.TEST2_CLASSES.length, panels.size());
+			
+			int i = 0;
+
+			while (i < Samples_Data.TEST2_CLASSES.length) {
+				// Check order and class types
+				assertTrue(panels.get(i).getClass() == (Samples_Data.TEST2_CLASSES[i++]));
+			}
+		} catch (BaseException e) {
+			System.out.println(e.getLocalizedMessageStack());
+			fail();
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail();
+		}
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleScalePanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleScalePanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleScalePanel.java	(revision 38348)
@@ -0,0 +1,147 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.io.Serializable;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/**
+ * <p>Sample of {@link AbstractPanel AbstractPanel}.</p>
+ * 
+ * @version 16/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SampleScalePanel extends AbstractPanel implements Serializable {
+	private static final long serialVersionUID = -4160464669737958732L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	private JTextArea jTextArea = null;
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public SampleScalePanel() {
+		super();
+		initialize();
+	}
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public SampleScalePanel(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+	
+	@Override
+	protected void initialize() {
+		add(new JScrollPane(getJTextArea()));
+		setToolTipText(getID());
+
+		setID(Samples_Data.PANELS1_IDS[5]);
+		setLabel(Samples_Data.PANELS1_LABELS[5]);
+		setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[5]);
+		setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+		resetChangedStatus();
+	}
+	
+	/**
+	 * This method initializes jTextArea
+	 *
+	 * @return JTextArea
+	 */
+	private JTextArea getJTextArea() {
+		if (jTextArea == null) {
+			jTextArea = new JTextArea(5, 40);
+			jTextArea.setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+			jTextArea.setEditable(false);
+			jTextArea.setBackground(Color.YELLOW);
+		}
+
+		return jTextArea;
+	}
+	
+	@Override
+	public void setID(String id) {
+		super.setID(id);
+		
+		setToolTipText(getID());
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabel(String label) {
+		super.setLabel(label);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabelGroup(String labelGroup) {
+		super.setLabelGroup(labelGroup);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'accept' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'apply' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing a 'cancel' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I've been selected. My information is: " +
+				 "\n\tID: " + getID() + "\n\tLABEL_GROUP: " + getLabelGroup() + "\n\tLABEL: " + getLabel() + "\n\tCLASS: " + getClass() +
+				 "\n\tMy Preferred Size: " + getPreferredSize() + "\n\tAnd My size: " + getSize());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleInitializingExcetionPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleInitializingExcetionPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleInitializingExcetionPanel.java	(revision 38348)
@@ -0,0 +1,150 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import java.awt.Color;
+import java.io.Serializable;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/**
+ * <p>Sample of {@link AbstractPanel AbstractPanel}.</p>
+ * 
+ * @version 16/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SampleInitializingExcetionPanel extends AbstractPanel implements Serializable {
+	private static final long serialVersionUID = -876907003975432865L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	private JTextArea jTextArea = null;
+
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public SampleInitializingExcetionPanel() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public SampleInitializingExcetionPanel(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		
+		initialize();
+	}
+
+	@Override
+	protected void initialize() {
+		add(new JScrollPane(getJTextArea()));
+		setToolTipText(getID());
+		
+		setID(Samples_Data.PANELS1_IDS[0]);
+		setLabel(Samples_Data.PANELS1_LABELS[0]);
+		setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[0]);
+		
+		// Force to generate an exception
+		double badValue = 2 / 0;
+
+		resetChangedStatus();
+	}
+	
+	/**
+	 * This method initializes jTextArea
+	 *
+	 * @return JTextArea
+	 */
+	private JTextArea getJTextArea() {
+		if (jTextArea == null) {
+			jTextArea = new JTextArea(5, 40);
+			jTextArea.setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+			jTextArea.setEditable(false);
+			jTextArea.setBackground(Color.GREEN);
+		}
+
+		return jTextArea;
+	}
+
+	@Override
+	public void setID(String id) {
+		super.setID(id);
+
+		setToolTipText(getID());
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabel(String label) {
+		super.setLabel(label);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabelGroup(String labelGroup) {
+		super.setLabelGroup(labelGroup);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'accept' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'apply' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing a 'cancel' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I've been selected. My information is: " +
+		 "\n\tID: " + getID() + "\n\tLABEL_GROUP: " + getLabelGroup() + "\n\tLABEL: " + getLabel() + "\n\tCLASS: " + getClass() +
+		 "\n\tMy Preferred Size: " + getPreferredSize() + "\n\tAnd My size: " + getSize());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleTransparencyPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleTransparencyPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleTransparencyPanel.java	(revision 38348)
@@ -0,0 +1,148 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.io.Serializable;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+
+/**
+ * <p>Sample of {@link AbstractPanel AbstractPanel}.</p>
+ * 
+ * @version 16/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SampleTransparencyPanel extends AbstractPanel implements Serializable {
+	private static final long serialVersionUID = -4145789119404234621L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	private JTextArea jTextArea = null;
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public SampleTransparencyPanel() {
+		super();
+		initialize();
+	}
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public SampleTransparencyPanel(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+	
+	@Override
+	protected void initialize() {
+		add(new JScrollPane(getJTextArea()));
+		setToolTipText(getID());
+
+		setID(Samples_Data.PANELS1_IDS[2]);
+		setLabel(Samples_Data.PANELS1_LABELS[2]);
+		setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[2]);
+		setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+		resetChangedStatus();
+	}
+	
+	/**
+	 * This method initializes jTextArea
+	 *
+	 * @return JTextArea
+	 */
+	private JTextArea getJTextArea() {
+		if (jTextArea == null) {
+			jTextArea = new JTextArea(5, 40);
+			jTextArea.setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+			jTextArea.setEditable(false);
+			jTextArea.setBackground(Color.BLUE);
+		}
+
+		return jTextArea;
+	}
+	
+	@Override
+	public void setID(String id) {
+		super.setID(id);
+		
+		setToolTipText(getID());
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabel(String label) {
+		super.setLabel(label);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabelGroup(String labelGroup) {
+		super.setLabelGroup(labelGroup);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'accept' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'apply' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing a 'cancel' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I've been selected. My information is: " +
+				 "\n\tID: " + getID() + "\n\tLABEL_GROUP: " + getLabelGroup() + "\n\tLABEL: " + getLabel() + "\n\tCLASS: " + getClass() +
+				 "\n\tMy Preferred Size: " + getPreferredSize() + "\n\tAnd My size: " + getSize());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleUndefinedPreferredSizeExceptionPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleUndefinedPreferredSizeExceptionPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleUndefinedPreferredSizeExceptionPanel.java	(revision 38348)
@@ -0,0 +1,144 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import java.awt.Color;
+import java.io.Serializable;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/**
+ * 
+ * @version 30/11/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SampleUndefinedPreferredSizeExceptionPanel extends AbstractPanel implements Serializable {
+	private static final long serialVersionUID = 1210497562221898739L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	private JTextArea jTextArea = null;
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public SampleUndefinedPreferredSizeExceptionPanel() {
+		super();
+		initialize();
+	}
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public SampleUndefinedPreferredSizeExceptionPanel(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+	
+	@Override
+	protected void initialize() {
+		add(new JScrollPane(getJTextArea()));
+		setToolTipText(getID());
+		
+		setID(Samples_Data.PANELS1_IDS[0]);
+		setLabel(Samples_Data.PANELS1_LABELS[0]);
+		setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[0]);
+		resetChangedStatus();
+	}
+	
+	/**
+	 * This method initializes jTextArea
+	 *
+	 * @return JTextArea
+	 */
+	private JTextArea getJTextArea() {
+		if (jTextArea == null) {
+			jTextArea = new JTextArea(5, 40);
+			jTextArea.setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+			jTextArea.setEditable(false);
+			jTextArea.setBackground(Color.RED);
+		}
+
+		return jTextArea;
+	}
+	
+	@Override
+	public void setID(String id) {
+		super.setID(id);
+		
+		setToolTipText(getID());
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabel(String label) {
+		super.setLabel(label);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabelGroup(String labelGroup) {
+		super.setLabelGroup(labelGroup);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'accept' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'apply' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing a 'cancel' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I've been selected. My information is: " +
+				 "\n\tID: " + getID() + "\n\tLABEL_GROUP: " + getLabelGroup() + "\n\tLABEL: " + getLabel() + "\n\tCLASS: " + getClass() +
+				 "\n\tMy Preferred Size: " + getPreferredSize() + "\n\tAnd My size: " + getSize());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleInfoPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleInfoPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleInfoPanel.java	(revision 38348)
@@ -0,0 +1,147 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.io.Serializable;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/**
+ * <p>Sample of {@link AbstractPanel AbstractPanel}.</p>
+ * 
+ * @version 16/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SampleInfoPanel extends AbstractPanel implements Serializable {
+	private static final long serialVersionUID = -1629511810619122126L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	private JTextArea jTextArea = null;
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public SampleInfoPanel() {
+		super();
+		initialize();
+	}
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public SampleInfoPanel(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+	
+	@Override
+	protected void initialize() {
+		add(new JScrollPane(getJTextArea()));
+		setToolTipText(getID());
+		
+		setID(Samples_Data.PANELS1_IDS[0]);
+		setLabel(Samples_Data.PANELS1_LABELS[0]);
+		setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[0]);
+		setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+		resetChangedStatus();
+	}
+	
+	/**
+	 * This method initializes jTextArea
+	 *
+	 * @return JTextArea
+	 */
+	private JTextArea getJTextArea() {
+		if (jTextArea == null) {
+			jTextArea = new JTextArea(5, 40);
+			jTextArea.setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+			jTextArea.setEditable(false);
+			jTextArea.setBackground(Color.RED);
+		}
+
+		return jTextArea;
+	}
+	
+	@Override
+	public void setID(String id) {
+		super.setID(id);
+		
+		setToolTipText(getID());
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabel(String label) {
+		super.setLabel(label);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabelGroup(String labelGroup) {
+		super.setLabelGroup(labelGroup);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'accept' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'apply' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing a 'cancel' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I've been selected. My information is: " +
+				 "\n\tID: " + getID() + "\n\tLABEL_GROUP: " + getLabelGroup() + "\n\tLABEL: " + getLabel() + "\n\tCLASS: " + getClass() +
+				 "\n\tMy Preferred Size: " + getPreferredSize() + "\n\tAnd My size: " + getSize());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/Samples_Data.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/Samples_Data.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/Samples_Data.java	(revision 38348)
@@ -0,0 +1,68 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import org.gvsig.gui.beans.panelGroup.loaders.PanelGroupLoaderFromList;
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+import org.gvsig.gui.beans.panelGroup.tabbedPanel.TabbedPanel;
+import org.gvsig.gui.beans.panelGroup.treePanel.TreePanel;
+
+/**
+ * <p>This class has information to create samples to test {@link PanelGroupManagerDePablo PanelGroupManagerDePablo},
+ *  {@link TabbedPanel TabbedPanel}, {@link TreePanel TreePanel},
+ *  {@link AbstractPanel AbstractPanel}, {@link PanelGroupLoaderUtilities PanelGroupLoaderUtilities},
+ *  {@link PanelGroupLoaderFromList PanelGroupLoaderFromList}, {@link PanelGroupLoaderFromExtensionPoint PanelGroupLoaderFromExtensionPoint}.</p>
+ * 
+ * @version 16/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class Samples_Data {
+	public final static short PANELS_DEFAULT_WIDTH = 500;
+	public final static short PANELS_DEFAULT_HEIGHT = 400;
+	
+	public final static Class[] TEST1_CLASSES = {SampleInfoPanel.class, SampleBandSetupPanel.class, SampleTransparencyPanel.class, SampleEnhancedPanel.class, SamplePanSharpeningPanel.class, SampleScalePanel.class};
+	public final static Class[] TEST2_CLASSES = {SampleInfoPanel.class, SampleTransparencyPanel.class, SampleScalePanel.class};
+	public final static Class[] TEST3_CLASSES = {SamplePanelWithoutGroupLabel.class, SamplePanelGroupLabelRepeated.class};
+	public final static Class[] TEST4_CLASSES = {SampleInitializingExcetionPanel.class, SampleInfoPanel.class}; // Test 'ListCouldntLoadPanelFromListException' with any 'Exception' 
+	public final static Class[] TEST5_CLASSES = {SampleInfoPanel.class, SampleUndefinedPreferredSizeExceptionPanel.class}; // Test 'ListCouldntAddPanelException' with a 'PanelWithNoPreferredSizeDefinedException'
+	public final static Class[] TEST6_CLASSES = {}; // Test 'ListCouldntAddPanelException' with a 'EmptyPanelGroupException'
+	public final static Class[] TEST7_CLASSES = {SampleInvisiblePanel.class}; // Test 'ListCouldntAddPanelException' with a 'EmptyPanelGroupGUIException'
+	public final static Class[] TEST8_CLASSES = {SampleInitializingExcetionPanel.class, SampleUndefinedPreferredSizeExceptionPanel.class}; // Test 'ListCouldntAddPanelException' with a 'PanelWithNoPreferredSizeDefinedException', a 'EmptyPanelGroupException' and a 'ListCouldntLoadPanelFromListException' with any 'Exception'
+	public final static Class[] TEST9_CLASSES = {SampleInvisiblePanel.class, SampleInitializingExcetionPanel.class, SampleUndefinedPreferredSizeExceptionPanel.class}; // Test 'ListCouldntAddPanelException' with a 'PanelWithNoPreferredSizeDefinedException', a 'EmptyPanelGroupGUIException' and a 'ListCouldntLoadPanelFromListException' with any 'Exception'
+	public final static Class[] TEST10_CLASSES = {SampleBandSetupPanel.class, SampleInvisiblePanel.class, SampleInitializingExcetionPanel.class, SampleUndefinedPreferredSizeExceptionPanel.class}; // Test 'ListCouldntAddPanelException' with a 'PanelWithNoPreferredSizeDefinedException', a EmptyPanelGroupGUIException and a 'ListCouldntLoadPanelFromListException' with any 'Exception'
+	public final static Object REFERENCE1 = new String("Raster Layer");
+	public final static Object REFERENCE2 = new String("Imaginary Layer");
+	public final static Object REFERENCE3 = new String("Other tests");	
+	public final static String REFERENCE1_NAME = "Raster Layer reference";
+	public final static String REFERENCE2_NAME = "Imaginary Layer reference";
+	public final static String REFERENCE3_NAME = "Other tests reference";
+	public final static String PANELGROUP1_ID = "RPG1_ID";
+	public final static String PANELGROUP2_ID = "RPG2_ID";
+	public final static String PANELGROUP3_ID = "RPG3_ID";
+	public final static String[] PANELS1_IDS = {"Information_ID", "Bands_ID", "Transparency_ID", "Enhanced_ID", "PanSharpening_ID", "Scale_ID"};
+	public final static String[] PANELS2_IDS = {"Information_ID", "Transparency_ID", "Scale_ID"};
+	public final static String[] PANELS3_IDS = {"WithoutGroup_ID", "GroupLabelRepeated_ID"};
+	public final static String[] PANELS1_LABELS = {"Information_LABEL", "Bands_LABEL", "Transparency_LABEL", "Enhanced_LABEL", "PanSharpening_LABEL", "Scale_LABEL"};
+	public final static String[] PANELS2_LABELS = {"Information_LABEL", "Transparency_LABEL", "Scale_LABEL"};
+	public final static String[] PANELS3_LABELS = {"WithoutGroup_LABEL", "GroupLabelRepeated_LABEL"};
+	public final static String[] PANELS1_LABELGROUPS = {"Information_LABELGROUP", "Bands_LABELGROUP", "Transparency_LABELGROUP", "Enhanced_LABELGROUP", "PanSharpening_LABELGROUP", "Scale_LABELGROUP"};
+	public final static String[] PANELS2_LABELGROUPS = {"Information_LABELGROUP", "Transparency_LABELGROUP", "Scale_LABELGROUP"};
+	public final static String[] PANELS3_LABELGROUPS = {"WithoutGroup_LABELGROUP", "GroupLabelRepeated_LABELGROUP"};
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SamplePanSharpeningPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SamplePanSharpeningPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SamplePanSharpeningPanel.java	(revision 38348)
@@ -0,0 +1,147 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.io.Serializable;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/**
+ * <p>Sample of {@link AbstractPanel AbstractPanel}.</p>
+ * 
+ * @version 16/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SamplePanSharpeningPanel extends AbstractPanel implements Serializable {
+	private static final long serialVersionUID = 648806623810248226L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	private JTextArea jTextArea = null;
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public SamplePanSharpeningPanel() {
+		super();
+		initialize();
+	}
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public SamplePanSharpeningPanel(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+
+	@Override
+	protected void initialize() {
+		add(new JScrollPane(getJTextArea()));
+		setToolTipText(getID());
+
+		setID(Samples_Data.PANELS1_IDS[4]);
+		setLabel(Samples_Data.PANELS1_LABELS[4]);
+		setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[4]);
+		setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+		resetChangedStatus();
+	}
+	
+	/**
+	 * This method initializes jTextArea
+	 *
+	 * @return JTextArea
+	 */
+	private JTextArea getJTextArea() {
+		if (jTextArea == null) {
+			jTextArea = new JTextArea(5, 40);
+			jTextArea.setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+			jTextArea.setEditable(false);
+			jTextArea.setBackground(Color.MAGENTA);
+		}
+
+		return jTextArea;
+	}
+
+	@Override
+	public void setID(String id) {
+		super.setID(id);
+		
+		setToolTipText(getID());
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabel(String label) {
+		super.setLabel(label);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabelGroup(String labelGroup) {
+		super.setLabelGroup(labelGroup);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'accept' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'apply' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing a 'cancel' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I've been selected. My information is: " +
+				 "\n\tID: " + getID() + "\n\tLABEL_GROUP: " + getLabelGroup() + "\n\tLABEL: " + getLabel() + "\n\tCLASS: " + getClass() +
+				 "\n\tMy Preferred Size: " + getPreferredSize() + "\n\tAnd My size: " + getSize());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SamplePanelWithoutGroupLabel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SamplePanelWithoutGroupLabel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SamplePanelWithoutGroupLabel.java	(revision 38348)
@@ -0,0 +1,146 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.io.Serializable;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/**
+ * <p>Sample of {@link AbstractPanel AbstractPanel}.</p>
+ * 
+ * @version 23/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SamplePanelWithoutGroupLabel extends AbstractPanel implements Serializable {
+	private static final long serialVersionUID = -5449402170753829090L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	private JTextArea jTextArea = null;
+
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public SamplePanelWithoutGroupLabel() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public SamplePanelWithoutGroupLabel(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+
+	@Override
+	protected void initialize() {
+		add(new JScrollPane(getJTextArea()));
+		setToolTipText(getID());
+		
+		setID(Samples_Data.PANELS3_IDS[0]);
+		setLabel(Samples_Data.PANELS3_LABELS[0]);
+		setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+		resetChangedStatus();
+	}
+	
+	/**
+	 * This method initializes jTextArea
+	 *
+	 * @return JTextArea
+	 */
+	private JTextArea getJTextArea() {
+		if (jTextArea == null) {
+			jTextArea = new JTextArea(5, 40);
+			jTextArea.setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+			jTextArea.setEditable(false);
+			jTextArea.setBackground(Color.WHITE);
+		}
+
+		return jTextArea;
+	}
+
+	@Override
+	public void setID(String id) {
+		super.setID(id);
+
+		setToolTipText(getID());
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabel(String label) {
+		super.setLabel(label);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabelGroup(String labelGroup) {
+		super.setLabelGroup(labelGroup);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'accept' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'apply' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing a 'cancel' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I've been selected. My information is: " +
+				 "\n\tID: " + getID() + "\n\tLABEL_GROUP: " + getLabelGroup() + "\n\tLABEL: " + getLabel() + "\n\tCLASS: " + getClass() +
+				 "\n\tMy Preferred Size: " + getPreferredSize() + "\n\tAnd My size: " + getSize());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleInvisiblePanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleInvisiblePanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleInvisiblePanel.java	(revision 38348)
@@ -0,0 +1,148 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.io.Serializable;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/**
+ * <p>Sample of {@link AbstractPanel AbstractPanel}.</p>
+ * 
+ * @version 10/12/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SampleInvisiblePanel extends AbstractPanel implements Serializable {
+	private static final long serialVersionUID = -1629511810619122126L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	private JTextArea jTextArea = null;
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public SampleInvisiblePanel() {
+		super();
+		initialize();
+	}
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public SampleInvisiblePanel(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+	
+	@Override
+	protected void initialize() {
+		add(new JScrollPane(getJTextArea()));
+		setToolTipText(getID());
+		
+		setID(Samples_Data.PANELS1_IDS[0]);
+		setLabel(Samples_Data.PANELS1_LABELS[0]);
+		setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[0]);
+		setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+		resetChangedStatus();
+		setVisible(false);
+	}
+	
+	/**
+	 * This method initializes jTextArea
+	 *
+	 * @return JTextArea
+	 */
+	private JTextArea getJTextArea() {
+		if (jTextArea == null) {
+			jTextArea = new JTextArea(5, 40);
+			jTextArea.setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+			jTextArea.setEditable(false);
+			jTextArea.setBackground(Color.RED);
+		}
+
+		return jTextArea;
+	}
+	
+	@Override
+	public void setID(String id) {
+		super.setID(id);
+		
+		setToolTipText(getID());
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabel(String label) {
+		super.setLabel(label);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabelGroup(String labelGroup) {
+		super.setLabelGroup(labelGroup);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'accept' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'apply' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing a 'cancel' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I've been selected. My information is: " +
+				 "\n\tID: " + getID() + "\n\tLABEL_GROUP: " + getLabelGroup() + "\n\tLABEL: " + getLabel() + "\n\tCLASS: " + getClass() +
+				 "\n\tMy Preferred Size: " + getPreferredSize() + "\n\tAnd My size: " + getSize());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleBandSetupPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleBandSetupPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleBandSetupPanel.java	(revision 38348)
@@ -0,0 +1,147 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.io.Serializable;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/**
+ * <p>Sample of {@link AbstractPanel AbstractPanel}.</p>
+ * 
+ * @version 16/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SampleBandSetupPanel extends AbstractPanel implements Serializable {
+	private static final long serialVersionUID = 40652963597544670L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	private JTextArea jTextArea = null;
+
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public SampleBandSetupPanel() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public SampleBandSetupPanel(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+
+	@Override
+	protected void initialize() {
+		add(new JScrollPane(getJTextArea()));
+		setToolTipText(getID());
+
+		setID(Samples_Data.PANELS1_IDS[1]);
+		setLabel(Samples_Data.PANELS1_LABELS[1]);
+		setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[1]);
+		setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+		resetChangedStatus();
+	}
+	
+	/**
+	 * This method initializes jTextArea
+	 *
+	 * @return JTextArea
+	 */
+	private JTextArea getJTextArea() {
+		if (jTextArea == null) {
+			jTextArea = new JTextArea(5, 40);
+			jTextArea.setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+			jTextArea.setEditable(false);
+			jTextArea.setBackground(Color.GREEN);
+		}
+
+		return jTextArea;
+	}
+
+	@Override
+	public void setID(String id) {
+		super.setID(id);
+
+		setToolTipText(getID());
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabel(String label) {
+		super.setLabel(label);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabelGroup(String labelGroup) {
+		super.setLabelGroup(labelGroup);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'accept' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'apply' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing a 'cancel' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I've been selected. My information is: " +
+		 "\n\tID: " + getID() + "\n\tLABEL_GROUP: " + getLabelGroup() + "\n\tLABEL: " + getLabel() + "\n\tCLASS: " + getClass() +
+		 "\n\tMy Preferred Size: " + getPreferredSize() + "\n\tAnd My size: " + getSize());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleEnhancedPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleEnhancedPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SampleEnhancedPanel.java	(revision 38348)
@@ -0,0 +1,147 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.io.Serializable;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/**
+ * <p>Sample of {@link AbstractPanel AbstractPanel}.</p>
+ * 
+ * @version 16/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SampleEnhancedPanel extends AbstractPanel implements Serializable {
+	private static final long serialVersionUID = -7469300452126449245L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	private JTextArea jTextArea = null;
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public SampleEnhancedPanel() {
+		super();
+		initialize();
+	}
+	
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public SampleEnhancedPanel(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+	
+	@Override
+	protected void initialize() {
+		add(new JScrollPane(getJTextArea()));
+		setToolTipText(getID());
+
+		setID(Samples_Data.PANELS1_IDS[3]);
+		setLabel(Samples_Data.PANELS1_LABELS[3]);
+		setLabelGroup(Samples_Data.PANELS1_LABELGROUPS[3]);
+		setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+		resetChangedStatus();
+	}
+	
+	/**
+	 * This method initializes jTextArea
+	 *
+	 * @return JTextArea
+	 */
+	private JTextArea getJTextArea() {
+		if (jTextArea == null) {
+			jTextArea = new JTextArea(5, 40);
+			jTextArea.setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+			jTextArea.setEditable(false);
+			jTextArea.setBackground(Color.CYAN);
+		}
+
+		return jTextArea;
+	}
+	
+	@Override
+	public void setID(String id) {
+		super.setID(id);
+
+		setToolTipText(getID());
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabel(String label) {
+		super.setLabel(label);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabelGroup(String labelGroup) {
+		super.setLabelGroup(labelGroup);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'accept' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'apply' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing a 'cancel' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I've been selected. My information is: " +
+				 "\n\tID: " + getID() + "\n\tLABEL_GROUP: " + getLabelGroup() + "\n\tLABEL: " + getLabel() + "\n\tCLASS: " + getClass() +
+				 "\n\tMy Preferred Size: " + getPreferredSize() + "\n\tAnd My size: " + getSize());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SamplePanelGroupLabelRepeated.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SamplePanelGroupLabelRepeated.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/samples/SamplePanelGroupLabelRepeated.java	(revision 38348)
@@ -0,0 +1,148 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup.samples;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.io.Serializable;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel;
+
+/**
+ * <p>Sample of {@link AbstractPanel AbstractPanel}.</p>
+ * 
+ * @version 23/10/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SamplePanelGroupLabelRepeated extends AbstractPanel implements Serializable {
+	private static final long serialVersionUID = 1857806149242138609L;
+
+	/**
+	 * <p>Element for the interface.</p>
+	 */
+	private JTextArea jTextArea = null;
+
+	/**
+	 * @see AbstractPanel#AbstractPanel()
+	 */
+	public SamplePanelGroupLabelRepeated() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * @see AbstractPanel#AbstractPanel(String, String, String)
+	 */
+	public SamplePanelGroupLabelRepeated(String id, String label, String labelGroup) {
+		super(id, label, labelGroup);
+		initialize();
+	}
+
+	@Override
+	protected void initialize() {
+		add(new JScrollPane(getJTextArea()));
+		setToolTipText(getID());
+
+		setID(Samples_Data.PANELS3_IDS[1]);
+		setLabel(Samples_Data.PANELS3_LABELS[1]);
+		setLabelGroup(Samples_Data.PANELS3_LABELGROUPS[1]);
+		setPreferredSize(new Dimension(Samples_Data.PANELS_DEFAULT_WIDTH, Samples_Data.PANELS_DEFAULT_HEIGHT));
+		resetChangedStatus();
+	}
+	
+	/**
+	 * This method initializes jTextArea
+	 *
+	 * @return JTextArea
+	 */
+	private JTextArea getJTextArea() {
+		if (jTextArea == null) {
+			jTextArea = new JTextArea(5, 40);
+			jTextArea.setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+			jTextArea.setEditable(false);
+			jTextArea.setBackground(Color.GRAY);
+		}
+
+		return jTextArea;
+	}
+
+	@Override
+	public void setID(String id) {
+		super.setID(id);
+
+		setToolTipText(getID());
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabel(String label) {
+		super.setLabel(label);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	@Override
+	public void setLabelGroup(String labelGroup) {
+		super.setLabelGroup(labelGroup);
+		
+		getJTextArea().setText("I\'m a JTextArea object in the \"Panel\" with:\n\nID: " + getID() + "\nLabel: " + getLabel() + "\nLabelGroup: " + getLabelGroup());
+		hasChanged = true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#accept()
+	 */
+	public void accept() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'accept' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#apply()
+	 */
+	public void apply() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing an 'apply' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#cancel()
+	 */
+	public void cancel() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I'm executing a 'cancel' method.");
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.panelGroup.panels.IPanel#selected()
+	 */
+	public void selected() {
+		System.out.println("I'm the IPanel: " + toString() + "\n and I've been selected. My information is: " +
+				 "\n\tID: " + getID() + "\n\tLABEL_GROUP: " + getLabelGroup() + "\n\tLABEL: " + getLabel() + "\n\tCLASS: " + getClass() +
+				 "\n\tMy Preferred Size: " + getPreferredSize() + "\n\tAnd My size: " + getSize());
+	}
+}
+
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/TestPanelGroupManager.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/TestPanelGroupManager.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/TestPanelGroupManager.java	(revision 38348)
@@ -0,0 +1,163 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup;
+
+import junit.framework.TestCase;
+
+import org.gvsig.gui.beans.panelGroup.tabbedPanel.TabbedPanel;
+import org.gvsig.gui.beans.panelGroup.treePanel.TreePanel;
+
+/**
+ * <p>Tests the class {@link PanelGroupManager PanelGroupManager}.</p>
+ * 
+ * @version 06/11/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class TestPanelGroupManager extends TestCase {
+	private PanelGroupManager manager;
+	private Object reference; 
+
+	/*
+	 * (non-Javadoc)
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+		
+		manager = PanelGroupManager.getManager();
+		manager.registerPanelGroup(TabbedPanel.class);
+		manager.setDefaultType(TabbedPanel.class);
+
+		reference = new Object();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		super.tearDown();
+	}
+
+	/**
+	 * <p>Test, results must be valid.</p>
+	 */
+	public void testGetManager() {
+		try {
+			assertSame(manager, PanelGroupManager.getManager());
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail();
+		}
+	}
+
+	/**
+	 * <p>Test, results must be valid.</p>
+	 */
+	public void testDefaultType() {
+		try {
+			assertSame(manager.getPanelGroup(reference).getClass(), TabbedPanel.class);
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail();
+		}
+	}
+
+	/**
+	 * <p>Test, results must be valid.</p>
+	 */
+	public void testTabbedPanelType() {
+		try {
+			manager.setDefaultType(TabbedPanel.class);
+			assertSame(manager.getPanelGroup(reference).getClass(), TabbedPanel.class);
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail();
+		}
+	}
+
+	/**
+	 * <p>Test, results must be valid.</p>
+	 */
+	public void testTreePanelType() {
+		try {
+			manager.registerPanelGroup(TreePanel.class);
+			manager.setDefaultType(TreePanel.class);
+			assertSame(manager.getPanelGroup(reference).getClass(), TreePanel.class);
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail();
+		}
+	}
+	
+	/**
+	 * <p>Test, results must be valid.</p>
+	 */
+	public void testCreateAPanelGroupManager() {
+		try {
+			manager.setDefaultType(TreePanel.class);
+			assertSame(manager.getPanelGroup(reference).getClass(), TreePanel.class);
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail();
+		}
+	}
+
+	/**
+	 * <p>Test, results must be valid.</p>
+	 */
+	public void test1RegistegerAndDeregisterTypes() {
+		try {
+			manager.setDefaultType(TabbedPanel.class);
+			manager.deregisterPanelGroup(TabbedPanel.class);
+
+			AbstractPanelGroup panelGroup = manager.getPanelGroup(reference);
+			
+			assertEquals(panelGroup, null);
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail();
+		}
+	}	
+
+	/**
+	 * <p>Test, results must be valid.</p>
+	 */
+	public void test2RegistegerAndDeregisterTypes() {
+		try {
+			manager.deregisterPanelGroup(TabbedPanel.class);
+			manager.deregisterPanelGroup(TreePanel.class);
+			manager.registerPanelGroup(TabbedPanel.class);
+			manager.registerPanelGroup(TreePanel.class);
+			manager.setDefaultType(TabbedPanel.class);
+			manager.registerPanelGroup(TabbedPanel.class);
+			manager.registerPanelGroup(TreePanel.class);
+			manager.deregisterPanelGroup(TreePanel.class);
+			manager.deregisterPanelGroup(TabbedPanel.class);
+
+			AbstractPanelGroup panelGroup = manager.getPanelGroup(reference);
+			
+			assertEquals(panelGroup, null);
+		} catch (Exception e) {
+			e.printStackTrace();
+			fail();
+		}
+	}	
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1ExceptionsUsingTreePanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1ExceptionsUsingTreePanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1ExceptionsUsingTreePanel.java	(revision 38348)
@@ -0,0 +1,275 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup;
+
+import junit.framework.TestCase;
+
+import org.gvsig.tools.exception.BaseException;
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.panelGroup.loaders.PanelGroupLoaderFromList;
+import org.gvsig.gui.beans.panelGroup.samples.Samples_Data;
+import org.gvsig.gui.beans.panelGroup.treePanel.TreePanel;
+
+/**
+ * <p>Tests the loading of layers using a {@link TreePanel TreePanel} object and a {@link PanelGroupLoaderFromList PanelGroupLoaderFromList} loader
+ * Tests also the managing of the different kind of exceptions which could be launched during this process.</p>
+ * 
+ * @version 29/11/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class Test1ExceptionsUsingTreePanel extends TestCase {
+	private TreePanel panelGroup;
+	private PanelGroupManager manager;
+	private PanelGroupLoaderFromList loader;
+	private String validationText;
+	private String localizedMessage;
+
+	/*
+	 * (non-Javadoc)
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+
+		manager = PanelGroupManager.getManager();
+		manager.registerPanelGroup(TreePanel.class);
+		manager.setDefaultType(TreePanel.class);
+		panelGroup = (TreePanel) manager.getPanelGroup(Samples_Data.REFERENCE3);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		manager.deregisterPanelGroup(TreePanel.class);
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test1() {
+		validationText = Messages.getText("couldnt_add_some_panel_exception") + "\n  " + Messages.getText("couldnt_load_panels_from_list_exception") + "\n  Error cargando un panel: / by zero.";
+
+		try {
+			System.out.println("----- Test 1 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST4_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test2() {
+		validationText = Messages.getText("couldnt_add_some_panel_exception") + "\n  Panel de etiqueta Information_LABEL sin tama�o inicial definido.";
+
+		try {
+			System.out.println("----- Test 2 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST5_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test3() {
+		validationText = Messages.getText("empty_panel_group_exception");
+
+		try {
+			System.out.println("----- Test 3 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST6_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test4() {
+		validationText = Messages.getText("empty_panel_group_gui_exception");
+
+		try {
+			System.out.println("----- Test 4 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST7_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test5() {
+		validationText = Messages.getText("couldnt_add_some_panel_exception") + "\n  " + Messages.getText("couldnt_load_panels_from_list_exception") + "\n  Error cargando un panel: / by zero.\n  Panel de etiqueta Information_LABEL sin tama�o inicial definido.\n  " + Messages.getText("empty_panel_group_exception");
+
+		try {
+			System.out.println("----- Test 5 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST8_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test6() {
+		validationText = Messages.getText("couldnt_add_some_panel_exception") + "\n  " + Messages.getText("couldnt_load_panels_from_list_exception") + "\n  Error cargando un panel: / by zero.\n  Panel de etiqueta Information_LABEL sin tama�o inicial definido.\n  " + Messages.getText("empty_panel_group_gui_exception");
+
+		try {
+			System.out.println("----- Test 6 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST9_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test7() {
+		validationText = Messages.getText("couldnt_add_some_panel_exception") + "\n  " + Messages.getText("couldnt_load_panels_from_list_exception") + "\n  Error cargando un panel: / by zero.\n  Panel de etiqueta Information_LABEL sin tama�o inicial definido.";
+
+		try {
+			System.out.println("----- Test 7 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST10_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1ExceptionsUsingTabbedPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1ExceptionsUsingTabbedPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/panelGroup/Test1ExceptionsUsingTabbedPanel.java	(revision 38348)
@@ -0,0 +1,275 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.panelGroup;
+
+import junit.framework.TestCase;
+
+import org.gvsig.tools.exception.BaseException;
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.panelGroup.loaders.PanelGroupLoaderFromList;
+import org.gvsig.gui.beans.panelGroup.samples.Samples_Data;
+import org.gvsig.gui.beans.panelGroup.tabbedPanel.TabbedPanel;
+
+/**
+ * <p>Tests the loading of layers using a {@link TabbedPanel TabbedPanel} object and a {@link PanelGroupLoaderFromList PanelGroupLoaderFromList} loader
+ * Tests also the managing of the different kind of exceptions which could be launched during this process.</p>
+ * 
+ * @version 29/11/2007
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class Test1ExceptionsUsingTabbedPanel extends TestCase {
+	private TabbedPanel panelGroup;
+	private PanelGroupManager manager;
+	private PanelGroupLoaderFromList loader;
+	private String validationText;
+	private String localizedMessage;
+
+	/*
+	 * (non-Javadoc)
+	 * @see junit.framework.TestCase#setUp()
+	 */
+	protected void setUp() throws Exception {
+		super.setUp();
+
+		manager = PanelGroupManager.getManager();
+		manager.registerPanelGroup(TabbedPanel.class);
+		manager.setDefaultType(TabbedPanel.class);
+		panelGroup = (TabbedPanel) manager.getPanelGroup(Samples_Data.REFERENCE3);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see junit.framework.TestCase#tearDown()
+	 */
+	protected void tearDown() throws Exception {
+		super.tearDown();
+		manager.deregisterPanelGroup(TabbedPanel.class);
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test1() {
+		validationText = Messages.getText("couldnt_add_some_panel_exception") + "\n  " + Messages.getText("couldnt_load_panels_from_list_exception") + "\n  Error cargando un panel: / by zero.";
+		
+		try {
+			System.out.println("----- Test 1 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST4_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test2() {
+		validationText = Messages.getText("couldnt_add_some_panel_exception") + "\n  Panel de etiqueta Information_LABEL sin tama�o inicial definido.";
+		
+		try {
+			System.out.println("----- Test 2 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST5_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test3() {
+		validationText = Messages.getText("empty_panel_group_exception");
+
+		try {
+			System.out.println("----- Test 3 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST6_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test4() {
+		validationText = Messages.getText("empty_panel_group_gui_exception");
+
+		try {
+			System.out.println("----- Test 4 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST7_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test5() {
+		validationText = Messages.getText("couldnt_add_some_panel_exception") + "\n  " + Messages.getText("couldnt_load_panels_from_list_exception") + "\n  Error cargando un panel: / by zero.\n  Panel de etiqueta Information_LABEL sin tama�o inicial definido.\n  " + Messages.getText("empty_panel_group_exception");
+
+		try {
+			System.out.println("----- Test 5 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST8_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test6() {
+		validationText = Messages.getText("couldnt_add_some_panel_exception") + "\n  " + Messages.getText("couldnt_load_panels_from_list_exception") + "\n  Error cargando un panel: / by zero.\n  Panel de etiqueta Information_LABEL sin tama�o inicial definido.\n  " + Messages.getText("empty_panel_group_gui_exception");
+
+		try {
+			System.out.println("----- Test 6 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST9_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+	
+	/**
+	 * <p>Test the 'PanelGroup' exceptions </p>
+	 */
+	public void test7() {
+		validationText = Messages.getText("couldnt_add_some_panel_exception") + "\n  " + Messages.getText("couldnt_load_panels_from_list_exception") + "\n  Error cargando un panel: / by zero.\n  Panel de etiqueta Information_LABEL sin tama�o inicial definido.";
+
+		try {
+			System.out.println("----- Test 7 -----");
+			loader = new PanelGroupLoaderFromList(Samples_Data.TEST10_CLASSES);
+
+			// Begin: Test the normal load
+			panelGroup.loadPanels(loader);
+			// End: Test the normal load
+		} catch (BaseException bE) {
+			localizedMessage = bE.getLocalizedMessageStack();
+			System.out.println(localizedMessage);
+			System.out.println("------------------");
+			assertEquals(localizedMessage, validationText);
+			return;
+		} catch (Exception e) {
+			e.printStackTrace();
+			System.out.println("------------------");
+			fail();
+			return;
+		}
+
+		System.out.println("------------------");
+		fail();
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/doubleslider/TestDoubleSlider.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/doubleslider/TestDoubleSlider.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/doubleslider/TestDoubleSlider.java	(revision 38348)
@@ -0,0 +1,80 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.doubleslider;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+public class TestDoubleSlider implements DoubleSliderListener {
+	private JFrame jFrame = null;
+	private DoubleSlider doubleSlider = null;
+	private JPanel jPanel = null;
+
+	public TestDoubleSlider() {
+		jFrame = new JFrame();
+		jFrame.setSize(new Dimension(498, 267));
+		jFrame.setContentPane(getJPanel());
+		jFrame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+		jFrame.setVisible(true);
+	}
+
+	/**
+	 * This method initializes multiSlider	
+	 * 	
+	 * @return borsanza.src.multislider.MultiSlider	
+	 */
+	private DoubleSlider getMultiSlider() {
+		if (doubleSlider == null) {
+			doubleSlider = new DoubleSlider();
+			doubleSlider.setMinimum(0);
+			doubleSlider.setMaximum(255);
+			doubleSlider.addValueChangedListener(this);
+		}
+		return doubleSlider;
+	}
+
+	/**
+	 * This method initializes jPanel	
+	 * 	
+	 * @return javax.swing.JPanel	
+	 */
+	private JPanel getJPanel() {
+		if (jPanel == null) {
+			jPanel = new JPanel();
+			jPanel.setLayout(new BorderLayout());
+			jPanel.add(getMultiSlider(), BorderLayout.CENTER);
+		}
+		return jPanel;
+	}
+
+	public static void main(String[] args) {
+		new TestDoubleSlider();
+	}
+
+	public void actionValueChanged(DoubleSliderEvent e) {
+		System.out.println("Changed: " + getMultiSlider().getValue());
+	}
+
+	public void actionValueDragged(DoubleSliderEvent e) {
+		System.out.println("Dragged: " + getMultiSlider().getValue());
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/doubleslider/TestDoubleSlider.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/graphic/TestGraphic.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/graphic/TestGraphic.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/graphic/TestGraphic.java	(revision 38348)
@@ -0,0 +1,77 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.graphic;
+
+import java.awt.BorderLayout;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
+import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
+/**
+ * Test para comprobar el funcionamiento de la grafica
+ * 
+ * @version 06/06/2008
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestGraphic implements GraphicListener {
+	private TestUI              frame               = new TestUI("TestGraphic");
+	private DefaultButtonsPanel defaultButtonsPanel = null;
+	private GraphicContainer    graphic             = null;
+
+	public TestGraphic() throws NotInitializeException{
+		graphic = new GraphicContainer(true);
+
+		int nSeries = 3;
+
+		String[] names = new String[nSeries];
+		int[][] series = new int[nSeries][256];
+
+		for(int iSerie = 0; iSerie < nSeries; iSerie++){
+			names[iSerie] = "Band " + iSerie;
+			for (int i = 0; i < 256; i++)
+				series[iSerie][i] = i * (iSerie + 1);
+		}
+		
+		graphic.getPGraphic().setViewType(0);
+		
+		graphic.getPGraphic().setNewChart(series, names);
+
+		graphic.addValueChangedListener(this);
+		defaultButtonsPanel = new DefaultButtonsPanel(ButtonsPanel.BUTTONS_CLOSE);
+		defaultButtonsPanel.setLayout(new BorderLayout(5, 5));
+		defaultButtonsPanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
+		defaultButtonsPanel.add(graphic, BorderLayout.CENTER);
+		frame.getContentPane().add(defaultButtonsPanel);
+		frame.setSize(640, 480);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		try {
+			new TestGraphic();
+		} catch (NotInitializeException ex){
+			System.out.println("Tabla no inicializada");
+		}
+	}
+
+	public void actionValueChanged(GraphicEvent e) {
+		System.out.println(graphic.getX1() + ":" + graphic.getX2());
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/graphic/TestGraphic.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:executable
   + *
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/coorddatainput/TestCoordDataInput.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/coorddatainput/TestCoordDataInput.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/coorddatainput/TestCoordDataInput.java	(revision 38348)
@@ -0,0 +1,64 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.coorddatainput;
+
+import java.awt.GridLayout;
+
+import javax.swing.BorderFactory;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.coordinatespanel.CoordinatesPanel;
+/**
+ *
+ * @version 06/09/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestCoordDataInput extends TestUI {
+
+	public TestCoordDataInput() {
+		super("TestCoordDataInput");
+
+		CoordinatesPanel coord = new CoordinatesPanel();
+		coord.setTitlePanel("Coordenadas pixel");
+		coord.setEnabled(true);
+
+		CoordinatesPanel coord2 = new CoordinatesPanel();
+		coord2.setTitlePanel("Coordenadas reales");
+		coord2.setEnabled(true);
+
+		JPanel panel = new JPanel(new GridLayout(2, 1, 2, 2));
+		panel.add(coord);
+		panel.add(coord2);
+
+		JTextField field = new JTextField();
+		panel.add(field);
+
+		panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+
+		add(panel);
+		pack();
+		setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestCoordDataInput();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/coorddatainput/TestCoordDataInput.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/defaultbuttonspanel/TestDefaultButtonsPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/defaultbuttonspanel/TestDefaultButtonsPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/defaultbuttonspanel/TestDefaultButtonsPanel.java	(revision 38348)
@@ -0,0 +1,76 @@
+package org.gvsig.gui.beans.defaultbuttonspanel;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+import java.awt.BorderLayout;
+
+import javax.swing.JButton;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
+
+/**
+ * <code>TestDialogPanel</code>. Test para comprobar el funcionamiento de la
+ * clase <code>DialogPanel</code>
+ *
+ * @version 15/03/2007
+ * @author BorSanZa - Borja Sanchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestDefaultButtonsPanel implements ButtonsPanelListener {
+	private TestUI frame = new TestUI("TestDefaultButtonsPanel");
+
+	class NewComponentDialog extends DefaultButtonsPanel {
+		private static final long serialVersionUID = 4452922507292538671L;
+
+		public NewComponentDialog() {
+			super(ButtonsPanel.BUTTONS_YESNO);
+			this.setLayout(new BorderLayout());
+			JButton b = new JButton("prueba");
+			this.add(b, java.awt.BorderLayout.NORTH);
+			JButton c = new JButton("prueba2");
+			this.add(c, java.awt.BorderLayout.CENTER);
+		}
+	}
+
+	NewComponentDialog ncd;
+
+	public TestDefaultButtonsPanel() {
+		ncd = new NewComponentDialog();
+
+		frame.setSize(640, 480);
+		frame.getContentPane().add(ncd);
+
+		ncd.addButtonPressedListener(this);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestDefaultButtonsPanel();
+	}
+
+	public void actionButtonPressed(ButtonsPanelEvent e) {
+		System.out.println("Bot�n pulsado: " + e.getButton());
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/defaultbuttonspanel/TestDefaultButtonsPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/checkslidertext/TestCheckColorSliderTextTable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/checkslidertext/TestCheckColorSliderTextTable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/checkslidertext/TestCheckColorSliderTextTable.java	(revision 38348)
@@ -0,0 +1,56 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.checkslidertext;
+
+import java.awt.Color;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.doubleslider.DoubleSliderEvent;
+import org.gvsig.gui.beans.doubleslider.DoubleSliderListener;
+
+public class TestCheckColorSliderTextTable implements DoubleSliderListener {
+	private int                           w      = 375, h = 150;
+	private TestUI                        frame  = new TestUI("TestCheckColorSliderTextTable");
+	private CheckColorSliderTextContainer sliderRed = null;
+
+	public TestCheckColorSliderTextTable() {
+		sliderRed = new CheckColorSliderTextContainer(0, 255, 0, "R", false);
+		sliderRed.setColor1(Color.BLACK, false);
+		sliderRed.setColor2(Color.RED, true);
+		sliderRed.setCheckboxVisible(true);
+
+		frame.getContentPane().add(sliderRed);
+		sliderRed.setEnabled(true);
+		frame.setSize(w, h);
+		frame.setVisible(true);
+		sliderRed.addValueChangedListener(this);
+	}
+
+	public static void main(String[] args) {
+		new TestCheckColorSliderTextTable();
+	}
+
+	public void actionValueChanged(DoubleSliderEvent e) {
+		System.out.println("Changed: " + sliderRed.getValue());
+	}
+
+	public void actionValueDragged(DoubleSliderEvent e) {
+		System.out.println("Dragged: " + sliderRed.getValue());
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/checkslidertext/TestCheckColorSliderTextTable.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/checkslidertext/TestCheckSliderTextTable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/checkslidertext/TestCheckSliderTextTable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/checkslidertext/TestCheckSliderTextTable.java	(revision 38348)
@@ -0,0 +1,51 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.checkslidertext;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.slidertext.listeners.SliderEvent;
+import org.gvsig.gui.beans.slidertext.listeners.SliderListener;
+
+public class TestCheckSliderTextTable implements SliderListener {
+	private TestUI                   frame  = new TestUI("TestCheckSliderTextTable");
+	private CheckSliderTextContainer slider = null;
+
+	public TestCheckSliderTextTable() {
+		slider = new CheckSliderTextContainer(0, 10, 5, false, "Activar", false, true, true);
+		slider.setDecimal(false);
+		slider.setBorder("Cabecera");
+		slider.addValueChangedListener(this);
+
+		frame.getContentPane().add(slider);
+		frame.setSize(375, 150);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestCheckSliderTextTable();
+	}
+
+	public void actionValueChanged(SliderEvent e) {
+		System.out.println("Changed: " + slider.getValue());
+	}
+
+	public void actionValueDragged(SliderEvent e) {
+		System.out.println("Dragged: " + slider.getValue());
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/checkslidertext/TestCheckSliderTextTable.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native
Added: svn:executable
   + *

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/images/backward.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/images/backward.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/images/fastforward.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/images/fastforward.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/images/forward.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/images/forward.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/images/fastbackward.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/images/fastbackward.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/TestJComboBoxWithImageIconItems.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/TestJComboBoxWithImageIconItems.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/TestJComboBoxWithImageIconItems.java	(revision 38348)
@@ -0,0 +1,196 @@
+package org.gvsig.gui.beans.swing.jComboBoxWithImageIconItems;
+
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Vector;
+
+import javax.swing.JFrame;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests JPanelWithJComboBoxImageItems
+ * 
+ * This code has been extracted and modified from the Java Sun Microsystems's example: 'CustomComboBoxDemo.java'
+ *   in http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html
+ * 
+ * @author Sun Microsystems
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class TestJComboBoxWithImageIconItems {
+    /**
+     * Main test method
+     * 
+     * @param args Arguments
+     */
+    public static void main(String[] args) {
+    	/**
+    	 * Schedule a job for the event-dispatching thread:
+    	 * creating and showing this application's GUI.
+    	 */
+        javax.swing.SwingUtilities.invokeLater(new Runnable() {
+        	/*
+        	 * (non-Javadoc)
+        	 * @see java.lang.Runnable#run()
+        	 */
+            public void run() {
+                createAndShowGUI();
+            }
+        });
+    }
+
+    /**
+     * Create the GUI and show it.  For thread safety,
+     * this method should be invoked from the
+     * event-dispatching thread.
+     */
+    private static void createAndShowGUI() {
+        //Create and set up the window.
+        JFrame frame = new JFrame("Test TestJComboBoxWithImageIconItems");
+        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+        //Create and set up the content pane.
+        JComboBoxWithImageIconItems component = new JComboBoxWithImageIconItems(); 
+        component.setOpaque(true); //content panes must be opaque
+        frame.setContentPane(component);
+        component.addActionListener(new ActionListener() {
+        	/*
+        	 *  (non-Javadoc)
+        	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+        	 */
+			public void actionPerformed(ActionEvent e) {		
+				JComboBoxWithImageIconItems cb = (JComboBoxWithImageIconItems)e.getSource();
+				ImageIconItemInfo iiii = (ImageIconItemInfo)cb.getSelectedItem();
+				if (iiii != null) {
+					String value = (String)iiii.getItemValue();
+					if (value != null)
+						System.out.println("Seleccionado item con null: " + value);
+					else
+						System.out.println("Seleccionado item con con valor null");
+				}
+			}
+        	
+        });
+        
+        /**** METHOD TESTS ****/
+
+        /**** Don't Remove any test! ****/
+        /**** Some tests could be commented but not removed! ****/
+
+        // Test 'setJComboBoxRendererPreferredSize' method
+        component.setJComboBoxRendererPreferredSize(new Dimension(150, 80));
+
+        // Test 'getJComboBoxRendererPreferredSize' method
+        System.out.println("JComboBox Renderer Preferred Size: " + component.getJComboBoxRendererPreferredSize());
+
+        // Data samples
+        ImageIconItemInfo backward = new ImageIconItemInfo("images/backward.png", ImageIconItemInfoUtils.createImageIcon(TestJComboBoxWithImageIconItems.class, "images/backward.png"), "Retroceder", null);
+        ImageIconItemInfo fastbackward = new ImageIconItemInfo("images/fastbackward.png", ImageIconItemInfoUtils.createImageIcon(TestJComboBoxWithImageIconItems.class, "images/fastbackward.png"), "Retroceso r�pido", null);
+        ImageIconItemInfo forward = new ImageIconItemInfo("images/forward.png", ImageIconItemInfoUtils.createImageIcon(TestJComboBoxWithImageIconItems.class, "images/forward.png"), "Avanzar", "Avanzar");
+        ImageIconItemInfo fastforward = new ImageIconItemInfo("images/fastforward.png", ImageIconItemInfoUtils.createImageIcon(TestJComboBoxWithImageIconItems.class, "images/fastforward.png"), "Avance r�pido", null);
+        
+        ImageIconItemInfo error1 = new ImageIconItemInfo("Error1.png", ImageIconItemInfoUtils.createImageIcon(TestJComboBoxWithImageIconItems.class, "Error1.png"),"Error 1", "Error 1");
+        ImageIconItemInfo error2 = new ImageIconItemInfo("Error2.png", ImageIconItemInfoUtils.createImageIcon(TestJComboBoxWithImageIconItems.class, "Error2.png"),"Error 2", null);
+        ImageIconItemInfo error3 = new ImageIconItemInfo("Error3.png", ImageIconItemInfoUtils.createImageIcon(TestJComboBoxWithImageIconItems.class, "Error3.png"),"Error 3", "Error 3");
+        ImageIconItemInfo error4 = new ImageIconItemInfo("Error4.png", ImageIconItemInfoUtils.createImageIcon(TestJComboBoxWithImageIconItems.class, "Error4.png"),"Error 4", null);
+        ImageIconItemInfo error5 = new ImageIconItemInfo("Error5.png", ImageIconItemInfoUtils.createImageIcon(TestJComboBoxWithImageIconItems.class, "Error5.png"),"Error 5", "Error 5");
+        ImageIconItemInfo error6 = new ImageIconItemInfo("Error6.png", ImageIconItemInfoUtils.createImageIcon(TestJComboBoxWithImageIconItems.class, "Error6.png"),"Error 6", null);
+        ImageIconItemInfo error7 = new ImageIconItemInfo("Error7.png", ImageIconItemInfoUtils.createImageIcon(TestJComboBoxWithImageIconItems.class, "Error7.png"),"Error 5", null);
+        
+        // Test 'addImageIcon' method
+        component.addImageIconItem(backward);
+        component.addImageIconItem(error1);
+        
+        // Test 'removeImageIcon' method
+        component.removeImageIconItem(backward);
+        component.removeImageIconItem(error2);
+        component.removeImageIconItem(error1);
+
+        // Test 'getMaximumRowCount' method
+        System.out.println("N�mero de filas por defecto: " + component.getMaximumRowCount());
+
+        // Test 'setMaximumRowCount' method
+        component.setMaximumRowCount(4);
+
+        // Test 'getMaximumJComboBoxRowCount' method
+        System.out.println("N�mero de filas despues de modificarlo el atributo: " + component.getMaximumRowCount());
+
+        // Tests 'addImageIcons(String [])' method
+        ImageIconItemInfo[] icons = {backward, forward, forward, // Duplicated 'forward.png'
+        		error3, fastbackward, fastforward};
+        component.addImageIconItems(icons);
+
+        // Tests 'removeAllImageIcons' method
+        component.removeAllImageIconItems();
+
+        // Tests 'removeImageIcons(String [])' method
+        component.addImageIconItems(icons);
+        ImageIconItemInfo[] icons2 = {error3, error4, forward};
+        component.removeImageIconItems(icons2);
+
+        // Tests 'addImageIcons(Vector)' method
+        Vector icons3 = new Vector();
+        icons3.add(forward); // Allow repeated items
+        icons3.add(error5);
+        icons3.add(backward); // Allow repeated items
+        icons3.add(error6);
+        component.addImageIconItems(icons3);
+
+        // Tests 'setShowImageIconAndTextProperty' method
+        component.setShowImageIconAndTextProperty(true);
+        component.setShowImageIconAndTextProperty(false);
+
+        // Tests 'removeImageIcons(Vector)' method
+        Vector icons4 = new Vector();
+        icons4.add(forward); // Remove a repeted item (only one time)
+        icons4.add(error6);
+        icons4.add(error7); // Tries to remove an item but its tool tip text it's incorrect and then it can't remove this item
+        component.removeImageIconItems(icons4);
+
+        /**** END METHOD TESTS ****/
+
+        //Display the window.
+        frame.pack();
+        frame.setVisible(true);
+    }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jComboBoxWithImageIconItems/TestJComboBoxWithImageIconItems.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jfilechooser/TestJFileChooser.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jfilechooser/TestJFileChooser.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/jfilechooser/TestJFileChooser.java	(revision 38348)
@@ -0,0 +1,69 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.swing.jfilechooser;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.swing.JFileChooser;
+/**
+ * Test para el componente JFileChooser. Como se puede apreciar, recuerda el
+ * �ltimo directorio elegido para cada caso.
+ *
+ * @version 05/12/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestJFileChooser implements ActionListener  {
+
+	private TestUI frame = new TestUI("TestJFileChooser");
+	JComboBox comboBox = null;
+
+	public TestJFileChooser() {
+
+		frame.setLayout(new BorderLayout());
+		frame.setResizable(false);
+		comboBox = new JComboBox();
+		comboBox.addItem("Tablas de color");
+		comboBox.addItem("Vectorial");
+		comboBox.addItem("Raster");
+		comboBox.addItem("Otros");
+		frame.add(comboBox, BorderLayout.CENTER);
+		JButton button = new JButton("Abrir fichero");
+		button.addActionListener(this);
+		frame.add(button, BorderLayout.SOUTH);
+
+		frame.pack();
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestJFileChooser();
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		JFileChooser chooser = new JFileChooser(comboBox.getSelectedItem().toString(), (File) null);
+		chooser.showOpenDialog(frame);
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/jCalendarUsingSamples/Example1.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/jCalendarUsingSamples/Example1.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/jCalendarUsingSamples/Example1.java	(revision 38348)
@@ -0,0 +1,185 @@
+//**********************************************************************
+// Package
+//**********************************************************************
+
+
+//**********************************************************************
+// Import list
+//**********************************************************************
+package org.gvsig.gui.beans.swing.textBoxWithCalendar.jCalendarUsingSamples;
+
+import java.awt.Container;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.GridLayout;
+import java.util.Calendar;
+import java.util.Locale;
+
+import javax.swing.BorderFactory;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.border.Border;
+
+import org.freixas.jcalendar.DateEvent;
+import org.freixas.jcalendar.DateListener;
+import org.freixas.jcalendar.JCalendar;
+
+/**
+ * This example shows various instances of the JCalendar class.
+ * <hr>
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the Artistic License. You should have
+ * received a copy of the Artistic License along with this program. If
+ * not, a copy is available at
+ * <a href="http://opensource.org/licenses/artistic-license.php">
+ * opensource.org</a>.
+ *
+ * @author Antonio Freixas
+ */
+
+// Copyright � 2004 Antonio Freixas
+// All Rights Reserved.
+
+public class Example1 extends JFrame {
+	private static final long serialVersionUID = -2655722904436980134L;
+
+	// **********************************************************************
+	// main
+	// **********************************************************************
+
+	public static void main(String[] args) {
+		new Example1();
+	}
+
+// **********************************************************************
+// Constructors
+//**********************************************************************
+
+/**
+ * Create various instances of a JCalendar.
+ */
+
+public
+Example1()
+{
+    // Set up the frame
+
+    setTitle("Example1");
+    setDefaultCloseOperation(EXIT_ON_CLOSE);
+
+    Container contentPane = getContentPane();
+    contentPane.setLayout(new GridLayout(2, 2, 5, 5));
+
+    // Create a border for all calendars
+
+    Border etchedBorder =
+	BorderFactory.createEtchedBorder();
+    Border emptyBorder =
+	BorderFactory.createEmptyBorder(10, 10, 10, 10);
+    Border compoundBorder =
+	BorderFactory.createCompoundBorder(etchedBorder, emptyBorder);
+
+    // Create a date listener to be used for all calendars
+
+    MyDateListener listener = new MyDateListener();
+
+    // Display date and time using the default calendar and locale.
+    // Display today's date at the bottom.
+
+    JCalendar calendar1 =
+	new JCalendar(
+	    JCalendar.DISPLAY_DATE | JCalendar.DISPLAY_TIME,
+	    true);
+    calendar1.addDateListener(listener);
+    calendar1.setBorder(compoundBorder);
+
+    // Set fonts rather than using defaults
+
+    calendar1.setTitleFont(new Font("Serif", Font.BOLD|Font.ITALIC, 24));
+    calendar1.setDayOfWeekFont(new Font("SansSerif", Font.ITALIC, 12));
+    calendar1.setDayFont(new Font("SansSerif", Font.BOLD, 16));
+    calendar1.setTimeFont(new Font("DialogInput", Font.PLAIN, 10));
+    calendar1.setTodayFont(new Font("Dialog", Font.PLAIN, 14));
+
+    // Display date only
+
+    JCalendar calendar2 = new JCalendar(JCalendar.DISPLAY_DATE, false);
+    calendar2.addDateListener(listener);
+    calendar2.setBorder(compoundBorder);
+
+    // Display time only and set the time pattern to use as a duration
+    // from 00:00 to 23:59
+
+    JCalendar calendar3 =
+	new JCalendar(
+	    Calendar.getInstance(),
+	    Locale.getDefault(),
+	    JCalendar.DISPLAY_TIME,
+	    false,
+	    "HH:mm");
+    calendar3.addDateListener(listener);
+    calendar3.setBorder(compoundBorder);
+
+    // Display a French calendar
+
+    JCalendar calendar4 =
+	new JCalendar(
+	    Calendar.getInstance(Locale.FRENCH),
+	    Locale.FRENCH,
+	    JCalendar.DISPLAY_DATE | JCalendar.DISPLAY_TIME,
+	    false);
+    calendar4.addDateListener(listener);
+    calendar4.setBorder(compoundBorder);
+
+    // Add all the calendars to the content pane
+
+    JPanel panel1 = new JPanel(new FlowLayout());
+    panel1.add(calendar1);
+    contentPane.add(panel1);
+
+    JPanel panel2 = new JPanel(new FlowLayout());
+    panel2.add(calendar2);
+    contentPane.add(panel2);
+
+    JPanel panel3 = new JPanel(new FlowLayout());
+    panel3.add(calendar3);
+    contentPane.add(panel3);
+
+    JPanel panel4 = new JPanel(new FlowLayout());
+    panel4.add(calendar4);
+    contentPane.add(panel4);
+
+    // Make the window visible
+
+    pack();
+    setVisible(true);
+}
+
+//**********************************************************************
+// Inner Classes
+//**********************************************************************
+
+private class MyDateListener
+      implements DateListener
+{
+
+public void
+dateChanged(
+    DateEvent e)
+{
+    Calendar c = e.getSelectedDate();
+    if (c != null) {
+	System.out.println(c.getTime());
+    }
+    else {
+	System.out.println("No time selected.");
+    }
+}
+
+}
+
+//**********************************************************************
+// End Inner Classes
+//**********************************************************************
+
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/jCalendarUsingSamples/Example1.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/jCalendarUsingSamples/Example2.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/jCalendarUsingSamples/Example2.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/jCalendarUsingSamples/Example2.java	(revision 38348)
@@ -0,0 +1,173 @@
+package org.gvsig.gui.beans.swing.textBoxWithCalendar.jCalendarUsingSamples;
+
+
+//**********************************************************************
+// Import list
+//**********************************************************************
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Font;
+import java.awt.GridLayout;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Locale;
+
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+import org.freixas.jcalendar.DateEvent;
+import org.freixas.jcalendar.DateListener;
+import org.freixas.jcalendar.JCalendarCombo;
+
+/**
+ * This example shows various instances of the JCalendarCombo class.
+ * <hr>
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the Artistic License. You should have
+ * received a copy of the Artistic License along with this program. If
+ * not, a copy is available at
+ * <a href="http://opensource.org/licenses/artistic-license.php">
+ * opensource.org</a>.
+ *
+ * @author Antonio Freixas
+ */
+
+// Copyright � 2004 Antonio Freixas
+// All Rights Reserved.
+
+class Example2 extends JFrame {
+	private static final long serialVersionUID = 1804829593564929253L;
+
+	// **********************************************************************
+	// main
+	// **********************************************************************
+
+	public static void main(String[] args) {
+		new Example2();
+	}
+
+// **********************************************************************
+// Constructors
+//**********************************************************************
+
+/**
+ * Create various instances of a JCalendarCombo.
+ */
+
+public
+Example2()
+{
+    // Set up the frame
+
+    setTitle("Example2");
+    setDefaultCloseOperation(EXIT_ON_CLOSE);
+
+    Container contentPane = getContentPane();
+    contentPane.setLayout(new GridLayout(2, 2, 5, 5));
+
+    // Create a date listener to be used for all calendars
+
+    MyDateListener listener = new MyDateListener();
+
+    // Display date and time using the default calendar and locale.
+    // Display today's date at the bottom. Allow editing
+
+    JCalendarCombo calendar1 =
+	new JCalendarCombo(
+	    JCalendarCombo.DISPLAY_DATE | JCalendarCombo.DISPLAY_TIME,
+	    true);
+    calendar1.setEditable(true);
+    calendar1.addDateListener(listener);
+
+    // Set fonts rather than using defaults
+
+    calendar1.setFont(new Font("DialogInput", Font.PLAIN, 16));
+
+    calendar1.setTitleFont(new Font("Serif", Font.BOLD|Font.ITALIC, 24));
+    calendar1.setDayOfWeekFont(new Font("SansSerif", Font.ITALIC, 12));
+    calendar1.setDayFont(new Font("SansSerif", Font.BOLD, 16));
+    calendar1.setTimeFont(new Font("DialogInput", Font.PLAIN, 10));
+    calendar1.setTodayFont(new Font("Dialog", Font.PLAIN, 14));
+
+    // Display date only
+
+    JCalendarCombo calendar2 =
+	new JCalendarCombo(JCalendarCombo.DISPLAY_DATE, false);
+    calendar2.addDateListener(listener);
+
+    // Display time only and set the time pattern to use as a duration
+    // from 00:00 to 23:59
+
+    JCalendarCombo calendar3 =
+	new JCalendarCombo(
+	    Calendar.getInstance(),
+	    Locale.getDefault(),
+	    JCalendarCombo.DISPLAY_TIME,
+	    false,
+	    "HH:mm:ss");
+    calendar3.setDateFormat(new SimpleDateFormat("HH:mm:ss"));
+    calendar3.addDateListener(listener);
+
+    // Display a French calendar
+
+    JCalendarCombo calendar4 =
+	new JCalendarCombo(
+	    Calendar.getInstance(Locale.FRENCH),
+	    Locale.FRENCH,
+	    JCalendarCombo.DISPLAY_DATE | JCalendarCombo.DISPLAY_TIME,
+	    false);
+    calendar4.addDateListener(listener);
+
+    // Add all the calendars to the content pane
+
+    JPanel panel1 = new JPanel(new BorderLayout());
+    panel1.add(calendar1, BorderLayout.NORTH);
+    contentPane.add(panel1);
+
+    JPanel panel2 = new JPanel(new BorderLayout());
+    panel2.add(calendar2, BorderLayout.NORTH);
+    contentPane.add(panel2);
+
+    JPanel panel3 = new JPanel(new BorderLayout());
+    panel3.add(calendar3, BorderLayout.NORTH);
+    contentPane.add(panel3);
+
+    JPanel panel4 = new JPanel(new BorderLayout());
+    panel4.add(calendar4, BorderLayout.NORTH);
+    contentPane.add(panel4);
+
+    // Make the window visible
+
+    pack();
+    setVisible(true);
+}
+
+//**********************************************************************
+// Inner Classes
+//**********************************************************************
+
+private class MyDateListener
+      implements DateListener
+{
+
+public void
+dateChanged(
+    DateEvent e)
+{
+    Calendar c = e.getSelectedDate();
+    if (c != null) {
+	System.out.println(c.getTime());
+    }
+    else {
+	System.out.println("No time selected.");
+    }
+}
+
+}
+
+//**********************************************************************
+// End Inner Classes
+//**********************************************************************
+
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/jCalendarUsingSamples/Example2.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarDateDialog.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarDateDialog.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarDateDialog.java	(revision 38348)
@@ -0,0 +1,126 @@
+package org.gvsig.gui.beans.swing.textBoxWithCalendar;
+
+import java.awt.Dimension;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+
+import org.gvsig.gui.beans.Messages;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests the JCalendarDateDialog  -> creates a JFrame that allows use a JCalendarDateDialog  object
+
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class TestJCalendarDateDialog extends JFrame implements Serializable {
+	private static final long serialVersionUID = 5885608277555264729L;
+	private static JCalendarDateDialog t;
+
+	/**
+	 * Test method for the TestJCalendarCDatePanel class
+	 * @param args
+	 */
+	public static void main(String[] args)
+	{
+		int widthJF = 200;
+		int heightJF = 50;
+		int widthJB = 30;
+		int heightJB = 20;
+		
+		// Objects creation
+		JFrame jF = new JFrame();
+		
+		// JCalendarDateDialog
+		t = new JCalendarDateDialog();		
+		
+		// Test Modal
+		t.setModal(true);
+		
+		// Test set minimum dimension
+//		t.setMinimumWidth(200);
+//		t.setMinimumHeight(150);
+		t.setMinimumWidthScreenResolutionPercentage(0.30);
+		t.setMinimumHeightScreenResolutionPercentage(0.20);
+		
+		// Test set maximum dimension
+//		t.setMaximumWidth(500);
+//		t.setMaximumHeight(400);		
+		t.setMaximumWidthScreenResolutionPercentage(0.60);
+		t.setMaximumHeightScreenResolutionPercentage(0.40);		
+
+		// Test Resize the component:
+		t.setSizeResize(350, 300);
+		
+		// Creates a JButton
+		JButton jButton = new JButton();
+		jButton.setPreferredSize(new Dimension(widthJB, heightJB));
+		jButton.setText(Messages.getText("date"));
+		jButton.addMouseListener(new MouseAdapter() {
+			/*
+			 *  (non-Javadoc)
+			 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+			 */
+			public void mouseClicked(MouseEvent e) {
+				t.setVisible(true);
+				t.setLocationRelativeTo(null);
+				System.out.println("Selected date: " + new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(t.getDate()));
+			}
+		});
+		
+		// Set properties
+		jF.setTitle("Test JCalendarDateDialog");
+		jF.setSize(new Dimension(widthJF, heightJF));	    
+	    jF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+	    jF.getContentPane().add(jButton);
+	    jF.setLocationRelativeTo(null);
+		
+		jF.setVisible(true);
+	
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarDateDialog.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarDatePanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarDatePanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarDatePanel.java	(revision 38348)
@@ -0,0 +1,110 @@
+package org.gvsig.gui.beans.swing.textBoxWithCalendar;
+
+import java.awt.Dimension;
+import java.io.Serializable;
+
+import javax.swing.JFrame;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests the JCalendarCDatePanel -> creates a JFrame that allows use a JCalendarCDatePanel object
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class TestJCalendarDatePanel extends JFrame implements Serializable {
+	private static final long serialVersionUID = 6214293384150864091L;
+
+	/**
+	 * Test method for the TestJCalendarCDatePanel class
+	 * @param args
+	 */
+	public static void main(String[] args)
+	{
+		int old_width = 200;
+		int old_height = 50;
+		int new_width = 445;
+		int new_height = 370;
+		
+		// Objects creation
+		JFrame jF = new JFrame();		
+		JCalendarDatePanel t = new JCalendarDatePanel();
+		
+		// Set properties
+		jF.setTitle("Test JCalendarDatePanel");
+		jF.setSize(new Dimension(old_width, old_height));	    
+	    jF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+	    jF.getContentPane().add(t);	    
+		
+		jF.setVisible(true);
+		
+		// Test Modal
+		t.setModal(true);
+		
+		// Test resize the panel (and its button)
+		jF.setSize(new Dimension(new_width, new_height)); // For see all panel with the new size
+		t.setPreferredSize(new Dimension (355, 325));
+		t.setSize(new Dimension (360, 320));
+		t.setSize(365, 325);
+		t.revalidate();
+		
+		// Test Disable Calendar Selection
+		//t.disableCalendar();
+		
+		// Tests resizing the Calendar dialog
+		// Test set minimum dimension
+		t.getJCalendarDateDialog().setMinimumWidth(350);
+		t.getJCalendarDateDialog().setMinimumHeight(170);
+//		t.getJCalendarDateDialog().setMinimumWidthScreenResolutionPercentage(0.30);
+//		t.getJCalendarDateDialog().setMinimumHeightScreenResolutionPercentage(0.20);
+		
+		// Test set maximum dimension
+		t.getJCalendarDateDialog().setMaximumWidth(500);
+		t.getJCalendarDateDialog().setMaximumHeight(400);		
+//		t.getJCalendarDateDialog().setMaximumWidthScreenResolutionPercentage(0.60);
+//		t.getJCalendarDateDialog().setMaximumHeightScreenResolutionPercentage(0.40);		
+
+		// Test Resize the component:
+//		t.getJCalendarDateDialog().setSizeResize(350, 300);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarDatePanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarCDatePanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarCDatePanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarCDatePanel.java	(revision 38348)
@@ -0,0 +1,85 @@
+package org.gvsig.gui.beans.swing.textBoxWithCalendar;
+
+import java.awt.Dimension;
+import java.io.Serializable;
+
+import javax.swing.JFrame;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests the JCalendarCDatePanel -> creates a JFrame that allows use a JCalendarCDatePanel object
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class TestJCalendarCDatePanel extends JFrame implements Serializable {
+	private static final long serialVersionUID = 8633128258748487018L;
+
+	/**
+	 * Test method for the CalendarPanelTest
+	 * @param args
+	 */
+	public static void main(String[] args)
+	{
+		int width = 500;
+		int height = 30;
+		
+		// Objects creation
+		JFrame jF = new JFrame();		
+		JCalendarCDatePanel t = new JCalendarCDatePanel();
+		
+		// Set properties
+		jF.setTitle("Test JCalendarCDatePanel");
+		jF.setSize(new Dimension(width, height));	    
+	    jF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+	    jF.getContentPane().add(t);	    
+		
+		jF.setVisible(true);
+		
+		// Test Resize the component:
+		t.setPreferredSizeResize(500, 24);
+		
+		// Test Disable Calendar Selection
+		//t.disableCalendar();
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/swing/textBoxWithCalendar/TestJCalendarCDatePanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/specificcaretposition/TestJFormattedTextFieldSCP.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/specificcaretposition/TestJFormattedTextFieldSCP.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/specificcaretposition/TestJFormattedTextFieldSCP.java	(revision 38348)
@@ -0,0 +1,155 @@
+package org.gvsig.gui.beans.specificcaretposition;
+
+import java.awt.Dimension;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.awt.event.specificCaretPosition.ISpecificCaretPosition;
+import org.gvsig.gui.beans.Messages;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests for JFormattedTextFieldWithSpecificCaretPosition
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class TestJFormattedTextFieldSCP {
+	private static JFormattedTextFieldSCP jTF1;
+	private static JFormattedTextFieldSCP jTF2;
+	private static JFormattedTextFieldSCP jTF3;
+	private static JFormattedTextFieldSCP jTF4;
+	
+	/**
+	 * Test method for the TestJCalendarCDatePanel class
+	 * @param args
+	 */
+	public static void main(String[] args)
+	{
+		final int height = 60;
+		final int width = 300;
+		
+		final int heightTF = 25;
+		final int widthTF = 40;
+		
+		final int heightJB = 25;
+		final int widthJB = 100;
+		
+		// Objects creation
+		JFrame jF = new JFrame();		
+
+		JPanel jP = new JPanel();
+		jP.setPreferredSize(new Dimension(width, height));
+		
+		jTF1 = new JFormattedTextFieldSCP();
+		jTF1.setPreferredSize(new Dimension(widthTF, heightTF));
+		jTF1.setToolTipText(Messages.getText("default"));
+		
+		jTF2 = new JFormattedTextFieldSCP();
+		jTF2.setCaretPositionMode(ISpecificCaretPosition.RIGHT_POSITIONS);
+		jTF2.setPreferredSize(new Dimension(widthTF, heightTF));
+		jTF2.setToolTipText(Messages.getText("right"));
+
+		jTF3 = new JFormattedTextFieldSCP();
+		jTF3.setCaretPositionMode(ISpecificCaretPosition.LEFT_POSITIONS);
+		jTF3.setPreferredSize(new Dimension(widthTF, heightTF));
+		jTF3.setToolTipText(Messages.getText("left"));
+
+		jTF4 = new JFormattedTextFieldSCP();
+		jTF4.setCaretPositionMode(ISpecificCaretPosition.LIKE_JTEXTCOMPONENT);
+		jTF4.setPreferredSize(new Dimension(widthTF, heightTF));
+		jTF4.setToolTipText(Messages.getText("like_JTextField"));
+		
+		JButton jButton = new JButton();
+		jButton.setToolTipText(Messages.getText("enable/Disable"));
+		jButton.setText("En./Dis.");
+		jButton.setPreferredSize(new Dimension(widthJB, heightJB));
+		jButton.addMouseListener(new MouseAdapter() {
+			/*
+			 *  (non-Javadoc)
+			 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+			 */
+			public void mouseClicked(MouseEvent e) {
+				enableOrDisableJTextFields();
+			}			
+		});
+
+	    
+		jP.add(jTF1);
+		jP.add(jTF2);
+		jP.add(jTF3);
+		jP.add(jTF4);
+		jP.add(jButton);
+
+//		jF.setVisible(false);		
+	    // Test adding text to text fields
+
+	    // Set properties
+		jF.setTitle("Test JFormattedTextFieldWithSpecificCaretPosition");
+	    jF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+	    jF.setSize(jP.getPreferredSize());
+	    jF.getContentPane().add(jP);	
+	    
+		jF.setVisible(true);
+		
+	    jTF1.setEnabled(false);
+	    jTF1.setText("+123456.78901234141241");
+	    jTF2.setEnabled(false);
+	    jTF2.setText("-0917429817.10934712");
+	    jTF3.setEnabled(false);
+	    jTF3.setText("-184091.3095174");
+	    jTF4.setEnabled(false);
+	    jTF4.setText("+128947.09345734");
+
+	}
+	
+	private static void enableOrDisableJTextFields() {
+		jTF1.setEnabled(!jTF1.isEnabled());
+		jTF2.setEnabled(!jTF2.isEnabled());
+		jTF3.setEnabled(!jTF3.isEnabled());
+		jTF4.setEnabled(!jTF4.isEnabled());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/specificcaretposition/TestJTextFieldWithSCP.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/specificcaretposition/TestJTextFieldWithSCP.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/specificcaretposition/TestJTextFieldWithSCP.java	(revision 38348)
@@ -0,0 +1,155 @@
+package org.gvsig.gui.beans.specificcaretposition;
+
+import java.awt.Dimension;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.awt.event.specificCaretPosition.ISpecificCaretPosition;
+import org.gvsig.gui.beans.Messages;
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests for JTextFieldWithSpecificCaretPosition
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class TestJTextFieldWithSCP {
+	private static JTextFieldWithSCP jTF1;
+	private static JTextFieldWithSCP jTF2;
+	private static JTextFieldWithSCP jTF3;
+	private static JTextFieldWithSCP jTF4;
+	
+	/**
+	 * Test method for the TestJCalendarCDatePanel class
+	 * @param args
+	 */
+	public static void main(String[] args)
+	{
+		final int height = 60;
+		final int width = 300;
+		
+		final int heightTF = 25;
+		final int widthTF = 40;
+		
+		final int heightJB = 25;
+		final int widthJB = 100;
+		
+		// Objects creation
+		JFrame jF = new JFrame();		
+
+		JPanel jP = new JPanel();
+		jP.setPreferredSize(new Dimension(width, height));
+		
+		jTF1 = new JTextFieldWithSCP();
+		jTF1.setPreferredSize(new Dimension(widthTF, heightTF));
+		jTF1.setToolTipText(Messages.getText("Default"));
+		
+		jTF2 = new JTextFieldWithSCP();
+		jTF2.setCaretPositionMode(ISpecificCaretPosition.RIGHT_POSITIONS);
+		jTF2.setPreferredSize(new Dimension(widthTF, heightTF));
+		jTF2.setToolTipText(Messages.getText("Right"));
+
+		jTF3 = new JTextFieldWithSCP();
+		jTF3.setCaretPositionMode(ISpecificCaretPosition.LEFT_POSITIONS);
+		jTF3.setPreferredSize(new Dimension(widthTF, heightTF));
+		jTF3.setToolTipText(Messages.getText("Left"));
+
+		jTF4 = new JTextFieldWithSCP();
+		jTF4.setCaretPositionMode(ISpecificCaretPosition.LIKE_JTEXTCOMPONENT);
+		jTF4.setPreferredSize(new Dimension(widthTF, heightTF));
+		jTF4.setToolTipText(Messages.getText("Like_JTextField"));
+		
+		JButton jButton = new JButton();
+		jButton.setToolTipText("Enable/Disable");
+		jButton.setText("En./Dis.");
+		jButton.setPreferredSize(new Dimension(widthJB, heightJB));
+		jButton.addMouseListener(new MouseAdapter() {
+			/*
+			 *  (non-Javadoc)
+			 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
+			 */
+			public void mouseClicked(MouseEvent e) {
+				enableOrDisableJTextFields();
+			}			
+		});
+
+	    
+		jP.add(jTF1);
+		jP.add(jTF2);
+		jP.add(jTF3);
+		jP.add(jTF4);
+		jP.add(jButton);
+
+//		jF.setVisible(false);		
+	    // Test adding text to text fields
+
+	    // Set properties
+		jF.setTitle("Test JTextFieldWithSpecificCaretPosition");
+	    jF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+	    jF.setSize(jP.getPreferredSize());
+	    jF.getContentPane().add(jP);	
+	    
+		jF.setVisible(true);
+		
+	    jTF1.setEnabled(false);
+	    jTF1.setText("+123456.78901234141241");
+	    jTF2.setEnabled(false);
+	    jTF2.setText("-0917429817.10934712");
+	    jTF3.setEnabled(false);
+	    jTF3.setText("-184091.3095174");
+	    jTF4.setEnabled(false);
+	    jTF4.setText("+128947.09345734");
+
+	}
+	
+	private static void enableOrDisableJTextFields() {
+		jTF1.setEnabled(!jTF1.isEnabled());
+		jTF2.setEnabled(!jTF2.isEnabled());
+		jTF3.setEnabled(!jTF3.isEnabled());
+		jTF4.setEnabled(!jTF4.isEnabled());
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/TestUI.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/TestUI.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/TestUI.java	(revision 38348)
@@ -0,0 +1,51 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans;
+
+import java.awt.Toolkit;
+
+import javax.swing.JFrame;
+import javax.swing.UIManager;
+/**
+ * Base para inicializar el frame de un Test
+ * @version 30/10/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestUI extends JFrame {
+  private static final long serialVersionUID = -4036296272039858631L;
+
+	public TestUI(String title) {
+		super(title);
+		defaultInit();
+		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+	}
+	
+	/**
+	 * Configura el entorno por defecto
+	 */
+	public static void defaultInit() {
+		 //Turn off metal's use of bold fonts
+		UIManager.put("swing.boldMetal", Boolean.FALSE);
+		Toolkit.getDefaultToolkit().setDynamicLayout(true);
+		try {
+	    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+    } catch (Exception e) {
+    }
+	}
+}
\ No newline at end of file
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorslideredition/TestColorSliderEdition.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorslideredition/TestColorSliderEdition.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorslideredition/TestColorSliderEdition.java	(revision 38348)
@@ -0,0 +1,105 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.colorslideredition;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.border.EmptyBorder;
+
+import org.gvsig.gui.beans.TestUI;
+/**
+ *
+ * @version 02/11/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestColorSliderEdition implements ActionListener {
+	private TestUI jFrame = new TestUI("TestColorSliderEdition");
+	private ColorSliderEdition colorSliderEdition = null;
+	JCheckBox jCBInterpolated = null;
+	JCheckBox jCBEnabled = null;
+
+	public TestColorSliderEdition() {
+		jCBInterpolated = new JCheckBox("Interpolated");
+		jCBInterpolated.setSelected(true);
+		jCBInterpolated.addActionListener(this);
+		jCBEnabled = new JCheckBox("Enabled");
+		jCBEnabled.addActionListener(this);
+		jCBEnabled.setSelected(true);
+
+		jFrame.setSize(new Dimension(498, 127));
+		colorSliderEdition = new ColorSliderEdition();
+		colorSliderEdition.setPreferredSize(new Dimension(0, 44));
+		colorSliderEdition.setMinimumSize(new Dimension(0, 44));
+
+		colorSliderEdition.addItem(new ItemColorSlider(0, Color.black), false);
+		colorSliderEdition.addItem(new ItemColorSlider(25, Color.red), false);
+		colorSliderEdition.addItem(new ItemColorSlider(50, Color.yellow), false);
+		colorSliderEdition.addItem(new ItemColorSlider(75, Color.blue), true);
+		colorSliderEdition.addItem(new ItemColorSlider(100, new Color(255, 255, 255, 0)), true);
+
+		JPanel jPanel = new JPanel();
+		jFrame.setContentPane(jPanel);
+
+		jPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
+		jPanel.setLayout(new java.awt.GridBagLayout());
+
+		GridBagConstraints gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 0;
+		gridBagConstraints.weightx = 1;
+		gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
+		gridBagConstraints.insets = new java.awt.Insets(5, 5, 2, 5);
+		jPanel.add(colorSliderEdition, gridBagConstraints);
+
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 1;
+		gridBagConstraints.insets = new java.awt.Insets(2, 5, 2, 5);
+		jPanel.add(jCBInterpolated, gridBagConstraints);
+
+		gridBagConstraints = new GridBagConstraints();
+		gridBagConstraints.gridx = 0;
+		gridBagConstraints.gridy = 2;
+		gridBagConstraints.insets = new java.awt.Insets(2, 5, 5, 5);
+		jPanel.add(jCBEnabled, gridBagConstraints);
+
+		jFrame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestColorSliderEdition();
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		if (e.getSource() == jCBInterpolated) {
+			colorSliderEdition.setInterpolated(jCBInterpolated.isSelected());
+			return;
+		}
+		if (e.getSource() == jCBEnabled) {
+			colorSliderEdition.setEnabled(jCBEnabled.isSelected());
+			return;
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorslideredition/TestColorSliderEdition.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/buttonbar/TestButtonBar.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/buttonbar/TestButtonBar.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/buttonbar/TestButtonBar.java	(revision 38348)
@@ -0,0 +1,47 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.buttonbar;
+
+import org.gvsig.gui.beans.TestUI;
+
+public class TestButtonBar {
+	private TestUI frame = new TestUI("TestButtonBar");
+
+	public TestButtonBar() {
+		ButtonBarContainer cont = new ButtonBarContainer();
+		frame.setSize(410, 45);
+		cont.setButtonAlignment("right");
+		cont.addButton("down.png", "hola",0);
+		cont.addButton(null, "que",1);
+		cont.addButton(null, "tal",2);
+		cont.addButton(null, "estas?",3);
+		cont.addButton(null, "adios", 4);
+		cont.getButton(2).setEnabled(false);
+		cont.disableAllControls();
+		cont.restoreControlsValue();
+		cont.setComponentBorder(true);
+		cont.delButton(3);
+		frame.getContentPane().add(cont);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args){
+		new TestButtonBar();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/buttonbar/TestButtonBar.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/openfile/TestOpenFile.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/openfile/TestOpenFile.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/openfile/TestOpenFile.java	(revision 38348)
@@ -0,0 +1,41 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.openfile;
+
+import javax.swing.JFrame;
+
+public class TestOpenFile {
+	private int               w     = 510;
+	private int               h     = 90;
+	private JFrame            frame = new JFrame();
+	private OpenFileContainer open  = null;
+
+	public TestOpenFile() {
+		open = new OpenFileContainer();
+		open.setComponentSize(w, h);
+		frame.getContentPane().add(open);
+		frame.setSize(w, h);
+		frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestOpenFile();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/openfile/TestOpenFile.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/Test3FilterQueryJPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/Test3FilterQueryJPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/Test3FilterQueryJPanel.java	(revision 38348)
@@ -0,0 +1,68 @@
+package org.gvsig.gui.beans.filterPanel.filterQueryPanel;
+
+import javax.swing.JFrame;
+
+import org.gvsig.gui.beans.Messages;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests FilterQueryJPanel
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class Test3FilterQueryJPanel {
+	public static void main(String[] args) {
+		FilterQueryJPanel filterQueryJPanel = new FilterQueryJPanel();
+		filterQueryJPanel.resize(460, 450);
+		
+		JFrame frame = new JFrame();
+
+		FilterQueryJPanel fQ = new FilterQueryJPanel();
+	    frame.setSize(fQ.getPreferredSize());
+		frame.getContentPane().add(fQ);
+		frame.setTitle(Messages.getText("test_TableFilterQueryJPanel_title"));
+		frame.pack();
+		frame.setVisible(true);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/Test3FilterQueryJPanel.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/TestFilterQueryJPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/TestFilterQueryJPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/TestFilterQueryJPanel.java	(revision 38348)
@@ -0,0 +1,65 @@
+package org.gvsig.gui.beans.filterPanel.filterQueryPanel;
+
+import javax.swing.JFrame;
+
+import org.gvsig.gui.beans.Messages;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests FilterQueryJPanel
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class TestFilterQueryJPanel {
+	public static void main(String[] args) {
+		JFrame frame = new JFrame();
+		
+		FilterQueryJPanel fQ = new FilterQueryJPanel();
+	    frame.setSize(fQ.getPreferredSize());
+		frame.getContentPane().add(fQ);
+		frame.setTitle(Messages.getText("test_TableFilterQueryJPanel_title"));
+		frame.pack();
+		frame.setVisible(true);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/TestFilterQueryJPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/Test2FilterQueryJPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/Test2FilterQueryJPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/Test2FilterQueryJPanel.java	(revision 38348)
@@ -0,0 +1,68 @@
+package org.gvsig.gui.beans.filterPanel.filterQueryPanel;
+
+import javax.swing.JFrame;
+
+import org.gvsig.gui.beans.Messages;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests FilterQueryJPanel
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class Test2FilterQueryJPanel {
+	public static void main(String[] args) {
+		FilterQueryJPanel filterQueryJPanel = new FilterQueryJPanel();
+		filterQueryJPanel.resizeHeight(427);
+		
+		JFrame frame = new JFrame();
+
+		FilterQueryJPanel fQ = new FilterQueryJPanel();
+	    frame.setSize(fQ.getPreferredSize());
+		frame.getContentPane().add(fQ);
+		frame.setTitle(Messages.getText("test_TableFilterQueryJPanel_title"));
+		frame.pack();
+		frame.setVisible(true);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/filterQueryPanel/Test2FilterQueryJPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/TestTableFilterQueryJPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/TestTableFilterQueryJPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/TestTableFilterQueryJPanel.java	(revision 38348)
@@ -0,0 +1,65 @@
+package org.gvsig.gui.beans.filterPanel.tableFilterQueryPanel;
+
+import javax.swing.JFrame;
+
+import org.gvsig.gui.beans.Messages;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests TableFilterQueryJPanel
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class TestTableFilterQueryJPanel {
+	public static void main(String[] args) {
+		JFrame frame = new JFrame();
+		TableFilterQueryJPanel tFQ = new TableFilterQueryJPanel();
+	    frame.setSize(tFQ.getPreferredSize());
+		frame.getContentPane().add(tFQ);
+
+		frame.setTitle(Messages.getText("test_TableFilterQueryJPanel_title"));
+		frame.pack();
+		frame.setVisible(true);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/TestTableFilterQueryJPanel.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/Test2TableFilterQueryJPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/Test2TableFilterQueryJPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/Test2TableFilterQueryJPanel.java	(revision 38348)
@@ -0,0 +1,67 @@
+package org.gvsig.gui.beans.filterPanel.tableFilterQueryPanel;
+
+import javax.swing.JFrame;
+
+import org.gvsig.gui.beans.Messages;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests TableFilterQueryJPanel
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class Test2TableFilterQueryJPanel {
+	public static void main(String[] args) {
+		JFrame frame = new JFrame();
+		TableFilterQueryJPanel tableFilterQueryJPanel = new TableFilterQueryJPanel();
+		tableFilterQueryJPanel.resize(460, 300);
+
+	    frame.setSize(tableFilterQueryJPanel.getPreferredSize());	    
+		frame.getContentPane().add(tableFilterQueryJPanel);		
+
+		frame.setTitle(Messages.getText("test_TableFilterQueryJPanel_title"));
+		frame.pack();
+		frame.setVisible(true);
+	}
+}

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/filterPanel/tableFilterQueryPanel/Test2TableFilterQueryJPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboscale/TestComboScale.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboscale/TestComboScale.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboscale/TestComboScale.java	(revision 38348)
@@ -0,0 +1,72 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.comboscale;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.controls.comboscale.ComboScale;
+
+public class TestComboScale {
+	private ComboScale cs;
+
+	public TestComboScale() {
+		TestUI frame = new TestUI("TestComboScale");
+		cs = new ComboScale();
+		long[] scale = new long[5];
+		scale[0] = 100;
+		scale[1] = 500;
+		scale[2] = 1000;
+		scale[3] = 5000;
+		scale[4] = 10000;
+		cs.setItems(scale);
+		cs.setScale(400);
+		JButton btn = new JButton("Reset");
+		btn.setPreferredSize(new Dimension(100, 50));
+		btn.addActionListener(new ActionListener() {
+			public void actionPerformed(java.awt.event.ActionEvent e) {
+				cs.setScale(500);
+			}
+		});
+
+		JPanel panel = new JPanel();
+		frame.setContentPane(panel);
+		panel.setLayout(new BorderLayout());
+		panel.add(cs, BorderLayout.CENTER);
+		panel.add(btn, BorderLayout.EAST);
+
+		frame.setSize(280, 80);
+		frame.setVisible(true);
+
+		cs.addActionListener(new java.awt.event.ActionListener() {
+			public void actionPerformed(java.awt.event.ActionEvent e) {
+				System.out.println("ActionListener: " + e.getActionCommand());
+			}
+		});
+	}
+
+	public static void main(String[] args) {
+		new TestComboScale();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboscale/TestComboScale.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorbutton/TestColorButton.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorbutton/TestColorButton.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorbutton/TestColorButton.java	(revision 38348)
@@ -0,0 +1,67 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.colorbutton;
+
+import java.awt.Dimension;
+
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.TestUI;
+/**
+* Test del ColorButton
+*
+* @version 08/05/2007
+* @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+*/
+public class TestColorButton implements ColorButtonListener {
+	private TestUI       jFrame       = null;
+	private ColorButton colorButton = null;
+
+	public TestColorButton() {
+		initialize();
+	}
+
+	private void initialize() {
+		colorButton = new ColorButton();
+		colorButton.setEnabled(true);
+		colorButton.addValueChangedListener(this);
+		jFrame = new TestUI("TestColorButton");
+		JPanel jpanel = new JPanel();
+		jpanel.add(colorButton);
+		jFrame.setSize(new Dimension(598, 167));
+		jFrame.setContentPane(jpanel);
+		jFrame.pack();
+		jFrame.setVisible(true);
+	}
+
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) {
+		new TestColorButton();
+	}
+
+	public void actionValueChanged(ColorButtonEvent e) {
+		System.out.println("actionValueChanged");
+	}
+
+	public void actionValueDragged(ColorButtonEvent e) {
+		System.out.println("actionValueDragged");
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorbutton/TestColorButton.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel_JPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel_JPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel_JPanel.java	(revision 38348)
@@ -0,0 +1,79 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.propertiespanel;
+
+import java.util.ArrayList;
+import java.util.EventObject;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
+import org.gvsig.gui.beans.propertiespanel.ui.TestSlider;
+/**
+ * Test para comprobar que se puede integrar un JPanelProperty dentro del
+ * PropertiesComponent
+ *
+ * @version 06/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestPropertiesPanel_JPanel implements ButtonsPanelListener, PropertiesComponentListener {
+	private TestUI          jFrame = null;
+	private PropertiesPanel pd     = null;
+
+	public TestPropertiesPanel_JPanel() {
+		initialize();
+	}
+
+	public void initialize() {
+		jFrame = new TestUI("TestPropertiesPanel_JPanel");
+		pd = new PropertiesPanel();
+
+		pd.addButtonPressedListener(this);
+		TestSlider ts = new TestSlider();
+		pd.addValue("Protocolo", "protocolo", "", null);
+		pd.addValue("Integer", "var1", new Integer(50), null);
+		pd.addValue("Mi panel", "mipanel", ts, null);
+
+		jFrame.getContentPane().add(pd);
+		pd.addStateChangedListener(this);
+		jFrame.pack();
+		jFrame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestPropertiesPanel_JPanel();
+	}
+
+	public void actionButtonPressed(ButtonsPanelEvent e) {
+		if (e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
+			ArrayList values = pd.getValues();
+			System.out.println("-----");
+			for (int i = 0; i < values.size(); i++) {
+				System.out.println(((PropertyStruct)values.get(i)).getKey()
+					+ ": '" + ((PropertyStruct)values.get(i)).getOldValue().toString()
+					+ "', '" + ((PropertyStruct)values.get(i)).getNewValue() + "'");
+			}
+		}
+	}
+
+	public void actionChangeProperties(EventObject e) {
+		System.out.println("Ha cambiado");
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel_JPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel.java	(revision 38348)
@@ -0,0 +1,95 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.propertiespanel;
+
+import java.awt.Toolkit;
+import java.util.ArrayList;
+import java.util.EventObject;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
+
+public class TestPropertiesPanel implements ButtonsPanelListener, PropertiesComponentListener {
+	TestUI frame = null;
+	PropertiesPanel pd = null;
+
+	public TestPropertiesPanel() {
+		initialize();
+	}
+
+	public void initialize() {
+		Toolkit.getDefaultToolkit().setDynamicLayout(true);
+		frame = new TestUI("TestPropertiesPanel");
+		pd = new PropertiesPanel();
+
+		pd.addButtonPressedListener(this);
+		pd.addValue("Protocolo", "protocolo", "", null);
+		pd.addValue("Integer", "var1", new Integer(50), null);
+		{
+			Object[] types = {new Integer(PropertiesComponent.TYPE_SLIDER), new Integer(-255), new Integer(255)};
+			pd.addValue("Slider", "slider1", new Integer(25), types); // Slider
+			Object[] types2 = {new Integer(PropertiesComponent.TYPE_SLIDER), new Integer(0), new Integer(50)};
+			pd.addValue("Slider", "slider2", new Integer(25), types2); // Slider
+			Object[] types3 = {new Integer(PropertiesComponent.TYPE_SLIDER), new Integer(0), new Integer(100)};
+			pd.addValue("Slider", "slider3", new Double(25), types3); // Slider
+		}
+		pd.addValue("Activo", "check1", new Boolean(true), null); // Slider
+		{
+			ArrayList lista = new ArrayList();
+			lista.add("Primer elemento");
+			lista.add("Segundo elemento");
+			lista.add("Tercer elemento");
+			PropertyStruct property = new PropertyStruct();
+			property.setTextLabel("Combo");
+			property.setKey("combo1");
+			property.setOldValue(new Integer(1));
+			Object[] types = {new Integer(PropertiesComponent.TYPE_COMBO), lista};
+			property.setExtras(types);
+			pd.addPropertyStruct(property);
+		}
+		frame.getContentPane().add(pd);
+		frame.pack();
+		pd.addStateChangedListener(this);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestPropertiesPanel();
+	}
+
+	public void actionButtonPressed(ButtonsPanelEvent e) {
+		if (e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
+			ArrayList values = pd.getValues();
+			System.out.println("-----");
+			for (int i=0; i<values.size(); i++) {
+				System.out.println(((PropertyStruct)values.get(i)).getKey()
+						+ ": '" + ((PropertyStruct)values.get(i)).getOldValue().toString()
+						+ "', '" + ((PropertyStruct)values.get(i)).getNewValue().toString() + "'");
+				System.out.println(pd.getComponentUI(((PropertyStruct)values.get(i)).getKey()).toString());
+			}
+		}
+	}
+
+	public void actionChangeProperties(EventObject e) {
+		System.out.println("Ha cambiado");
+		System.out.println(pd.getProperties().get("slider3"));
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/ui/TestSlider.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/ui/TestSlider.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/ui/TestSlider.java	(revision 38348)
@@ -0,0 +1,61 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.propertiespanel.ui;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JColorChooser;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+
+import org.gvsig.gui.beans.propertiespanel.JPanelProperty;
+/**
+ * Panel que ira dentro del panel de propiedades
+ *
+ * @version 06/06/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestSlider extends JPanelProperty implements ChangeListener, ActionListener {
+	private static final long serialVersionUID = -4936433530376831937L;
+
+	public TestSlider() {
+		initialize();
+	}
+
+	private void initialize() {
+		setLayout(new BorderLayout());
+		JColorChooser color = new JColorChooser();
+		add(color, BorderLayout.CENTER);
+		JButton boton = new JButton("OK");
+		add(boton, BorderLayout.SOUTH);
+		boton.addActionListener(this);
+		color.getSelectionModel().addChangeListener(this);
+	}
+
+	public void stateChanged(ChangeEvent e) {
+		this.callStateChanged();
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		this.callStateChanged();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/ui/TestSlider.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel2.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel2.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel2.java	(revision 38348)
@@ -0,0 +1,93 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.propertiespanel;
+
+import java.util.ArrayList;
+import java.util.EventObject;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
+
+public class TestPropertiesPanel2 implements ButtonsPanelListener, PropertiesComponentListener {
+	TestUI frame = null;
+	PropertiesPanel pd = null;
+
+	public TestPropertiesPanel2() {
+		initialize();
+	}
+
+	public void initialize() {
+		frame = new TestUI("TestPropertiesPanel2");
+		pd = new PropertiesPanel();
+
+		pd.addButtonPressedListener(this);
+		pd.addValue("Protocolo", "protocolo", "", null);
+		pd.addValue("Integer", "var1", new Integer(50), null);
+		{
+			Object[] types = {new Integer(PropertiesComponent.TYPE_SLIDER), new Integer(-255), new Integer(255)};
+			pd.addValue("Slider", "slider1", new Integer(25), types); // Slider
+			Object[] types2 = {new Integer(PropertiesComponent.TYPE_SLIDER), new Integer(0), new Integer(50)};
+			pd.addValue("Slider", "slider2", new Integer(25), types2); // Slider
+			Object[] types3 = {new Integer(PropertiesComponent.TYPE_SLIDER), new Integer(0), new Integer(100)};
+			pd.addValue("Slider", "slider3", new Integer(25), types3); // Slider
+		}
+		pd.addValue("Activo", "check1", new Boolean(true), null); // Slider
+		{
+			ArrayList lista = new ArrayList();
+			lista.add("Primer elemento");
+			lista.add("Segundo elemento");
+			lista.add("Tercer elemento");
+			PropertyStruct property = new PropertyStruct();
+			property.setTextLabel("Combo");
+			property.setKey("combo1");
+			property.setOldValue(new Integer(1));
+			Object[] types = {new Integer(PropertiesComponent.TYPE_COMBO), lista};
+			property.setExtras(types);
+			pd.addPropertyStruct(property);
+
+			pd = new PropertiesPanel(pd.getProperties());
+		}
+		frame.getContentPane().add(pd);
+		frame.pack();
+		pd.addStateChangedListener(this);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestPropertiesPanel2();
+	}
+
+	public void actionButtonPressed(ButtonsPanelEvent e) {
+		if (e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
+			ArrayList values = pd.getValues();
+			System.out.println("-----");
+			for (int i=0; i<values.size(); i++) {
+				System.out.println(((PropertyStruct)values.get(i)).getKey()
+						+ ": '" + ((PropertyStruct)values.get(i)).getOldValue().toString()
+						+ "', '" + ((PropertyStruct)values.get(i)).getNewValue().toString() + "'");
+			}
+		}
+	}
+
+	public void actionChangeProperties(EventObject e) {
+		System.out.println("Ha cambiado");
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/propertiespanel/TestPropertiesPanel2.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/buttonspanel/TestButtonsPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/buttonspanel/TestButtonsPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/buttonspanel/TestButtonsPanel.java	(revision 38348)
@@ -0,0 +1,79 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.buttonspanel;
+
+import java.awt.FlowLayout;
+
+import org.gvsig.gui.beans.TestUI;
+/**
+ * <code>TestButtonsPanel</code> es un test para comprobar el funcionamiento de
+ * la clase <code>ButtonsPanel</code>.
+ *
+ * @version 15/03/2007
+ * @author BorSanZa - Borja Sanchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestButtonsPanel implements ButtonsPanelListener {
+	private TestUI frame = new TestUI("TestButtonsPanel");
+
+	public TestButtonsPanel(){
+		frame.getContentPane().setLayout(new java.awt.GridLayout(0, 1));
+
+		frame.setSize(320, 320);
+		ButtonsPanel bp = new ButtonsPanel(ButtonsPanel.BUTTONS_ACCEPT);
+		bp.addButtonPressedListener(this);
+		frame.getContentPane().add(bp);
+		bp = new ButtonsPanel(ButtonsPanel.BUTTONS_ACCEPTCANCEL);
+		bp.addButtonPressedListener(this);
+		bp.setLayout(new java.awt.FlowLayout(FlowLayout.CENTER));
+		frame.getContentPane().add(bp);
+		bp = new ButtonsPanel(ButtonsPanel.BUTTONS_ACCEPTCANCELAPPLY);
+		bp.setLayout(new java.awt.FlowLayout(FlowLayout.LEFT));
+		bp.addButtonPressedListener(this);
+		frame.getContentPane().add(bp);
+		bp = new ButtonsPanel(ButtonsPanel.BUTTONS_YESNO);
+		bp.addButtonPressedListener(this);
+
+		bp.getButton(ButtonsPanel.BUTTONS_YESNO).setEnabled(false);
+
+		frame.getContentPane().add(bp);
+		bp = new ButtonsPanel(ButtonsPanel.BUTTONS_CLOSE);
+		bp.addButtonPressedListener(this);
+		frame.getContentPane().add(bp);
+		bp = new ButtonsPanel(ButtonsPanel.BUTTONS_EXIT);
+		bp.addButtonPressedListener(this);
+		bp.addButton("1", 55);
+		bp.addButton("bp.addButtonPressedListener(this);", 56);
+
+//		bp.getButton(ButtonsPanel.BUTTON_ACCEPT).isEnabled();
+
+		frame.getContentPane().add(bp);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args){
+		new TestButtonsPanel();
+	}
+
+	public void actionButtonPressed(ButtonsPanelEvent e) {
+		System.out.println(e.getButton());
+		if (ButtonsPanel.BUTTON_EXIT == e.getButton()) {
+			frame.dispose();
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/buttonspanel/TestButtonsPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/textincreaser/TestTextIncreaser.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/textincreaser/TestTextIncreaser.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/textincreaser/TestTextIncreaser.java	(revision 38348)
@@ -0,0 +1,41 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.textincreaser;
+
+import javax.swing.JFrame;
+
+public class TestTextIncreaser {
+	private int                    w     = 200;
+	private int                    h     = 200;
+	private JFrame                 frame = new JFrame();
+	private TextIncreaserContainer tic1;
+
+	public TestTextIncreaser() {
+		tic1 = new TextIncreaserContainer(70, 0, 10, 0, true);
+
+		frame.getContentPane().add(tic1);
+		frame.setSize(w, h);
+		frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestTextIncreaser();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/textincreaser/TestTextIncreaser.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native
Added: svn:executable
   + *

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/TestJComboBoxConfigurableLookUp.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/TestJComboBoxConfigurableLookUp.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/TestJComboBoxConfigurableLookUp.java	(revision 38348)
@@ -0,0 +1,439 @@
+package org.gvsig.gui.beans.comboboxconfigurablelookup.programmertests;
+
+import java.awt.Dimension;
+
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.DefaultComboBoxConfigurableLookUpModel;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.JComboBoxConfigurableLookUp;
+
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * <p>Tests the class {@link JComboBoxConfigurableLookUp JComboBoxConfigurableLookUp} .</p>
+ * 
+ * <p>Notes:
+ *  <ul>
+ *   <li>MORE TESTS COULD BE ADDED!!!</li>
+ *   <li>DON'T REMOVE TEST COMMENTED!!!</li>
+ *  </ul>
+ * </p>
+ *
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ * @version 07/02/2008
+ */
+public class TestJComboBoxConfigurableLookUp extends JFrame {
+	private static final long serialVersionUID = -422198204525608333L;
+
+	/**
+	 * Test method for the <code>TestJComboBoxConfigurableLookUp</code>
+	 * 
+	 * @param args
+	 */
+	public static void main(String[] args)
+	{
+		int width = 300;
+		int height = 60;
+		
+		try
+		{
+			// Objects creation
+			JFrame jF = new JFrame();
+	
+			// Create a TestJComboBoxConfigurableLookUp, sets the behavior configuration and add Items
+			
+			// ---- TESTS ----
+			// Test the default behavior
+			JComboBoxConfigurableLookUp jCBSD = new JComboBoxConfigurableLookUp();
+
+			// -- TESTS FLAGS FOR CONTROL --
+			// Test the change of the flag 'onlyOneColor'
+			// jCBSD.setOnlyOneColorOnText(true);
+			// jCBSD.setOnlyOneColorOnText(false);
+			
+			// Test the change of the flag 'beepEnabled'
+			// jCBSD.setBeepEnabled(false);
+			// jCBSD.setBeepEnabled(true);
+
+			// Test the change of the flag 'hidePopupIfThereAreNoItems'
+			// jCBSD.setHidePopupIfThereAreNoItems(false);
+			// jCBSD.setHidePopupIfThereAreNoItems(true);
+			
+			// Test the change of the flag 'toForceSelectAnItem'
+			// jCBSD.setToForceSelectAnItem(false);
+			// jCBSD.setToForceSelectAnItem(true);
+			
+
+			// --- TESTS ADDING A MODEL ---
+			// -- TESTS FLAGS FOR THE MODEL --
+			// DefaultComboBoxConfigurableLookUpModel model = new DefaultComboBoxConfigurableLookUpModel();
+			DefaultComboBoxConfigurableLookUpModel model = new DefaultComboBoxConfigurableLookUpModel(new Object[] {"Item1", "Item2", "Item3", "Item4", "Item5"});
+			// DefaultComboBoxConfigurableLookUpModel model = (DefaultComboBoxConfigurableLookUpModel) jCBSD.getModel();
+				
+			// Test the change of the flag 'itemsShownInListBox'
+			// model.setLanguageRules("en_US");
+			// model.setLanguageRules("fr_FR");
+			// model.setLanguageRules("es_ES");
+			// model.setLanguageRules(DefaultComboBoxConfigurableLookUpModel.DEFAULT_LANGUAGE_RULES_CONFIGURATION);
+				
+			// Test the change of the flag 'caseSensitive'
+			// model.setCaseSensitive(false);
+			// model.setCaseSensitive(DefaultComboBoxConfigurableLookUpModel.CASE_INSENSITIVE);
+			// model.setCaseSensitive(true);
+			// model.setCaseSensitive(DefaultComboBoxConfigurableLookUpModel.CASE_SENSITIVE);
+			 
+			// Test the change of the flag 'itemsOrder'
+			// model.setItemsOrder(DefaultComboBoxConfigurableLookUpModel.MAINTAIN_POSITION);
+			// model.setItemsOrder(DefaultComboBoxConfigurableLookUpModel.ALPHABETICAL_ORDERED);
+			// model.setItemsOrder(DefaultComboBoxConfigurableLookUpModel.MAINTAIN_AGENT_POSITIONS);
+			
+			// Test the change of the flag 'itemsShownInListBox'
+			// model.setShowAllItemsInListBox(DefaultComboBoxConfigurableLookUpModel.SHOW_ALL_ITEMS);
+			// model.setShowAllItemsInListBox(true);
+			// model.setShowAllItemsInListBox(DefaultComboBoxConfigurableLookUpModel.SHOW_ONLY_MATCHES);
+			// model.setShowAllItemsInListBox(false);
+
+			// Test the change of the flag 'completeArrowKeySelection'
+			// jCBSD.setCompleteArrowKeySelection(true);
+			// jCBSD.setCompleteArrowKeySelection(false);
+
+			// Test the change of the flag 'displayAllItemsWithArrowButton'
+			// jCBSD.setDisplayAllItemsWithArrowButton(false);
+			 jCBSD.setDisplayAllItemsWithArrowButton(true);
+
+			// Adds the new model
+			jCBSD.setModel(model);
+
+			// --- ADD ITEMS TO THE COMPONENT AND OTHER TESTS ---
+			// Add some items to test if has too much delay with an average number of items
+			jCBSD.addItem("extAddEventTheme");
+			jCBSD.addItem("�and�");
+			jCBSD.addItem("_fwAndami");
+			jCBSD.addItem("extJDBC");
+
+			jCBSD.addItem("extCAD");
+			jCBSD.addItem("libuiDownCase");
+			jCBSD.addItem("appgvSig");
+			// jCBSD.setSelectedItem("appgvSig");
+			// jCBSD.removeAllItems();
+			jCBSD.addItem("RemoteServices");
+			jCBSD.addItem("�and�");	
+			jCBSD.addItem("�");
+			// jCBSD.setSelectedItem("appgvSig");
+			// jCBSD.setSelectedItem(jCBSD.getItemAt(3)); //Test setSelectedItem
+			jCBSD.addItem("extNomenclatorIGN");
+
+            // jCBSD.setSelectedItem(jCBSD.getItemAt(1)); //Test setSelectedItem
+            // jCBSD.setSelectedIndex(1); //Test setSelectedIndex
+			jCBSD.addItem("extWMS");
+			jCBSD.addItem("�AND�");
+			jCBSD.addItem("window");
+			jCBSD.addItem("�");
+			jCBSD.addItem("LIBUI");
+            jCBSD.setSelectedItem("window");
+			jCBSD.addItem("libCorePlugin");
+			jCBSD.addItem("libCq CMS for java");
+			jCBSD.addItem("libDriverManager");
+
+            // jCBSD.setSelectedItem("libDriverManager");
+			////				jCBSD.addItem("libFMap");
+			////				jCBSD.addItem("libG_fwAndamiDBMS");
+			////				jCBSD.addItem("libIverUtiles");
+			////				jCBSD.addItem("libNomenclatorIGN");
+			////				jCBSD.addItem("libNomenclatorIGN_GUI");
+			////				jCBSD.addItem("libRemoteServices");
+			//////				jCBSD.addItem("extNomenclatorIGN"); // Duplication test
+			////				jCBSD.addItem("libUI");
+			////				jCBSD.addItem("a");
+			////				jCBSD.addItem("aa");
+			////				jCBSD.addItem("aaa");
+			////				jCBSD.addItem("aaaa");
+			////				jCBSD.addItem("aaaaa");
+			////				jCBSD.addItem("b");
+			////				jCBSD.addItem("bbb");
+			////				jCBSD.addItem("bb");
+			////				jCBSD.addItem("c");
+			////				jCBSD.addItem(".");
+			////				jCBSD.addItem("ccc");
+			////				jCBSD.addItem("cc");
+			////				jCBSD.addItem("cccc");
+			////				jCBSD.addItem("ddd");
+			////				jCBSD.addItem("d");
+			////				jCBSD.addItem("dd");
+			////				jCBSD.addItem("dddd");
+			////				jCBSD.addItem("e");
+			////				jCBSD.addItem("eee");
+			////				jCBSD.addItem("ee");
+			////				jCBSD.addItem("eeee");
+			//				jCBSD.addItem("ff");
+			//				jCBSD.addItem("f");
+			////				jCBSD.addItem("LIBZZMAYUSCULA1");
+			////				jCBSD.addItem("ff"); // Duplication test
+			////				jCBSD.addItem("asldf");
+			////				jCBSD.addItem("wej");
+			////				jCBSD.addItem("asdf");
+			////				jCBSD.addItem("LIBMAYUSCULA2");
+			////				jCBSD.addItem("qera");
+			////				jCBSD.addItem("zxvcas");
+			////				jCBSD.addItem("wea");
+			////				jCBSD.addItem("asr");
+			////				jCBSD.addItem("asra");
+			////				jCBSD.addItem("LIBMAYUSCULA1");
+			////				jCBSD.addItem("rar");
+			////				jCBSD.addItem("afda");
+			////				jCBSD.addItem("ljvkgk");
+			////				jCBSD.addItem("zcv");
+			////				jCBSD.addItem("gfhdt");
+			////				jCBSD.addItem("dfhgd");
+			////				jCBSD.addItem("dfh");
+			////				jCBSD.addItem("dfhs");
+			////				jCBSD.addItem("sfszv");
+			////				jCBSD.addItem("qer");
+			////				jCBSD.addItem("adfazva");
+			////				jCBSD.addItem("xnd");
+			////				jCBSD.addItem("vdkjgd");
+			////				jCBSD.addItem("ddhd");
+			////				jCBSD.addItem("dxgx");
+			
+			////				jCBSD.addItem("cnsf");
+			////				jCBSD.addItem("ssfgs");
+			////				jCBSD.addItem("sgfsbx");
+			////				jCBSD.addItem("sfxb");
+			////				jCBSD.addItem("chdgk");
+			////				jCBSD.addItem("jgu");
+			////				jCBSD.addItem("gkgj");
+			////				jCBSD.addItem("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeee");
+			////				jCBSD.addItem("ljko�j.n");
+			////				jCBSD.addItem("hfjf");
+			////				jCBSD.addItem("xbxb");
+			////				jCBSD.addItem(".,lhhi");
+			////				jCBSD.addItem("hklx_fwAndami");
+			////				jCBSD.addItem("cvn");
+			////				jCBSD.addItem("dgh");
+			////				jCBSD.addItem("cncv");
+			////				jCBSD.addItem("sg");
+			////				jCBSD.addItem("b,mjk");
+			////				jCBSD.addItem("xv");
+			////				jCBSD.addItem("sgghu");
+			////				jCBSD.addItem("saxc");
+			////				jCBSD.addItem("srts");
+			////				jCBSD.addItem("sduyg");
+			////				jCBSD.addItem("sxfsrs");
+			////				jCBSD.addItem("rsdtf");
+			////				jCBSD.addItem("po`llh");
+			////				jCBSD.addItem("fghtf54j");
+			////				jCBSD.addItem("s25ewsd");
+			////				jCBSD.addItem("uo8khkj");
+			////				jCBSD.addItem("sfg45");
+			////				jCBSD.addItem("3gd");
+			////				jCBSD.addItem("5dhd");
+			////				jCBSD.addItem("sg4dh6");
+			////				jCBSD.addItem("dfh5");
+			////				jCBSD.addItem("s4hfj74");
+			////				jCBSD.addItem("sdg534");
+			////				jCBSD.addItem("2452etdfg");
+			////				jCBSD.addItem("2ui068");
+			////				jCBSD.addItem("3dsd sgr");
+			////				jCBSD.addItem("sr sgsr");
+			////				jCBSD.addItem("sssssssss");
+			////				jCBSD.addItem("aaaaass");
+			////				jCBSD.addItem("ss");
+			////				jCBSD.addItem("sry");
+			////				jCBSD.addItem("h�hj");
+			////				jCBSD.addItem("gkgb");
+			////				jCBSD.addItem("gkgu");
+			////				jCBSD.addItem("gjugvfc");
+			////				jCBSD.addItem("dghdd");
+			////				jCBSD.addItem("dhdt");
+			////				jCBSD.addItem("dhgd");
+			////				jCBSD.addItem("ddtughd");
+			////				jCBSD.addItem("ffuklj�d");
+			////				jCBSD.addItem("j�olk.j");
+			////				jCBSD.addItem("las alupoai a�ieurpay");
+			////				jCBSD.addItem("tytresd");
+			////				jCBSD.addItem("fgkg");
+			////				jCBSD.addItem("lhh");
+			////				jCBSD.addItem("hkhlhip");
+			////				jCBSD.addItem("k�popi0�?=(J");
+			////				jCBSD.addItem("af�?=)(/?/");
+			////				jCBSD.addItem("-a,malj'=)/");
+			////				jCBSD.addItem("2gw");
+			////				jCBSD.addItem("5teu");
+			////				jCBSD.addItem("4576jfff");
+			////				jCBSD.addItem("urtyu");
+			////				jCBSD.addItem("fi7");
+			////				jCBSD.addItem("git7t4h");
+			////				jCBSD.addItem("hr6frr");
+			////				jCBSD.addItem("ehe5et");
+			////				jCBSD.addItem("eue5klhj");
+			////				jCBSD.addItem("yoiyoy");
+			////				jCBSD.addItem("yoyi");
+			////				jCBSD.addItem("sgcsc");
+			////				jCBSD.addItem("sgmff74");
+			////				jCBSD.addItem("dd43d d6dhlhju");
+			////				jCBSD.addItem("gkjngr");
+			////				jCBSD.addItem("dbddht");
+			////				jCBSD.addItem("sbd");
+			////				jCBSD.addItem("dcbd5opihjj");
+			////				jCBSD.addItem("pujtth");
+			////				jCBSD.addItem("ZZZZZ");
+			////				jCBSD.addItem("ytht");
+			////				jCBSD.addItem("tjgt");
+			////				jCBSD.addItem("rrf");
+			////				jCBSD.addItem("BLIUE� ");
+			////				jCBSD.addItem("�AND�");
+			////				jCBSD.addItem("axaaa4iktiu");
+			////				jCBSD.addItem("tttyir");
+			////				jCBSD.addItem("ruyrrruu4");
+			////				jCBSD.addItem("rryewrsw");
+			////				jCBSD.addItem("wertw");
+			////				jCBSD.addItem("wer26e");
+			////				jCBSD.addItem("eceye");
+			////				jCBSD.addItem("etye7yyy-er");
+			////				jCBSD.addItem("eyert7e7e7");
+			////				jCBSD.addItem("_abcdefghijklmn�opqrstuvwxyz");
+			////				jCBSD.addItem("_0123456789");
+			////				jCBSD.addItem("sstsnmmsutt");
+			////				jCBSD.addItem("dcytdtyd");
+			////				jCBSD.addItem("dcdtdty");
+			////				jCBSD.addItem("dctycd");
+			////				jCBSD.addItem("cstyd");
+			////				jCBSD.addItem("dbddcytdsssc");
+			////				jCBSD.addItem("cdydt");
+			////				jCBSD.addItem("scscydu");
+			////				jCBSD.addItem("axct");
+			////				jCBSD.addItem("joobfvd");
+			////				jCBSD.addItem("jomj");
+			////				jCBSD.addItem("omjo");
+			////				jCBSD.addItem("mol");
+			////				jCBSD.addItem("agdhfj");
+			////				jCBSD.addItem("fjfhjuh,ooom");
+			////				jCBSD.addItem("affjfa");
+			////				jCBSD.addItem("afjfjyfga");
+			////				jCBSD.addItem("NOMENCLATOR");
+			////				jCBSD.addItem("asg");
+			////				jCBSD.addItem("afaea");
+			////				jCBSD.addItem("gvSIG");
+			////				jCBSD.addItem("yoiey");
+			////				jCBSD.addItem("35");
+			////				jCBSD.addItem("ewgw2dh");
+			////				jCBSD.addItem("titgr");
+			////				jCBSD.addItem("o9yky");
+			////				jCBSD.addItem("kyio8gbr");
+			////				jCBSD.addItem("eve5yed574rir");
+			////				jCBSD.addItem("578tygmtio");
+			////				jCBSD.addItem("t43262ryteye");
+			////				jCBSD.addItem("wvwx");
+			////				jCBSD.addItem("zssscwwwwww");
+			////				jCBSD.addItem("sgvr");
+			////				jCBSD.addItem("...");
+			//				jCBSD.addItem("�LTIMO ITEM EN A�ADIRSE");
+			
+			// --- END ADD ITEMS TO THE COMPONENT AND OTHER TESTS ---
+			
+			// Test of no item default selection 
+			// jCBSD.setSelectedIndex(-1);
+			
+			// Other tests
+			// jCBSD.setSelectedIndex(0);
+			// System.out.println("Selected: " + jCBSD.getSelectedItem());
+			// jCBSD.setSelectedIndex(3);
+			// System.out.println("Item at 3: " + jCBSD.getItemAt(3));
+			// jCBSD.setSelectedItem("�AND�");
+
+			// System.out.println("Index of LIBUI: " + ((DefaultComboBoxConfigurableLookUpModel)jCBSD.getModel()).getIndexOf("LIBUI"));
+			// jCBSD.addItem("A�ADIDO");
+			// jCBSD.removeItemAt(0);
+			// jCBSD.removeAllItems();
+			// ((DefaultComboBoxConfigurableLookUpModel)jCBSD.getModel()).removeAllElements();
+			// System.out.println("Number of elements (list box): " + jCBSD.getItemCount());
+
+			// Tests the method ''setPrototypeDisplayValue''
+			// jCBSD.addItem("ABCDEFGHIJKLMN�OPQRSTUVWXYZ-ABCDEFGHIJKLMN�OPQRSTUVWXYZ-ABCDEFGHIJKLMN�OPQRSTUVWXYZ");
+			// jCBSD.setSelectedItem("ABCDEFGHIJKLMN�OPQRSTUVWXYZ-ABCDEFGHIJKLMN�OPQRSTUVWXYZ-ABCDEFGHIJKLMN�OPQRSTUVWXYZ");
+			// jCBSD.setPrototypeDisplayValue("ABCDEFGHIJKLMN�OPQRSTUVWXYZ");
+			
+			// Configure the JFrame
+			jF.setTitle("Test JComboBoxConfigurableLookUp");
+			jF.setSize(new Dimension(width, height));	    
+		    jF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+		    jF.getContentPane().add(jCBSD);
+		    jF.setVisible(true);
+
+		    // More tests
+			// jCBSD.setSelectedIndex(0); // Failures before the component could be showed
+			// System.out.println("Selected: " + jCBSD.getSelectedItem());
+			// jCBSD.setSelectedIndex(3); // Failures before the component could be showed
+			// System.out.println("Item at 3: " + jCBSD.getItemAt(3));
+			// jCBSD.setSelectedItem("�AND�"); // Failures before the component could be showed
+		    
+		    // Test a Look up Agent
+		    // model.setLookUpAgent(new SampleAgent());
+		    
+		    // Test changing the renderer
+		    // jCBSD.setRenderer(new SampleBasicComboBoxRenderer());
+		    
+			// More tests
+			// jCBSD.removeAllItems();
+			// jCBSD.addItem("extCAD");
+			// jCBSD.addItem("libuiDownCase");
+			// jCBSD.addItem("appgvSig");
+			// jCBSD.removeAllItems();
+			// jCBSD.addItem("extCAD");
+			// jCBSD.addItem("libuiDownCase");
+			// jCBSD.addItem("appgvSig");
+			// jCBSD.setSelectedItem("libuiDownCase");
+		    
+		    // Test change the editor
+		    // jCBSD.setEditor(new SampleComboBoxEditor());
+		}
+		catch(Exception e)
+		{
+			e.printStackTrace();
+			JOptionPane.showMessageDialog(null, Messages.getText("testJComboBoxConfigurableLookUpErrorMessage"), Messages.getText("error"), JOptionPane.ERROR_MESSAGE);
+		}
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/SampleAgent.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/SampleAgent.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/SampleAgent.java	(revision 38348)
@@ -0,0 +1,77 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.comboboxconfigurablelookup.programmertests;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Vector;
+
+import org.gvsig.gui.beans.comboboxconfigurablelookup.ILookUp;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.StringComparator;
+
+/**
+ * <p>Sample of personalized look up algorithm for the model of a <code>JComboBoxConfigurableLookUp</code> object.</p>
+ * 
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ * @version 08/02/2008
+ */
+public class SampleAgent implements ILookUp {
+	/**
+	 * <p>Creates a new instance of the class <code>StartsWithLookUpAgent</code>.</p>
+	 */
+	public SampleAgent() {
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.comboboxconfigurablelookup.ILookUp#doLookUpConsideringCaseSensitive(java.lang.String, java.util.Vector, org.gvsig.gui.beans.comboboxconfigurablelookup.StringComparator)
+	 */
+	public List<Object> doLookUpConsideringCaseSensitive(String text, Vector<Object> sortOrderedItems, StringComparator comp) {
+		if (sortOrderedItems == null)
+			return null;
+
+		List<Object> list = new ArrayList<Object>();
+		
+		for (int i = 0; i < (sortOrderedItems.size()); i++) {
+			if (i % 2 == 0)
+				list.add(sortOrderedItems.get(i));
+		}
+
+		return list;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.comboboxconfigurablelookup.ILookUp#doLookUpIgnoringCaseSensitive(java.lang.String, java.util.Vector, org.gvsig.gui.beans.comboboxconfigurablelookup.StringComparator)
+	 */
+	public List<Object> doLookUpIgnoringCaseSensitive(String text, Vector<Object> sortOrderedItems, StringComparator comp) {
+		if (sortOrderedItems == null)
+			return null;
+
+		List<Object> list = new ArrayList<Object>();
+		
+		for (int i = 0; i < (sortOrderedItems.size()); i++) {
+			if (i % 2 == 0)
+				list.add(sortOrderedItems.get(i));
+		}
+
+		return list;
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/SampleComboBoxEditor.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/SampleComboBoxEditor.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/SampleComboBoxEditor.java	(revision 38348)
@@ -0,0 +1,160 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.comboboxconfigurablelookup.programmertests;
+
+import java.awt.Component;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.lang.reflect.Method;
+
+import javax.swing.ComboBoxEditor;
+import javax.swing.JTextField;
+import javax.swing.border.Border;
+import javax.swing.plaf.basic.BasicComboBoxEditor;
+
+import org.gvsig.gui.beans.editabletextcomponent.JEditableTextField;
+
+/**
+ * <p>The default editor for editable combo boxes. The editor is implemented as a JTextField.</p>
+ *
+ * @version 12/02/08
+ * @author Arnaud Weber
+ * @author Mark Davidson
+ * @author Pablo Piqueras Bartolom�
+ */
+public class SampleComboBoxEditor implements ComboBoxEditor, FocusListener {
+    protected JTextField editor;
+    private Object oldValue;
+
+    public SampleComboBoxEditor() {
+        editor = new BorderlessTextField("",9);
+        editor.setBorder(null);
+    }
+
+    public Component getEditorComponent() {
+        return editor;
+    }
+
+    /** 
+     * Sets the item that should be edited. 
+     *
+     * @param anObject the displayed value of the editor
+     */
+    public void setItem(Object anObject) {
+        if ( anObject != null )  {
+            editor.setText(anObject.toString());
+            
+            oldValue = anObject;
+        } else {
+            editor.setText("");
+        }
+    }
+
+    public Object getItem() {
+        Object newValue = editor.getText();
+        
+        if (oldValue != null && !(oldValue instanceof String))  {
+            // The original value is not a string. Should return the value in it's
+            // original type.
+            if (newValue.equals(oldValue.toString()))  {
+                return oldValue;
+            } else {
+                // Must take the value from the editor and get the value and cast it to the new type.
+                Class cls = oldValue.getClass();
+                try {
+                    Method method = cls.getMethod("valueOf", new Class[]{String.class});
+                    newValue = method.invoke(oldValue, new Object[] { editor.getText()});
+                } catch (Exception ex) {
+                    // Fail silently and return the newValue (a String object)
+                }
+            }
+        }
+        return newValue;
+    }
+
+    public void selectAll() {
+        editor.selectAll();
+        editor.requestFocus();
+    }
+
+    // This used to do something but now it doesn't.  It couldn't be
+    // removed because it would be an API change to do so.
+    public void focusGained(FocusEvent e) {}
+    
+    // This used to do something but now it doesn't.  It couldn't be
+    // removed because it would be an API change to do so.
+    public void focusLost(FocusEvent e) {}
+
+    public void addActionListener(ActionListener l) {
+        editor.addActionListener(l);
+    }
+
+    public void removeActionListener(ActionListener l) {
+        editor.removeActionListener(l);
+    }
+
+    /** 
+     * Inner text field editable as a component of a ComboBox editor.
+     * 
+     * @see JEditableTextField
+     * 
+     * @version 12/02/08
+     * @author Arnaud Weber
+     * @author Mark Davidson
+     * @author Pablo Piqueras Bartolom�
+     */
+    private class BorderlessTextField extends JEditableTextField {
+		private static final long serialVersionUID = -3333236529430569318L;
+
+		public BorderlessTextField(String value,int n) {
+            super(value,n);
+        }
+
+        // workaround for 4530952
+        public void setText(String s) {
+            if (getText().equals(s)) {
+                return;
+            }
+            super.setText(s);
+        }
+
+        public void setBorder(Border b) {}
+    }
+    
+    /**
+     * A subclass of BasicComboBoxEditor that implements UIResource.
+     * BasicComboBoxEditor doesn't implement UIResource
+     * directly so that applications can safely override the
+     * cellRenderer property with BasicListCellRenderer subclasses.
+     * <p>
+     * <strong>Warning:</strong>
+     * Serialized objects of this class will not be compatible with
+     * future Swing releases. The current serialization support is
+     * appropriate for short term storage or RMI between applications running
+     * the same version of Swing.  As of 1.4, support for long term storage
+     * of all JavaBeans<sup><font size="-2">TM</font></sup>
+     * has been added to the <code>java.beans</code> package.
+     * Please see {@link java.beans.XMLEncoder}.
+     */
+    public static class UIResource extends BasicComboBoxEditor
+    implements javax.swing.plaf.UIResource {
+    }
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/SampleBasicComboBoxRenderer.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/SampleBasicComboBoxRenderer.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/programmertests/SampleBasicComboBoxRenderer.java	(revision 38348)
@@ -0,0 +1,58 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+
+package org.gvsig.gui.beans.comboboxconfigurablelookup.programmertests;
+
+import java.awt.Color;
+import java.awt.Component;
+
+import javax.swing.JList;
+import javax.swing.plaf.basic.BasicComboBoxRenderer;
+
+/**
+ * <p>Sample of personalized combo box cell renderer.</p>
+ * 
+ * @version 08/02/2008
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es) 
+ */
+public class SampleBasicComboBoxRenderer extends BasicComboBoxRenderer {
+	private static final long serialVersionUID = -9044759678425798655L;
+
+	/**
+	 * <p>Creates a new instance of the <code>SampleBasicComboBoxRenderer</code> class.</p>
+	 */
+	public SampleBasicComboBoxRenderer() {
+		super();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see javax.swing.plaf.basic.BasicComboBoxRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
+	 */
+	public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+		Component component = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+		
+		if (isSelected)
+			component.setBackground(Color.GRAY);
+		else
+			component.setBackground(new Color(((17 * index) % 256), ((31 * index) % 256), ((7 * index) % 256)));
+		
+		return component;
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/usertests/JPanelUserTestOfJComboBoxConfigurableLookUp.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/usertests/JPanelUserTestOfJComboBoxConfigurableLookUp.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/usertests/JPanelUserTestOfJComboBoxConfigurableLookUp.java	(revision 38348)
@@ -0,0 +1,3260 @@
+package org.gvsig.gui.beans.comboboxconfigurablelookup.usertests;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Font;
+import java.awt.GridLayout;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComboBox;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.border.TitledBorder;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+import javax.swing.event.PopupMenuEvent;
+import javax.swing.event.PopupMenuListener;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.DefaultComboBoxConfigurableLookUpModel;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.JComboBoxConfigurableLookUp;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.programmertests.SampleBasicComboBoxRenderer;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*
+* For more information, contact:
+*
+*  Generalitat Valenciana
+*   Conselleria d'Infraestructures i Transport
+*   Av. Blasco Ib��ez, 50
+*   46010 VALENCIA
+*   SPAIN
+*
+*      +34 963862235
+*   gvsig@gva.es
+*      www.gvsig.gva.es
+*
+*    or
+*
+*   IVER T.I. S.A
+*   Salamanca 50
+*   46005 Valencia
+*   Spain
+*
+*   +34 963163400
+*   dac@iver.es
+*/
+
+/** 
+ * <p>Application for testing <code>JComboBoxLookUpConfigurable</code> objects.</p>
+ * 
+ * <p>This class is a JPanel and has other classes nested.</p>
+ * 
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ * @version 07/02/2008
+ */
+public class JPanelUserTestOfJComboBoxConfigurableLookUp extends JPanel implements Serializable {
+	private static final long serialVersionUID = -8900802197326194647L;
+
+	private final int panelWidth = 735;
+	private final int panelHeight = 580;
+	private final int testWidth = 260;
+	private ConfigurationJPanel configurationPanel = null;
+	private OtherTestsJPanel otherTestsPanel = null;
+	private JavaFileMethodsLoader javaFileMethodsLoader;
+	private int testNumber;
+	private String path;
+	private boolean isConfiguring;
+	
+	private static final short DEFAULT_CELL_RENDERER = 0;
+	private static final short SAMPLE_BG_COLOR_CELL_RENDERER = 1;
+	
+	/**
+	 * <p>Default constructor.</p>
+	 */
+	public JPanelUserTestOfJComboBoxConfigurableLookUp() {
+		super();
+		this.initialize();
+	}
+
+	/**
+	 * <p>Initializes the application pane.</p>
+	 */
+	private void initialize() {
+		path = "src/org/gvsig/gui/beans/comboboxconfigurablelookup/JComboBoxConfigurableLookUp.java";
+		isConfiguring = false;
+		this.setPreferredSize(new Dimension(panelWidth, panelHeight));
+		this.setSize(new Dimension(panelWidth, panelHeight));
+		FlowLayout flowLayout = new FlowLayout();
+		flowLayout.setAlignment(FlowLayout.LEFT);
+		this.setLayout(flowLayout);
+		this.add(this.getConfigurationPanel());
+		this.add(this.getOtherTestsPanel());	
+		this.loadPublicMethods();
+		this.redirectDebugAndErrorMessages();
+		testNumber = 1;
+	}	
+
+	/**
+	 * <p>Loads public methods of the <code>JComboBoxConfigurableLookUp</code> from its file class and adds the constructors to the
+	 *   inner <code>ConfigurationPanel</code> and the other methods to the <code>OtherTestsPanel</code>.</p>
+	 */
+	private void loadPublicMethods() {
+		String methodHead;
+		String reservedWord = new String("public ");
+		int reservedWordLength = reservedWord.length();
+		
+		for (int i = 0; i < javaFileMethodsLoader.size(); i++)
+		{
+			methodHead = javaFileMethodsLoader.getMethodHead(i);
+			if (methodHead.startsWith(reservedWord))
+			{
+				if (methodHead.startsWith(reservedWord + javaFileMethodsLoader.getClassName()))
+					getConfigurationPanel().addConstructorItem(methodHead.substring(reservedWordLength, methodHead.length()));
+				else
+					getOtherTestsPanel().addMethodItem(methodHead.substring(reservedWordLength, methodHead.length()));
+			}
+		}
+	}
+	
+	/**
+	 * <p>Redirects the default output and error stream to the inner log <code>JTextArea</code>.</p>
+	 */
+	private void redirectDebugAndErrorMessages() {
+		// Now create a new TextAreaOutputStream to write to our JTextArea control and wrap a
+		// PrintStream around it to support the println/printf methods.
+		PrintStream out = new PrintStream( new TextAreaOutputStream( getOtherTestsPanel().getJTextAreaLog() ) );
+
+		// Redirect standard output stream to the TextAreaOutputStream
+		System.setOut( out );
+
+		// Redirect standard error stream to the TextAreaOutputStream
+		System.setErr( out );
+	}
+	
+	/**
+	 * <p>This method initializes <code>configurationPanel</code>.</p>
+	 * 	
+	 * @return javax.swing.JComboBoxItemsSeekerConfigurableTestingByTheUserConfigurationPanel	
+	 */
+	private ConfigurationJPanel getConfigurationPanel() {
+		if (configurationPanel == null) {			
+			configurationPanel = new ConfigurationJPanel();
+			configurationPanel.getJButtonNew().addMouseListener(new MouseAdapter() {
+				/*
+				 * (non-Javadoc)
+				 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+				 */
+				public void mouseClicked(MouseEvent arg0) {
+					addNewTestObject();
+				}
+			});
+		}
+
+		return configurationPanel;
+	}
+	
+	/**
+	 * <p>This method initializes <code>otherTestsPanel</code>.<p>
+	 * 	
+	 * @return javax.swing.JComboBoxItemsSeekerConfigurableTestingByTheUserOtherTestsPanel	
+	 */
+	private OtherTestsJPanel getOtherTestsPanel() {
+		if (this.otherTestsPanel == null)
+			this.otherTestsPanel = new OtherTestsJPanel(path);
+
+		return this.otherTestsPanel;
+	}
+	
+	/**
+	 * <p>This method creates a JFrame with a new object for testing.</p>
+	 * <p>This method also defines the closing methods and the name of the <code>JFrame</code>, and add the <code>JFrame</code> to the <code>OtherTestPanel</code>; that panel.
+	 *    will use it for do methods.</p>
+	 */
+	private void addNewTestObject() {
+		JComboBoxConfigurableLookUp object = this.createComponent();
+		object.setPreferredSize(new Dimension(testWidth, object.getPreferredSize().height));
+		String keyAndTitle = Messages.getText("test") + " " + String.valueOf(testNumber++);
+		
+		JFrame jFrame = new JFrame(keyAndTitle);
+		jFrame.getContentPane().add(object);
+		jFrame.pack();
+		jFrame.setVisible(true);
+		
+		// Centers the JFrame in the middle of the screen
+		jFrame.setLocationRelativeTo(null);
+		
+		// Defines the methods that will have to do the JFrame when it would have to be closed
+		jFrame.addWindowListener(new WindowAdapter(){
+
+			/*
+			 * (non-Javadoc)
+			 * @see java.awt.event.WindowAdapter#windowClosed(java.awt.event.WindowEvent)
+			 */
+			public void windowClosed(WindowEvent e) {
+				// It's executen when the application closes the JFrame
+				getOtherTestsPanel().removeTestObject(((JFrame)e.getSource()).getTitle());
+				getOtherTestsPanel().getJTextAreaLog().append('(' + ((JFrame)e.getSource()).getTitle() + ", " + Messages.getText("elimination") + ")\n");
+			}
+			
+			/*
+			 * (non-Javadoc)
+			 * @see java.awt.event.WindowAdapter#windowClosing(java.awt.event.WindowEvent)
+			 */
+			public void windowClosing(WindowEvent e) {
+				// It's executen when the user closes the JFrame
+				getOtherTestsPanel().removeTestObject(((JFrame)e.getSource()).getTitle());
+				getOtherTestsPanel().getJTextAreaLog().append('(' + ((JFrame)e.getSource()).getTitle() + ", " + Messages.getText("elimination") + ")\n");
+			}
+		});
+
+		this.getOtherTestsPanel().addTestObject(keyAndTitle, jFrame);
+	}
+	
+
+	/**
+	 * <p>Obtains the configuration value for create the new object and creates it.</p>
+	 * 
+	 * @return JComboBoxConfigurableLookUp The new object created
+	 */
+	private JComboBoxConfigurableLookUp createComponent() {
+		JComboBoxConfigurableLookUp comboBox = null;
+		String argument = "";
+
+		// ESTA PARTE CREA EL OBJETO, AVISA DE QUE EN CASO NECESARIO PONDR� UN PAR�METRO PREESTABLECIDO, Y ALMACENA EL TEXTO ACERCA
+		//  DEL PAR�METRO QUE PONDR� LUEGO EN EL LOG
+		switch(getConfigurationPanel().getSelectedComboBoxConstructor()) {
+			case 0:
+				comboBox = new JComboBoxConfigurableLookUp();
+				break;
+			case 1:
+				JOptionPane.showMessageDialog(null, Messages.getText("will_use_a_default_model"), Messages.getText("warning"), JOptionPane.WARNING_MESSAGE);
+				DefaultComboBoxConfigurableLookUpModel model = new DefaultComboBoxConfigurableLookUpModel(new Object[] {"Item1", "Item2", "Item3", "Item4", "Item5"});
+				comboBox = new JComboBoxConfigurableLookUp(model);
+				argument = "model; ";
+				break;
+			case 2:
+				JOptionPane.showMessageDialog(null, Messages.getText("will_use_a_default_array_of_items"), Messages.getText("warning"), JOptionPane.WARNING_MESSAGE);
+				comboBox = new JComboBoxConfigurableLookUp(new Object[] {"Item1", "Item2", "Item3", "Item4", "Item5"});
+				argument = "array; ";
+				break;
+			case 3:
+				JOptionPane.showMessageDialog(null, Messages.getText("will_use_a_default_vector_of_items"), Messages.getText("warning"), JOptionPane.WARNING_MESSAGE);
+				Vector<Object> vector = new Vector<Object>();
+				vector.add("Item1");
+				vector.add("Item2");
+				vector.add("Item3");
+				vector.add("Item4");
+				vector.add("Item5");
+				comboBox = new JComboBoxConfigurableLookUp(vector);
+				argument = "vector; ";
+				break;
+			default:
+				comboBox = new JComboBoxConfigurableLookUp();
+		}
+
+		DefaultComboBoxConfigurableLookUpModel model = (DefaultComboBoxConfigurableLookUpModel)comboBox.getModel();
+		String itemsOrderText = null;
+		String languageRule = null;
+		String cellRenderer = getConfigurationPanel().getSelectedComboBoxCellRenderer();
+
+		
+		if (isConfiguring) {
+			comboBox.setOnlyOneColorOnText(getConfigurationPanel().isSelectedJCheckBoxOnlyOneColor());
+			comboBox.setBeepEnabled(getConfigurationPanel().isSelectedJCheckBoxBeepEnabled());
+			comboBox.setHidePopupIfThereAreNoItems(getConfigurationPanel().isSelectedJCheckBoxHidePopupIfThereAreNoItems());
+			comboBox.setToForceSelectAnItem(getConfigurationPanel().isSelectedJCheckBoxToForceSelectAnItem());
+			comboBox.setCompleteArrowKeySelection(getConfigurationPanel().isSelectedJCheckBoxCompleteArrowKeySelection());
+			comboBox.setDisplayAllItemsWithArrowButton(getConfigurationPanel().isSelectedJCheckBoxDisplayAllItemsWithArrowButton());
+			
+			if (getConfigurationPanel().getSelectedComboBoxCellRendererIndex() == SAMPLE_BG_COLOR_CELL_RENDERER)
+				comboBox.setRenderer(new SampleBasicComboBoxRenderer());
+
+			// Configuration of the model
+			model.setItemsOrder(getConfigurationPanel().getSelectedComboBoxItemsOrder());
+			model.setShowAllItemsInListBox(getConfigurationPanel().isSelectedJCheckBoxShowAllItemsInListBox());
+			model.setLocaleRules(getConfigurationPanel().getSelectedComboBoxLanguageRuleText());
+			model.setCaseSensitive(getConfigurationPanel().isSelectedJCheckBoxCaseSensitive());
+			
+			itemsOrderText = getConfigurationPanel().getSelectedComboBoxItemsOrderText();
+			languageRule = getConfigurationPanel().getSelectedComboBoxLanguageRuleText();
+			
+			// Write the log
+			getOtherTestsPanel().getJTextAreaLog().append('(' + Messages.getText("test") + " " + String.valueOf(testNumber) + ", " +
+					Messages.getText("creaction") + ": " + argument + Messages.getText("configuration") + ": " + getConfigurationPanel().isSelectedJCheckBoxOnlyOneColor() + ", " + 
+					getConfigurationPanel().isSelectedJCheckBoxBeepEnabled() + ", " + getConfigurationPanel().isSelectedJCheckBoxHidePopupIfThereAreNoItems() + ", " +
+					getConfigurationPanel().isSelectedJCheckBoxToForceSelectAnItem() + ", " +
+					getConfigurationPanel().isSelectedJCheckBoxCompleteArrowKeySelection() + ", " +
+					getConfigurationPanel().isSelectedJCheckBoxDisplayAllItemsWithArrowButton() + ", " +
+					cellRenderer + ", " +
+					itemsOrderText + ", " +
+					getConfigurationPanel().isSelectedJCheckBoxShowAllItemsInListBox() + ", " + languageRule + ", " +
+					getConfigurationPanel().isSelectedJCheckBoxCaseSensitive() + ")\n");
+		}
+		else {
+			switch(model.getItemsOrder()) {
+				case DefaultComboBoxConfigurableLookUpModel.MAINTAIN_POSITION:
+					itemsOrderText = Messages.getText("maintain_position");
+					break;
+				case DefaultComboBoxConfigurableLookUpModel.ALPHABETICAL_ORDERED:
+					itemsOrderText = Messages.getText("alphabetical_ordered");
+					break;
+				case DefaultComboBoxConfigurableLookUpModel.MAINTAIN_AGENT_POSITIONS:
+					itemsOrderText = Messages.getText("agent_positions");
+					break;
+			}
+			
+			// Write the log
+			getOtherTestsPanel().getJTextAreaLog().append('(' + Messages.getText("test") + " " + String.valueOf(testNumber) + ", " +
+					Messages.getText("creaction") + ": " + argument + Messages.getText("configuration") + ": " + comboBox.isOnlyOneColorOnText() + ", " +
+					 comboBox.isBeepEnabled() + ", " + comboBox.isHidePopupIfThereAreNoItems() + ", " + comboBox.isToForceSelectAnItem() + ", " +
+					 comboBox.isCompleteArrowKeySelection() + ", " + comboBox.isDisplayAllItemsWithArrowButton() + ", " + cellRenderer + ", " +
+					 itemsOrderText + ", " + model.isShowAllItemsInListBox() + ", " + model.getLocaleRules() + ", " + model.isCaseSensitive() + ")\n");
+		}
+
+		return comboBox;
+	}
+
+	/**
+	 * <p>A JPanel for the configuration and create a new JComboBoxConfigurableLookUp for testing.</p>
+	 *  
+	 * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+	 */
+	private class ConfigurationJPanel extends JPanel implements Serializable {
+		private static final long serialVersionUID = 6327342028864667372L;
+
+		private final int configurationPanelWidth = 310;
+		private final int configurationPanelHeight = 570;
+		private final int subPanelWidth = 280;
+		private final int subPanelHeight = 28;
+		private final int buttonWidth = 90;
+		private final int buttonHeight = 20;
+		private final int jComboBoxWidth = 160;
+		private final int jComboBoxHeight = 20;
+		private final int jPaneConfigurationParametersWidth = 296;
+		private final int jPaneConfigurationParametersHeight = 440;
+		private final int jPaneConstructorsWidth = jPaneConfigurationParametersWidth;
+		private final int jPaneConstructorsHeight = 55;
+		private final int jComboBoxConstructorsWidth = jPaneConfigurationParametersWidth - 10;
+		private final int jComboBoxConstructorsHeight = jComboBoxHeight;
+		private JCheckBox jCheckBoxOnlyOneColorOnText = null;
+		private JCheckBox jCheckBoxBeepEnabled = null;
+		private JCheckBox jCheckBoxHidePopupIfThereAreNoItems = null;
+		private JCheckBox jCheckBoxToForceSelectAnItem = null;
+		private JCheckBox jCheckBoxShowAllItemsInListBox = null;
+		private JCheckBox jCheckBoxCaseSensitive = null;
+		private JCheckBox jCheckBoxCompleteArrowKeySelection = null;
+		private JCheckBox jCheckBoxDisplayAllItemsWithArrowButton = null;
+		private JLabel jLabelOnlyOneColorOnText = null;
+		private JLabel jLabelBeepEnabled = null;
+		private JLabel jLabelHidePopupIfThereAreNoItems = null;
+		private JLabel jLabelToForceSelectAnItem = null;
+		private JLabel jLabelItemsOrder = null;
+		private JLabel jLabelShowAllItemsInListBox = null;
+		private JLabel jLabelLanguageRules = null;
+		private JLabel jLabelCaseSensitive = null;
+		private JLabel jLabelCompleteArrowKeySelection = null;
+		private JLabel jLabelDisplayAllItemsWithArrowButton = null;
+		private JLabel jLabelCellRenderer = null;
+		private JButton jButtonReset = null;
+		private JPanel jPaneConstructor = null;
+		private JPanel jPaneConfigurationParameters = null;
+		private JPanel jPaneOnlyOneColorOnText = null;
+		private JPanel jPaneBeepEnabled = null;
+		private JPanel jPaneHidePopupIfThereAreNoItems = null;
+		private JPanel jPaneToForceSelectAnItem = null;
+		private JPanel jPaneItemsOrder = null;
+		private JPanel jPaneShowAllItemsInListBox = null;
+		private JPanel jPaneLanguageRules = null;
+		private JPanel jPaneCaseSensitive = null;
+		private JPanel jPaneCompleteArrowKeySelection = null;
+		private JPanel jPaneDisplayAllItemsWithArrowButton = null;
+		private JPanel jPaneCellRenderer = null;
+		private JPanel jPaneButtons = null;
+		private JComboBox jComboBoxConstructors = null;
+		private JComboBox jComboBoxItemsOrder = null;
+		private JComboBox jComboBoxLanguageRules = null;
+		private JComboBox jComboBoxCellRenderer = null;
+		private JButton jButtonNew = null;
+		private JButton jButtonEnableParametersConfiguration = null;
+		private Object lastSelectedConstructor = null;
+		
+		/**
+		 * <p>Default constructor.</p>
+		 */
+		public ConfigurationJPanel() {
+			super();
+			this.initialize();
+		}
+
+		/**
+		 * <p>Initializes this pane.</p>
+		 */
+		private void initialize() {
+			this.setPreferredSize(new Dimension(configurationPanelWidth, configurationPanelHeight));
+			this.setSize(new Dimension(configurationPanelWidth, configurationPanelHeight));
+			this.setBorder(BorderFactory.createTitledBorder(null, Messages.getText("objectsCreation"), TitledBorder.LEFT, TitledBorder.TOP, new Font("Dialog", Font.BOLD, 12), Color.black));
+			this.add(getJPaneConstructors(), null);
+			this.add(getJPaneConfigurationParameters(), null);
+			this.add(getJPaneButtons(), null);
+			this.resetConfigurationPanel();
+		}
+
+		/**
+		 * <p>This method initializes <code>jCheckBoxOnlyOneColor</code>.</p>
+		 * 	
+		 * @return javax.swing.JCheckBox	
+		 */
+		private JCheckBox getJCheckBoxOnlyOneColorOnText() {
+			if (jCheckBoxOnlyOneColorOnText == null) {
+				jCheckBoxOnlyOneColorOnText = new JCheckBox();
+			}
+			return jCheckBoxOnlyOneColorOnText;
+		}
+
+		/**
+		 * <p>This method initializes <code>jCheckBoxBeepEnabled</code>.</p>
+		 * 	
+		 * @return javax.swing.JCheckBox	
+		 */
+		private JCheckBox getJCheckBoxBeepEnabled() {
+			if (jCheckBoxBeepEnabled == null) {
+				jCheckBoxBeepEnabled = new JCheckBox();
+			}
+			return jCheckBoxBeepEnabled;
+		}
+
+		/**
+		 * <p>This method initializes <code>jCheckBoxHidePopupIfThereAreNoItems</code>.</p>
+		 * 	
+		 * @return javax.swing.JCheckBox	
+		 */
+		private JCheckBox getJCheckBoxHidePopupIfThereAreNoItems() {
+			if (jCheckBoxHidePopupIfThereAreNoItems == null) {
+				jCheckBoxHidePopupIfThereAreNoItems = new JCheckBox();
+			}
+			return jCheckBoxHidePopupIfThereAreNoItems;
+		}
+
+		/**
+		 * <p>This method initializes <code>jCheckBoxToForceSelectAnItem</code>.</p>
+		 * 	
+		 * @return javax.swing.JCheckBox	
+		 */
+		private JCheckBox getJCheckBoxToForceSelectAnItem() {
+			if (jCheckBoxToForceSelectAnItem == null) {
+				jCheckBoxToForceSelectAnItem = new JCheckBox();
+			}
+			return jCheckBoxToForceSelectAnItem;
+		}
+
+		/**
+		 * <p>This method initializes <code>jCheckBoxShowAllItemsInListBox</code>.</p>
+		 * 	
+		 * @return javax.swing.JCheckBox	
+		 */
+		private JCheckBox getJCheckBoxShowAllItemsInListBox() {
+			if (jCheckBoxShowAllItemsInListBox == null) {
+				jCheckBoxShowAllItemsInListBox = new JCheckBox();
+			}
+			return jCheckBoxShowAllItemsInListBox;
+		}		
+
+		/**
+		 * <p>This method initializes <code>jCheckBoxCaseSensitive</code>.</p>
+		 * 	
+		 * @return javax.swing.JCheckBox	
+		 */
+		private JCheckBox getJCheckBoxCaseSensitive() {
+			if (jCheckBoxCaseSensitive == null) {
+				jCheckBoxCaseSensitive = new JCheckBox();
+			}
+			return jCheckBoxCaseSensitive;
+		}
+
+		/**
+		 * <p>This method initializes <code>jCheckBoxCompleteArrowKeySelection</code>.</p>
+		 * 	
+		 * @return javax.swing.JCheckBox	
+		 */
+		private JCheckBox getJCheckBoxCompleteArrowKeySelection() {
+			if (jCheckBoxCompleteArrowKeySelection == null) {
+				jCheckBoxCompleteArrowKeySelection = new JCheckBox();
+			}
+			return jCheckBoxCompleteArrowKeySelection;
+		}
+
+		/**
+		 * <p>This method initializes <code>jCheckBoxDisplayAllItemsWithArrowButton</code>.</p>
+		 * 	
+		 * @return javax.swing.JCheckBox	
+		 */
+		private JCheckBox getJCheckBoxDisplayAllItemsWithArrowButton() {
+			if (jCheckBoxDisplayAllItemsWithArrowButton == null) {
+				jCheckBoxDisplayAllItemsWithArrowButton = new JCheckBox();
+			}
+			return jCheckBoxDisplayAllItemsWithArrowButton;
+		}
+		
+		/**
+		 * @see JCheckBox#setSelected(boolean)
+		 */
+		public void setSelectedJCheckBoxOnlyOneColor(boolean b) {
+			getJCheckBoxOnlyOneColorOnText().setSelected(b);
+		}
+
+		/**
+		 * @see JCheckBox#setSelected(boolean)
+		 */
+		public void setSelectedJCheckBoxBeepEnabled(boolean b) {
+			getJCheckBoxBeepEnabled().setSelected(b);
+		}
+
+		/**
+		 * @see JCheckBox#setSelected(boolean)
+		 */
+		public void setSelectedJCheckBoxHidePopupIfThereAreNoItems(boolean b) {
+			getJCheckBoxHidePopupIfThereAreNoItems().setSelected(b);
+		}
+
+		/**
+		 * @see JCheckBox#setSelected(boolean)
+		 */
+		public void setSelectedJCheckBoxToForceSelectAnItem(boolean b) {
+			getJCheckBoxToForceSelectAnItem().setSelected(b);
+		}
+
+		/**
+		 * @see JCheckBox#setSelected(boolean)
+		 */
+		public void setSelectedJCheckShowAllItemsInListBox(boolean b) {
+			getJCheckBoxShowAllItemsInListBox().setSelected(b);
+		}
+
+		/**
+		 * @see JCheckBox#setSelected(boolean)
+		 */
+		public void setSelectedJCheckBoxCaseSensitive(boolean b) {
+			jCheckBoxCaseSensitive.setSelected(b);
+		}
+
+		/**
+		 * @see JCheckBox#setSelected(boolean)
+		 */
+		public void setSelectedJCheckBoxCompleteArrowKeySelection(boolean b) {
+			jCheckBoxCompleteArrowKeySelection.setSelected(b);
+		}
+
+		/**
+		 * @see JCheckBox#setSelected(boolean)
+		 */
+		public void setSelectedJCheckBoxDisplayAllItemsWithArrowButton(boolean b) {
+			jCheckBoxDisplayAllItemsWithArrowButton.setSelected(b);
+		}
+		
+		/**
+		 * @see JCheckBox#isSelected()
+		 */
+		public boolean isSelectedJCheckBoxOnlyOneColor() {
+			return getJCheckBoxOnlyOneColorOnText().isSelected();
+		}
+
+		/**
+		 * @see JCheckBox#isSelected()
+		 */
+		public boolean isSelectedJCheckBoxBeepEnabled() {
+			return getJCheckBoxBeepEnabled().isSelected();
+		}	
+		
+		/**
+		 * @see JCheckBox#isSelected()
+		 */
+		public boolean isSelectedJCheckBoxHidePopupIfThereAreNoItems() {
+			return getJCheckBoxHidePopupIfThereAreNoItems().isSelected();
+		}
+
+		/**
+		 * @see JCheckBox#isSelected()
+		 */
+		public boolean isSelectedJCheckBoxToForceSelectAnItem() {
+			return getJCheckBoxToForceSelectAnItem().isSelected();
+		}
+
+		/**
+		 * @see JCheckBox#isSelected()
+		 */
+		public boolean isSelectedJCheckBoxShowAllItemsInListBox() {
+			return getJCheckBoxShowAllItemsInListBox().isSelected();
+		}
+		
+		/**
+		 * @see JCheckBox#isSelected()
+		 */
+		public boolean isSelectedJCheckBoxCaseSensitive() {
+			return getJCheckBoxCaseSensitive().isSelected();
+		}
+		
+		/**
+		 * @see JCheckBox#isSelected()
+		 */
+		public boolean isSelectedJCheckBoxCompleteArrowKeySelection() {
+			return getJCheckBoxCompleteArrowKeySelection().isSelected();
+		}
+
+		/**
+		 * @see JCheckBox#isSelected()
+		 */
+		public boolean isSelectedJCheckBoxDisplayAllItemsWithArrowButton() {
+			return getJCheckBoxDisplayAllItemsWithArrowButton().isSelected();
+		}
+		
+		/**
+		 * <p>This method initializes <code>jButtonReset</code>.<p>
+		 * 	
+		 * @return javax.swing.JButton	
+		 */
+		private JButton getJButtonReset() {
+			if (jButtonReset == null) {
+				jButtonReset = new JButton();
+				jButtonReset.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
+				jButtonReset.setText(Messages.getText("reset"));
+				jButtonReset.addMouseListener(new MouseAdapter() {
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						resetConfigurationPanel();
+					}
+				});
+			}
+			return jButtonReset;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneConfigurationParameters</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneConfigurationParameters() {
+			if (jPaneConfigurationParameters == null) {				
+				jPaneConfigurationParameters = new JPanel();
+				jPaneConfigurationParameters.setPreferredSize(new Dimension(jPaneConfigurationParametersWidth, jPaneConfigurationParametersHeight));
+				jPaneConfigurationParameters.setBorder(BorderFactory.createTitledBorder(null, Messages.getText("configurationParameters"), TitledBorder.LEFT, TitledBorder.TOP, new Font("Dialog", Font.BOLD, 12), Color.black));
+
+				// Enable or disable the configuration of the parameters
+				jPaneConfigurationParameters.add(getJButtonEnableParametersConfiguration());
+				
+				// Parameters of the JComboBoxLookUpConfigurable View and Control
+				jPaneConfigurationParameters.add(getJPaneOnlyOneColorOnText(), null);
+				jPaneConfigurationParameters.add(getJPaneBeepEnabled(), null);
+				jPaneConfigurationParameters.add(getJPaneHidePopupIfThereAreNoItems(), null);
+				jPaneConfigurationParameters.add(getJPaneToForceSelectAnItem(), null);
+				jPaneConfigurationParameters.add(getJPaneCompleteArrowKeySelection(), null);
+				jPaneConfigurationParameters.add(getJPaneDisplayAllItemsWithArrowButton(), null);
+				jPaneConfigurationParameters.add(getJPaneCellRenderer(), null);
+				
+				// Parameters of the JComboBoxLookUpConfigurable Model
+				jPaneConfigurationParameters.add(getJPaneItemsOrder(), null);
+				jPaneConfigurationParameters.add(getJPaneShowAllItemsInListBox(), null);
+				jPaneConfigurationParameters.add(getJPaneLanguageRules(), null);
+				jPaneConfigurationParameters.add(getJPaneCaseSensitive(), null);
+
+				// By default don't change the default configuration
+				enableAllConfigurationComponents(false);
+			}
+			return jPaneConfigurationParameters;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelOnlyOneColorOnText</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelOnlyOneColorOnText() {
+			if (jLabelOnlyOneColorOnText == null) {
+				jLabelOnlyOneColorOnText = new JLabel();
+				jLabelOnlyOneColorOnText.setText(Messages.getText("onlyOneColorOnTextConfigurationLabel"));
+				jLabelOnlyOneColorOnText.addMouseListener(new MouseAdapter(){
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						getJCheckBoxOnlyOneColorOnText().setSelected(!getJCheckBoxOnlyOneColorOnText().isSelected());
+					}
+				});
+			}
+			return jLabelOnlyOneColorOnText;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelBeepEnabled</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelBeepEnabled() {
+			if (jLabelBeepEnabled == null) {
+				jLabelBeepEnabled = new JLabel();
+				jLabelBeepEnabled.setText(Messages.getText("beepConfigurationLabel"));
+				jLabelBeepEnabled.addMouseListener(new MouseAdapter(){
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						getJCheckBoxBeepEnabled().setSelected(!getJCheckBoxBeepEnabled().isSelected());
+					}
+				});
+			}
+			return jLabelBeepEnabled;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelHidePopupIfThereAreNoItems</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelHidePopupIfThereAreNoItems() {
+			if (jLabelHidePopupIfThereAreNoItems == null) {
+				jLabelHidePopupIfThereAreNoItems = new JLabel();
+				jLabelHidePopupIfThereAreNoItems.setText(Messages.getText("hidePopupIfThereAreNoItemsConfigurationLabel"));
+				jLabelHidePopupIfThereAreNoItems.addMouseListener(new MouseAdapter(){
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						getJCheckBoxHidePopupIfThereAreNoItems().setSelected(!getJCheckBoxHidePopupIfThereAreNoItems().isSelected());
+					}
+				});
+			}
+			return jLabelHidePopupIfThereAreNoItems;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelToForceSelectAnItem</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelToForceSelectAnItem() {
+			if (jLabelToForceSelectAnItem == null) {
+				jLabelToForceSelectAnItem = new JLabel();
+				jLabelToForceSelectAnItem.setText(Messages.getText("toForceSelectAnItemConfigurationLabel"));
+				jLabelToForceSelectAnItem.addMouseListener(new MouseAdapter(){
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						getJCheckBoxToForceSelectAnItem().setSelected(!getJCheckBoxToForceSelectAnItem().isSelected());
+					}
+				});
+			}
+			return jLabelToForceSelectAnItem;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelItemsOrder</code>.<p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelItemsOrder() {
+			if (jLabelItemsOrder == null) {
+				jLabelItemsOrder = new JLabel();
+				jLabelItemsOrder.setText(Messages.getText("itemsOrderConfigurationLabel"));
+			}
+			return jLabelItemsOrder;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelShowAllItemsInListBox</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelShowAllItemsInListBox() {
+			if (jLabelShowAllItemsInListBox == null) {
+				jLabelShowAllItemsInListBox = new JLabel();
+				jLabelShowAllItemsInListBox.setText(Messages.getText("showAllItemsInListBoxConfigurationLabel"));
+				jLabelShowAllItemsInListBox.addMouseListener(new MouseAdapter(){
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						getJCheckBoxShowAllItemsInListBox().setSelected(!getJCheckBoxShowAllItemsInListBox().isSelected());
+					}
+				});
+			}
+			return jLabelShowAllItemsInListBox;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelLanguageRules</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelLanguageRules() {
+			if (jLabelLanguageRules == null) {
+				jLabelLanguageRules = new JLabel();
+				jLabelLanguageRules.setText(Messages.getText("languageRulesConfigurationLabel"));
+			}
+			return jLabelLanguageRules;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelCaseSensitive1</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelCaseSensitive() {
+			if (jLabelCaseSensitive == null) {
+				jLabelCaseSensitive = new JLabel();
+				jLabelCaseSensitive.setText(Messages.getText("caseSensitiveConfigurationLabel"));
+				jLabelCaseSensitive.addMouseListener(new MouseAdapter(){
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						getJCheckBoxCaseSensitive().setSelected(!getJCheckBoxCaseSensitive().isSelected());
+					}
+				});
+			}
+			return jLabelCaseSensitive;
+		}
+		
+
+		/**
+		 * <p>This method initializes <code>jLabelCompleteArrowKeySelection</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelCompleteArrowKeySelection() {
+			if (jLabelCompleteArrowKeySelection == null) {
+				jLabelCompleteArrowKeySelection = new JLabel();
+				jLabelCompleteArrowKeySelection.setText(Messages.getText("completeArrowKeySelectionConfigurationLabel"));
+				jLabelCompleteArrowKeySelection.addMouseListener(new MouseAdapter(){
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						getJCheckBoxCompleteArrowKeySelection().setSelected(!getJCheckBoxCompleteArrowKeySelection().isSelected());
+					}
+				});
+			}
+			return jLabelCompleteArrowKeySelection;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelDisplayAllItemsWithArrowButton</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelDisplayAllItemsWithArrowButton() {
+			if (jLabelDisplayAllItemsWithArrowButton == null) {
+				jLabelDisplayAllItemsWithArrowButton = new JLabel();
+				jLabelDisplayAllItemsWithArrowButton.setText(Messages.getText("displayAllItemsWithArrowButtonConfigurationLabel"));
+				jLabelDisplayAllItemsWithArrowButton.addMouseListener(new MouseAdapter(){
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						getJCheckBoxDisplayAllItemsWithArrowButton().setSelected(!getJCheckBoxDisplayAllItemsWithArrowButton().isSelected());
+					}
+				});
+			}
+			return jLabelDisplayAllItemsWithArrowButton;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelCellRenderer</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelCellRenderer() {
+			if (jLabelCellRenderer == null) {
+				jLabelCellRenderer = new JLabel();
+				jLabelCellRenderer.setText(Messages.getText("cellRendererConfigurationLabel"));
+			}
+			return jLabelCellRenderer;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneConstructor</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneConstructors() {
+			if (jPaneConstructor == null) {
+				jPaneConstructor = new JPanel();
+				jPaneConstructor.setPreferredSize(new Dimension(jPaneConstructorsWidth, jPaneConstructorsHeight));
+				jPaneConstructor.setBorder(BorderFactory.createTitledBorder(null, Messages.getText("constructors"), TitledBorder.LEFT, TitledBorder.TOP, new Font("Dialog", Font.BOLD, 12), Color.black));
+				jPaneConstructor.add(getJComboBoxConstructors(), null);
+			}
+			return jPaneConstructor;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneOnlyOneColor</code>.</p>	
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneOnlyOneColorOnText() {
+			if (jPaneOnlyOneColorOnText == null) {				
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.LEFT);
+				jPaneOnlyOneColorOnText = new JPanel();
+				jPaneOnlyOneColorOnText.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneOnlyOneColorOnText.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				jPaneOnlyOneColorOnText.setLayout(flowLayout);
+				jPaneOnlyOneColorOnText.add(getJCheckBoxOnlyOneColorOnText(), null);
+				jPaneOnlyOneColorOnText.add(getJLabelOnlyOneColorOnText(), null);
+			}
+			return jPaneOnlyOneColorOnText;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneBeepEnabled</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneBeepEnabled() {
+			if (jPaneBeepEnabled == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.LEFT);
+				jPaneBeepEnabled = new JPanel();
+				jPaneBeepEnabled.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneBeepEnabled.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				jPaneBeepEnabled.setLayout(flowLayout);
+				jPaneBeepEnabled.add(getJCheckBoxBeepEnabled(), null);
+				jPaneBeepEnabled.add(getJLabelBeepEnabled(), null);
+			}
+			return jPaneBeepEnabled;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneHidePopupIfThereAreNoItems</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneHidePopupIfThereAreNoItems() {
+			if (jPaneHidePopupIfThereAreNoItems == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.LEFT);
+				jPaneHidePopupIfThereAreNoItems = new JPanel();
+				jPaneHidePopupIfThereAreNoItems.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneHidePopupIfThereAreNoItems.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				jPaneHidePopupIfThereAreNoItems.setLayout(flowLayout);
+				jPaneHidePopupIfThereAreNoItems.add(getJCheckBoxHidePopupIfThereAreNoItems(), null);
+				jPaneHidePopupIfThereAreNoItems.add(getJLabelHidePopupIfThereAreNoItems(), null);
+			}
+			return jPaneHidePopupIfThereAreNoItems;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneToForceSelectAnItem</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneToForceSelectAnItem() {
+			if (jPaneToForceSelectAnItem == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.LEFT);
+				jPaneToForceSelectAnItem = new JPanel();
+				jPaneToForceSelectAnItem.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneToForceSelectAnItem.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				jPaneToForceSelectAnItem.setLayout(flowLayout);
+				jPaneToForceSelectAnItem.add(getJCheckBoxToForceSelectAnItem(), null);
+				jPaneToForceSelectAnItem.add(getJLabelToForceSelectAnItem(), null);
+			}
+			return jPaneToForceSelectAnItem;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneItemsOrder</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneItemsOrder() {
+			if (jPaneItemsOrder == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.LEFT);
+				jPaneItemsOrder = new JPanel();
+				jPaneItemsOrder.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneItemsOrder.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				jPaneItemsOrder.setLayout(flowLayout);
+				jPaneItemsOrder.add(getJComboBoxItemsOrder(), null);
+				jPaneItemsOrder.add(getJLabelItemsOrder(), null);
+			}
+			return jPaneItemsOrder;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneShowAllItemsInListBox</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneShowAllItemsInListBox() {
+			if (jPaneShowAllItemsInListBox == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.LEFT);
+				jPaneShowAllItemsInListBox = new JPanel();
+				jPaneShowAllItemsInListBox.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneShowAllItemsInListBox.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				jPaneShowAllItemsInListBox.setLayout(flowLayout);
+				jPaneShowAllItemsInListBox.add(getJCheckBoxShowAllItemsInListBox(), null);
+				jPaneShowAllItemsInListBox.add(getJLabelShowAllItemsInListBox(), null);
+			}
+			return jPaneShowAllItemsInListBox;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneLanguageRules</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneLanguageRules() {
+			if (jPaneLanguageRules == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.LEFT);
+				jPaneLanguageRules = new JPanel();
+				jPaneLanguageRules.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneLanguageRules.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				jPaneLanguageRules.setLayout(flowLayout);
+				jPaneLanguageRules.add(getJComboBoxLanguageRules(), null);
+				jPaneLanguageRules.add(getJLabelLanguageRules(), null);
+			}
+			return jPaneLanguageRules;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneCaseSensitive</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneCaseSensitive() {
+			if (jPaneCaseSensitive == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.LEFT);
+				jPaneCaseSensitive = new JPanel();
+				jPaneCaseSensitive.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneCaseSensitive.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				jPaneCaseSensitive.setLayout(flowLayout);
+				jPaneCaseSensitive.add(getJCheckBoxCaseSensitive(), null);
+				jPaneCaseSensitive.add(getJLabelCaseSensitive(), null);
+			}
+			return jPaneCaseSensitive;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneCompleteArrowKeySelection</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneCompleteArrowKeySelection() {
+			if (jPaneCompleteArrowKeySelection == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.LEFT);
+				jPaneCompleteArrowKeySelection = new JPanel();
+				jPaneCompleteArrowKeySelection.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneCompleteArrowKeySelection.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				jPaneCompleteArrowKeySelection.setLayout(flowLayout);
+				jPaneCompleteArrowKeySelection.add(getJCheckBoxCompleteArrowKeySelection(), null);
+				jPaneCompleteArrowKeySelection.add(getJLabelCompleteArrowKeySelection(), null);
+			}
+			return jPaneCompleteArrowKeySelection;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneDisplayAllItemsWithArrowButton</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneDisplayAllItemsWithArrowButton() {
+			if (jPaneDisplayAllItemsWithArrowButton == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.LEFT);
+				jPaneDisplayAllItemsWithArrowButton = new JPanel();
+				jPaneDisplayAllItemsWithArrowButton.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneDisplayAllItemsWithArrowButton.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				jPaneDisplayAllItemsWithArrowButton.setLayout(flowLayout);
+				jPaneDisplayAllItemsWithArrowButton.add(getJCheckBoxDisplayAllItemsWithArrowButton(), null);
+				jPaneDisplayAllItemsWithArrowButton.add(getJLabelDisplayAllItemsWithArrowButton(), null);
+			}
+			return jPaneDisplayAllItemsWithArrowButton;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneCellRenderer</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneCellRenderer() {
+			if (jPaneCellRenderer == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.LEFT);
+				jPaneCellRenderer = new JPanel();
+				jPaneCellRenderer.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneCellRenderer.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				jPaneCellRenderer.setLayout(flowLayout);
+				jPaneCellRenderer.add(getJComboBoxCellRenderer(), null);
+				jPaneCellRenderer.add(getJLabelCellRenderer(), null);
+			}
+			return jPaneCellRenderer;
+		}
+
+		/**
+		 * <p>This method initializes <code>jPaneButtons</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneButtons() {
+			if (jPaneButtons == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.RIGHT);
+				jPaneButtons = new JPanel();
+				jPaneButtons.setPreferredSize(new Dimension(subPanelWidth, subPanelHeight));
+				jPaneButtons.setLayout(flowLayout);
+				jPaneButtons.add(getJButtonReset(), null);
+				jPaneButtons.add(getJButtonNew(), null);
+			}
+			return jPaneButtons;
+		}		
+		
+		/**
+		 * <p>This method initializes <code>jComboBoxConstructors</code>.</p>	
+		 * 	
+		 * @return javax.swing.JComboBox	
+		 */
+		private JComboBox getJComboBoxConstructors() {
+			if (jComboBoxConstructors == null) {
+				jComboBoxConstructors = new JComboBox();
+				jComboBoxConstructors.setEditable(false);
+				jComboBoxConstructors.setPreferredSize(new Dimension(jComboBoxConstructorsWidth, jComboBoxConstructorsHeight));
+
+				jComboBoxConstructors.getModel().addListDataListener(new ListDataListener() {
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#contentsChanged(javax.swing.event.ListDataEvent)
+					 */
+					public void contentsChanged(ListDataEvent e) {
+						Object item = jComboBoxConstructors.getSelectedItem();
+
+						if (item != null)
+							jComboBoxConstructors.setToolTipText(item.toString());
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalAdded(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalAdded(ListDataEvent e) {
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalRemoved(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalRemoved(ListDataEvent e) {
+					}
+				});
+
+				jComboBoxConstructors.addPopupMenuListener(new PopupMenuListener() {
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.PopupMenuListener#popupMenuCanceled(javax.swing.event.PopupMenuEvent)
+					 */
+					public void popupMenuCanceled(PopupMenuEvent e) {
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.PopupMenuListener#popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent)
+					 */
+					public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.PopupMenuListener#popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent)
+					 */
+					public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
+						lastSelectedConstructor = jComboBoxConstructors.getSelectedItem();
+					}				
+				});
+			}
+			return jComboBoxConstructors;
+		}
+		
+		/**
+		 * <p>This method initializes <code>jComboBoxItemsOrder</code>.</p>
+		 * 	
+		 * @return javax.swing.JComboBox	
+		 */
+		private JComboBox getJComboBoxItemsOrder() {
+			if (jComboBoxItemsOrder == null) {
+				jComboBoxItemsOrder = new JComboBox();
+				jComboBoxItemsOrder.setEditable(false);
+				jComboBoxItemsOrder.setPreferredSize(new Dimension(jComboBoxWidth, jComboBoxHeight));
+
+				jComboBoxItemsOrder.getModel().addListDataListener(new ListDataListener() {
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#contentsChanged(javax.swing.event.ListDataEvent)
+					 */
+					public void contentsChanged(ListDataEvent e) {
+						Object item = jComboBoxItemsOrder.getSelectedItem();
+
+						if (item != null)
+							jComboBoxItemsOrder.setToolTipText(item.toString());
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalAdded(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalAdded(ListDataEvent e) {
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalRemoved(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalRemoved(ListDataEvent e) {
+					}
+				});
+
+				jComboBoxItemsOrder.addItem(Messages.getText("maintain_position"));
+				jComboBoxItemsOrder.addItem(Messages.getText("alphabetical_ordered"));
+				jComboBoxItemsOrder.addItem(Messages.getText("disordered"));
+			}
+
+			return jComboBoxItemsOrder;
+		}
+		
+		/**
+		 * <p>This method initializes <code>jComboBoxLanguageRules</code>.</p>
+		 * 	
+		 * @return javax.swing.JComboBox	
+		 */
+		private JComboBox getJComboBoxLanguageRules() {
+			if (jComboBoxLanguageRules == null) {
+				jComboBoxLanguageRules = new JComboBox();
+				jComboBoxLanguageRules.setEditable(false);
+				jComboBoxLanguageRules.setPreferredSize(new Dimension(jComboBoxWidth, jComboBoxHeight));
+
+				jComboBoxLanguageRules.getModel().addListDataListener(new ListDataListener() {
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#contentsChanged(javax.swing.event.ListDataEvent)
+					 */
+					public void contentsChanged(ListDataEvent e) {
+						Object item = jComboBoxLanguageRules.getSelectedItem();
+
+						if (item != null)
+							jComboBoxLanguageRules.setToolTipText(item.toString());
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalAdded(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalAdded(ListDataEvent e) {
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalRemoved(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalRemoved(ListDataEvent e) {
+					}
+				});
+
+				jComboBoxLanguageRules.addItem("es_ES");
+				jComboBoxLanguageRules.addItem("en_US");
+				jComboBoxLanguageRules.addItem("fr_FR");
+			}
+
+			return jComboBoxLanguageRules;
+		}
+		
+
+		/**
+		 * <p>This method initializes <code>jComboBoxCellRenderer</code>.</p>
+		 * 	
+		 * @return javax.swing.JCheckBox	
+		 */
+		private JComboBox getJComboBoxCellRenderer() {
+			if (jComboBoxCellRenderer == null) {
+				jComboBoxCellRenderer = new JComboBox();
+				jComboBoxCellRenderer.setEditable(false);
+				jComboBoxCellRenderer.setPreferredSize(new Dimension(jComboBoxWidth, jComboBoxHeight));
+
+				jComboBoxCellRenderer.getModel().addListDataListener(new ListDataListener() {
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#contentsChanged(javax.swing.event.ListDataEvent)
+					 */
+					public void contentsChanged(ListDataEvent e) {
+						Object item = jComboBoxCellRenderer.getSelectedItem();
+
+						if (item != null)
+							jComboBoxCellRenderer.setToolTipText(item.toString());
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalAdded(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalAdded(ListDataEvent e) {
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalRemoved(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalRemoved(ListDataEvent e) {
+					}
+				});
+
+				jComboBoxCellRenderer.addItem("Default");
+				jComboBoxCellRenderer.addItem("Sample_BG_Color");
+			}
+
+			return jComboBoxCellRenderer;
+		}
+		
+		/**
+		 * <p>Adds a constructor item to <code>jComboBoxConstructors</code>, and if it`s needed configures the configuration options of this JPanel.</p>
+		 *  
+		 * @param name Constructor name
+		 */
+		public void addConstructorItem(String name) {
+			this.jComboBoxConstructors.addItem(name);
+		
+			// Displays description of the first item added by default
+			if (this.lastSelectedConstructor == null)
+			{
+				this.lastSelectedConstructor = getJComboBoxConstructors().getSelectedItem();
+			}
+		}
+	
+		/**
+		 * @see JComboBox#getSelectedIndex()
+		 */
+		public int getSelectedComboBoxItemsOrder() {
+			return jComboBoxItemsOrder.getSelectedIndex();
+		}
+
+		/**
+		 * @see JComboBox#setSelectedIndex(int)
+		 */
+		public void setSelectedComboBoxItemsOrder(int index) {
+			jComboBoxItemsOrder.setSelectedIndex(index);
+		}
+
+		/**
+		 * @see JComboBox#getSelectedIndex()
+		 */
+		public int getSelectedComboBoxLanguageRules() {
+			return jComboBoxLanguageRules.getSelectedIndex();
+		}
+		
+		/**
+		 * @see JComboBox#setSelectedIndex(int)
+		 */
+		public void setSelectedComboBoxLanguageRules(int index) {
+			jComboBoxLanguageRules.setSelectedIndex(index);
+		}
+
+		/**
+		 * <p>Gets the selected cell renderer.</p>
+		 * 
+		 * @return the selected cell renderer index
+		 */
+		public int getSelectedComboBoxCellRendererIndex() {
+			return jComboBoxCellRenderer.getSelectedIndex();
+		}
+
+		/**
+		 * @see JComboBox#getSelectedIndex()
+		 */
+		public int getSelectedComboBoxConstructor() {
+			return jComboBoxConstructors.getSelectedIndex();
+		}
+
+		/**
+		 * <p>Gets an string that identifies the selected items order.</p>
+		 * 
+		 * @return text that identifies the selected items order
+		 */
+		public String getSelectedComboBoxItemsOrderText() {
+			return jComboBoxItemsOrder.getSelectedItem().toString();
+		}
+
+		/**
+		 * <p>Gets an string that identifies the selected language rule.</p>
+		 * 
+		 * @return text that identifies the selected language rule
+		 */
+		public String getSelectedComboBoxLanguageRuleText() {
+			return jComboBoxLanguageRules.getSelectedItem().toString();
+		}
+		
+		/**
+		 * <p>Gets an string that identifies the selected cell renderer.</p>
+		 * 
+		 * @return text that identifies the selected cell renderer
+		 */
+		public String getSelectedComboBoxCellRenderer() {
+			return jComboBoxCellRenderer.getSelectedItem().toString();
+		}
+
+		/**
+		 * <p>This method initializes <code>jButtonNew</code>.</p>
+		 * 	
+		 * @return javax.swing.JButton	
+		 */
+		private JButton getJButtonNew() {
+			if (jButtonNew == null) {
+				jButtonNew = new JButton();
+				jButtonNew.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
+				jButtonNew.setText(Messages.getText("new"));
+			}
+			return jButtonNew;
+		}
+		
+		/**
+		 * <p>This method initializes <code>jButtonEnableParametersConfiguration</code>.</p>
+		 * 	
+		 * @return javax.swing.JButton	
+		 */
+		private JButton getJButtonEnableParametersConfiguration() {
+			if (jButtonEnableParametersConfiguration == null) {
+				jButtonEnableParametersConfiguration = new JButton();
+				jButtonEnableParametersConfiguration.setPreferredSize(new Dimension(subPanelWidth, buttonHeight));
+				jButtonEnableParametersConfiguration.setText(Messages.getText("configure"));
+				
+				jButtonEnableParametersConfiguration.addMouseListener(new MouseAdapter() {
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent e) {
+						if (getJComboBoxConstructors().getItemCount() == 0) {
+							JOptionPane.showMessageDialog(null, Messages.getText("cant_configure_parameters"), Messages.getText("warning"), JOptionPane.WARNING_MESSAGE);
+							return;
+						}
+						
+						isConfiguring = !isConfiguring;
+
+						enableAllConfigurationComponents(isConfiguring);
+					}
+				});
+			}
+			return jButtonEnableParametersConfiguration;
+		}
+
+		/**
+		 * <p>Sets all configuration components enabled or disabled according the value of the parameter.</p>
+		 * 
+		 * @param b a boolean value
+		 */
+		private void enableAllConfigurationComponents(boolean b) {
+			getJLabelOnlyOneColorOnText().setEnabled(b);
+			getJCheckBoxOnlyOneColorOnText().setEnabled(b);
+
+			getJLabelBeepEnabled().setEnabled(b);
+			getJCheckBoxBeepEnabled().setEnabled(b);
+
+			getJLabelHidePopupIfThereAreNoItems().setEnabled(b);
+			getJCheckBoxHidePopupIfThereAreNoItems().setEnabled(b);
+
+			getJLabelToForceSelectAnItem().setEnabled(b);
+			getJCheckBoxToForceSelectAnItem().setEnabled(b);
+
+			getJLabelCompleteArrowKeySelection().setEnabled(b);
+			getJCheckBoxCompleteArrowKeySelection().setEnabled(b);
+
+			getJLabelDisplayAllItemsWithArrowButton().setEnabled(b);
+			getJCheckBoxDisplayAllItemsWithArrowButton().setEnabled(b);
+
+			getJLabelCellRenderer().setEnabled(b);
+			getJComboBoxCellRenderer().setEnabled(b);
+			
+			getJLabelItemsOrder().setEnabled(b);
+			getJComboBoxItemsOrder().setEnabled(b);
+
+			getJLabelShowAllItemsInListBox().setEnabled(b);
+			getJCheckBoxShowAllItemsInListBox().setEnabled(b);
+
+			getJLabelLanguageRules().setEnabled(b);
+			getJComboBoxLanguageRules().setEnabled(b);
+
+			getJLabelCaseSensitive().setEnabled(b);
+			getJCheckBoxCaseSensitive().setEnabled(b);
+		}
+
+		/**
+		 * <p>Reset the configuration options of this pane to their default value.</p>
+		 */
+		private void resetConfigurationPanel() {
+			isConfiguring = false;
+			
+			// JComboBoxConstructors (The constructor selected)
+			if (getJComboBoxConstructors().getItemCount() > 0)
+				getJComboBoxConstructors().setSelectedIndex(0);
+			else
+				getJComboBoxConstructors().setSelectedIndex(-1);
+
+			
+			// Disable all options
+			enableAllConfigurationComponents(false);
+			
+			// Only One Color
+			getJCheckBoxOnlyOneColorOnText().setSelected(JComboBoxConfigurableLookUp.DEFAULT_ONLY_ONE_COLOR_ON_TEXT_CONFIGURATION);
+			
+			// Beep Enabled
+			getJCheckBoxBeepEnabled().setSelected(JComboBoxConfigurableLookUp.DEFAULT_BEEP_ENABLED_CONFIGURATION);
+
+			// Hide Popup If There Are No Items
+			getJCheckBoxHidePopupIfThereAreNoItems().setSelected(JComboBoxConfigurableLookUp.DEFAULT_HIDE_POPUP_IF_THERE_ARE_NO_ITEMS_CONFIGURATION);
+			
+			// To Force Select An Item
+			getJCheckBoxToForceSelectAnItem().setSelected(JComboBoxConfigurableLookUp.DEFAULT_TO_FORCE_SELECT_AN_ITEM_CONFIGURATION);
+			
+			// Complete Arrow Key Selection
+			getJCheckBoxCompleteArrowKeySelection().setSelected(JComboBoxConfigurableLookUp.DEFAULT_COMPLETE_ARROW_KEY_SELECTION_CONFIGURATION);
+			
+			// Display All Items With Arrow Button
+			getJCheckBoxDisplayAllItemsWithArrowButton().setSelected(JComboBoxConfigurableLookUp.DEFAULT_DISPLAY_ALL_ITEMS_WITH_ARROW_BUTTON_CONFIGURATION);
+			
+			// Cell Renderer -> the default (that's a the position 0)
+			getJComboBoxCellRenderer().setSelectedIndex(DEFAULT_CELL_RENDERER);
+
+			// Items order
+			getJComboBoxItemsOrder().setSelectedIndex(DefaultComboBoxConfigurableLookUpModel.DEFAULT_ITEMS_ORDER_CONFIGURATION);
+			
+			// Show all items in list box
+			getJCheckBoxShowAllItemsInListBox().setSelected(DefaultComboBoxConfigurableLookUpModel.DEFAULT_SHOW_ALL_ITEMS_IN_LIST_BOX_CONFIGURATION);
+			
+			// Language rules
+			getJComboBoxLanguageRules().setSelectedIndex(0); // es_ES
+
+			// Case Sensitive
+			getJCheckBoxCaseSensitive().setSelected(DefaultComboBoxConfigurableLookUpModel.DEFAULT_CASE_SENSITIVE_CONFIGURATION);
+		}	
+	}
+
+	
+	/**
+	 * <p>A <code>JPanel</code> for the configuration and create a new JComboBoxLookUpConfigurable for testing.</p>
+	 *  
+	 * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+	 */
+	private class OtherTestsJPanel extends JPanel implements Serializable {
+		private static final long serialVersionUID = 402109040183526786L;
+
+		private final int panelWidth = 410;
+		private final int panelHeight = 570;
+		private final int buttonWidth = 90;
+		private final int buttonHeight = 20;
+		private final int methodsPanelWidth = 390;
+		private final int methodsPanelHeight = 60;
+		private final int otherUtilitiesJTabbedPaneWidth = methodsPanelWidth;
+		private final int otherUtilitiesJTabbedPaneHeight = 435;
+		private final int columnsOfJTextAreaDescriptionInstructions = 34;
+		private final int rowsOfJTextAreaDescriptionInstructions = 22;
+		private final int jScrollPaneIncrementConstant = 10;
+		private final int jLabelWidth = 70;
+		private final int jLabelHeight = buttonHeight;
+		private final int parametersTextFieldWidth = methodsPanelWidth - jLabelWidth - 25; // -25 for the margins
+		private final int parametersTextFieldHeight = 20;
+		private final int buttonsPanelHeight = 30;
+		private final int buttonsPanelWidth = methodsPanelWidth;
+		private final int jComboBoxWidth = 180;
+		private final int jComboBoxHeigth = 20;
+		private JComboBox jComboBoxMethods = null;
+		private JTextField jTextField = null;
+		private JButton jButtonTest = null;
+		private JLabel jLabelMethod = null;
+		private JPanel jPanelMethods = null;
+		private JLabel jLabelComponents = null;
+		private JLabel jLabelParameters = null;
+		private JComboBox jComboBoxTestObjects = null;
+		private JTextArea jTextAreaDescriptionInstructions = null;
+		private JButton jButtonReset = null;
+		private JPanel jPanelButtons = null;
+		private Vector<Object> methods = null;
+		private Object lastSelectedMethod = null;
+		private Vector<Object> currentMethodTypes = null;
+		private JScrollPane jScrollPaneDescriptionInstructions = null;
+		String textHelp;
+		private String globalHelp;
+		private Map<Object, Object> testObjects;
+		private JButton jButtonFill = null;
+		private JButton jButtonOtherTestsHelp = null;
+		private JTabbedPane jTabbedPaneOtherUtilities = null;
+		private JScrollPane jScrollPaneLog = null;
+		private JTextArea jTextAreaLog = null;
+
+		/**
+		 * <p>Default constructor without parameters.</p>
+		 */
+		public OtherTestsJPanel() {
+			super();
+		}
+		
+		/**
+		 * <p>Default constructor with 1 parameter.</p>
+		 */
+		public OtherTestsJPanel(String path) {
+			super();
+			javaFileMethodsLoader = new JavaFileMethodsLoader(path);
+			this.initialize();
+		}
+		
+		/**
+		 * <p>Initializes this pane.</p>
+		 */
+		private void initialize() {
+			this.setPreferredSize(new Dimension(panelWidth, panelHeight));
+			this.setBorder(BorderFactory.createTitledBorder(null, Messages.getText("proofs"), TitledBorder.LEFT, TitledBorder.TOP, new Font("Dialog", Font.BOLD, 12), Color.black));
+			this.setSize(new Dimension(panelWidth, panelHeight));
+			this.testObjects = new HashMap<Object, Object>();
+			
+			this.add(getJPanelMethods(), null);
+			this.add(getJTabbedPaneOtherUtilities(), null);
+			this.add(getJPaneButtons(), null);
+			textHelp = new String("AYUDA CON LOS PAR�METROS:\n\n" +									
+										"Se permiten 5 tipos de par�metros:\n" +
+										"   - Entero (int) (Ejemplo: 24)\n" +
+										"   - Real corto (float) (Ejemplo: 2.5)\n" +
+										"   - Real largo (double) (Ejemplo: 2.56869479346)\n" +
+										"   - Booleano (boolean) (Ejemplo valor true: T) (Ejemplo valor false: F)\n" +
+										"   - Cadena de caracteres (String) (Se deben usar comillas dobles) (Ejemplo: \"La casa.\")\n" +
+										"   - Car�cter (char) (Se deben usar comillas simples) (Ejemplo: 'a')\n\n" +
+										"Los par�metros se deben escribir separados por coma:\n" +
+										"   Ejemplo: 2, 3.5, true, \"El coche\", 'c'\n");
+
+			globalHelp = new String("   AYUDA CON LOS PAR�METROS:\n" +
+									"   ==========================\n" +									
+									"   Se permiten 5 tipos de par�metros:\n" +
+									"      - Entero (int) (Ejemplo: 24)\n" +
+									"      - Real corto (float) (Ejemplo: 2.5)\n" +
+									"      - Real largo (double) (Ejemplo: 2.56869479346)\n" +
+									"      - Booleano/Bandera (boolean) (Ejemplo valor cierto: true) (Ejemplo valor falso: false)\n" +
+									"      - Cadena de caracteres (String) (Se deben usar comillas dobles) (Ejemplo: \"La casa.\")\n" +
+									"      - Car�cter (char) (Se deben usar comillas simples) (Ejemplo: 'a')\n" +
+									"      - Objeto (Object) (Se considerar� como un item a a�adir o quitar a un JComboBox; se\n" +
+									"           escribir� como si fuese una cadena de caracteres (String)) (Ejemplo: \"El reloj\"\n\n" +									
+									"   Los par�metros se deben escribir separados por coma:\n" +
+									"      Ejemplo: 2, 3.5, true, \"El coche\", 'c', \"El reloj\"\n\n\n" +
+									"   AYUDA PANEL \"OTRAS PRUEBAS\" :\n" +
+									"   =============================\n" +
+									"   + JComboBox \"Operaci�n\" :\n" +
+									"      Puede seleccionar la operaci�n que desee realizar.\n\n" +
+									"   + JComboBox \"Objeto\" :\n" +
+									"      Puede seleccionar el objeto sobre el que realizar\n" +
+									"   la operaci�n seleccionada.\n\n" +
+									"   + Pesta�a \"Descripci�n\" :\n" +
+									"   - �rea de texto \"Descripci�n\" :\n" +
+									"      Muestra informaci�n de la operaci�n seleccionada y\n" +
+									"   puede mostrar esta informaci�n de ayuda acerca del\n" +
+									"   manejo de esta aplicaci�n\n\n" +
+									"   - Campo de texto \"Par�metros\" :\n" +
+									"      Permite introducir par�metros para probar la operaci�n\n" +
+									"   seleccionada sobre el objeto seleccionado. Se debe introducir\n" +
+									"   par�metros del mismo tipo que los necesarios por la operaci�n,\n" +
+									"   y el mismo n�mero. En caso de que la operaci�n no necesite\n" +
+									"   par�metros de entrada, este campo estar� deshabilitado. Y en\n" +
+									"   en caso que no el usuario no pueda introducir un tipo de\n" +
+									"   par�metro (tipo distinto a los soportados), en caso de poderse\n" +
+									"   realizar la operaci�n, se usar�n valores por defecto desde la\n" +
+									"   aplicaci�n (y no escribir el par�metro).\n\n" +	
+									"   - Bot�n \"Rellenar\" :\n" +
+									"      A�ade un conjunto de items por defecto al objeto actual,\n" +
+									"   permite as� al usuario probar el objeto sin tener que introducir\n" +
+									"   datos manualmente.\n\n" +
+									"   - Bot�n \"Reset\" :\n" +
+									"      Puls�ndolo deja el panel \"Otras Pruebas\" tal y como\n" +
+									"   estaba inicialmente.\n\n" +
+									"   - Bot�n \"Test\" :\n" +
+									"      Puls�ndolo se intenta ejecutar un test de la operaci�n\n" +
+									"   seleccionada sobre el objeto seleccionado, y usando los\n" +
+									"   par�metros introducidos en caso necesario.\n" +
+									"      El test puede no ejecutarse si algo de lo anterior no es\n" +
+									"   correcto.\n\n" +
+									"   + Pesta�a \"Log\" :\n" +
+									"      Se va mostrando el resultado de las operaciones, as� como\n" +
+									"   texto de depuraci�n que puedan ir generando los objetos\n" +
+									"   objetos seg�n se usen.");
+
+			this.inializeMethods();
+		}
+		
+		/**
+		 * <p>Pass a JavaFileMethodsLoader object that has been used for load a the <code>JComboBoxLookUpConfigurable</code> class file.</p>
+		 * 
+		 * @param methodsLoader A JavaFileMethodsLoader object
+		 */
+		public void setJavaFileMethodsLoader(JavaFileMethodsLoader methodsLoader) {
+			javaFileMethodsLoader = methodsLoader;
+			this.initialize();
+		}
+		
+		/**
+		 * <p>Add a method to a private Vector with all the methods that this pane will use.</p>
+		 */
+		private void inializeMethods() {
+			methods = new Vector<Object>(0, 1);
+			
+			/* Create object without parameters */
+			MethodsDescription description = new MethodsDescription();
+			methods.add(description);
+		}
+
+		/**
+		 * <p>This method initializes <code>jComboBoxMethods</code>.</p>
+		 * 	
+		 * @return javax.swing.JComboBox	
+		 */
+		private JComboBox getJComboBoxMethods() {
+			if (jComboBoxMethods == null) {
+				jComboBoxMethods = new JComboBox();
+				jComboBoxMethods.setPreferredSize(new Dimension(jComboBoxWidth, jComboBoxHeigth));
+
+				jComboBoxMethods.getModel().addListDataListener(new ListDataListener() {
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#contentsChanged(javax.swing.event.ListDataEvent)
+					 */
+					public void contentsChanged(ListDataEvent e) {
+						Object item = jComboBoxMethods.getSelectedItem();
+
+						if (item != null)
+							jComboBoxMethods.setToolTipText(item.toString());
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalAdded(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalAdded(ListDataEvent e) {
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalRemoved(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalRemoved(ListDataEvent e) {
+					}
+				});
+
+				jComboBoxMethods.addPopupMenuListener(new PopupMenuListener() {
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.PopupMenuListener#popupMenuCanceled(javax.swing.event.PopupMenuEvent)
+					 */
+					public void popupMenuCanceled(PopupMenuEvent e) {
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.PopupMenuListener#popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent)
+					 */
+					public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
+						// If the user has selected another method -> show its description
+						Object item = jComboBoxMethods.getSelectedItem();
+						if (item != null)
+						{
+							if ((lastSelectedMethod == null) || (!lastSelectedMethod.equals(item)))
+							{
+								displayMethodDescription(item);
+
+								currentMethodTypes = javaFileMethodsLoader.getMethodParametersType(item.toString());
+
+								// Clears the previous parameters
+								getJTextField().setText("");
+
+								// Updates the editable status of the field with parameters
+								if (currentMethodTypes.size() == 0)
+									getJTextField().setEditable(false);
+								else
+									getJTextField().setEditable(true);
+							}
+						}
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.PopupMenuListener#popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent)
+					 */
+					public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
+						lastSelectedMethod = jComboBoxMethods.getSelectedItem();
+					}				
+				});
+			}
+
+			return jComboBoxMethods;
+		}
+		
+		/**
+		 * <p>Displays in the <code>JTextAreaDescriptionInstructions</code> information about a method.</p>
+		 * 
+		 * @param method A method
+		 */
+		private void displayMethodDescription(Object method) {
+			// Adds the description text
+			String methodHead = new String("public " + method);
+			this.getJTextAreaDescriptionInstructions().setText(javaFileMethodsLoader.getMethodDocumentation(methodHead) + "\n" + method);
+			
+			// Adjusts the view (jTextAreaDescriptionInstructions) to the jtreeRoot-left corner
+			this.getJTextAreaDescriptionInstructions().getCaret().setDot(0);
+		}	
+
+		/**
+		 * <p>Adds an method item to the <code>jComboBoxMethods</code>.</p>
+		 * 
+		 * @param name Name of the new method
+		 */
+		public void addMethodItem(String name) {
+			this.jComboBoxMethods.addItem(name);		
+			
+			// Displays description of the first item added by default
+			if (this.lastSelectedMethod == null)
+			{
+				this.lastSelectedMethod = getJComboBoxMethods().getSelectedItem();
+				currentMethodTypes = javaFileMethodsLoader.getMethodParametersType((String)lastSelectedMethod);
+				
+				if (currentMethodTypes.size() == 0)
+					getJTextField().setEditable(false);
+				else
+					getJTextField().setEditable(true);
+				
+				displayMethodDescription(name);
+			}
+		}
+		
+		/**
+		 * <p>Removes a method item from the <code>jComboBoxMethods</code>.</p>
+		 * 
+		 * @param name Name of a method to remove
+		 */
+		public void removeMethodItem(String name) {
+			this.jComboBoxMethods.removeItem(name);
+		}
+		
+		/**
+		 * <p>Removes all method items from the <code>jComboBoxMethods</code>.</p>
+		 */
+		public void removeAllMethodItems() {
+			this.jComboBoxMethods.removeAll();
+		}
+
+		/**
+		 * <p>This method initializes <code>jTextField</code>.</p>
+		 * 	
+		 * @return javax.swing.JTextField	
+		 */
+		private JTextField getJTextField() {
+			if (jTextField == null) {
+				jTextField = new JTextField();
+				jTextField.setPreferredSize(new Dimension(parametersTextFieldWidth, parametersTextFieldHeight));
+			}
+			return jTextField;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelMethod</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelMethod() {
+			if (jLabelMethod == null) {
+				jLabelMethod = new JLabel();
+				jLabelMethod.setText(Messages.getText("method"));
+			}
+			return jLabelMethod;
+		}
+
+		/**
+		 * <p>This method initializes <code>jLabelParameters</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelParameters() {
+			if (jLabelParameters == null) {
+				jLabelParameters = new JLabel();
+				jLabelParameters.setPreferredSize(new Dimension(this.jLabelWidth, this.jLabelHeight));
+				jLabelParameters.setText(Messages.getText("parameters"));
+			}
+			return jLabelParameters;
+		}
+		
+		/**
+		 * <p>This method initializes <code>jPanelMethods</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPanelMethods() {
+			if (jPanelMethods == null) {
+				jPanelMethods = new JPanel();		
+				jPanelMethods.setPreferredSize(new Dimension(methodsPanelWidth, methodsPanelHeight));
+				jPanelMethods.setSize(new Dimension(methodsPanelWidth, methodsPanelHeight));
+				jPanelMethods.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
+				
+				GridLayout gridLayout = new GridLayout(2, 2);
+				gridLayout.setHgap(4);
+				gridLayout.setVgap(4);
+				jPanelMethods.setLayout(gridLayout);
+				
+				jPanelMethods.add(getJLabelMethod());
+				jPanelMethods.add(getJLabelComponents());
+				jPanelMethods.add(getJComboBoxMethods());
+				jPanelMethods.add(getJComboBoxTestObjects());
+			}
+			return jPanelMethods;
+		}
+		
+		/**
+		 * <p>This method initializes <code>jLabelComponents</code>.</p>
+		 * 	
+		 * @return javax.swing.JLabel	
+		 */
+		private JLabel getJLabelComponents() {
+			if (jLabelComponents == null) {
+				jLabelComponents = new JLabel();
+				jLabelComponents.setText(Messages.getText("object"));
+			}
+			return jLabelComponents;
+		}
+
+		/**
+		 * <p>This method initializes <code>jComboBoxTestObjects</code>.</p>
+		 * 	
+		 * @return javax.swing.JComboBox	
+		 */
+		private JComboBox getJComboBoxTestObjects() {
+			if (jComboBoxTestObjects == null) {
+				jComboBoxTestObjects = new JComboBox();
+				jComboBoxTestObjects.setPreferredSize(new Dimension(jComboBoxWidth, jComboBoxHeigth));
+				jComboBoxTestObjects.setSize(new Dimension(jComboBoxWidth, jComboBoxHeigth));
+				jComboBoxTestObjects.setMaximumSize(new Dimension(jComboBoxWidth, jComboBoxHeigth));
+
+				jComboBoxTestObjects.getModel().addListDataListener(new ListDataListener() {
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#contentsChanged(javax.swing.event.ListDataEvent)
+					 */
+					public void contentsChanged(ListDataEvent e) {
+						Object item = jComboBoxTestObjects.getSelectedItem();
+
+						if (item != null)
+							jComboBoxTestObjects.setToolTipText(item.toString());
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalAdded(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalAdded(ListDataEvent e) {
+					}
+
+					/*
+					 * (non-Javadoc)
+					 * @see javax.swing.event.ListDataListener#intervalRemoved(javax.swing.event.ListDataEvent)
+					 */
+					public void intervalRemoved(ListDataEvent e) {
+					}
+				});
+			}
+			return jComboBoxTestObjects;
+		}
+		
+		/**
+		 * <p>Adds an object for testing.</p>
+		 * 
+		 * @param key A reference/name of the object
+		 * @param object The object
+		 */
+		public void addTestObject(Object key, Object object) {
+			this.testObjects.put(key, object);
+			this.jComboBoxTestObjects.addItem(key);
+		}
+		
+		/**
+		 * <p>Removes a testing object.</p>
+		 * 
+		 * @param key A reference/name of the object
+		 */
+		public void removeTestObject(Object key) {
+			this.testObjects.remove(key);
+			this.jComboBoxTestObjects.removeItem(key);
+		}
+		
+		/**
+		 * <p>Removes all testing objects.</p>
+		 */
+		public void removeAllTestObjects() {
+			this.testObjects.clear();
+			this.jComboBoxTestObjects.removeAllItems();
+		}
+		
+		/**
+		 * <p>This method initializes <code>jScrollPaneDescriptionInstructions</code>.</p>
+		 * 	
+		 * @return javax.swing.JScrollPane	
+		 */
+		private JScrollPane getJScrollPaneDescriptionInstructions() {
+			if (jScrollPaneDescriptionInstructions == null) {
+				jScrollPaneDescriptionInstructions = new JScrollPane(getJTextAreaDescriptionInstructions());
+				Dimension dimension = getJTextAreaDescriptionInstructions().getPreferredSize();
+				dimension.height += jScrollPaneIncrementConstant;
+				dimension.width += jScrollPaneIncrementConstant;
+				jScrollPaneDescriptionInstructions.setPreferredSize(dimension);
+			}
+			return jScrollPaneDescriptionInstructions;
+		}
+		
+		/**
+		 * <p>This method initializes <code>jTextAreaDescriptionInstructions</code>.</p>
+		 * 	
+		 * @return javax.swing.JTextArea	
+		 */
+		private JTextArea getJTextAreaDescriptionInstructions() {
+			if (jTextAreaDescriptionInstructions == null) {
+				jTextAreaDescriptionInstructions = new JTextArea(rowsOfJTextAreaDescriptionInstructions, columnsOfJTextAreaDescriptionInstructions);
+				jTextAreaDescriptionInstructions.setEditable(false);
+			}
+			return jTextAreaDescriptionInstructions;
+		}
+		
+		/**
+		 * <p>This method initializes <code>jButtonTest</code>.</p>
+		 * 	
+		 * @return javax.swing.JButton	
+		 */
+		private JButton getJButtonTest() {
+			if (jButtonTest == null) {
+				jButtonTest = new JButton();
+				jButtonTest.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
+				jButtonTest.setText(Messages.getText("test"));
+				jButtonTest.addMouseListener(new MouseAdapter() {
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						try {
+							String methodHead = (String)getJComboBoxMethods().getSelectedItem();
+							if (methodHead == null)
+							{
+								JOptionPane.showMessageDialog(null, Messages.getText("selectAMethod"), Messages.getText("warning"), JOptionPane.WARNING_MESSAGE);
+								return;
+							}
+							
+							int selectedTestObjectIndex = getJComboBoxTestObjects().getSelectedIndex();
+							if (selectedTestObjectIndex == -1)
+							{
+								JOptionPane.showMessageDialog(null, Messages.getText("selectAComponent"), Messages.getText("warning"), JOptionPane.WARNING_MESSAGE);
+								return;
+							}
+							
+							// If the method selected needs an special treatment
+							if (javaFileMethodsLoader.hasTheMethodAnStrangeParameterType(methodHead) || javaFileMethodsLoader.hasTheMethodAnStrangeReturnParameterType(methodHead))
+							{
+								JOptionPane.showMessageDialog(null, Messages.getText("cantTestThisMethod"), Messages.getText("warning"), JOptionPane.WARNING_MESSAGE);
+								return;
+							}
+							
+							Vector<Object> parametersWritten = getParametersWritten();
+							if (parametersWritten.size() != currentMethodTypes.size())
+							{
+								JOptionPane.showMessageDialog(null, Messages.getText("incorrectNumberOfParametersWritten"), Messages.getText("warning"), JOptionPane.WARNING_MESSAGE);
+								return;
+							}
+							
+							// Defines the type of parameters for the current selected method
+							Class parameterTypes[] = new Class[currentMethodTypes.size()];
+
+							// Create the 'parameters' array
+							Object parameters[] = new Object[currentMethodTypes.size()];
+
+							for (int i = 0; i < currentMethodTypes.size(); i++)
+							{
+								MethodParameter parameter = parametersTypeIsCorrect((String)parametersWritten.get(i), (Integer)currentMethodTypes.get(i));
+	
+								if (parameter == null)
+								{
+									JOptionPane.showMessageDialog(null, Messages.getText("incorrectParameter") + ": " + (String)parametersWritten.get(i), Messages.getText("warning"), JOptionPane.WARNING_MESSAGE);
+									return;
+								}
+								
+								parameters[i] = parameter.getParameter();
+								parameterTypes[i] = parameter.getType();
+							}
+							
+							// Select the "log" tab of the jTabbedPane
+							getJTabbedPaneOtherUtilities().setSelectedIndex(1);							
+							
+							// Gets the frame of the object selected
+							String objectName = getJComboBoxTestObjects().getSelectedItem().toString();
+							JFrame jTestObjectFrame = ((JFrame)testObjects.get(objectName));
+							
+							// Sets the focus to the frame of the selected object
+							((JFrame)jTestObjectFrame).getRootPane().requestDefaultFocus();
+							
+							// Gets the selected object for test
+							Object object = jTestObjectFrame.getContentPane().getComponent(0);
+							
+							// Gets the class of the current selected object
+							Class testObjectClass = object.getClass();
+								
+							// Gets the method that corresponds with the selected method
+							String methodName = javaFileMethodsLoader.getMethodName(methodHead);
+							Method method = testObjectClass.getMethod(methodName, parameterTypes);
+							
+							// Show information about the next method to do 
+							getJTextAreaLog().append(Messages.getText("invoke") +"(" + objectName + ", " + methodName + "):\n");
+							
+							// Invoke the selected method for the selected object
+							Object objectReturned = method.invoke(object, parameters);
+							
+							// Show the results of the method
+							if (objectReturned != null)
+								getJTextAreaLog().append(Messages.getText("resultOf") +"(" + objectName + ", " + methodName + "): " + objectReturned.toString() + "\n");
+						}
+						catch(Exception e) {
+							e.printStackTrace();
+						}
+					}
+				});
+			}
+			return jButtonTest;
+		}
+		
+		/**
+		 * <p>This method initializes <code>jTabbedPaneOtherUtilities</code>.</p>	
+		 * 	
+		 * @return javax.swing.JTabbedPane	
+		 */
+		private JTabbedPane getJTabbedPaneOtherUtilities() {
+			if (jTabbedPaneOtherUtilities == null) {
+				jTabbedPaneOtherUtilities = new JTabbedPane();
+				jTabbedPaneOtherUtilities.setPreferredSize(new Dimension(otherUtilitiesJTabbedPaneWidth, otherUtilitiesJTabbedPaneHeight));
+				
+				JPanel panel1 = new JPanel();
+				panel1.setPreferredSize(new Dimension(otherUtilitiesJTabbedPaneWidth - 10, 30));
+				panel1.add(getJLabelParameters());
+				panel1.add(getJTextField());
+				
+				JPanel tab1Pane = new JPanel();
+				tab1Pane.add(getJScrollPaneDescriptionInstructions());
+				tab1Pane.add(panel1);
+				jTabbedPaneOtherUtilities.addTab(Messages.getText("description"), tab1Pane);
+				
+				jTabbedPaneOtherUtilities.addTab(Messages.getText("log"), getJScrollPaneLog());
+			}
+			return jTabbedPaneOtherUtilities;
+		}
+		
+		/**
+		 * <p>Verifies if a parameter is of one particular type: if <code>true</code> -> returns a <code>MethodParameter</code> object with
+		 * the type codification and the parameter as an object of its type; if <code>false</code> -> returns <code>null</code>.</p>
+		 * 
+		 * @param parameter A parameter as a name
+		 * @param type An Integer object with the codification of the type
+		 * @return <code>Null<code> or a <code>MethodParameter<code> object with an object of the same type as the parameter type, and
+		 *    the codification of the type.
+		 */
+		private MethodParameter parametersTypeIsCorrect(String parameter, Integer type) {
+			MethodParameter methodParameter = new MethodParameter();
+			
+			switch (type.intValue()) {
+			case JavaFileMethodsLoader.BOOLEAN_TYPE:
+				if (parameter.compareTo("true") == 0)
+				{
+					methodParameter.setParameter(new Boolean(true));
+					methodParameter.setType(Boolean.TYPE);				
+				}
+				else
+				{
+					if (parameter.compareTo("false") == 0)
+					{
+						methodParameter.setParameter(new Boolean(false));
+						methodParameter.setType(Boolean.TYPE);				
+					}
+					else
+						return null;
+				}
+				return methodParameter;
+			case JavaFileMethodsLoader.CHAR_TYPE:
+				if ((parameter.length() == 3) && (parameter.charAt(0) == '\'') && (parameter.charAt(2) == '\''))
+				{
+					methodParameter.setParameter(new Character(parameter.charAt(1)));
+					methodParameter.setType(Character.TYPE);				
+				}
+				else
+					return null;
+			case JavaFileMethodsLoader.FLOAT_TYPE:
+				try	{
+					methodParameter.setParameter(new Float(parameter));
+					methodParameter.setType(Float.TYPE);
+					return methodParameter;
+				}
+				catch(Exception e) {
+					return null;
+				}
+			case JavaFileMethodsLoader.DOUBLE_TYPE:
+				try	{
+					methodParameter.setParameter(new Double(parameter));
+					methodParameter.setType(Double.TYPE);
+					return methodParameter;
+				}
+				catch(Exception e) {
+					return null;
+				}
+			case JavaFileMethodsLoader.INT_TYPE:
+				try	{
+					methodParameter.setParameter(new Integer(parameter));
+					methodParameter.setType(Integer.TYPE);
+					return methodParameter;
+				}
+				catch(Exception e) {
+					return null;
+				}
+			case JavaFileMethodsLoader.STRING_TYPE:
+				// If the string is between "" simbols:
+				if ((parameter.charAt(0) == '\"') && (parameter.charAt(parameter.length() - 1) == '\"'))
+				{
+					methodParameter.setParameter(new String(parameter.substring(1, parameter.length() -1)));
+					methodParameter.setType(String.class);
+					return methodParameter;
+				}
+				else
+					return null;
+			case JavaFileMethodsLoader.OBJECT_TYPE:
+				// If the string written is between "" simbols:
+				if ((parameter.charAt(0) == '\"') && (parameter.charAt(parameter.length() - 1) == '\"'))
+				{
+					methodParameter.setParameter(parameter.substring(1, parameter.length() -1));
+					methodParameter.setType(Object.class);
+					return methodParameter;
+				}
+				else
+					return null;
+			default: // JavaFileMethodsLoader.OTHER_TYPE			
+				return null;
+			}
+		}
+		
+		/**
+		 * <p>Return a Vector with the parameters written as <code>String</code>.</p>
+		 * 
+		 * @return A Vector with the parameters written
+		 */
+		private Vector<Object> getParametersWritten() {
+			Vector<Object> parameters = new Vector<Object>(0, 1);
+			
+			String parametersWritten = getJTextField().getText().trim();
+			
+			// If there is only one parameter
+			if (parametersWritten.indexOf(',') == -1)
+			{
+				if (parametersWritten.length() > 0)
+					parameters.add(parametersWritten);
+				else
+					return parameters;
+			}
+			else
+			{
+			StringTokenizer tokens = new StringTokenizer(parametersWritten, ",");
+
+				while(tokens.hasMoreTokens())
+					parameters.add(tokens.nextToken().trim());
+			}
+			
+			return parameters;
+		}
+		
+		/**
+		 * <p>This method initializes <code>jButtonReset</code>.</p>
+		 * 	
+		 * @return javax.swing.JButton	
+		 */
+		private JButton getJButtonReset() {
+			if (jButtonReset == null) {
+				jButtonReset = new JButton();
+				jButtonReset.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
+				jButtonReset.setText(Messages.getText("reset"));
+				jButtonReset.addMouseListener(new MouseAdapter() {
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						resetOtherTestsPanel();
+					}
+				});
+			}
+			return jButtonReset;
+		}
+
+		/**
+		 * <p>Resets this <code>JPanel</code>: all will be similar as at beginning except the log, that won't be reset.</p>
+		 */
+		private void resetOtherTestsPanel() {
+			getJTextAreaDescriptionInstructions().setText("");
+			
+			getJTextField().setText("");
+			
+			if (getJComboBoxMethods().getItemCount() == 0)
+			{
+				getJComboBoxMethods().setSelectedIndex(-1);
+				this.lastSelectedMethod = this.currentMethodTypes = null;
+				getJTextField().setEditable(false);
+			}
+			else
+			{
+				this.getJComboBoxMethods().setSelectedIndex(0);
+				this.lastSelectedMethod = getJComboBoxMethods().getSelectedItem();
+				currentMethodTypes = javaFileMethodsLoader.getMethodParametersType((String)lastSelectedMethod);
+				
+				if (currentMethodTypes.size() == 0)
+					getJTextField().setEditable(false);
+				else
+					getJTextField().setEditable(true);
+				
+				displayMethodDescription(this.lastSelectedMethod);
+			}
+
+			// Removes all test objects (closing the JFrames that cointain them)
+			Object[] objects = testObjects.keySet().toArray();
+			for (int i = 0; i < objects.length; i++)
+			{
+				((JFrame)testObjects.get(objects[i])).dispose();
+				((JFrame)testObjects.get(objects[i])).setVisible(false); // For complete de JFrame close method (it's necessary)
+			}
+
+			// Set selected the firt tab
+			getJTabbedPaneOtherUtilities().setSelectedIndex(0);
+		}
+		
+		/**
+		 * <p>This method initializes <code>jPaneButtons</code>.</p>
+		 * 	
+		 * @return javax.swing.JPanel	
+		 */
+		private JPanel getJPaneButtons() {
+			if (jPanelButtons == null) {
+				FlowLayout flowLayout = new FlowLayout();
+				flowLayout.setAlignment(FlowLayout.RIGHT);
+				jPanelButtons = new JPanel();
+				jPanelButtons.setPreferredSize(new Dimension(buttonsPanelWidth, buttonsPanelHeight));
+				jPanelButtons.setLayout(flowLayout);
+				jPanelButtons.add(getJButtonOtherTestsHelp(), null);
+				jPanelButtons.add(getJButtonFill(), null);
+				jPanelButtons.add(getJButtonReset(), null);
+				jPanelButtons.add(getJButtonTest(), null);
+			}
+			return jPanelButtons;
+		}
+
+		/**
+		 * <p>Returns the number of testing objects that this panel has in this moments.</p>
+		 * 
+		 * @return Number of testing objects that this panel has in this moments
+		 */
+		public int getTestObjectsCount() {
+			return this.getJComboBoxTestObjects().getItemCount();
+		}
+
+		/**
+		 * <p>This method initializes <code>jButtonLog</code>.</p>
+		 * 	
+		 * @return javax.swing.JButton	
+		 */
+		private JButton getJButtonFill() {
+			if (jButtonFill == null) {
+				jButtonFill = new JButton();
+				jButtonFill.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
+				jButtonFill.setText(Messages.getText("fill"));
+				jButtonFill.addMouseListener(new MouseAdapter() {
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						try
+						{
+							// It must be selected a component -> else: show a message dialog and don't fill with data the object
+							int selectedTestObjectIndex = getJComboBoxTestObjects().getSelectedIndex();
+							if (selectedTestObjectIndex == -1)
+							{
+								JOptionPane.showMessageDialog(null, Messages.getText("selectAComponent"), Messages.getText("warning"), JOptionPane.WARNING_MESSAGE);
+								return;
+							}							
+							
+							JFrame jTestObjectFrame = ((JFrame)testObjects.get(getJComboBoxTestObjects().getSelectedItem().toString()));
+							
+							// Sets the focus to the frame of the selected object
+							((JFrame)jTestObjectFrame).getRootPane().requestDefaultFocus();
+							
+							// Gets the selected object for test
+							Object object = jTestObjectFrame.getContentPane().getComponent(0);
+							
+							// Gets the class of the current selected object
+							Class testObjectClass = object.getClass();
+
+							// Defines the type of parameter for the 'addItem' method
+							Class addItemParameterTypes[] = new Class[1];
+							addItemParameterTypes[0] = Object.class;
+
+							// Gets the 'addItem' method of the current selected object
+							Method addItemMethod = testObjectClass.getMethod("addItem", addItemParameterTypes);
+							
+							// ADDS SAMPLE DATA:
+							addSampleData(object, addItemMethod);						
+						}
+						catch(Exception e) {
+							e.printStackTrace();
+						}
+					}
+				});
+			}
+			
+			return jButtonFill;
+		}
+		
+		/**
+		 * <p>This method add sample data (items) to the current selected object invoking the "addItem" method for the object.</p>
+		 * 
+		 * @param object Object where the items will be added
+		 * @param addItemMethod Method "addItem" to invoke
+		 */
+		private void addSampleData(Object object, Method addItemMethod) {
+			try {
+				// Create the 'parameters' array
+				Object parameters[] = new Object[1];
+				
+				// Invokes the 'addItem' method of the object for adding sample items
+				parameters[0] = "_fwAndami";		
+				addItemMethod.invoke(object, parameters);
+				
+				parameters[0] = "appgvSIG";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "extAddEventTheme";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "extAddIDEELayers";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "extCAD";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "extCenterViewToPoint";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "extJDBC";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "extNomenclatorIGN";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "extScripting";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "extWCS";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "extWMS";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "libCorePlugin";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "libCq CMS for java";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "libDriverManager";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "libFMap";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "libGDBMS";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "libIverUtiles";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "libNomeclatorIGN";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "libNomenclatorIGN_GUI";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "libRemoteServices";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "libUI";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "May�scula1";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "MAY�SCULA2";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "Mayuscula3";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "mayuscula4?";		
+				addItemMethod.invoke(object, parameters);
+				
+				parameters[0] = "min�scula1";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "minuscula2";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "�and�";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "�AND�";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "a";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "aa";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "aaa";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "aaaa";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "aaaaa";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "af�?=)(/?/";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = ".";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "-a,malj'=)/";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "ZZZZZ";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "BLIUE� ";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "etye7yyy-er";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "_abcdefghijklmn�opqrstuvwxyz";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "_0123456789";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "...";		
+				addItemMethod.invoke(object, parameters);
+
+				parameters[0] = "gvSIG";		
+				addItemMethod.invoke(object, parameters);
+				
+				parameters[0] = "�LTIMO ITEM EN A�ADIRSE POR DEFECTO";		
+				addItemMethod.invoke(object, parameters);
+
+			} catch (IllegalArgumentException e) {
+				e.printStackTrace();
+			} catch (IllegalAccessException e) {
+				e.printStackTrace();
+			} catch (InvocationTargetException e) {
+				e.printStackTrace();
+			}		
+		}
+
+		/**
+		 * <p>This method initializes <code>jButtonOtherTestsHelp</code>.</p>
+		 * 	
+		 * @return javax.swing.JButton	
+		 */
+		private JButton getJButtonOtherTestsHelp() {
+			if (jButtonOtherTestsHelp == null) {
+				jButtonOtherTestsHelp = new JButton();
+				jButtonOtherTestsHelp.setPreferredSize(new Dimension(buttonWidth, buttonHeight));
+				jButtonOtherTestsHelp.setText(Messages.getText("help"));
+				jButtonOtherTestsHelp.addMouseListener(new MouseAdapter() {
+					/*
+					 * (non-Javadoc)
+					 * @see java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
+					 */
+					public void mouseClicked(MouseEvent arg0) {
+						// Selects the 'description' tab pane
+						getJTabbedPaneOtherUtilities().setSelectedIndex(0);
+						
+						// Sets the help text
+						getJTextAreaDescriptionInstructions().setText(globalHelp);
+						
+						// Adjusts the view (jTextAreaDescriptionInstructions) to the jtreeRoot-left corner
+						getJTextAreaDescriptionInstructions().getCaret().setDot(0);
+						
+						// Reset the current method selected
+						lastSelectedMethod = null;
+						getJTextField().setEditable(false);
+						currentMethodTypes = null;
+						getJComboBoxMethods().setSelectedIndex(-1);
+					}					
+				});
+
+			}
+			return jButtonOtherTestsHelp;
+		}
+		
+		/**
+		 * <p>This method initializes <code>jScrollPaneLog</code>.</p>
+		 * 	
+		 * @return javax.swing.JScrollPane	
+		 */
+		private JScrollPane getJScrollPaneLog() {
+			if (jScrollPaneLog == null) {
+				jScrollPaneLog = new JScrollPane(getJTextAreaLog());
+			}
+			return jScrollPaneLog;
+		}
+
+		/**
+		 * <p>This method initializes <code>jTextAreaLog</code>.</p>
+		 * 	
+		 * @return javax.swing.JTextArea	
+		 */
+		private JTextArea getJTextAreaLog() {
+			if (jTextAreaLog == null) {
+				jTextAreaLog = new JTextArea();
+				jTextAreaLog.setEditable(false);
+			}
+			return jTextAreaLog;
+		}
+		
+		/**
+		 * <p>This class has information about a parameter of a method of a class.</p>
+		 * 
+		 * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+		 */
+		private class MethodParameter implements Serializable {
+			private static final long serialVersionUID = -6492607912912912179L;
+
+			private Object parameter;
+			private Class type;
+			
+			/**
+			 * <p>Default constructor without parameters.</p>
+			 */
+			public MethodParameter() {
+				super();
+			}
+			
+			/**
+			 * <p>Default constructor with 2 parameters.</p>
+			 * 
+			 * @param parameter The parameter object
+			 * @param type The type of the parameter
+			 */
+			public MethodParameter(Object parameter, Class type) {
+				super();
+				this.parameter = parameter;
+				this.type = type;
+			}
+		
+			/**
+			 * <p>Returns the parameter object.</p>
+			 * 
+			 * @return Parameter object
+			 */
+			public Object getParameter() {
+				return parameter;
+			}
+			
+			/**
+			 * <p>Sets the parameter object.</p>
+			 * 
+			 * @param parameter Parameter object
+			 */
+			public void setParameter(Object parameter) {
+				this.parameter = parameter;
+			}
+			
+			/**
+			 * <p>Returns the type of the parameter.</p>
+			 * 
+			 * @return Type of the parameter
+			 */
+			public Class getType() {
+				return type;
+			}
+			
+			/**
+			 * <p>Sets the type of the parameter.</p>
+			 * 
+			 * @param type Type of the parameter
+			 */
+			public void setType(Class type) {
+				this.type = type;
+			}	
+		}
+	}
+	
+	
+	/**
+	 * <p>This class loads from a java file the methods of the class defined, and has some methods for get or manipulate them
+	 * (It's supposed that the file to load has a determinated structure).</p>
+	 *  
+	 * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+	 */
+	private class JavaFileMethodsLoader implements Serializable {
+		private static final long serialVersionUID = 4934916590524133748L;
+
+		private String className;
+		private Map<String, String> methods;
+		private Vector<Object> methodHeads;
+		private String filePath;
+		private File file;
+		
+		public static final int BOOLEAN_TYPE = 0;
+		public static final int STRING_TYPE = 1;
+		public static final int INT_TYPE = 2;
+		public static final int FLOAT_TYPE = 3;
+		public static final int DOUBLE_TYPE = 4;
+		public static final int CHAR_TYPE = 5;
+		public static final int VOID_TYPE = 6;
+		public static final int OBJECT_TYPE = 7;
+		public static final int OTHER_TYPE = 8;
+		
+		/**
+		 * <p>Default constructor without parameters.</p>
+		 */
+		public JavaFileMethodsLoader() {
+			methods = new HashMap<String, String>();
+			methodHeads = new Vector<Object>(0, 1); // Initial capacity = 0; Increment capacity = 1
+		}
+		
+		/**
+		 * <p>Default constructor with a parameter: the path of the file to load.</p>
+		 * 
+		 * <p>Loads that file.</p>
+		 * 
+		 * @param path The path for the file to load
+		 */
+		public JavaFileMethodsLoader(String path) {
+			methods = new HashMap<String, String>();
+			methodHeads = new Vector<Object>(0, 1); // Initial capacity = 0; Increment capacity = 1
+
+			this.filePath = path;
+			this.file = new File(this.filePath);
+			this.className = this.obteinClassName();
+			this.processFile();				
+		}
+		
+		/**
+		 * <p>Obtains the name of the class.</p>
+		 * 
+		 * @return Name of the main class of the file loaded
+		 */
+		private String obteinClassName() {
+			return file.getName().substring(0, file.getName().lastIndexOf('.'));
+		}
+		
+		/**
+		 * <p>Returns the name of the main class of the file loaded.</p>
+		 * 
+		 * @return Name of the main class of the file loaded
+		 */
+		public String getClassName() {
+			return this.className;
+		}
+		
+		/**
+		 * <p>Returns the name of the file loaded.</p>
+		 * 
+		 * @return Name of the file loaded
+		 */
+		public String getClassFileName() {
+			return this.file.getName();
+		}
+		
+		/**
+		 * <p>Returns a method head in order as it was declared/defined in the file loaded.</p>
+		 * 
+		 * @param position Order of the method in the file, for return its head
+		 * @return A method head
+		 */
+		public String getMethodHead(int position) {
+			return (String)methodHeads.get(position);
+		}
+
+		/**
+		 * <p>Returns the documentation of a method.</p>
+		 * 
+		 * @param methodHead A method head
+		 * @return Documentation of a method
+		 */
+		public String getMethodDocumentation(String methodHead) {
+			return (String)methods.get(methodHead);
+		}
+		
+		/**
+		 * <p>Returns only the name from a method head.</p>
+		 * 
+		 * @param methodHead A method head
+		 * @return A name of a method
+		 */
+		public String getMethodName(String methodHead) {
+			int endPosition = methodHead.indexOf('(');
+
+			StringTokenizer tokens = new StringTokenizer(methodHead.substring(0, endPosition), " ");
+
+			int numberOfTokens = tokens.countTokens();
+			
+			if (numberOfTokens == 0)
+				return null;
+			else
+			{
+				// Get the last token -> which is the name of the method
+				for (int i = 0; i < (numberOfTokens - 1); i++)
+					tokens.nextToken();
+				
+				return tokens.nextToken();
+			}
+		}
+		
+		/**
+		 * <p>Returns a vector with the codes of the parameter types of a method from its method head.</p>
+		 * 
+		 * @param methodHead A method head
+		 * @return A vector with the parameter types of a method. Each element in the vector is an Integer object
+		 */
+		public Vector<Object> getMethodParametersType(String methodHead) {
+			Vector<Object> types = new Vector<Object>(0, 1);
+			
+			int startPosition = methodHead.indexOf('(') + 1;
+			int endPosition = methodHead.lastIndexOf(')');
+			
+			StringTokenizer tokens = new StringTokenizer(methodHead.substring(startPosition, endPosition).trim(), ",");
+			
+			a: while(tokens.hasMoreTokens()) {
+				String token = tokens.nextToken().trim();
+				
+				if (token.startsWith("boolean "))
+				{
+					types.add(new Integer(JavaFileMethodsLoader.BOOLEAN_TYPE));
+					continue a;
+				}
+				
+				if (token.startsWith("int "))
+				{
+					types.add(new Integer(JavaFileMethodsLoader.INT_TYPE));
+					continue a;
+				}
+			
+				if (token.startsWith("double "))
+				{
+					types.add(new Integer(JavaFileMethodsLoader.DOUBLE_TYPE));
+					continue a;
+				}
+		
+				if (token.startsWith("String "))
+				{
+					types.add(new Integer(JavaFileMethodsLoader.STRING_TYPE));
+					continue a;
+				}
+	
+				if (token.startsWith("char "))
+				{
+					types.add(new Integer(JavaFileMethodsLoader.CHAR_TYPE));
+					continue a;
+				}
+
+				if (token.startsWith("float "))
+				{
+					types.add(new Integer(JavaFileMethodsLoader.FLOAT_TYPE));
+					continue a;
+				}
+				
+				if (token.startsWith("Object "))
+				{
+					types.add(new Integer(JavaFileMethodsLoader.OBJECT_TYPE));
+					continue a;
+				}
+				
+				// Other type of parameters
+				types.add(new Integer(JavaFileMethodsLoader.OTHER_TYPE));
+			}
+			
+			return types;
+		}
+		
+		/**
+		 * <p>Returns the return type name of a method.</p>
+		 * 
+		 * @param methodHead A method head
+		 * @return A return type name
+		 */
+		public String getMethodReturnTypeName(String methodHead) {
+			int endPosition = methodHead.indexOf('(');
+			String aux = methodHead.substring(0, endPosition);
+			endPosition = aux.lastIndexOf(' ');
+			return methodHead.substring(0, endPosition);
+		}
+		
+		/**
+		 * <p>Returns the code of the return type of a method from its method head.</p>
+		 * 
+		 * @param methodHead A method head
+		 * @return An Integer object with the code
+		 */
+		public Integer getMethodReturnType(String methodHead) {
+			String returnType = getMethodReturnTypeName(methodHead);
+			
+			if (returnType.compareTo("boolean") == 0)
+				return new Integer(JavaFileMethodsLoader.BOOLEAN_TYPE);
+			
+			if (returnType.compareTo("int") == 0)
+				return new Integer(JavaFileMethodsLoader.INT_TYPE);
+		
+			if (returnType.compareTo("double") == 0)
+				return new Integer(JavaFileMethodsLoader.DOUBLE_TYPE);
+	
+			if (returnType.compareTo("String") == 0)
+				return new Integer(JavaFileMethodsLoader.STRING_TYPE);
+
+			if (returnType.compareTo("char") == 0)
+				return new Integer(JavaFileMethodsLoader.CHAR_TYPE);
+
+			if (returnType.compareTo("float") == 0)
+				return new Integer(JavaFileMethodsLoader.FLOAT_TYPE);
+			
+			if (returnType.compareTo("void") == 0)
+				return new Integer(JavaFileMethodsLoader.VOID_TYPE);
+			
+			if (returnType.compareTo("Object") == 0)
+				return new Integer(JavaFileMethodsLoader.OBJECT_TYPE);
+			
+			// Other type of parameters
+			return new Integer(JavaFileMethodsLoader.OTHER_TYPE);
+			
+		}
+		
+		/**
+		 * <p>Returns true if the method has almost one parameter that its type is unkwown <code>(JavaFileMethodsLoader.OTHER_TYPE)</code>.</p>
+		 * 
+		 * @param methodHead A method head
+		 * @return true or false
+		 */
+		public boolean hasTheMethodAnStrangeParameterType(String methodHead) {
+			Vector<Object> types = this.getMethodParametersType(methodHead);
+			Integer otherType = new Integer(JavaFileMethodsLoader.OTHER_TYPE);
+			
+			for (int i = 0; i < types.size(); i++) {
+				if (((Integer)types.get(i)).intValue() == otherType.intValue())
+					return true;
+			}
+			
+			return false;			
+		}
+		
+		/**
+		 * <p>Returns true if the method has a return parameter that its type is unkwown <code>(JavaFileMethodsLoader.OTHER_TYPE)</code>.</p>
+		 * 
+		 * @param methodHead A method head
+		 * @return true or false
+		 */
+		public boolean hasTheMethodAnStrangeReturnParameterType(String methodHead) {
+			Integer otherType = new Integer(JavaFileMethodsLoader.OTHER_TYPE);
+			
+			if (((Integer)getMethodReturnType(methodHead)).intValue() == otherType.intValue())
+				return true;
+			
+			return false;
+		}
+		
+		/**
+		 * <p>Returns the number of methods loaded.</p>
+		 * 
+		 * @return Number of methods loaded
+		 */
+		public int size() {
+			return methodHeads.size();
+		}
+		
+		/**
+		 * <p>Returns the path of the file loaded.</p>
+		 * 
+		 * @return The path of the file loaded
+		 */
+		public String getPath() {
+			return filePath;
+		}
+
+		/**
+		 * <p>Sets a path for a file to load, and loads it.</p>
+		 * 
+		 * @param aPath A path for a file to load
+		 */
+		public void setPath(String aPath) {
+			this.filePath = aPath;
+			file = new File(this.filePath);
+			this.className = this.obteinClassName();
+			this.processFile();
+		}		
+
+		/**
+		 * <p>Verifies if can read the file and invokes a method for analyze it.</p>
+		 */
+		private void processFile() {
+			try
+			{
+				// Verify if exists the file
+				if (!file.exists())
+				{
+				     // File doesn't exists
+					 JOptionPane.showMessageDialog(null, Messages.getText("jOPMessageFileDoesntExists"), Messages.getText("error"), JOptionPane.ERROR_MESSAGE);
+					 return;
+				}
+				
+				// Verify if it's a file
+				if (!file.isFile())
+				{
+					 JOptionPane.showMessageDialog(null, Messages.getText("jOPMessageIncorrectFile"), Messages.getText("error"), JOptionPane.ERROR_MESSAGE);
+					 return;
+				}
+				
+				// Verify if it can be read
+				if (!file.canRead())
+				{
+					 JOptionPane.showMessageDialog(null, Messages.getText("jOPMessageFileWithoutReadPermissions"), Messages.getText("error"), JOptionPane.ERROR_MESSAGE);
+					 return;
+				}
+				
+				analyzeFile();
+			}
+			catch(Exception e)
+			{
+				e.printStackTrace();
+			}
+		}
+		
+		/**
+		 * <p>Analyes/loads a file, obtaining its methods and other information.</p>
+		 * 
+		 * @throws IOException 
+		 */
+		private void analyzeFile() throws IOException {
+			String line, commentary, methodHead;
+			int pos;
+			
+			// Process:
+			// Associates a buffered-reader to the file-reader of the file
+			BufferedReader input = new BufferedReader(new FileReader(file));
+
+			while(input.ready())
+			{
+				// Tries to read a commentary
+				line = input.readLine();
+
+				if (line.startsWith("\t/*")) // This include the "\t/**" and "\t/*" commentary starts
+				{
+					commentary = new String(line.trim());
+					
+					while((pos = (line = input.readLine()).indexOf("*/")) == -1)
+						commentary += "\n " + line.trim();
+					
+					commentary += "\n " + line.substring(0, pos+2).trim();
+					
+					// Tries to read the head of a method
+					line = input.readLine();
+
+					if (line.startsWith("\tpublic ") || line.startsWith("\tprivate ") || line.startsWith("\tprotected "))
+					{
+						// Ignore inner/nested classes
+						if (line.indexOf(" class ") == -1)
+						{
+							// Removes the '{' character if exists and does a trim:
+							if ((pos = line.indexOf("{")) != -1)
+								line = line.substring(0, pos);
+							
+							methodHead = new String(line.trim());
+							commentary = commentary.trim();
+
+							// Adds needed information of the new method
+							this.methodHeads.add(methodHead);
+							this.methods.put(methodHead, commentary);
+						}
+					}
+				}
+			}
+			
+			// Closes the buffered-reader
+			input.close();
+		}
+	}
+	
+	/**
+	 * <p>This class stores for a method, its previous commentary description.</p>
+	 * 
+	 * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+	 */
+	private class MethodsDescription implements Serializable {
+		private static final long serialVersionUID = 5425689217735155592L;
+
+		private String methodName;
+		private String description;
+
+		/**
+		 * <p>Default Constructor without parameters.</p>
+		 */
+		public MethodsDescription() {
+			super();
+		}
+
+		/**
+		 * <p>Default Constructor with 2 parameters.</p>
+		 * 
+		 * @param methodName Name of a method
+		 * @param description Description (commentary) of the method
+		 */
+		public MethodsDescription(String methodName, String description) {
+			super();
+			this.methodName = methodName;
+			this.description = description;
+		}
+
+		/**
+		 * <p>Returns the description of this method.</p>
+		 * 
+		 * @return Description of this method
+		 */
+		public String getDescription() {
+			return description;
+		}
+
+		/**
+		 * <p>Sets a description for this method.</p>
+		 * 
+		 * @param description A description for this method
+		 */
+		public void setDescription(String description) {
+			this.description = description;
+		}
+
+		/**
+		 * <p>Returns the name of this method.</p>
+		 * 
+		 * @return The name of this method
+		 */
+		public String getMethodName() {
+			return methodName;
+		}
+
+		/**
+		 * <p>Sets a name of this method.</p>
+		 * 
+		 * @param methodName A name for this method
+		 */
+		public void setMethodName(String methodName) {
+			this.methodName = methodName;
+		}
+	}
+
+	/**
+	 * <p>An output stream that writes its output to a <code>javax.swing.JTextArea</code> control.</p>
+	 * 
+	 * @see javax.swing.JTextArea
+	 *
+	 * @author Ranganath Kini
+	 */
+	public class TextAreaOutputStream extends OutputStream {
+	    private JTextArea textControl;
+	    
+	    /**
+	     * <p>Creates a new instance of TextAreaOutputStream which writes
+	     * to the specified instance of <code>javax.swing.JTextArea</code> control.</p>
+	     *
+	     * @param control   A reference to the javax.swing.JTextArea
+	     *                  control to which the output must be redirected
+	     *                  to.
+	     */
+	    public TextAreaOutputStream( JTextArea control ) {
+	        textControl = control;
+	    }
+
+	    /*
+	     * Writes the specified byte as a character to the
+	     * javax.swing.JTextArea.
+	     * 
+	     * @see java.io.OutputStream#write(int)
+	     *
+	     * @param   b   The byte to be written as character to the
+	     *              JTextArea.
+	     */
+		public void write(int arg0) throws IOException {
+	        // append the data as characters to the JTextArea control
+	        textControl.append( String.valueOf( ( char )arg0 ) );		
+		}
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/usertests/JFrameUserTestOfJComboBoxConfigurableLookUp.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/usertests/JFrameUserTestOfJComboBoxConfigurableLookUp.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/comboboxconfigurablelookup/usertests/JFrameUserTestOfJComboBoxConfigurableLookUp.java	(revision 38348)
@@ -0,0 +1,118 @@
+package org.gvsig.gui.beans.comboboxconfigurablelookup.usertests;
+
+import java.io.Serializable;
+
+import javax.swing.JFrame;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.comboboxconfigurablelookup.JComboBoxConfigurableLookUp;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*
+* For more information, contact:
+*
+*  Generalitat Valenciana
+*   Conselleria d'Infraestructures i Transport
+*   Av. Blasco Ib��ez, 50
+*   46010 VALENCIA
+*   SPAIN
+*
+*      +34 963862235
+*   gvsig@gva.es
+*      www.gvsig.gva.es
+*
+*    or
+*
+*   IVER T.I. S.A
+*   Salamanca 50
+*   46005 Valencia
+*   Spain
+*
+*   +34 963163400
+*   dac@iver.es
+*/
+
+/**
+ * <p>Creates and launches an application for testing {@link JComboBoxConfigurableLookUp JComboBoxConfigurableLookUp}.</p>
+ * 
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ * @version 07/02/2008
+ */
+public class JFrameUserTestOfJComboBoxConfigurableLookUp implements Serializable{
+	private static final long serialVersionUID = 5760643373469048220L;
+
+	private JPanelUserTestOfJComboBoxConfigurableLookUp mainPanel = null;
+	private JFrame frame;
+
+	/**
+	 * <p>Default constructor.</p>
+	 */
+	public JFrameUserTestOfJComboBoxConfigurableLookUp() {
+		createFrame();
+	}
+
+	/**
+	 * <p>Creates the main <code>JFrame</code> for execute the application, and adds to it the <code>JPanel</code> test application.</p> 
+	 */
+	private void createFrame() {
+		// Create: Configuration Frame
+		frame = new JFrame();
+		frame.setResizable(false);
+		frame.setTitle(Messages.getText("jComboBoxConfigurableLookUpByTheUser_frameTitle"));
+		frame.getContentPane().add(getJPanelUserTestOfJComboBoxConfigurableLookUp());
+		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+		frame.pack();
+
+		// Centers the frame in the middle of the screen
+		frame.setLocationRelativeTo(null);
+	}
+	
+	/**
+	 * <p>Initializes <code>mainPanel</code>.</p>
+	 * 
+	 * @return JPanelUserTestOfJComboBoxConfigurableLookUp
+	 */
+	private JPanelUserTestOfJComboBoxConfigurableLookUp getJPanelUserTestOfJComboBoxConfigurableLookUp() {
+		if (mainPanel == null) {
+			mainPanel = new JPanelUserTestOfJComboBoxConfigurableLookUp();
+		}
+		
+		return mainPanel;
+	}
+
+	/**
+	 * <p>Method for launch the application.</p>
+	 * 
+	 * @param args
+	 */
+	public static void main(String[] args) {
+		JFrameUserTestOfJComboBoxConfigurableLookUp app = new JFrameUserTestOfJComboBoxConfigurableLookUp();
+		app.setVisible(true);
+	}
+
+	/**
+	 * <p>Sets visible the frame.</p>
+	 * 
+	 * @param visible True or false
+	 */
+	public void setVisible(boolean visible) {
+		frame.setVisible(visible);
+	}	
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/progresspanel/Test2ProgressPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/progresspanel/Test2ProgressPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/progresspanel/Test2ProgressPanel.java	(revision 38348)
@@ -0,0 +1,70 @@
+package org.gvsig.gui.beans.progresspanel;
+
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+
+import org.apache.log4j.Logger;
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.incrementabletask.IncrementableTask;
+
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+/**
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class Test2ProgressPanel {
+
+	public static void main(String[] args) {
+		SampleProcess iprocess = new SampleProcess("Proceso de ejemplo",
+				Messages.getText("Ongoing_process_please_wait"));
+
+		IncrementableTask iTask = new IncrementableTask(iprocess, new ProgressPanel(false));
+		iTask.addIncrementableListener(iprocess);
+		iprocess.setIncrementableTask(iTask);
+
+		final SampleProcess f_iprocess = iprocess;
+		final IncrementableTask f_iTask = iTask;
+		
+		iTask.getProgressPanel().addComponentListener(new ComponentAdapter() {
+			/*
+			 * (non-Javadoc)
+			 * @see java.awt.event.ComponentAdapter#componentHidden(java.awt.event.ComponentEvent)
+			 */
+			public void componentHidden(ComponentEvent e) {
+				f_iTask.getProgressPanel().dispose();
+
+				/* Writes in the gvSIG log the results of the process */
+				String text = "\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n" +
+					"Resumen del proceso:\n" +
+					f_iprocess.getLog() +
+					"\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n";
+				Logger.getLogger(getClass().getName()).debug(text);
+			}
+		});
+
+		/* Starts the process */
+		iprocess.start();
+		iTask.start();
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/progresspanel/SampleProcess.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/progresspanel/SampleProcess.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/progresspanel/SampleProcess.java	(revision 38348)
@@ -0,0 +1,91 @@
+package org.gvsig.gui.beans.progresspanel;
+
+import org.gvsig.gui.beans.Messages;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.incrementabletask.IncrementableProcess;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+/**
+ * Process that adds a layer with derivative geometries, according the configuration. 
+ *
+ * @author Pablo Piqueras Bartolom� (pablo.piqueras@iver.es)
+ */
+public class SampleProcess extends IncrementableProcess {
+	public SampleProcess(String title, String label) {
+		super(title);
+
+		this.label = label;
+		this.isPausable = true;
+	}
+
+	/**
+	 * Sample process.
+	 * <br>
+	 * "cancelProcess" is a shared object that, if you want allow to cancel the process,
+	 *  you should read it once in a while and check if it's canceled, if true, throw an InterrupedException  
+	 * 
+	 * @throws InterruptedException if fails the process
+	 */
+	public void process() throws InterruptedException {
+		try {
+			percentage = 0;
+
+			for (int i = 1; i <= 20; i++) {
+				percentage = i * 5;
+				
+				if (cancelProcess.isCanceled()) {
+					throw new InterruptedException();
+				}
+
+				log.addLine("Paso: " + i);
+				Thread.sleep(1000);
+			}
+
+			percentage = 100;
+			log.addLine(Messages.getText("Process_finished_successfully"));
+			return;
+		}
+		catch (Exception ex) {
+			if (! cancelProcess.isCanceled()) {
+				// Next line must be uncommented
+				//NotificationManager.showMessageError(Messages.getText("Failed_the_process"), ex);
+				log.addLine(Messages.getText("Failed_the_process"));
+			}
+
+			/* CANCELLATION PROCESS */
+
+			// Must restore the changes
+			//....
+
+			throw new InterruptedException();
+		}
+		finally {
+			/* Summary of the process */
+			log.addLine("    Proceso de ejemplo con barra de progreso durante 20 segundos");
+
+			// Ends the progress panel
+			iTask.getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT).doClick();
+		}
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/progresspanel/TestProgressPanel.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/progresspanel/TestProgressPanel.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/progresspanel/TestProgressPanel.java	(revision 38348)
@@ -0,0 +1,134 @@
+package org.gvsig.gui.beans.progresspanel;
+
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
+import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+/**
+ * <code>TestProgressPanel</code>. Test para comprobar el funcionamiento del
+ * objeto <code>TestProgressPanel</code>
+ *
+ * @version 20/03/2007
+ * @author BorSanZa - Borja Sanchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestProgressPanel {
+
+	private tryPanel frame = null;
+
+	public class tryPanel implements Runnable, ButtonsPanelListener {
+		private ProgressPanel frame = new ProgressPanel();
+		private volatile Thread blinker;
+
+		public void showWindow() {
+			frame.getButtonsPanel().getButton(ButtonsPanel.BUTTON_PAUSE).setVisible(false);
+			frame.setTitle("Actualizando datos");
+			frame.showLog(false);
+			frame.getButtonsPanel().addButtonPressedListener(this);
+			frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+			frame.setVisible(true);
+		}
+
+		private boolean threadSuspended = false;
+
+		public void start() {
+			blinker = new Thread(this);
+			blinker.start();
+		}
+
+		public synchronized void stop() {
+			blinker = null;
+			notify();
+		}
+
+		public void run() {
+			Thread thisThread = Thread.currentThread();
+			int i = 0;
+			frame.addLineLog("Realizando testeo...");
+			while ((blinker == thisThread) && (i < 1000)) {
+				try {
+					Thread.sleep(1);
+
+					synchronized(this) {
+						while (threadSuspended && blinker==thisThread)
+							wait();
+					}
+				} catch (InterruptedException e) {
+				}
+
+				if (i==0)
+					frame.addLineLog("Testeo 1 completado al 0%");
+				if ((i>=0) && (i<=100))
+					frame.replaceLastLineLog("Testeo 1 completado al " + i + "%");
+				if (i==100) {
+					frame.replaceLastLineLog("Testeo 1 completado");
+					frame.addLineLog("Testeo 2 completado al 0%");
+				}
+				if ((i>=100) && (i<=800))
+					frame.replaceLastLineLog("Testeo 2 completado al " + (int)((i-100)*100)/700 + "%");
+				if (i==800) {
+					frame.replaceLastLineLog("Testeo 2 completado");
+					frame.addLineLog("Testeo 3 completado al 0%");
+				}
+				if ((i>=800) && (i<=1000))
+					frame.replaceLastLineLog("Testeo 3 completado al " + (int)((i-800)*100)/200 + "%");
+				i++;
+
+				frame.setPercent((int) (i*100)/1000);
+			}
+			// Cerramos la ventana
+			frame.setVisible(false);
+			frame = null;
+		}
+
+		public void actionButtonPressed(ButtonsPanelEvent e) {
+			if (e.getButton() == ButtonsPanel.BUTTON_CANCEL) {
+				this.stop();
+			}
+		}
+	}
+
+	public static void main(String[] args) {
+		new TestProgressPanel();
+	}
+
+	/**
+	 * This is the default constructor
+	 */
+	public TestProgressPanel() {
+		super();
+		initialize();
+	}
+
+	/**
+	 * This method initializes this
+	 *
+	 * @return void
+	 */
+	private void initialize() {
+		frame = new tryPanel();
+		frame.showWindow();
+		frame.start();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/progresspanel/TestProgressPanel.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/slidertext/TestSliderTextTable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/slidertext/TestSliderTextTable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/slidertext/TestSliderTextTable.java	(revision 38348)
@@ -0,0 +1,52 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.slidertext;
+
+import javax.swing.JFrame;
+
+import org.gvsig.gui.beans.slidertext.listeners.SliderEvent;
+import org.gvsig.gui.beans.slidertext.listeners.SliderListener;
+
+public class TestSliderTextTable implements SliderListener {
+	private int 				w = 350, h = 150;
+	private JFrame 				frame=new JFrame();
+	private SliderTextContainer	slider = null;
+
+	public TestSliderTextTable() {
+		slider = new SliderTextContainer(-255, 255, 0);
+		slider.addValueChangedListener(this);
+
+		frame.getContentPane().add(slider);
+		frame.setSize(w, h);
+		frame.setVisible(true);
+		frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+	}
+
+	public static void main(String[] args) {
+		new TestSliderTextTable();
+	}
+
+	public void actionValueChanged(SliderEvent e) {
+		System.out.println("- Changed: " + slider.getValue());
+	}
+
+	public void actionValueDragged(SliderEvent e) {
+//		System.out.println("+ Dragged: " + slider.getValue());
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/slidertext/TestSliderTextTable.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native
Added: svn:executable
   + *

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTableColorTable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTableColorTable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTableColorTable.java	(revision 38348)
@@ -0,0 +1,71 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table;
+
+import java.awt.Color;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
+/**
+ * Test del TableContainer
+ *
+ * @version 27/05/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestTableColorTable implements ActionListener {
+	private int            w     = 460;
+	private int            h     = 200;
+	private TestUI         frame = new TestUI("TestTableColorTable");
+	private TableContainer table = null;
+
+	public TestTableColorTable() throws NotInitializeException {
+		String[] columnNames = { "selec", "clase", "RGB", "Valor", "Max", "Alpha" };
+		int[] columnWidths = { 54, 1104, 94, 114, 114, 60 };
+		table = new TableContainer(columnNames, columnWidths);
+		table.setModel("TableColorModel");
+		table.initialize();
+
+		Object[] row = { Color.GREEN, "", "0,255,0", new Double(2), new Double(2), "255" };
+		Object[] row1 = { Color.BLUE, "", "0,0,255", new Double(1), new Double(2), "255" };
+		Object[] row2 = { Color.RED , "", "255,0,0", new Double(0), new Double(1), "255" };
+		table.addRow(row);
+
+		table.addRow(row1);
+		table.addRow(row2);
+
+		frame.getContentPane().add(table);
+		frame.setSize(w, h);
+		frame.setVisible(true);
+		frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+	}
+
+	public static void main(String[] args) {
+		try {
+			new TestTableColorTable();
+		} catch(NotInitializeException ex){
+			System.out.println("Tabla no inicializada");
+		}
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		System.out.println("Evento de bot�n!!");
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTableColorTable.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/CheckBoxModelTable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/CheckBoxModelTable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/CheckBoxModelTable.java	(revision 38348)
@@ -0,0 +1,74 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table;
+
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
+
+public class CheckBoxModelTable extends TestUI implements TableModelListener {
+	private static final long serialVersionUID = -7971006561681605303L;
+	private int            w     = 400;
+	private int            h     = 200;
+	private TableContainer table = null;
+
+	public CheckBoxModelTable() throws NotInitializeException {
+		super("CheckBoxModelTable");
+		String[] columnNames = {" ", "Nombre", ""};
+		int[] columnWidths = {22, 334, 0};
+		table = new TableContainer(columnNames, columnWidths);
+		table.setModel("CheckBoxModel");
+		table.initialize();
+		table.setControlVisible(false);
+		table.setMoveRowsButtonsVisible(true);
+
+		Object row[] = {"", "", ""};
+		for (int i = 0; i < 10; i++) {
+			row[0] = new Boolean(true);
+			row[1] = String.valueOf(i);
+			row[2] = new Integer(i);
+			table.addRow(row);
+		}		
+		
+		table.delRow(1);
+		table.getTable().getJTable().getColumnModel().getColumn(2).setMinWidth(0);
+		table.getTable().getJTable().getColumnModel().getColumn(2).setMaxWidth(0);
+		table.getTable().getJTable().getColumnModel().getColumn(0).setMinWidth(22);
+		table.getTable().getJTable().getColumnModel().getColumn(0).setMaxWidth(22);
+
+		table.getModel().addTableModelListener(this);
+		getContentPane().add(table);
+		setSize(w, h);
+		setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		try {
+			new CheckBoxModelTable();
+		} catch (NotInitializeException ex) {
+			System.out.println("Tabla no inicializada");
+		}
+	}
+
+	public void tableChanged(TableModelEvent e) {
+		System.out.println("Ha cambiado");
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/CheckBoxModelTable.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native
Added: svn:executable
   + *

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTreeRadioButtonModelTable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTreeRadioButtonModelTable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTreeRadioButtonModelTable.java	(revision 38348)
@@ -0,0 +1,59 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
+
+public class TestTreeRadioButtonModelTable {
+	private int            w     = 400;
+	private int            h     = 200;
+	private TestUI         frame = new TestUI("TestTreeRadioButtonModelTable");
+	private TableContainer table = null;
+
+	public TestTreeRadioButtonModelTable() throws NotInitializeException {
+		String[] columnNames = { "A", "R", "G", "B", "Capa" };
+		int[] columnWidths = { 22, 22, 22, 22, 334 };
+		table = new TableContainer(columnNames, columnWidths);
+		table.setModel("ARGBBandSelectorModel");
+		table.initialize();
+
+		Object[] row = { new Boolean(false), new Boolean(true), new Boolean(false), new Boolean(false), "layer1.tif" };
+		Object[] row1 = { new Boolean(false), new Boolean(false), new Boolean(true), new Boolean(false), "layer2.tif" };
+		Object[] row2 = { new Boolean(false), new Boolean(false), new Boolean(false), new Boolean(true), "layer3.tif" };
+		Object[] row3 = { new Boolean(true), new Boolean(false), new Boolean(false), new Boolean(false), "layer4.tif" };
+		table.addRow(row);
+		table.addRow(row1);
+		table.addRow(row2);
+		table.addRow(row3);
+
+		frame.getContentPane().add(table);
+		frame.setSize(w, h);
+		frame.setVisible(true);
+		frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+	}
+
+	public static void main(String[] args) {
+		try {
+			new TestTreeRadioButtonModelTable();
+		} catch (NotInitializeException ex) {
+			System.out.println("Tabla no inicializada");
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTreeRadioButtonModelTable.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native
Added: svn:executable
   + *

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTable.java	(revision 38348)
@@ -0,0 +1,66 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
+/**
+ * Test para la clase Table
+ * @version 30/10/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestTable extends TestUI {
+	private static final long serialVersionUID = -1071011269441792511L;
+	private TableContainer table = null;
+
+	public TestTable() throws NotInitializeException {
+		super("TestTable");
+		String[] columnNames = {"columna 1", "columna 2", "columna 3", "columna 4"};
+		int[] columnWidths = {70, 90, 110, 130};
+		table = new TableContainer(columnNames, columnWidths);
+		table.initialize();
+		table.setControlVisible(true);
+		table.setMoveRowsButtonsVisible(true);
+		table.setEditable(true);
+
+		String row[] = {"", "", "", ""};
+		for (int i = 0; i < 10; i++) {
+			row[0] = String.valueOf(i);
+			row[1] = String.valueOf(i);
+			row[2] = String.valueOf(i);
+			row[3] = String.valueOf(i);
+			table.addRow(row);
+		}
+
+		table.swapRow(5, 6);
+		table.delRow(3);
+
+		getContentPane().add(table);
+		setSize(400, 300);
+		setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		try {
+			new TestTable();
+		} catch (NotInitializeException ex){
+			System.out.println("Tabla no inicializada");
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTable.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:executable
   + *
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTableButtonModelTable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTableButtonModelTable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTableButtonModelTable.java	(revision 38348)
@@ -0,0 +1,69 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.table;
+
+import java.awt.Color;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
+
+public class TestTableButtonModelTable implements ActionListener {
+	private int            w     = 460;
+	private int            h     = 200;
+	private TestUI         frame = new TestUI("TestTableButtonModelTable");
+	private TableContainer table = null;
+
+	public TestTableButtonModelTable() throws NotInitializeException {
+		String[] columnNames = { "Bot�n", "columna2", "columna3", "columna 4", "col5" };
+		int[] columnWidths = { 54, 114, 94, 114, 60 };
+		table = new TableContainer(columnNames, columnWidths);
+		table.setModel("TableButtonModel");
+		table.initialize();
+
+		Object[] row = { Color.GREEN, "texto 0", "texto 0", "texto 0", "125" };
+		Object[] row1 = { Color.BLUE, "texto 1", "texto 1", "texto 1", "255" };
+		Object[] row2 = { Color.RED, "texto 2", "texto 2", "texto 2", "80" };
+		table.addRow(row);
+
+		/*JButton b7 = new JButton();
+		b7.setBackground(Color.RED);
+		b7.addActionListener(this);
+		((TableButtonModel)table.getModel()).setValueAt(b7, 0, 0);*/
+		table.addRow(row1);
+		table.addRow(row2);
+
+		frame.getContentPane().add(table);
+		frame.setSize(w, h);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		try {
+			new TestTableButtonModelTable();
+		} catch(NotInitializeException ex){
+			System.out.println("Tabla no inicializada");
+		}
+	}
+
+	public void actionPerformed(ActionEvent e) {
+		System.out.println("Evento de bot�n!!");
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/table/TestTableButtonModelTable.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native
Added: svn:executable
   + *

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/labelslidertext/TestLabelSliderTextTable.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/labelslidertext/TestLabelSliderTextTable.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/labelslidertext/TestLabelSliderTextTable.java	(revision 38348)
@@ -0,0 +1,42 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.labelslidertext;
+
+import javax.swing.JFrame;
+
+public class TestLabelSliderTextTable {
+	private int                      w      = 375;
+	private int                      h      = 150;
+	private JFrame                   frame  = new JFrame();
+	private LabelSliderTextContainer slider = null;
+
+	public TestLabelSliderTextTable() {
+		slider = new LabelSliderTextContainer(0, 255, 255, true, "Longaniza de nombre");
+		slider.setDecimal(false);
+		slider.setBorder("Cabecera");
+		frame.getContentPane().add(slider);
+		frame.setSize(w, h);
+		frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestLabelSliderTextTable();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/labelslidertext/TestLabelSliderTextTable.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native
Added: svn:executable
   + *

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/datainput/TestDataInput.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/datainput/TestDataInput.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/datainput/TestDataInput.java	(revision 38348)
@@ -0,0 +1,59 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.datainput;
+
+import java.awt.GridLayout;
+import java.util.EventObject;
+
+import javax.swing.BorderFactory;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+public class TestDataInput implements DataInputContainerListener {
+	private DataInputContainer data  = null;
+	private DataInputContainer data2 = null;
+
+	public TestDataInput(){
+		data = new DataInputContainer();
+		data.setLabelText("Valor 1");
+		data.addValueChangedListener(this);
+
+		data2 = new DataInputContainer();
+		data2.setLabelText("Valor 2");
+
+		JPanel panel = new JPanel(new GridLayout(2, 1, 2, 2));
+		panel.add(data);
+		panel.add(data2);
+		panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+
+		JFrame frame = new JFrame("DataInputContainerDemo");
+		frame.add(panel);
+		frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+		frame.pack();
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestDataInput();
+	}
+
+	public void actionValueChanged(EventObject e) {
+	  System.out.println(data.getValue());
+  }
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/datainput/TestDataInput.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/treelist/TestTreeList.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/treelist/TestTreeList.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/treelist/TestTreeList.java	(revision 38348)
@@ -0,0 +1,75 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2007 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.treelist;
+
+import java.util.Hashtable;
+
+import javax.swing.ListModel;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.treelist.event.TreeListChangeEvent;
+import org.gvsig.gui.beans.treelist.listeners.TreeListChangeListener;
+
+public class TestTreeList implements TreeListChangeListener {
+	private int               w     = 200;
+	private int               h     = 380;
+	private TestUI            frame = new TestUI("TestTreeList");
+	private TreeListContainer tlist;
+
+	public TestTreeList() {
+		tlist = new TreeListContainer();
+
+		tlist.addClass("uno", 0);
+		tlist.addClass("dos", 1);
+		tlist.addClass("tres", 2);
+		tlist.addClass("cuatro", 3);
+		tlist.addEntry("uno-uno","uno","1-1");
+		tlist.addEntry("uno-dos","uno","1-2");
+		tlist.addEntry("uno-tres","uno","1-3");
+		tlist.addEntry("tres-uno","tres","3-1");
+		tlist.addEntry("tres-dos","tres","3-2");
+		tlist.addEntry("cuatro-uno","cuatro","4-1");
+		tlist.addEntry("cuatro-dos","cuatro","4-2");
+		tlist.addEntry("cuatro-tres","cuatro","4-3");
+		tlist.addEntry("cuatro-cuatro","cuatro","4-4");
+		tlist.addEntry("cuatro-cinco","cuatro","4-5");
+		tlist.addEntry("cuatro-seis","cuatro","4-6");
+
+		tlist.getTree().expandRow(0);
+		tlist.addChangeSelectionListener(this);
+
+		frame.getContentPane().add(tlist);
+		frame.setSize(w, h);
+		frame.setVisible(true);
+	}
+
+	public static void main(String[] args) {
+		new TestTreeList();
+	}
+
+	public void actionChangeSelection(TreeListChangeEvent e) {
+		System.out.println("-");
+		ListModel list = tlist.getListModel();
+		for (int i=0; i<list.getSize(); i++) {
+			Hashtable prueba = tlist.getMap();
+			System.out.println(prueba.get(list.getElementAt(i)));
+			System.out.println(list.getElementAt(i));
+		}
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/treelist/TestTreeList.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:executable
   + *
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/incrementabletask/TestThread.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/incrementabletask/TestThread.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/incrementabletask/TestThread.java	(revision 38348)
@@ -0,0 +1,63 @@
+package org.gvsig.gui.beans.incrementabletask;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+public class TestThread {
+	public class miThread1 extends Thread {
+		public void run() {
+			System.out.println("miThread1 begin");
+			for (int i=0; i<=10; i++) {
+				System.out.println(i);
+				try {
+					Thread.sleep(500);
+				} catch (InterruptedException e) {
+					e.printStackTrace();
+				}
+			}
+			System.out.println("miThread1 end");
+		}
+	}
+
+	public TestThread() {
+		System.out.println("testThread begin");
+		miThread1 a = new miThread1();
+		a.start();
+		while (true) {
+			try {
+				Thread.sleep(250);
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+			System.out.println("isAlive(): " + a.isAlive());
+			if (!a.isAlive()) break;
+		}
+		System.out.println("testThread end");
+	}
+
+	public static void main(String[] args) {
+		System.out.println("main begin");
+		new TestThread();
+		System.out.println("main end");
+	}
+
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/incrementabletask/TestIncrementableTask.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/incrementabletask/TestIncrementableTask.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/incrementabletask/TestIncrementableTask.java	(revision 38348)
@@ -0,0 +1,217 @@
+package org.gvsig.gui.beans.incrementabletask;
+
+import org.gvsig.gui.beans.progresspanel.LogControl;
+
+/* gvSIG. Geographic Information System of the Valencian Government
+ *
+ * Copyright (C) 2007-2008 Infrastructures and Transports Department
+ * of the Valencian Government (CIT)
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *  
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ */
+
+/**
+ * Test del IncrementableTask
+ *
+ * @version 27/05/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestIncrementableTask {
+	class ClassProcess implements Runnable, IIncrementable, IncrementableListener {
+		int i = 0;
+		long j = 0;
+		LogControl log = new LogControl();
+		IncrementableTask incrementableTask = null;
+
+		private volatile Thread blinker;
+//		private boolean ended = false;
+//		private boolean threadSuspended = false;
+
+		public ClassProcess() {
+		}
+
+		public void start() {
+			blinker = new Thread(this);
+			blinker.start();
+		}
+
+		public synchronized void stop() {
+//			ended = true;
+			blinker = null;
+			notify();
+		}
+
+		public boolean isAlive() {
+			return blinker.isAlive();
+		}
+
+		public void procesoDuro() throws InterruptedException {
+			try {
+				for (long k = 0; k <= 8000; k++)
+					for (long n = 0; n <= 5000; n++) {
+						for (long l = 0; l <= 100; l++);
+						if (Thread.currentThread().isInterrupted())
+							throw new InterruptedException();
+					}
+				System.out.println("b");
+			} finally {
+				System.out.println("c");
+			}
+		}
+
+		public synchronized void run() {
+			try {
+				procesoDuro();
+			} catch (InterruptedException e1) {
+				System.out.println("Se ha salido");
+			}
+/*
+			for (long k=0; k<=65535; k++)
+				for (long n=0; n<=5000; n++);
+			for (j=0; j<=65535; j++) {
+				if (Thread.currentThread().isInterrupted())
+					break;
+				for (long i=0; i<=65535; i++);
+				log.replaceLastLine(j + "");
+				System.out.println(Thread.currentThread().isInterrupted());
+				if ((j%1000)==0) {
+					log.addLine(j + "");
+				}
+				synchronized(this) {
+					while (threadSuspended && !Thread.currentThread().isInterrupted())
+						try {
+							wait(500);
+						} catch (InterruptedException e) {
+							e.printStackTrace();
+						}
+				}
+			}*/
+			incrementableTask.processFinalize();
+		}
+
+		public String getLabel() {
+			return "Generando estad�sticas, por favor, espere...";
+		}
+
+		public String getLog() {
+			return log.getText();
+		}
+
+		public int getPercent() {
+			return (int) ((j*100)/65535);
+		}
+
+		public String getTitle() {
+			return "Barra de progreso";
+		}
+
+		public void setIncrementableTask(IncrementableTask value) {
+			incrementableTask = value;
+		}
+
+		public void actionCanceled(IncrementableEvent e) {
+//			ended = true;
+			blinker.interrupt();
+		}
+
+		public void actionResumed(IncrementableEvent e) {
+//			threadSuspended = false;
+		}
+
+		public void actionSuspended(IncrementableEvent e) {
+//			threadSuspended = true;
+		}
+
+
+		public void setLabel(String label) {
+			// TODO Auto-generated method stub
+			
+		}
+
+		public boolean isSuspended() {
+			// TODO Auto-generated method stub
+			return false;
+		}
+
+		public void resume() {
+			// TODO Auto-generated method stub
+			
+		}
+
+		public void suspend() {
+			// TODO Auto-generated method stub
+			
+		}
+
+		public boolean isCancelable() {
+			// TODO Auto-generated method stub
+			return false;
+		}
+
+		public void process() throws InterruptedException, Exception {
+			// TODO Auto-generated method stub
+			
+		}
+
+		public void setCancelable(boolean b) {
+			// TODO Auto-generated method stub
+			
+		}
+
+		public boolean isPausable() {
+			// TODO Auto-generated method stub
+			return false;
+		}
+
+		public void setPausable(boolean b) {
+			// TODO Auto-generated method stub
+			
+		}
+	}
+
+	ClassProcess classProcess = null;
+
+	public TestIncrementableTask() {
+		super();
+		initialize();
+	}
+
+	private void initialize() {
+		classProcess = new ClassProcess();
+		IncrementableTask incrementableTask = new IncrementableTask(classProcess);
+		classProcess.setIncrementableTask(incrementableTask);
+		incrementableTask.showWindow();
+		incrementableTask.addIncrementableListener(classProcess);
+
+		incrementableTask.start();
+		classProcess.start();
+		while (classProcess.isAlive()) {
+			try {
+				Thread.sleep(500);
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
+		}
+		classProcess.stop();
+		classProcess = null;
+		incrementableTask = null;
+	}
+
+	public static void main(String[] args) {
+		new TestIncrementableTask();
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/incrementabletask/TestIncrementableTask.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/combobutton/images/backward.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/combobutton/images/backward.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/combobutton/images/forward.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/combobutton/images/forward.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/combobutton/TestComboButton.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/combobutton/TestComboButton.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/combobutton/TestComboButton.java	(revision 38348)
@@ -0,0 +1,72 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.combobutton;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.controls.combobutton.ComboButton;
+
+public class TestComboButton implements ActionListener {
+	
+	public TestComboButton() {
+		TestUI frame = new TestUI("TestComboButton");
+		ComboButton cb = new ComboButton();
+		ImageIcon icon1 = new ImageIcon(getClass().getResource("images/backward.png"));
+		ImageIcon icon2 = new ImageIcon(getClass().getResource("images/forward.png"));
+		JButton b1 = new JButton("Action 1", icon1);
+		b1.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent arg0) {
+				System.out.println("Pulsando el bot�n 1");
+				System.out.println("Action command: " + arg0.getActionCommand());
+			}
+		});
+		b1.setActionCommand("action1");
+		JButton b2 = new JButton("Action 2", icon2);
+		b2.addActionListener(new ActionListener() {
+			public void actionPerformed(ActionEvent arg0) {
+				System.out.println("Pulsando el bot�n 2");
+				System.out.println("Action command: " + arg0.getActionCommand());
+			}
+		});
+		b2.setActionCommand("action2");
+		cb.setName("Prueba");
+		cb.addButton(b1);
+		cb.addSeparator();
+		cb.addButton(b2);
+		cb.addActionListener(this);
+		frame.getContentPane().add(cb);
+		frame.setSize(80, 80);
+		frame.setVisible(true);
+	}
+	
+
+	public static void main(String[] args) {
+		new TestComboButton();
+	}
+
+
+	public void actionPerformed(ActionEvent e) {
+		System.out.println("actionPerformed() : " + e.getActionCommand());
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/combobutton/TestComboButton.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/imagenavigator/TestImageNavigator.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/imagenavigator/TestImageNavigator.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/imagenavigator/TestImageNavigator.java	(revision 38348)
@@ -0,0 +1,90 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.imagenavigator;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+
+import org.gvsig.gui.beans.TestUI;
+/**
+ * Test del ImageNavigator
+ *
+ * @version 08/05/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestImageNavigator implements IClientImageNavigator {
+	private TestUI jFrame = null;
+	private ImageNavigator imageNavigator = null;
+
+	public TestImageNavigator() {
+		initialize();
+	}
+
+	private void initialize() {
+		jFrame = new TestUI("TestImageNavigator");
+		jFrame.setSize(new Dimension(200, 200));
+		jFrame.setContentPane(getImageNavigator());
+		getImageNavigator().setViewDimensions(0.0, 0.0, 200.0, 100.0);
+		getImageNavigator().updateBuffer();
+		getImageNavigator().setEnabled(true);
+		jFrame.setVisible(true);
+	}
+
+	private ImageNavigator getImageNavigator() {
+		if (imageNavigator == null) {
+			imageNavigator = new ImageNavigator(this);
+		}
+		return imageNavigator;
+	}
+
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) {
+		new TestImageNavigator();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.imagenavigator.IClientImageNavigator#drawImage(java.awt.Graphics2D, double, double, double, double, double, int, int)
+	 */
+	public void drawImage(Graphics2D g, double x1, double y1, double x2, double y2, double zoom, int width, int height) throws ImageUnavailableException {
+		if (true) {
+			throw new ImageUnavailableException("No es posible la visualizaci�n de la capa.");
+		}
+		double usex1 = (((0 - x1) * width) / (width/zoom));
+		double usey1 = (((0 - y1) * height) / (height/zoom));
+		double usex2 = (usex1 + (200.0 * zoom));
+		double usey2 = (usey1 + (100.0 * zoom));
+
+		g.setColor(Color.black);
+		g.fillRect((int) usex1, (int) usey1, (int) (usex2 - usex1), (int) (usey2 - usey1));
+		g.setColor(Color.RED);
+		g.drawLine((int) usex1, (int) usey1, (int) usex2, (int) usey2);
+		g.drawLine((int) usex1, (int) usey2, (int) usex2, (int) usey1);
+		g.drawRect((int) usex1, (int) usey1, (int) (usex2 - usex1), (int) (usey2 - usey1));
+
+		g.drawString("X1:" + (int) x1, 1, 20);
+		g.drawString("Y1:" + (int) y1, 1, 40);
+		g.drawString("X2:" + (int) x2, 1, 60);
+		g.drawString("Y2:" + (int) y2, 1, 80);
+		g.drawString(width + ":" + height, 1, 120);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/imagenavigator/TestImageNavigator.java
___________________________________________________________________
Added: svn:eol-style
   + native
Added: svn:keywords
   + Author Date Id Revision

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/imagenavigator/TestImageNavigatorInverted.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/imagenavigator/TestImageNavigatorInverted.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/imagenavigator/TestImageNavigatorInverted.java	(revision 38348)
@@ -0,0 +1,86 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ */
+package org.gvsig.gui.beans.imagenavigator;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics2D;
+
+import org.gvsig.gui.beans.TestUI;
+/**
+ * Test del ImageNavigator para coordenadas totalmente invertidas.
+ *
+ * @version 08/05/2007
+ * @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+ */
+public class TestImageNavigatorInverted implements IClientImageNavigator {
+	private TestUI         jFrame         = null;
+	private ImageNavigator imageNavigator = null;
+
+	public TestImageNavigatorInverted() {
+		initialize();
+	}
+
+	private void initialize() {
+		jFrame = new TestUI("TestImageNavigatorInverted");
+		jFrame.setSize(new Dimension(598, 167));
+		jFrame.setContentPane(getImageNavigator());
+		getImageNavigator().setViewDimensions(200.0, 100.0, 0.0, 0.0);
+		getImageNavigator().updateBuffer();
+		jFrame.setVisible(true);
+	}
+
+	private ImageNavigator getImageNavigator() {
+		if (imageNavigator == null) {
+			imageNavigator = new ImageNavigator(this);
+		}
+		return imageNavigator;
+	}
+
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) {
+		new TestImageNavigatorInverted();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.gvsig.gui.beans.imagenavigator.IClientImageNavigator#drawImage(java.awt.Graphics2D, double, double, double, int, int)
+	 */
+	public void drawImage(Graphics2D g, double x1, double y1, double x2, double y2, double zoom, int width, int height) {
+		double usex1 = (((0 + x1) * width) / (width/zoom));
+		double usey1 = (((0 + y1) * height) / (height/zoom));
+		double usex2 = (usex1 - (200.0 * zoom));
+		double usey2 = (usey1 - (100.0 * zoom));
+
+		g.setColor(Color.GREEN);
+		g.fillRect((int) usex2, (int) usey2, (int) (usex1 - usex2), (int) (usey1 - usey2));
+		g.setColor(Color.BLACK);
+		g.drawLine((int) usex2, (int) usey1, (int) usex1, (int) usey2);
+		g.drawLine((int) usex2, (int) usey2, (int) usex1, (int) usey1);
+		g.drawRect((int) usex2, (int) usey2, (int) (usex1 - usex2), (int) (usey1 - usey2));
+
+		g.drawString("X1:" + (int) x1, 1, 20);
+		g.drawString("Y1:" + (int) y1, 1, 40);
+		g.drawString("X2:" + (int) x2, 1, 60);
+		g.drawString("Y2:" + (int) y2, 1, 80);
+		g.drawString(width + ":" + height, 1, 120);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/imagenavigator/TestImageNavigatorInverted.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorchooser/TestColorChooser.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorchooser/TestColorChooser.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorchooser/TestColorChooser.java	(revision 38348)
@@ -0,0 +1,63 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+*
+* Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+*/
+package org.gvsig.gui.beans.colorchooser;
+
+import java.awt.Dimension;
+import java.util.EventObject;
+
+import org.gvsig.gui.beans.TestUI;
+/**
+* Test del ColorChooser
+*
+* @version 08/05/2007
+* @author BorSanZa - Borja S�nchez Zamorano (borja.sanchez@iver.es)
+*/
+public class TestColorChooser implements ColorChooserListener {
+	private TestUI       jFrame       = new TestUI("TestColorChooser");
+	private ColorChooser colorChooser = null;
+
+	public TestColorChooser() {
+		initialize();
+	}
+
+	private void initialize() {
+		colorChooser = new ColorChooser();
+		colorChooser.addValueChangedListener(this);
+		colorChooser.setEnabled(true);
+
+		jFrame.setSize(new Dimension(258, 167));
+		jFrame.setContentPane(colorChooser);
+		jFrame.setVisible(true);
+	}
+
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) {
+		new TestColorChooser();
+	}
+
+	public void actionValueChanged(EventObject e) {
+		System.out.println("Changed: " + colorChooser.getColor() + ", " + colorChooser.getColor().getAlpha());
+	}
+
+	public void actionValueDragged(EventObject e) {
+		System.out.println("Dragged: " + colorChooser.getColor() + ", " + colorChooser.getColor().getAlpha());
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/colorchooser/TestColorChooser.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native

Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/editabletextcomponent/TestJEditableTextField.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/editabletextcomponent/TestJEditableTextField.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/editabletextcomponent/TestJEditableTextField.java	(revision 38348)
@@ -0,0 +1,81 @@
+package org.gvsig.gui.beans.editabletextcomponent;
+
+import java.awt.Dimension;
+
+import javax.swing.JFrame;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests for JEditableTextField
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class TestJEditableTextField {
+	private static JEditableTextField jTCE;
+	
+	/**
+	 * Test method for the TestJEditableTextField class
+	 * 
+	 * @param args
+	 */
+	public static void main(String[] args)
+	{
+		final int height = 40;
+		final int width = 300;
+		
+		// Objects creation
+		JFrame jF = new JFrame();		
+
+		jTCE = new JEditableTextField();
+		jTCE.setPreferredSize(new Dimension(width, height));
+
+	    // Set properties
+		jF.setTitle("Test JEditableTextField");
+	    jF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+	    jF.setSize(jTCE.getPreferredSize());
+	    jF.getContentPane().add(jTCE);	
+	    
+		jF.setVisible(true);
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/editabletextcomponent/TestJEditableTextArea.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/editabletextcomponent/TestJEditableTextArea.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/org/gvsig/gui/beans/editabletextcomponent/TestJEditableTextArea.java	(revision 38348)
@@ -0,0 +1,81 @@
+package org.gvsig.gui.beans.editabletextcomponent;
+
+import java.awt.Dimension;
+
+import javax.swing.JFrame;
+
+
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/**
+ * Tests for JEditableTextArea
+ * 
+ * @author Pablo Piqueras Bartolom� (p_queras@hotmail.com)
+ */
+public class TestJEditableTextArea {
+	private static JEditableTextArea jTCA;
+	
+	/**
+	 * Test method for the TestJEditableTextArea class
+	 * 
+	 * @param args
+	 */
+	public static void main(String[] args)
+	{
+		final int height = 40;
+		final int width = 300;
+		
+		// Objects creation
+		JFrame jF = new JFrame();		
+
+		jTCA = new JEditableTextArea();
+		jTCA.setPreferredSize(new Dimension(width, height));
+
+	    // Set properties
+		jF.setTitle("Test JEditableTextArea");
+	    jF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+	    jF.setSize(jTCA.getPreferredSize());
+	    jF.getContentPane().add(jTCA);	
+	    
+		jF.setVisible(true);
+	}
+}
Index: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/controls/dnd/JDnDTableTest.java
===================================================================
--- tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/controls/dnd/JDnDTableTest.java	(revision 0)
+++ tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/controls/dnd/JDnDTableTest.java	(revision 38348)
@@ -0,0 +1,106 @@
+/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
+ *
+ * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
+ *
+ * For more information, contact:
+ *
+ *  Generalitat Valenciana
+ *   Conselleria d'Infraestructures i Transport
+ *   Av. Blasco Ib��ez, 50
+ *   46010 VALENCIA
+ *   SPAIN
+ *
+ *      +34 963862235
+ *   gvsig@gva.es
+ *      www.gvsig.gva.es
+ *
+ *    or
+ *
+ *   IVER T.I. S.A
+ *   Salamanca 50
+ *   46005 Valencia
+ *   Spain
+ *
+ *   +34 963163400
+ *   dac@iver.es
+ */
+
+/* CVS MESSAGES:
+*
+* $Id$
+* $Log$
+* Revision 1.2  2007-08-21 09:58:04  bsanchez
+* - Quitados imports innecesarios
+* - Quitado codigo no usado
+* - Cambio de deprecated show por setVisible(true)
+*
+* Revision 1.1  2007/08/20 08:34:46  evercher
+* He fusionado LibUI con LibUIComponents
+*
+* Revision 1.1  2006/09/27 13:34:57  jaume
+* *** empty log message ***
+*
+*
+*/
+package controls.dnd;
+
+import java.awt.Dimension;
+
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+
+import org.gvsig.gui.beans.TestUI;
+import org.gvsig.gui.beans.controls.dnd.JDnDList;
+import org.gvsig.gui.beans.controls.dnd.JDnDListModel;
+import org.gvsig.gui.beans.controls.dnd.JDnDTable;
+import org.gvsig.gui.beans.controls.dnd.JDnDTableModel;
+/**
+ * El model que ha de suportar les funcions d'una JDnDTable. Encara est� en
+ * proves.
+ *
+ * @author jaume
+ */
+public class JDnDTableTest {
+	static String[] colNames = new String[] {"1234", "abcd", "qwerty"};
+	static String[][] values = new String[][] {new String[] {"a1", "a2", "a3"},
+										new String[] {"b1", "b2", "b3"},
+										new String[] {"c1", "c2", "c3"}};
+
+	public static void main(String args[]) {
+		JFrame f = new TestUI("JDnDTableTest");
+		JPanel content = new JPanel();
+		content.setPreferredSize(new Dimension(500,400));
+
+		JDnDTableModel model = new JDnDTableModel(values, colNames);
+		JDnDListModel listModel = new JDnDListModel();
+		listModel.addElement("a");
+		listModel.addElement("b");
+		listModel.addElement("c");
+
+		JDnDTable tbl = new JDnDTable();
+
+		tbl.setModel(model);
+		tbl.setSize(new Dimension(450, 350));
+		JDnDList list = new JDnDList();
+		list.setModel(listModel);
+		content.add(tbl);
+		content.add(list);
+		f.setContentPane(content);
+		f.pack();
+		f.setVisible(true);
+	}
+}
\ No newline at end of file

Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent/src-test-ui/controls/dnd/JDnDTableTest.java
___________________________________________________________________
Added: svn:keywords
   + Author Date Id Revision
Added: svn:eol-style
   + native


Property changes on: tags/v2_0_0_Build_2047/libraries/libUIComponent/libUIComponent
___________________________________________________________________
Added: svn:ignore
   + .classpath 
.project 
.settings 
maven-eclipse.xml
target
bin
hs_err_pid*
.externalToolBuilders
.settings
.classpath
.project


