From: <emm...@us...> - 2008-11-03 10:36:15
|
Revision: 4150 http://fudaa.svn.sourceforge.net/fudaa/?rev=4150&view=rev Author: emmanuel_martin Date: 2008-11-03 10:36:06 +0000 (Mon, 03 Nov 2008) Log Message: ----------- bigfix #44 : "D?\195?\169placement d'un semis vers ligne de niveau ou inversement : Attribut Z non restaur?\195?\169." Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-11-02 01:09:08 UTC (rev 4149) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-11-03 10:36:06 UTC (rev 4150) @@ -7,15 +7,25 @@ */ package org.fudaa.fudaa.modeleur; +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JPanel; +import javax.swing.border.Border; + import org.fudaa.ctulu.CtuluCommandComposite; -import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluListSelection; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISAttributeModelDoubleArray; import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; import org.fudaa.ctulu.gis.GISDataModel; import org.fudaa.ctulu.gis.GISGeometryFactory; @@ -37,6 +47,8 @@ import org.fudaa.fudaa.modeleur.layer.MdlModel2dLine; import org.fudaa.fudaa.modeleur.layer.MdlModel2dMultiPoint; +import com.memoire.bu.BuBorderLayout; +import com.memoire.bu.BuLabel; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.CoordinateSequence; import com.vividsolutions.jts.geom.Geometry; @@ -151,6 +163,69 @@ if (colsrc.getAttribute(idxAtt)==GISAttributeConstants.ETAT_GEOM) datadest[iatt]=GISAttributeConstants.ATT_VAL_ETAT_MODI; } + // Cas particuliers de mapping entre les attributs Z et z \\ + else{ + // On va essayer de renseigner le Z global de destination + if(coldest.getAttribute(iatt).getID().equals("Z")){ + // Cas o\xF9 un z atomique existe dans la source et qu'il est constant + boolean identique=true; + int indexBathy=colsrc.getIndiceOf(GISAttributeConstants.BATHY); + if(indexBathy!=-1){ + GISAttributeModelDoubleArray data=(GISAttributeModelDoubleArray) colsrc.getValue(indexBathy, getScene().sceneId2LayerId(idxGeom[i])); + identique=data.getMin()==data.getMax(); + } + if(identique&&indexBathy!=-1) + datadest[iatt]=((GISAttributeModelDoubleArray) colsrc.getValue(indexBathy, getScene().sceneId2LayerId(idxGeom[i]))).getObjectValueAt(0); + // Dans le cas contraire, on demande \xE0 l'utilisateur + else{ + // Utilisation d'une fen\xEAtre modale pour l'obtension du Z. + class myDialogModal extends JDialog implements ActionListener{ + private JComponent text_; + public myDialogModal(Frame _frame){ + super(_frame, MdlResource.MDL.getString("Choix du Z"), true); + // Position & resizable + setLocation(_frame.getLocation().x+_frame.getSize().width/2, _frame.getLocation().y+_frame.getSize().height/2); + setResizable(false); + // Contenu + JPanel container=new JPanel(new BuBorderLayout(2, 2)); + container.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + text_=GISAttributeConstants.BATHY.getEditor().createEditorComponent(); + JButton ok=new JButton(MdlResource.MDL.getString("Valider")); + ok.addActionListener(this); + container.add(new BuLabel(MdlResource.MDL.getString("Valeur de Z :")), BuBorderLayout.WEST); + container.add(text_, BuBorderLayout.EAST); + container.add(ok, BuBorderLayout.SOUTH); + add(container); + pack(); + } + public void actionPerformed(ActionEvent e) { + setVisible(false); + dispose(); + } + public Double getValue(){ + return (Double) GISAttributeConstants.BATHY.getEditor().getValue(text_); + } + } + myDialogModal dialog =new myDialogModal(calquePanel_.getDefaultGisEditor().getFrame()); + dialog.setVisible(true); + datadest[iatt]=dialog.getValue(); + } + } + else if(coldest.getAttribute(iatt)==GISAttributeConstants.BATHY){ + // Recherche d'un attribut ayant pour ID 'Z' pour pouvoir utiliser sa valeur + boolean found=false; + int j=-1; + while(!found&&++j<colsrc.getNbAttributes()) + found=colsrc.getAttribute(j).getID().equals("Z"); + if(found){ + // Duplication de la valeur + Object[] values=new Object[geoms[i].getNumPoints()]; + for(int k=0;k<values.length;k++) + values[k]=colsrc.getValue(j, getScene().sceneId2LayerId(idxGeom[i])); + datadest[iatt]=values; + } + } + } } // La g\xE9om\xE9trie This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |