[Gvsig_desarrolladores] doking skin

Francisco Puga fpuga en cartolab.es
Mie Jul 6 11:18:36 CEST 2011


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


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