[Gvsig_desarrolladores] Edición de Valores en una Feature a traves de un formulario propio

Domingo Baeza dbaeza en grafos.es
Mie Ago 30 12:27:49 CEST 2006


Buenos días.
 
 
Ya conseguí editar los valores de una feature a través de un formulario
y no a través “de la tabla de  atributos”
 
Realmente lo que he realizado es acceder a la tabla de atributos de una
forma transparente, siguiendo el código que tenéis en la clase
Table.java y ShowTable.java
 
                                   //Acceder al mapa y traerse la tabla 
                                   AlphanumericData co =
(AlphanumericData) layer;
                                   ProjectExtension ext =
(ProjectExtension) PluginServices.getExtension(ProjectExtension.class);
                                   ProjectTable projectTable =
ext.getProject().getTable(co);
                                   EditableAdapter ea=null;
                                   ReadableVectorial
rv=((FLyrVect)layer).getSource();
                                   if (rv instanceof
VectorialEditableAdapter){
 
ea=(EditableAdapter)((FLyrVect)layer).getSource();
                                   }else{
                                               ea=new EditableAdapter();
                                               SelectableDataSource sds
= null;
                                               try {
                                                           sds =
((FLyrVect)layer).getRecordset();
                                               } catch (DriverException
e) {
                                                           // TODO
Auto-generated catch block
 
e.printStackTrace();
                                               }
 
ea.setOriginalDataSource(sds);
                                               
                                   }
 
                                   if (projectTable == null) {
                                               try {
                                                           projectTable
= ProjectFactory.createTable(PluginServices.getText(this,
"Tabla_de_Atributos") + ": " + layer.getName(),
 
ea);
                                               } catch
(com.hardcode.gdbms.engine.data.driver.DriverException e) {
                                                           // TODO
Auto-generated catch block
 
e.printStackTrace();
                                               }
 
projectTable.setAssociatedTable(co);
 
ext.getProject().addTable(projectTable);
                                   }
                                   projectTable.setModel(ea);
                                   Table t = new Table();
                                   t.setModel(projectTable);
 
//PluginServices.getMDIManager().addView(t);
                                   
                                   
                                   
                                   
                                   //Recorrer la tabla de la feature
hasta llegar al registro deseado
                                   try {
                                               for (int
iFila=0;iFila<projectTable.getModelo().getRowCount();iFila++){
                                                DataSourceDataModel dsdm
= (DataSourceDataModel)  t.getTable().getModel();
                                                   Value[] values = new
Value[dsdm.getColumnCount()];
                                                    int nIndice  =
Integer.parseInt(oNodo.toString());
                                                           if
(iFila==nIndice){
                                                           for (int i =
0; i < dsdm.getColumnCount(); i++) {
 
values[i] = (Value) dsdm.getValueAt(iFila, i);
 
// Pasamos los valores al formulario 
 
txtCampo.setText(dsdm.getValueAt(iFila, i).toString());
                                                                       
 
 
PluginServices.getMainFrame().enableControls();
                                                            }//Del For
                                                           } // Del If

                                                           
 
 
                                   }
                                   } catch (DriverIOException e) {
                                               // TODO Auto-generated
catch block
                                               e.printStackTrace();
                                   } catch (IOException e) {
                                               // TODO Auto-generated
catch block
                                               e.printStackTrace();
                                   }
 
 
Y para grabar he realizado algo similar, primero paso el valor a la
tabla de la capa
 
                        //Acceder a la tabla y cambiar los registros
                        //Acceder al mapa y traerse la tabla 
                        AlphanumericData co = (AlphanumericData) layer;
                        ProjectExtension ext = (ProjectExtension)
PluginServices.getExtension(ProjectExtension.class);
                        ProjectTable projectTable =
ext.getProject().getTable(co);
                        EditableAdapter ea=null;
                        ReadableVectorial
rv=((FLyrVect)layer).getSource();
                        if (rv instanceof VectorialEditableAdapter){
 
ea=(EditableAdapter)((FLyrVect)layer).getSource();
                        }else{
                                   ea=new EditableAdapter();
                                   SelectableDataSource sds = null;
                                   try {
                                               sds =
((FLyrVect)layer).getRecordset();
                                   } catch (DriverException ee) {
                                               // TODO Auto-generated
catch block
                                               ee.printStackTrace();
                                   }
                                   ea.setOriginalDataSource(sds);
                                   
                        }
 
                        if (projectTable == null) {
                                   try {
                                               projectTable =
ProjectFactory.createTable(PluginServices.getText(this,
"Tabla_de_Atributos") + ": " + layer.getName(),
 
ea);
                                   } catch
(com.hardcode.gdbms.engine.data.driver.DriverException e3) {
                                               // TODO Auto-generated
catch block
                                               e3.printStackTrace();
                                   }
                                   projectTable.setAssociatedTable(co);
 
ext.getProject().addTable(projectTable);
                        }
                        projectTable.setModel(ea);
                        Table t = new Table();
                        t.setModel(projectTable);
                        //PluginServices.getMDIManager().addView(t);
                        
                        
                        
                        
                        
                        try {
                                   for (int
iFila=0;iFila<projectTable.getModelo().getRowCount();iFila++){
                                    DataSourceDataModel dsdm =
(DataSourceDataModel)  t.getTable().getModel();
                                       Value[] values = new
Value[dsdm.getColumnCount()];
                                        int nIndice  =
Integer.parseInt(oNodo.toString());
                                               if (iFila==nIndice){
 
dsdm.setValueAt(sValor,iFila,nCampo);
 
((DataSourceDataModel) t.getTable().getModel()).fireTableDataChanged();
 
PluginServices.getMainFrame().enableControls();
 
break; //Salgo del bucle
                                               }

                                          
                                               } // Del If           
                        } catch (DriverIOException e33) {
                                   // TODO Auto-generated catch block
                                   e33.printStackTrace();
                        } catch (IOException e333) {
                                   // TODO Auto-generated catch block
                                   e333.printStackTrace();
                        }
                        
                        //Fin de leer la tabla asociada
                        
                        
                        
                        //Fin del cambio del registro
                
            
                        
                        
                        
            }
 
 
Y el grabar, lo realizo con el comando de Stop Editing.
 
 
 
Un Saludo a todos.
 
 
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20060830/846a68ca/attachment-0001.htm


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