[Gvsig_desarrolladores] CADExtension

Francisco José Peñarrubia fpenarru en gmail.com
Lun Ene 28 23:55:07 CET 2008


Hola José Manuel.

¿Has comprobado que en tu plugin.xml has puesto todas las dependencias?. 
Me explico:
Si un plugin depende de otro, tiene que especificarlo en el fichero 
plugin.xml. Si depende de varios, pues de todos ellos.
Con el postInitialize te funcionará, claro, pero en el futuro puedes 
tener problemas si otras extensiones empiezan a usar más y más el 
postInitialize.
Internamente, gvSIG explora las dependencias y buscar un orden de carga 
adecuado para que las clases necesarias se carguen antes que el resto.

Ejemplo de definición de dependencias:

<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin-config>
*    <depends plugin-name="com.iver.cit.gvsig"/>
    <depends plugin-name="com.iver.cit.gvsig.cad"/>
*    <libraries library-dir="."/>
    <resourceBundle name="text"/>
    <extensions>
        <!-- <extension class-name="org.gvsig.workshop.HelloWorldExtension"
            description="My first extension."
            active="true">
            <menu text="Workshop/hello_world"
                key="h" mnemonic="h"
                tooltip="hello_world"
                action-command="HELLO" icon="images/new.png"
                />

Como puedes ver, en negrita aparecen las extensiones de gvsig, y luego 
la de cad (es parte de un ejemplo), el fichero continúa.

De lo otro que comentas, no lo he mirado mucho, y en cualquier caso, el 
que más sabe de eso es Vicente.

Saludos.

Fran.


