[Gvsig_desarrolladores] CADExtension

Jose Manuel Díaz Bossini jmdiaz en andago.com
Lun Ene 28 16:55:34 CET 2008


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
>   


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