[Gvsig_desarrolladores] CADExtension

Vicente Caballero Navarro vicente.caballero en iver.es
Mar Ene 29 09:14:13 CET 2008


Hola.
Creo que el error es por extender tu herramienta de RectangleCADTool y 
crearte tu propio RectangleCADToolContext y no sé que métodos has 
reimplementado y cuales no. Puedes probar a dejarte la variable _fsm de 
RectangleCADTool protected y acceder desde la clase hija a esta variable 
o incluso según la funcionalidad que quieras añadir, es posible que 
necesites de una nueva herramienta desde cero, comenzando por definir su 
autómata finito determinista con la librería smc.

Francisco José Peñarrubia escribió:
> 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
>>
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>
>
>

-- 
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.




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