Jose Manuel Díaz Bossini escribió:
> Hola Vicente , gracias por tu ayuda , creo que el problema estaba en 
> el initialize , que lo inicializaba antes de mi extension que de la 
> extension CAD , lo he cambiado al método postInitialize y va como la 
> seda , ahora estoy haciendo lo mismo para el resto de herramientas ( 
> polígono, circulo , etc.. ) y también funciona lo que he hecho pero 
> pierdo la traza de la operación , ya que solo sobrecargo el método 
> addGeometry, pero he intentado copiar el método drawOperation y en 
> principio carga todo bien , se ve la linea de la operación , etc , 
> pero en el momento de terminar obtengo una excepcion ( la traza mas 
> abajo ) , por que dice q el estado en un momento dado es null , 
> realmente no se pq se produce esto , he probado a trazarlo y obtengo 
> datos del estado en todo momento , menos obviamente en el momento en 
> el que falla que es justo despues de cargar mi formulario en un panel 
> y mostrolarlo , creo que el problema esta en que el state no puede ser 
> calculado en la ventana del panel y por eso sale el error  , pero no 
> se como podría aislar la llamada a mi formulario del método 
> addgeometry dado que necesito que sea en ese momento cuando aparezca 
> el panel para que el usuario rellene los datos que considere 
> oportunos, si no utilizo el método drawOperation como dije antes 
> funciona pero no tengo la traza, algo que necesito por ejemplo para el 
> caso de la polilínea:
>
> DEBUG [AWT-EventQueue-1] (NotificationManager.java:103) - 
> statemap.StateUndefinedException
> statemap.StateUndefinedException
>    at 
> com.iver.cit.gvsig.gui.cad.tools.smc.RectangleCADToolContext.getState(RectangleCADToolContext.java:57) 
>
>    at 
> com.iver.cit.gvsig.tools.RectangleAndagoTool.drawOperation(RectangleAndagoTool.java:218) 
>
>    at 
> com.iver.cit.gvsig.gui.cad.CADToolAdapter.paintComponent(CADToolAdapter.java:132) 
>
>    at 
> com.iver.cit.gvsig.fmap.MapControl.paintComponent(MapControl.java:350)
>    at javax.swing.JComponent.paint(Unknown Source)
>    at javax.swing.JComponent.paintChildren(Unknown Source)
>    at javax.swing.JSplitPane.paintChildren(Unknown Source)
>    at 
> com.iver.cit.gvsig.project.documents.view.gui.BaseView$ViewSplitPane.paintChildren(BaseView.java:106) 
>
>    at javax.swing.JComponent.paint(Unknown Source)
>    at javax.swing.JComponent.paintChildren(Unknown Source)
>    at javax.swing.JComponent.paint(Unknown Source)
>    at javax.swing.JComponent.paintChildren(Unknown Source)
>    at javax.swing.JComponent.paint(Unknown Source)
>    at javax.swing.JComponent.paintChildren(Unknown Source)
>    at javax.swing.JComponent.paint(Unknown Source)
>    at javax.swing.JLayeredPane.paint(Unknown Source)
>    at javax.swing.JComponent.paintChildren(Unknown Source)
>    at javax.swing.JComponent.paint(Unknown Source)
>    at javax.swing.JComponent.paintChildren(Unknown Source)
>    at javax.swing.JComponent.paint(Unknown Source)
>    at javax.swing.JComponent.paintChildren(Unknown Source)
>    at javax.swing.JComponent.paint(Unknown Source)
>    at javax.swing.JLayeredPane.paint(Unknown Source)
>    at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
>    at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
>    at javax.swing.JComponent._paintImmediately(Unknown Source)
>    at javax.swing.JComponent.paintImmediately(Unknown Source)
>    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
>    at 
> javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown 
> Source)
>    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
>    at java.awt.EventQueue.dispatchEvent(Unknown Source)
>    at 
> com.iver.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:58) 
>
>    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown 
> Source)
>    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
>    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
>    at java.awt.Dialog$1.run(Unknown Source)
>    at java.awt.Dialog$2.run(Unknown Source)
>    at java.security.AccessController.doPrivileged(Native Method)
>    at java.awt.Dialog.show(Unknown Source)
>    at java.awt.Component.show(Unknown Source)
>    at java.awt.Component.setVisible(Unknown Source)
>    at com.iver.core.mdiManager.NewSkin.addJDialog(NewSkin.java:519)
>    at com.iver.core.mdiManager.NewSkin.addWindow(NewSkin.java:234)
>    at 
> com.iver.cit.gvsig.tools.RectangleAndagoTool.addGeometry(RectangleAndagoTool.java:203) 
>
>    at 
> com.iver.cit.gvsig.tools.RectangleAndagoTool.addPoint(RectangleAndagoTool.java:101) 
>
>    at 
> com.iver.cit.gvsig.gui.cad.tools.smc.RectangleCADToolContext$Rectangle_Default$Rectangle_SecondPointOrSquare.addPoint(RectangleCADToolContext.java:390) 
>
>    at 
> com.iver.cit.gvsig.gui.cad.tools.smc.RectangleCADToolContext.addPoint(RectangleCADToolContext.java:39) 
>
>    at 
> com.iver.cit.gvsig.tools.RectangleAndagoTool.transition(RectangleAndagoTool.java:55) 
>
>    at 
> com.iver.cit.gvsig.gui.cad.CADToolAdapter.transition(CADToolAdapter.java:592) 
>
>    at 
> com.iver.cit.gvsig.gui.cad.CADToolAdapter.mousePressed(CADToolAdapter.java:173) 
>
>    at 
> com.iver.cit.gvsig.fmap.MapControl$MapToolListener.mousePressed(MapControl.java:781) 
>
>    at java.awt.Component.processMouseEvent(Unknown Source)
>    at javax.swing.JComponent.processMouseEvent(Unknown Source)
>    at java.awt.Component.processEvent(Unknown Source)
>    at java.awt.Container.processEvent(Unknown Source)
>    at java.awt.Component.dispatchEventImpl(Unknown Source)
>    at java.awt.Container.dispatchEventImpl(Unknown Source)
>    at java.awt.Component.dispatchEvent(Unknown Source)
>    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
>    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
>    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
>    at java.awt.Container.dispatchEventImpl(Unknown Source)
>    at java.awt.Window.dispatchEventImpl(Unknown Source)
>    at java.awt.Component.dispatchEvent(Unknown Source)
>    at java.awt.EventQueue.dispatchEvent(Unknown Source)
>    at 
> com.iver.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:58) 
>
>    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown 
> Source)
>    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
>    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
>    at java.awt.EventDispatchThread.run(Unknown Source)
>
> Vicente Caballero Navarro escribió:
>> Hola Jose Manuel.
>>
>> Puedes añadir tu herramienta a través de 
>> CADExtension.addCADTool("_point", point); y este método es estático y 
>> accede a un objeto estatico de CADToolAdapter, por tanto, no entiendo 
>> como tienes varias CADToolAdapters, si únicamente podemos tener una.
>>
>> Otra cosa es que si tu herramienta se añade en el hash con el mismo 
>> nombre que una ya existente tiene que hacerlo después de la que 
>> quieres sustituir y esto lo puedes conseguir añadiendo un: *<depends 
>> plugin-name="com.iver.cit.gvsig.cad" />* en el config de tu plugin si 
>> ambas extensiones hacen la operación en el initialize() o añadirla en 
>> tu extensión en el método postInitialize() que se ejecutará después 
>> de haber ejecutado los initialize() de todas las extensiones.
>>
>>
>>
>> Jose Manuel Díaz Bossini escribió:
>>> Por fin!!!
>>>
>>> Finalmente he conseguido hacer lo que me proponía , el problema , he 
>>> tenido que añadir mi código en paquetes dentro de la extension CAD , 
>>> parece ser que al inicializarse esta extension creaba un array con 
>>> las herramientas que estan dentro de este paquete , y en mi 
>>> extension al hacer addCADTool , mi herramienta se metía en un array 
>>> vacío y que no estaba en el momento de poner la capa en edición ya 
>>> que el método startCommandsApplicable(vista,lv); de la clase 
>>> StartEditing cogía solo las herramientas 
>>> CADToolAdapter.namesCadTools. No se si me estoy explicando muy bien 
>>> , pero básicamente lo que creo que hacía yo era crear un 
>>> CADToolAdapter "propio" con mi herramienta y este CADToolAdapter no 
>>> se usaba sino que se usaba el que estaba inicializado en la 
>>> extension CAD.
>>>
>>> Tenéis alguna idea de como podría aislar mi extensión?.
>>> _______________________________________________
>>> gvSIG_desarrolladores mailing list
>>> gvSIG_desarrolladores en runas.cap.gva.es
>>> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>>>
>>>
>>>
>> Espero haber ayudado algo.
>> Un saludo.
>> -- 
>> Vicente Caballero Navarro
>> Grupo desarrollo gvSIG.
>> IVER TI S.A.
>> C/ Lérida, 20
>> 46005-Valencia
>> Tlf.+34963354983
>> www.iver.es
>> www.gvsig.com
>>
>> Este mensaje y sus archivos son confidenciales. No está permitida su 
>> reproducción o distribución sin la autorización expresa de "IVER 
>> Tecnologías de la Información". Si usted no es el destinatario 
>> previsto, queda desautorizado cualquier uso, acceso o copia de este 
>> mensaje. Si ha recibido este mensaje por error, por favor bórrelo e 
>> infórmenos por esta misma vía.
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> gvSIG_desarrolladores mailing list
>> gvSIG_desarrolladores en runas.cap.gva.es
>> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>>   
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>



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