[Gvsig_desarrolladores] doking skin

Francisco Puga fpuga en cartolab.es
Mar Jul 12 12:59:50 CEST 2011


Gracias a los comentarios de Jordi hemos llegado a una solución. Lo
que hacemos es inicializar las selectedTool desde nuestra extensión
para asegurarnos de que no habrá ningún problema.

Enlazo un commit de ejemplo que resuelve el problema por si le pasa a
alguien más:
https://forge.osor.eu/plugins/scmsvn/viewcvs.php/trunk/extNTOpenCADPlugin/src/es/udc/cartolab/gvsig/navtable/AutoNavTableExtension.java?root=navtable&r1=263&r2=386&pathrev=386

El día 6 de julio de 2011 13:22, Francisco Puga <fpuga en cartolab.es> escribió:
> Gracias por responder Jordi,
>
> Por lo que he visto hasta ahora el problema está en que usando NewSkin
> hay un momento en que se hace un
> fireInternalFrameEvent(InternalFrameEvent.INTERNAL_FRAME_ACTIVATED) y
> esto hace que se ejecute el método
> NewSkin.FrameListener.internalFrameActivated mientras que en
> DockingSkin cuando se inicia gvSIG no se lanza activateDockingWindow()
>
> No tengo muy claro como arreglarlo, así que si pudieras echarle tu un
> ojo la semana que viene te lo agradecería :). Si no intentaré otra
> aproximación distinta a parchear extDockingSkin
>
> Adjunto la extensión que da el problema para poder hacer pruebas.
>
> Gracias.
>
> El día 6 de julio de 2011 11:35, Jordi Torres <jtorresfabra en gmail.com> escribió:
>> Hola Francisco,
>>
>> Ahora mismo no tengo mucho tiempo para investigar este asunto, pero si
>> mandas un parche lo probamos, y en caso de que vaya todo bien por supuesto
>> que se puede integrar. Aunque no esté en la lista de proyectos asignados a
>> mantenedores, supongo que soy el mantenedor de ese módulo también. La semana
>> que viene estaré más libre para dedicarle un poco de tiempo a esto.
>>
>> Un saludo.
>>
>> El 6 de julio de 2011 11:18, Francisco Puga <fpuga en cartolab.es> escribió:
>>>
>>> Hola,
>>>
>>> Estoy comprobando la compatibilidad del docking skin [1] desarrollado
>>> por la gente de gvsig-3d con algunas extensiones y me he encontrado un
>>> problema.
>>>
>>> Para crear el efecto de que un botón está pulsado usamos un código
>>> similar a este en algunas extensiones como la que lanza
>>> automáticamente navtable al terminar de digitalizar [2]
>>>
>>> if (!pushed) {
>>>
>>>  ((MDIFrame)PluginServices.getMainFrame()).setSelectedTool("auto-navtable",
>>> "empty");
>>> } else {
>>>
>>>  ((MDIFrame)PluginServices.getMainFrame()).setSelectedTool("auto-navtable",
>>> "auto-navtable");
>>> }
>>>
>>> Ese código lo tenemos en el postInitialize para la configuración
>>> inicial y con el skin normal de gvSIG funciona correctamente, pero
>>> cuando usamos el DockingSkin se lanza un NullPointerException en el
>>> setSelectedTool porque el campo selectedTool todavía no está
>>> inicializado.
>>>
>>> Me ha dado la impresión de que este campo se inicializa en
>>> NewSkin.FrameListener.internalFrameActivated.
>>>
>>> Después de todo este rollo mi pregunta viene siendo si se podría
>>> parchear DockingSkin para que inicializara selectedTool como se hace
>>> en el NewSkin o si en el setSelectedTool habría que añadir un código
>>> tipo
>>>
>>> if (wi.getSelectedTools()==null) {
>>>                // this is the first time this window is activated
>>>                wi.setSelectedTools(new
>>> HashMap(mainFrame.getInitialSelectedTools()));
>>> }
>>>
>>> u otra solución que no se nos haya ocurrido vamos.
>>>
>>> Yo optaría por la segunda solución en el caso de que más gente se haya
>>> visto con problemas parecidos al crear sus extensiones.
>>>
>>> [1] http://gvsig3d.blogspot.com/2010/01/docking-skin-video-tutorial.html
>>> [2]
>>> http://forge.osor.eu/plugins/scmsvn/viewcvs.php/trunk/extNTOpenCADPlugin/src/es/udc/cartolab/gvsig/navtable/AutoNavTableExtension.java?root=navtable&view=markup
>>>
>>> Gracias.
>>> --
>>> Francisco Puga
>>> Grupo de Desarrollo
>>> Cartolab - Laboratorio de Ingeniería Cartográfica.
>>> http://www.cartolab.es
>>>
>>> ETS Ingeniería de Caminos, Canales y Puertos
>>> Universidade da Coruña
>>> Campus de Elviña - 15071 A Coruña (España)
>>> (34)981167000 ext. 5493
>>
>>
>>
>> --
>> Jordi Torres Fabra
>>
>> gvSIG 3D blog
>> http://gvsig3d.blogspot.com
>> Instituto de Automática e Informática Industrial
>> http://www.ai2.upv.es
>>
>
>
>
> --
> Francisco Puga
> Grupo de Desarrollo
> Cartolab - Laboratorio de Ingeniería Cartográfica.
> http://www.cartolab.es
>
> ETS Ingeniería de Caminos, Canales y Puertos
> Universidade da Coruña
> Campus de Elviña - 15071 A Coruña (España)
> (34)981167000 ext. 5493
>



-- 
Francisco Puga
Grupo de Desarrollo
Cartolab - Laboratorio de Ingeniería Cartográfica.
http://www.cartolab.es

ETS Ingeniería de Caminos, Canales y Puertos
Universidade da Coruña
Campus de Elviña - 15071 A Coruña (España)
(34)981167000 ext. 5493


Más información sobre la lista de distribución gvSIG_desarrolladores