[Gvsig_desarrolladores] Problemas seleccionando después de borrado

Francisco José Peñarrubia fpenarru en gmail.com
Lun Mar 29 19:29:51 CEST 2010


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
>   



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