[Gvsig_desarrolladores] Problemas seleccionando después de borrado

Nacho Uve nachouve en gmail.com
Mar Mar 30 17:40:28 CEST 2010


Ya hemos dado con el error. Había que obtener el SeletionSupport de la capa
y eliminar ahí el escuchador.
El código corregido es este:

                              VectorialLayerEdited vle =
CADExtension.getCADTool().getVLE();

layer.getSelectionSupport().removeSelectionListener(vle);

Nos ayudó mucho tu indicación Fran!!!

Muchas gracias!!!



El 29 de marzo de 2010 20:20, Nacho Uve <nachouve en gmail.com> escribió:

> Muchísimas gracias Fran!!!
>
> Pueden ir los tiros sí... De todos modos, no consigo que funcione
> introduciendo la primera línea.
>
> En la clase SelectionSupport sigue existiendo en el
> ArrayList<SelectionListener> listeners una VectorialLayerEdited
> que parece que es la que da problemas. :(
>
> Mañana sigo con la investigación y comento un poco más.
>
> Gracias!
>
>
>
> El 29 de marzo de 2010 19:29, Francisco José Peñarrubia <
> fpenarru en gmail.com> escribió:
>
> Hola Nacho.
>>
>> Creo que el problema viene porque guardas los cambios, pones la capa en
>> modo no edición, pero se te ha olvidado quitar como escucha de los
>> eventos de selección al VectorialLayerEdited.
>> Si te fijas en cuando se para la edición, hay una línea:
>>
>> layer.removeLayerListener(edMan);
>>
>> la variable edMan viene de
>>
>> EditionManager edMan =cadtoolAdapter.getEditionManager();
>>
>> Yo no lo he probado, pero creo que por ahí pueden ir los tiros.
>>
>> Saludos, viajero!! :-)
>>
>> Fran.
>>
>> Nacho Uve escribió:
>> > Hola,
>> >
>> > Estamos estabilizando el código de NavTable para gvSIG-1.9. Tenemos
>> > una función para eliminar un registro de una capa vectorial. El código
>> > ha sido extraído de otras partes del código de gvSIG donde se
>> > realizada esa acción.
>> >
>> > El código es el siguiente:
>> >
>> >                 VectorialLayerEdited vle =
>> > CADExtension.getCADTool().getVLE();
>> >                 VectorialEditableAdapter vea = vle.getVEA();
>> >
>> >                 vea.startComplexRow();
>> >
>> >                 vea.doRemoveRow((int)currentPosition,
>> > EditionEvent.GRAPHIC);
>> >
>> >                 vea.endComplexRow("Removed_Record");
>> >
>> vle.clearSelection(VectorialLayerEdited.NOTSAVEPREVIOUS);
>> >                 vea.getSelection().clear();
>> >
>> >                 te.stopEditing(layer, false);
>> >
>> > El código funciona correctamente borrando el registro situado en la
>> > posición "currentPosition", pero si a continuación se selecciona
>> > cualquier elemento de esa capa se produce el siguiente error:
>> >
>> > DEBUG [AWT-EventQueue-1] (NotificationManager.java:104) -
>> > java.lang.NullPointerException
>> > java.lang.NullPointerException
>> >     at
>> >
>> com.iver.cit.gvsig.layers.VectorialLayerEdited.selectionChanged(VectorialLayerEdited.java:635)
>> >     at
>> >
>> com.iver.cit.gvsig.fmap.layers.SelectionSupport.fireSelectionEvents(SelectionSupport.java:127)
>> >     at
>> >
>> com.iver.cit.gvsig.fmap.layers.SelectionSupport.setSelection(SelectionSupport.java:66)
>> >     at
>> >
>> com.iver.cit.gvsig.fmap.layers.SelectableDataSource.setSelection(SelectableDataSource.java:402)
>> >     at
>> >
>> es.udc.cartolab.gvsig.navtable.AbstractNavTable.selectCurrentFeature(AbstractNavTable.java:608)
>> >
>> > Debugeando he visto que el código de VectiorialLayerEdited devuelve un
>> > NULL pointer en:
>> >                             getVEA().getSelection().isEmpty()
>> >
>> > ¿Cómo podemos solucionar este comportamiento?
>> > Muchas gracias!!!
>> >
>> >
>> >
>> > --
>> > Juan Ignacio Varela García (Nacho Uve)
>> > Coordinador 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
>> > ------------------------------------------------------------------------
>> >
>> > _______________________________________________
>> > gvSIG_desarrolladores mailing list
>> > gvSIG_desarrolladores en listserv.gva.es
>> > http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>> >
>>
>> _______________________________________________
>> gvSIG_desarrolladores mailing list
>> gvSIG_desarrolladores en listserv.gva.es
>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>
>
>
>
> --
> Juan Ignacio Varela García (Nacho Uve)
> Coordinador 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
>



-- 
Juan Ignacio Varela García (Nacho Uve)
Coordinador 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20100330/079f6749/attachment.htm 


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