[Gvsig_desarrolladores] Personalizar la ventana de Informaci髇 por punto

Ana Calle nico200307 en gmail.com
Jue Ago 27 23:32:44 CEST 2015


Muchas gracias!!!,
excelente material Joaqu铆n, yo creo que con todo esto que detallas aqu铆
podr茅 continuar con mi desarrollo durante una temporada.

Gracias de nuevo por tu tiempo, un saludo.
Ana

El 27 de agosto de 2015, 16:32, Joaquin Jose del Cerro Murciano <
jjdelcerro en gvsig.org> escribi贸:

>
>
> El 25 de agosto de 2015, 9:46, Ana Calle <nico200307 en gmail.com> escribi贸:
>
>> hola Joaquin,
>> yo lo ten铆a implementado para la versi贸n 1.10. Donde me he atascado al
>> migrarlo a 2.2 es en el punto donde le pido la informaci贸n al layer.
>> Antes lo devolv铆a como una estructura XMLItem[] y ahora lo devuelve
>> como DynObjectSet. Ah铆 es donde me he liado.
>>
>> 驴puedo obtener un XMLItem[] a partir del 'Map<String, DynObjectSet>' que
>> me devuelve: layer.getInfo(point, tolerance);???,
>> con eso lo tendr铆a resuelto!!
>>
>>
> Hola Ana,
> olvidate del XMLItem, es algo que no se lo que quedara por ahi, pero esta
> obsoleto, y cualquier referencia a ello puede desaparecer en proximas
> revisiones. Debes usar el DynObjectSet que te devuelbe el getInfo.
>
> Asi de memoria....
>
>   DynObjectSet set = layer.getInfo(....);
>   Iterator it = set.iterator();
>   while( it.hasNext() ) {
>     DynObject element = (DynObject)it.next();
>
>     ... procesar "element"...
>   }
>
> "element" es un DynObject, puedes acceder a sus atributos con
>
>   Object atributo = element.getDynValue("nombre-de-attributo")
>
> Si quieres saber que atributos tiene puedes usar:
>
>   DynClass dynClass = element.getDynClass();
>   DynField[] fields = dynClass.getDynFields();
>
>   fields[0].getName()
>   fields[0].getDataType()
>
>
> Podrias recorrertelos todos con algo como:
>
>   DynClass dynClass = element.getDynClass();
>   DynField[] fields = dynClass.getDynFields();
>   for( int i=0; i<fields.length(); i++) {
>      Object valor = element.getDynValue(fields[i].getName());
>
>      ....
>
>   }
>
> Ahora mismo no se de donde has sacado el "Map<String,DynObjectSet>" que
> comentas, pero es facil que sea el Map que se genera con el "getInfo" de
> las capas activas, donde para cada una de las capas activas tienes su
> DynObjectSet asociado al getInfo de la capa.
>
> Ves acostumbrandote a ver DynObject/DynClass por que en la 2 se gastan en
> muchos sitios.
> Son una forma de mantener estructuras de datos dinamicas. La DynClass
> define la estructura y el DynObject representa una instancia de esta
> estructura. hace ya algun tiempo escribimos algun articulo en el blog de
> gvsig sobre ellos...
> a ver si lo encuentro...
>
> Aqui esta http://blog.gvsig.org/2012/06/11/dynobjects-en-gvsig-2-0/
>
> En relacion a utilizar y personalizar e editor de atributos, sigo sin
> tener tiempo para terminar el borrador de articulo que comenta como
> personalizarlo, pero os voy a dejar aqui el borrador que hize en su dia,
> espero que valga mas tener acceso a un borrador que no tener nada.
>
> un saludo
> Joaquin
>
>
> [borrador]
> Hola a todos,
> hace unos dias, la verdad es que ya bastantes dias, en la lista
> preguntaron por la posibilidad de integrar el uso de listas controladas o
> dominios dentro de gvSIG 2 de forma similar a como se hacia con Navtable.
> Un Navtable para gvSIG 2 no tenemos pero si podemos hacer nuestros pinitos
> para mostrar formularios personalizados.
>
> Partiremos de la herramienta "Editor de atributos". Esta herramienta
> funciona de forma similar a como funcionaria la herramienta de informacion
> de un punto, pero nos permitiria modificar y guardar los atributos sobre la
> misma ventana en la que nos muestra la informacion. Probablemente aun se
> pueda mejorar y depurar bastante pero ya es funcional.
>
> Para hacer las pruebas crearemos una vista y cargaremos en ella la capa
> "carre2009", que podemos encontrar en:
>
>
>
> http://downloads.gvsig.org/download/geodata/vector/SHP2D/Aragon_Carreteras_SITAR_SHP2d.zip
>
> Una vez cargada la capa en la vista, la activaremos y haremos zoom a un
> area en concreto.
>
> [imagen]
>
> Una vez ya tengamos un zoom aceptable, seleccionaremos la herramienta
> "Editor de atributos" de la barra de herramientas...
>
> [imagen]
>
> Y pulsaremos sobre una carretera.
>
> [imagen]
>
> Nos presenta un formulario para poder ver y modificar los datos asociados
> a la geometria que hemos seleccionado.
>
> Bueno, hasta aqui, esto deberia ser mas o menos normal, es una
> funcionalidad que ya viene con gvSIG 2.2. Ahora bien, podemos hacer mas
> cosas con ella. Si abrimos la tabla de atributos veremos que tiene un campo
> "TIPO" y "ESTADO" que se prestan a usar un desplegable para impedir que se
> puedan introducir valores incorrectos. Tambien estaria bien poder utilizar
> unas etiquetas mas descriptivas para los campos del formulario, o
> establecer el orden de estos, que ahora mismo es un tanto aleatorio.
>
> Vamos a ver una serie de cosas que podriamos hacer con ese formulario:
>
> - Establecer listas de valores para los campos "TIPO", "ESTADO" y
> "VELOCIDAD".
> - Establecer etiquetas personalizadas para los campos.
> - Establecer un orden mas amigable de los campos.
> - Podemos asociar una descripcion a los campos que nos interese.
> - Ocultar el campo "GEOMETRY" ya que no queremos que lo altere el usuario
> desde el formulario.
>
> Bien, pues vamos a ver como podemos hacer estas cosas. Lo primero, con la
> capa seleccionada iremos al menu herramientas y seleccionaremos la opcion :
>
>   "Herramientas->Editor de atributos->Crear definicion por defecto"
>
> Al pulsar aqui, aparentemente no sucedera nada. Sin embargo nos habra
> generado un fichero XML con la definicion del formularios por defecto
> asociado a esa capa. Si no hacemos nada mas, no obserbaremos nungun cambio
> en el comportamiento de la aplicacion; pero vamos a ver que podemos hacer
> con esto.
>
> Abriremos un editor de textos, "Bloc de notas", "GEdit" o "Kate" (no un
> procesador como Word o OpenOffice) y nos dispondremos a cargar un archivo
> que se habra creado en la carpeta
>
>   "gvSIG/plugins/org.gvsig.attributeeditor.app.mainplugin/definitions"
>
> Dentro de la carpeta de nuestro usuario (normalmente en Windows en
> "C:\Users\mi-usuario").
> Veremos que en esa carpeta tendremos un archivo
>
>   "carre2009-528ef2f.xml"
>
> Normalmente tendra el nombre de la capa, en nuestro caso "carre2009",
> seguido de un codigo identificativo de esta.
>
> Si habrimos el fichero con nuestro editor de textos nos encontraremos algo
> como:
>
> <?xml version="1.0"?>
> <definitions>
>   <version>1.0.0</version>
>   <classes>
>     <class name="carre2009_528ef2f">
>       <extends>
>       </extends>
>       <description></description>
>       <fields>
>         <field name="LENGTH" type="Double" mandatory="true"
> defaultValue="0.0" order="0" hidden="false">
>           <description>LENGTH</description>
>         </field>
>         <field name="CODIGO" type="String" mandatory="true"
> defaultValue="" order="0" hidden="false">
>           <description>CODIGO</description>
>         </field>
>         <field name="ITINERARIO" type="String" mandatory="true"
> defaultValue="" order="0" hidden="false">
>           <description>ITINERARIO</description>
>         </field>
>         <field name="TIPO" type="String" mandatory="true" defaultValue=""
> order="0" hidden="false">
>           <description>TIPO</description>
>         </field>
>         <field name="TRAMO" type="String" mandatory="true" defaultValue=""
> order="0" hidden="false">
>           <description>TRAMO</description>
>         </field>
>         <field name="ESTADO" type="String" mandatory="true"
> defaultValue="" order="0" hidden="false">
>           <description>ESTADO</description>
>         </field>
>         <field name="CLASE" type="Double" mandatory="true"
> defaultValue="0.0" order="0" hidden="false">
>           <description>CLASE</description>
>         </field>
>         <field name="VELOCIDAD" type="Double" mandatory="true"
> defaultValue="0.0" order="0" hidden="false">
>           <description>VELOCIDAD</description>
>         </field>
>         <field name="TIERECSEG" type="Double" mandatory="true"
> defaultValue="0.0" order="0" hidden="false">
>           <description>TIERECSEG</description>
>         </field>
>         <field name="GEOMETRY" type="Geometry" mandatory="false" order="0"
> hidden="false">
>           <description>GEOMETRY</description>
>         </field>
>       </fields>
>     </class>
>   </classes>
>   </definitions>
>
>
> Obserbaremos que hay una serie de tags "field" con la informacion de cada
> campo que aparece en el formulario, por ejemplo:
>
>
>         <field name="CODIGO" type="String" mandatory="true"
> defaultValue="" order="0" hidden="false">
>           <description>CODIGO</description>
>         </field>
>
> Aqui tendremos:
>
> - name, que es el nombre del atributo de la tabla. No debemos cambiarlo.
> - type, es el tipo de datos. Tampoco deberemos cambiarlo ya que no
> concordarian los datos del formulario con los de la table.
> - mandatory. Indica si un campo es obligatorio o no. Dependiendo de la
> fuente de datos podremos cambiarlo. Suele ser bastante seguro cambiarlo y
> ponerlo a "true" si esta a "false", pero al reves hay que hacerlo
> conociendo el almacen de datos que tenemos detras. Esto es, si es una tabla
> de BBDD y el campo en la BBDD es obligatorio, no deberiamos nunca cambiarlo
> y ponerlo a false, ya que cuando un usuario lo deje en blanco fallara al
> guardar los datos en la BBDD.
> - defaultValue, indica el valor por defecto para este campo.
> - order, este si que nos interesara cambiarlo habitualmente. Indica el
> orden de los campos a la hora de mostrarlos en el formulario. Veremos que
> todos estan a cero. Nosotros lo modificaremos para indicar un numero de
> orden distinto para cada uno de los campos de forma que salgan en el orden
> que nos interesa.
> - hidden, indica si el campo se debe mostrar o no en el formulario.
> - description, aqui podemos indicar una descripcion que se mostrara en la
> linea inferior del formulario cuando el campo este seleccionado.
>
> Y ademas de estos podemos utilizar un par mas que no estan entre los
> valores por defecto:
>
> - label, para indicar una etiqueta a utilizar en el formulario en lugar
> del nombre del campo.
> - availableValues, para indicar una lista de valores permitidos para ese
> campo, normalmente luego se utilizara un desplegable para presentar el
> campo en el formulario.
>
>
> Ahora vamos a ver que tendriamos que hacer. Volviendo con el ejemplo del
> campo "CODIGO", podriamos:
>
> - A帽adirle un label
> - Ponerle una descripcion mas adecuada
> - Establecerle un orden de presentacion.
>
> Lo que quedaria asi:
>
>         <field name="CODIGO" label="Codigo" type="String" mandatory="true"
> defaultValue="" order="1" hidden="false">
>           <description>Codigo de la carretera</description>
>         </field>
>
> Veamos por ejemplo que podriamos hacer con el campo "ESTADO":
>
>         <field name="ESTADO" label="Estado" type="String" mandatory="true"
> defaultValue="" order="3" hidden="false">
>           <description>Estado de la carretera</description>
>           <availableValues>
>             <value label="(desconocido)"></value>
>             <value label="EN OBRAS">EN OBRAS</value>
>             <value label="EN PROYECTO">EN PROYECTO</value>
>             <value label="TRAVES脥A">TRAVES脥A</value>
>           </availableValues>
>         </field>
>
> Aqui hemos a帽adido un label, modificado el orden y la descripcion como con
> el campo "CODIGO", y ademas hemos a帽adido una lista de valores permitidos.
>
> Vamos a ver como quedarian todos los cambios en el fichero. Por comodidad
> para mi, he reordenado los campos en el orden de visializacion aunque esto
> no es necesario, bastaria con asignarle a cada campo el valor de "order"
> adecuado.
>
> <?xml version="1.0"?>
> <definitions>
>   <version>1.0.0</version>
>   <classes>
>     <class name="carre2009_528ef2f">
>       <extends>
>       </extends>
>       <description></description>
>       <fields>
>         <field name="CODIGO" label="Codigo" type="String"
> mandatory="false" defaultValue="" order="1" hidden="false">
>           <description>Codigo de la carretera</description>
>         </field>
>         <field name="TIPO" label="Tipo" type="String" mandatory="false"
> defaultValue="" order="2" hidden="false">
>           <description>Tipo de carretera</description>
>           <availableValues>
>             <value label="(desconocido)"></value>
>             <value label="ACCESOS">ACCESOS</value>
>             <value label="AUTOPISTA">AUTOPISTA</value>
>             <value label="AUTOV脥A">AUTOV脥A</value>
>             <value label="CONFEDERACI脫N">CONFEDERACI脫N</value>
>             <value label="DPH">DPH</value>
>             <value label="DPT">DPT</value>
>             <value label="DPZ">DPZ</value>
>             <value label="LOCAL">LOCAL</value>
>             <value label="NACIONAL">NACIONAL</value>
>             <value label="RAA III">RAA III</value>
>             <value label="RAA II">RAA II</value>
>             <value label="RAA I">RAA I</value>
>             <value label="SENDA">SENDA</value>
>             <value label="TUNEL">TUNEL</value>
>           </availableValues>
>         </field>
>         <field name="ESTADO" label="Estado" type="String"
> mandatory="false" defaultValue="" order="3" hidden="false">
>           <description>Estado de la carretera</description>
>           <availableValues>
>             <value label="(desconocido)"></value>
>             <value label="EN OBRAS">EN OBRAS</value>
>             <value label="EN PROYECTO">EN PROYECTO</value>
>             <value label="TRAVES脥A">TRAVES脥A</value>
>           </availableValues>
>         </field>
>         <field name="VELOCIDAD" label="Velocidad" type="Double"
> mandatory="true" defaultValue="0.0" order="4" hidden="false">
>           <description>Velocidad maxima permitida</description>
>           <availableValues>
>             <value label="10">10</value>
>             <value label="20">20</value>
>             <value label="30">30</value>
>             <value label="40">40</value>
>             <value label="50">50</value>
>             <value label="60">60</value>
>             <value label="70">70</value>
>             <value label="80">80</value>
>             <value label="90">90</value>
>             <value label="100">100</value>
>             <value label="110">110</value>
>             <value label="120">120</value>
>           </availableValues>
>         </field>
>         <field name="TRAMO" label="Tramo" type="String" mandatory="false"
> defaultValue="" order="5" hidden="false">
>           <description>TRAMO</description>
>         </field>
>         <field name="CLASE" label="Clase" type="Double" mandatory="true"
> defaultValue="0.0" order="6" hidden="false">
>           <description>CLASE</description>
>         </field>
>         <field name="LENGTH" label="Longitud" type="Double"
> mandatory="true" defaultValue="0.0" order="7" hidden="false">
>           <description>Longitud de la carretera</description>
>         </field>
>         <field name="ITINERARIO" label="Itinerario" type="String"
> mandatory="true" defaultValue="" order="8" hidden="false">
>           <description>ITINERARIO</description>
>         </field>
>         <field name="TIERECSEG" type="Double" mandatory="true"
> defaultValue="0.0" order="9" hidden="false">
>           <description>TIERECSEG</description>
>         </field>
>         <field name="GEOMETRY" type="Geometry" mandatory="false"
> order="10" hidden="true">
>           <description>GEOMETRY</description>
>         </field>
>       </fields>
>     </class>
>   </classes>
>   </definitions>
>
> Si una vez hechos estos cambios, cerramos y volvemos a arrancar gvSIG, y
> repetimos la operacion que hicimos al principio, cargar la capa carre2009,
> hacemos zoom, activamos la herramienta del editor de atributos y pulsamos
> sobre una carretera, obserbaremos que el formulario que muestra se
> presentara ya con los cambios que hemos indicado en nuestro fichero.
>
> A ver si para la proxima version podemos presentar ya directamente los
> datos asociados a una capa en modo formulario ademas de como una tabla
> usando el mismo mecanismo que usa el editor de atributos.
>
> Un saludo
> Joaquin
>
>
> [/borrador]
>
>
>
>
>
>
>
>
>
>> Muchas gracias de nuevo.
>> Saludos
>>
>> El 25 de agosto de 2015, 7:46, Ana Calle <nico200307 en gmail.com> escribi贸:
>>
>>> Gracias Joaquin,
>>> bueno mi idea era como dec铆a cambiar el contenido del panel derecho de
>>> la ventana de informaci贸n por punto, por un panel propio de manera que se
>>> adec煤e a mis necesidades (b谩sicamente se trata de cambiar las etiquetas, ya
>>> que los nombres de los campos no suelen ser intuitivos para e usuario final
>>> e introducir ciertas validaciones entre los datos introducidos)
>>>
>>> Si sugieres 'personalizar' la ventana del editor de atributos, siempre y
>>> cuando me permita introducir esas validaciones en el bot贸n de guardar, pues
>>> me puedo acoplar. 驴Para cu谩ndo tendr铆as pensado publicar ese art铆culo ?
>>>
>>> Muchas gracias,
>>> Ana
>>>
>>>
>>>
>>> El 25 de agosto de 2015, 4:06, Joaquin Jose del Cerro Murciano <
>>> jjdelcerro en gvsig.org> escribi贸:
>>>
>>>>
>>>> El 21 de agosto de 2015, 9:41, Ana Calle <nico200307 en gmail.com>
>>>> escribi贸:
>>>>
>>>>> Hola a todos,
>>>>> 驴alguien podr铆a aportar alg煤n ejemplo o indicaciones a seguir para
>>>>> poder personalizar la ventana de la herramienta informaci贸n por punto?
>>>>>
>>>>> Necesitar铆a poder colocar en el panel derecho de dicha
>>>>> ventana('Identificar Resultados') mi propio formulario para la edici贸n de
>>>>> los datos alfanum茅ricos de la capa.
>>>>>
>>>>> Hola Ana,
>>>> si lo que quieres es editar los datos.... 驴 te has planteado que usen
>>>> la herramienta del editor de attributos en lugar de la de informacion por
>>>> punto ?
>>>> Esta precisamente para eso, para que el usuario haga click en un
>>>> elemento de la vista y le muestre un formulario para que edite los datos.
>>>> Ademas esa herramienta permite una personalizacion limitada del
>>>> fomulario (tengo a medias un articulo contando como hacerlo).
>>>>
>>>> La herramienta de informacion por punto no permite una personalizacion
>>>> sencilla del formulario, basicamente lo que puedes hacer es cambiarlo.
>>>>
>>>> un saludo
>>>> Joaquin
>>>>
>>>>
>>>>
>>>>> Muchas gracias de antemano.
>>>>> Saludos
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> gvSIG_desarrolladores mailing list
>>>>> gvSIG_desarrolladores en listserv.gva.es
>>>>> Para ver hist贸rico de mensajes, editar sus preferencias de usuario o
>>>>> darse de baja en esta lista, acuda a la siguiente direcci贸n:
>>>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> --------------------------------------
>>>> Joaquin Jose del Cerro Murciano
>>>> Development and software arquitecture manager at gvSIG Team
>>>> jjdelcerro en gvsig.com
>>>> jjdelcerro en gvsig.org
>>>> gvSIG Association
>>>> www.gvsig.com
>>>> www.gvsig.org
>>>>
>>>> _______________________________________________
>>>> gvSIG_desarrolladores mailing list
>>>> gvSIG_desarrolladores en listserv.gva.es
>>>> Para ver hist贸rico de mensajes, editar sus preferencias de usuario o
>>>> darse de baja en esta lista, acuda a la siguiente direcci贸n:
>>>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> gvSIG_desarrolladores mailing list
>> gvSIG_desarrolladores en listserv.gva.es
>> Para ver hist贸rico de mensajes, editar sus preferencias de usuario o
>> darse de baja en esta lista, acuda a la siguiente direcci贸n:
>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>
>>
>
>
> --
> --------------------------------------
> Joaquin Jose del Cerro Murciano
> Development and software arquitecture manager at gvSIG Team
> jjdelcerro en gvsig.com
> jjdelcerro en gvsig.org
> gvSIG Association
> www.gvsig.com
> www.gvsig.org
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver hist贸rico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente direcci贸n:
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
>
------------ pr髕ima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20150827/56bbc4d3/attachment.htm 


M醩 informaci髇 sobre la lista de distribuci髇 gvSIG_desarrolladores