From: <bma...@us...> - 2009-03-23 10:03:24
|
Revision: 4559 http://fudaa.svn.sourceforge.net/fudaa/?rev=4559&view=rev Author: bmarchan Date: 2009-03-23 10:03:11 +0000 (Mon, 23 Mar 2009) Log Message: ----------- Correction de bug : Points ?\195?\160 Z null sur export Rubar + gestion des coordonn?\195?\169es doubl?\195?\169es + mise a jour Z des lignes directrices Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/BiefImporterFromModels.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Exporter1d.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/ExportPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueCourbe.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueTableau.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java 2009-03-21 18:29:25 UTC (rev 4558) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java 2009-03-23 10:03:11 UTC (rev 4559) @@ -71,6 +71,8 @@ import org.fudaa.ebli.courbe.EGFillePanel; import org.fudaa.ebli.courbe.EGGraphe; import org.fudaa.ebli.courbe.EGGrapheSimpleModel; +import org.fudaa.ebli.trace.TraceIcon; +import org.fudaa.ebli.trace.TraceIconModel; import com.memoire.bu.BuBorderLayout; import com.memoire.bu.BuButton; @@ -470,6 +472,7 @@ EGCourbeModelProfile courbeModel=new EGCourbeModelProfile(this, ""); courbeVue_=new EGCourbeSimple(axeY_, courbeModel); courbeVue_.setAspectContour(Color.BLUE); + courbeVue_.setIconeModel(new TraceIconModel(TraceIcon.CARRE_PLEIN,2,Color.BLUE)); grapheModel.addCourbe(courbeVue_, new CtuluCommandManager()); // Conteneur de graphe EGFillePanel pnD=new EGFillePanel(grapheVue_); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/BiefImporterFromModels.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/BiefImporterFromModels.java 2009-03-21 18:29:25 UTC (rev 4558) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/BiefImporterFromModels.java 2009-03-23 10:03:11 UTC (rev 4559) @@ -94,7 +94,9 @@ int idxAttLignesDirectrices=zone.getIndiceOf(GISAttributeConstants.INTERSECTIONS_LIGNES_DIRECTRICES); UtilsBief1d.orderProfils(profils_, -1, null); + // Normalise le sens du profil \\ + // FIXME BM : Voir si ca doit \xEAtre fait quand l'axe hydro n'existe pas. for (int k=0; k<profils_.getNombre(); k++) { Geometry profil=zone.getGeometry(k); CoordinateSequence seqProfil=((GISCoordinateSequenceContainerInterface)profil).getCoordinateSequence(); @@ -357,6 +359,7 @@ lignesContraints_=models_[i]; } // Remplissage des models vides par des ZModeles vides + // B.M. Ne doit pas se produire. if (axeHydraulique_==null) axeHydraulique_=new MdlModel1dAxe(null); if (profils_==null) @@ -516,9 +519,10 @@ Coordinate coord=inter.getCoordinate(); int previousIdx=UtilsProfil1d.getPreviousIndex(seq, coord); int nextIdx=UtilsProfil1d.getNextIndex(seq, coord); - // Le point n'appartient pas au profil ou La coordonn\xE9e correspond d\xE9j\xE0 \xE0 - // un point - if (previousIdx!=-2&&nextIdx!=-2&&previousIdx+1!=nextIdx-1&&nextIdx!=-1&&previousIdx!=-1) + // Le point n'appartient pas au profil ou la coordonn\xE9e correspond d\xE9j\xE0 \xE0 + // un point. Attention, le profil peut contenir plusieurs points confondus \xE0 l'intersection + // trouv\xE9e. D'ou le test (nextIdx-previousIdx)<2. + if (previousIdx!=-2&&nextIdx!=-2&&nextIdx!=-1&&previousIdx!=-1&&(nextIdx-previousIdx)<2) // La coordonn\xE9e correspond \xE0 aucun point connu ((GISZoneCollectionGeometry)profils_.getGeomData()).addAtomic(_idxProfil, previousIdx, coord.x, coord.y, null); } @@ -541,9 +545,10 @@ Coordinate coordIntersection=intersection.getCoordinate(); int previousIdx=UtilsProfil1d.getPreviousIndex(seqProfil, coordIntersection); int nextIdx=UtilsProfil1d.getNextIndex(seqProfil, coordIntersection); - // Le point n'appartient pas au profil ou La coordonn\xE9e correspond d\xE9j\xE0 \xE0 - // un point - if (previousIdx!=-2&&nextIdx!=-2&&previousIdx+1!=nextIdx-1&&nextIdx!=-1&&previousIdx!=-1) { + // Le point n'appartient pas au profil ou la coordonn\xE9e correspond d\xE9j\xE0 \xE0 + // un point. Attention, le profil peut contenir plusieurs points confondus \xE0 l'intersection + // trouv\xE9e. D'ou le test (nextIdx-previousIdx)<2. + if (previousIdx!=-2&&nextIdx!=-2&&nextIdx!=-1&&previousIdx!=-1&&(nextIdx-previousIdx)<2) { // La coordonn\xE9e correspond \xE0 aucun point connu ((GISZoneCollectionGeometry)zoneProfil).addAtomic(_idxProfil, previousIdx, coordIntersection.x, coordIntersection.y, null); seqProfil=zoneProfil.getCoordinateSequence(_idxProfil); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Exporter1d.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Exporter1d.java 2009-03-21 18:29:25 UTC (rev 4558) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Exporter1d.java 2009-03-23 10:03:11 UTC (rev 4559) @@ -16,7 +16,7 @@ /** * Un exporteur des donn\xE9es d'un bief vers des fichiers. * @author Bertrand Marchand - * @version $Id:$ + * @version $Id$ */ interface Exporter1d { @@ -32,7 +32,7 @@ /** * Exporteur pour Mascaret 1D, ou 2D. * @author Bertrand Marchand - * @version $Id:$ + * @version $Id$ */ class Mascaret implements Exporter1d { @@ -52,12 +52,16 @@ /** * Exporteur pour Rubar ST. * @author Bertrand Marchand - * @version $Id:$ + * @version $Id$ */ class Rubar implements Exporter1d { public Object[] export(Bief _bief, String _name) { GISDataModel[] params=new GISDataModel[2]; + // Remplit les Z coordonn\xE9es avec la valeur de l'attribut Z + _bief.profils_.getGeomData().prepareExport(); + _bief.lignesDirectrices_.getGeomData().prepareExport(); + params[0]=_bief.profils_.getGeomData(); params[1]=_bief.lignesDirectrices_.getGeomData(); return params; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java 2009-03-21 18:29:25 UTC (rev 4558) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java 2009-03-23 10:03:11 UTC (rev 4559) @@ -295,6 +295,9 @@ updateGeom(_idxGeom, limitesStockagsesModified_, 0, idxAttlsGauche_); else if (_att==GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_DROITE) updateGeom(_idxGeom, limitesStockagsesModified_, 1, idxAttlsDroite_); + else if (_att==GISAttributeConstants.BATHY) + for(int i=0;i<lignesDirectricesModified_.getGeomData().getNumGeometries();i++) + updateLd(i); else if (_att==GISAttributeConstants.INTERSECTIONS_LIGNES_DIRECTRICES) /* * Attention subtilit\xE9 : Quand l'attribut est @@ -321,6 +324,7 @@ } public void geometryAction(Object _source, int _idxGeom, Geometry _geom, int _action) { + // La g\xE9om\xE9trie d'un profil a \xE9t\xE9 modifi\xE9e, on remet a jour les g\xE9om\xE9tries volatiles. if (_action==ZModelGeometryListener.GEOMETRY_ACTION_MODIFY) { updateGeom(_idxGeom, rivesModified_, 0, idxAttRiveGauche_); updateGeom(_idxGeom, rivesModified_, 1, idxAttRiveDroite_); @@ -336,6 +340,9 @@ */ private void regenerateAll() { GISZoneCollection zone=profilsListen_.getGeomData(); + // Pour que les coordonn\xE9es qui sont conserv\xE9es pour les g\xE9om\xE9tries volatiles soient correctement initialis\xE9es en Z. + zone.prepareExport(); + // Cr\xE9ation des nouvelles g\xE9om\xE9tries \\ // Rives Coordinate[] riveGauche=new Coordinate[profilsListen_.getNombre()]; @@ -395,6 +402,7 @@ if (ld[i].length>1) lignesDirectricesModified_.getGeomData().addGeometry(new GISPolyligne(new GISCoordinateSequenceFactory().create(ld[i])), dataLignesDirectrices[i], null); + lignesDirectrices_.getGeomData().postImport(0); } /** @@ -417,7 +425,7 @@ } /** - * Met \xE0 jours les lignes directrices. + * Remet \xE0 jour les coordonn\xE9es d'une ligne directrices depuis celles des profils. * si _idxGeom=-1, rien n'est fait * * @param _idxGeom @@ -426,20 +434,27 @@ private void updateLd(int _idxGeom) { if (_idxGeom==-1) return; + boolean binitZ=false; CoordinateSequence seqLd=lignesDirectricesModified_.getGeomData().getCoordinateSequence(_idxGeom); for (int i=0; i<profilsListen_.getNombre(); i++) { GISAttributeModelIntegerList lstIdx=(GISAttributeModelIntegerList)profilsListen_.getGeomData().getValue( idxAttlignesDirectrices_, i); + + // La construction des lignes directrices se fait a partir des coordonn\xE9es. + profilsListen_.getGeomData().initZCoordinate(i); CoordinateSequence seqProfil=profilsListen_.getGeomData().getCoordinateSequence(i); Coordinate coodProfil=seqProfil.getCoordinate(lstIdx.getValue(_idxGeom)); // Test si c'est bien un point \xE0 mettre \xE0 jour if (!UtilsProfil1d.egal(coodProfil, seqLd.getCoordinate(i))) { + binitZ=true; seqLd.setOrdinate(i, 0, coodProfil.x); seqLd.setOrdinate(i, 1, coodProfil.y); seqLd.setOrdinate(i, 2, coodProfil.z); lignesDirectricesModified_.getGeomData().setCoordinateSequence(_idxGeom, seqLd, null); } } + if (binitZ) + lignesDirectricesModified_.getGeomData().initZAttribute(_idxGeom); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java 2009-03-21 18:29:25 UTC (rev 4558) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java 2009-03-23 10:03:11 UTC (rev 4559) @@ -19,19 +19,17 @@ import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluListSelection; import org.fudaa.ctulu.CtuluNamedCommand; -import org.fudaa.ctulu.collection.CtuluCollection; import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISAttributeModel; import org.fudaa.ctulu.gis.GISAttributeModelIntegerList; import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; import org.fudaa.ctulu.gis.GISGeometryFactory; import org.fudaa.ctulu.gis.GISLib; import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; -import org.fudaa.ebli.geometrie.GrSegment; import org.fudaa.ebli.geometrie.GrVecteur; import org.fudaa.fudaa.commun.FudaaLib; -import org.fudaa.fudaa.modeleur.LibUtils; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.CoordinateSequence; @@ -114,8 +112,6 @@ private BiefContainer biefContainer_; /** Le profil selectionn\xE9. */ private int idxProfilSelected_=-1; - /** La collection contenant les Z des points du profil selectionn\xE9. */ - private CtuluCollection z_; /** La liste contenant les abscisses en travers du profil selectionn\xE9 */ private List<Double> curv_; // Caches \\ @@ -156,7 +152,6 @@ public void biefSelectedChanged(String _newName) { int oldSelectedProfil=idxProfilSelected_; idxProfilSelected_=-1; - z_=null; curv_=null; fireProfilContainerSelectedChanged(oldSelectedProfil, idxProfilSelected_); } @@ -169,7 +164,6 @@ if(_idxProfil==idxProfilSelected_) { int oldSelectedProfil=idxProfilSelected_; idxProfilSelected_=-1; - z_=null; curv_=null; fireProfilContainerSelectedChanged(oldSelectedProfil, idxProfilSelected_); } @@ -180,17 +174,18 @@ /** * Met \xE0 jour les valeurs zMin et zMax. - * Si z_ est null, zMin et zMax sont mises \xE0 -1. + * Si z est null, zMin et zMax sont mises \xE0 -1. */ protected void updateCacheZ(){ - if(z_!=null) { + GISAttributeModel z=getZCollection(); + if(z!=null) { idxZMax_=0; idxZMin_=0; - for (int i=1; i<z_.getSize(); i++) { - double val=(Double)z_.getObjectValueAt(i); - if (val>(Double)z_.getObjectValueAt(idxZMax_)) + for (int i=1; i<z.getSize(); i++) { + double val=(Double)z.getObjectValueAt(i); + if (val>(Double)z.getObjectValueAt(idxZMax_)) idxZMax_=i; - else if (val<(Double)z_.getObjectValueAt(idxZMin_)) + else if (val<(Double)z.getObjectValueAt(idxZMin_)) idxZMin_=i; } } @@ -230,7 +225,6 @@ */ protected void updateData() throws IllegalArgumentException, ProfilContainerException { if (idxProfilSelected_==-1) { - z_=null; curv_=null; curviligneDecalage_=0; idxRuptures_.clear(); @@ -252,20 +246,40 @@ if (seq.getX(i-1)==seq.getX(i)&&seq.getY(i-1)==seq.getY(i)) throw new ProfilContainerException(FudaaLib.getS("Au moins deux points dans le profil sont confondus.")); */ - // Verifie que le profil donn\xE9 ne poss\xE8de pas des axes qui se coupent entre eux \\ + // Verifie que le profil donn\xE9 ne poss\xE8de pas des segments qui se coupent entre eux \\ for(int i=1;i<seq.size();i++){ - Geometry mainAxe=GISGeometryFactory.INSTANCE.createLineString(new Coordinate[]{seq.getCoordinate(i-1), seq.getCoordinate(i)}); + // On passe les segments de longueur nulle. + if (seq.getCoordinate(i-1).equals2D(seq.getCoordinate(i))) continue; + + Geometry seg1=GISGeometryFactory.INSTANCE.createLineString(new Coordinate[]{seq.getCoordinate(i-1), seq.getCoordinate(i)}); boolean ok=true; - // Un seul point d'intersection avec l'axe qui suit - if(i+1<seq.size()&&mainAxe.intersection(GISGeometryFactory.INSTANCE.createLineString(new Coordinate[]{seq.getCoordinate(i), seq.getCoordinate(i+1)})).getNumPoints()>1) - ok=false; - // Aucun point d'intersectin avec les axes qui suivent + + // Valide : Un seul point d'intersection avec l'axe qui suit int j=i; - while(ok&&++j+1<seq.size()) - ok=(!mainAxe.intersects(GISGeometryFactory.INSTANCE.createLineString(new Coordinate[]{seq.getCoordinate(j), seq.getCoordinate(j+1)})))||seq.getCoordinate(j).equals(seq.getCoordinate(i)); - // Traitement d'une \xE9ventuelle intersection + while(ok && j+1<seq.size()) { + // On passe les segments de longueur nulle. + if (!seq.getCoordinate(j).equals2D(seq.getCoordinate(j+1))) { + Geometry seg2=GISGeometryFactory.INSTANCE.createLineString(new Coordinate[]{seq.getCoordinate(j), seq.getCoordinate(j+1)}); + ok=seg1.intersection(seg2).getNumPoints()==1; + j++; + break; + } + j++; + } + + // Valide : Aucun point d'intersection avec les axes qui suivent + while(ok && j+1<seq.size()) { + // On passe les segments de longueur nulle. + if (!seq.getCoordinate(j).equals2D(seq.getCoordinate(j+1))) { + Geometry seg2=GISGeometryFactory.INSTANCE.createLineString(new Coordinate[]{seq.getCoordinate(j), seq.getCoordinate(j+1)}); + ok=!seg1.intersects(seg2); + } + j++; + } + + // Une intersection a \xE9t\xE9 trouv\xE9e. if(!ok) - throw new ProfilContainerException(FudaaLib.getS("Le profil se coupe lui m\xEAme. Il n'est donc pas valide.")); + throw new ProfilContainerException(FudaaLib.getS("Profil non conforme : Il se coupe lui m\xEAme")); } /// D\xE9termination des points de ruptures. \\\ @@ -299,10 +313,9 @@ idxRuptures[i+1]=it.next(); idxRuptures[idxRuptures.length-1]=seq.size()-1; // On ne lin\xE9arise plus. Pose des probl\xE8me lors des undo, car les collections sont modifi\xE9es. Ce n'est pas priori pas g\xE9nant, - // les points de ruptures fonctionnent semblent regler une partie du probl\xE8me. + // les points de ruptures semblent regler la totalit\xE9 du probl\xE8me. // LibUtils.linearisePolyligne(biefContainer_.getZoneProfils(), idxProfilSelected_, idxRuptures, null); - z_=(CtuluCollection)biefContainer_.getZoneProfils().getValue(biefContainer_.getZoneProfils().getIndiceOf(biefContainer_.getZoneProfils().getAttributeIsZ()), idxProfilSelected_); curv_=new ArrayList<Double>(); // Calcul des acbscisses curvilignes => hypoth\xE8se d'ordonnancement correcte des points \\ updateCacheCurv(); @@ -313,7 +326,6 @@ catch(ProfilContainerException _exp) { // Remise dans un \xE9tat coh\xE9rent idxProfilSelected_=-1; - z_=null; curv_=null; curviligneDecalage_=0; idxRuptures_.clear(); @@ -344,6 +356,14 @@ } /** + * Retourne la collection correspondant au Z profil. + */ + private GISAttributeModel getZCollection() { + if (idxProfilSelected_==-1) return null; + return (GISAttributeModel)getValueOf(biefContainer_.getZoneProfils().getAttributeIsZ()); + } + + /** * Retourne la valeur de l'attribut d'intersection demand\xE9. */ private Object getValueOf(GISAttributeInterface attr_) { @@ -651,7 +671,7 @@ if (intersect.getNumPoints()!=1) { cmp.undo(); // Annulation des modifications throw new ProfilContainerException( - FudaaLib.getS("D\xE9placement non autoris\xE9 : Le profil couperait l'axe hydraulique en au moins deux endroits.")); + FudaaLib.getS("D\xE9placement non autoris\xE9 : Le profil coupe l'axe hydraulique en deux endroits.")); } } } @@ -687,9 +707,10 @@ } public double getZ(int _idxPoint) { - if (z_==null||_idxPoint<0||_idxPoint>=z_.getSize()) + GISAttributeModel z=getZCollection(); + if (z==null||_idxPoint<0||_idxPoint>=z.getSize()) throw new IllegalArgumentException("Cet index n'existe pas."); - return ((Double)z_.getObjectValueAt(_idxPoint)).doubleValue(); + return ((Double)z.getObjectValueAt(_idxPoint)).doubleValue(); } public void setCurv(int _idxPoint, double _value, CtuluCommandContainer _cmd) throws ProfilContainerException { @@ -944,20 +965,26 @@ public void setZ(int _idxPoint, double _value, CtuluCommandContainer _cmd) { if (getZ(_idxPoint)==_value) return; - if (z_==null||_idxPoint<0||_idxPoint>=z_.getSize()) + GISAttributeModel z=getZCollection(); + if (z==null||_idxPoint<0||_idxPoint>=z.getSize()) throw new IllegalArgumentException("Cet index n'existe pas."); - CtuluCommandComposite cmd=new CtuluCommandComposite("Changement z"); + CtuluCommandComposite cmp=new CtuluCommandComposite("Changement z"); // Mise \xE0 jour du z \\ - z_.setObject(_idxPoint, _value, cmd); + // B.M. Il faut indiquer que l'attribut a chang\xE9, pour que les g\xE9om\xE9tries volatiles soient remises a jour. + z=((GISAttributeModel)z).createSubModel(new int[0]); + z.setObject(_idxPoint, _value, null); + int iattZ=biefContainer_.getZoneProfils().getIndiceOf(GISAttributeConstants.BATHY); + biefContainer_.getZoneProfils().setAttributValue(iattZ, idxProfilSelected_, z, cmp); + // Gestion du undo/redo \\ if(_cmd!=null) - _cmd.addCmd(new DGCommandUndoRedo(cmd, true, false)); + _cmd.addCmd(new DGCommandUndoRedo(cmp, true, false)); // Mise \xE0 jour de idxZMin_ et idxZMax_ if (_idxPoint==idxZMax_||_idxPoint==idxZMin_) updateCacheZ(); - else if (_value>(Double)z_.getObjectValueAt(idxZMax_)) + else if (_value>(Double)z.getObjectValueAt(idxZMax_)) idxZMax_=_idxPoint; - else if (_value<(Double)z_.getObjectValueAt(idxZMin_)) + else if (_value<(Double)z.getObjectValueAt(idxZMin_)) idxZMin_=_idxPoint; fireProfilContainerDataModified(); } @@ -977,17 +1004,19 @@ } public double getZMax() { - if(z_==null) + GISAttributeModel z=getZCollection(); + if(z==null) return 0; else - return (Double) z_.getObjectValueAt(idxZMax_); + return (Double) z.getObjectValueAt(idxZMax_); } public double getZMin() { - if(z_==null) + GISAttributeModel z=getZCollection(); + if(z==null) return 0; else - return (Double) z_.getObjectValueAt(idxZMin_); + return (Double) z.getObjectValueAt(idxZMin_); } public void setValues(int _idxPoint, double _valueCurv, double _valueZ, CtuluCommandContainer _cmd) throws ProfilContainerException{ @@ -1003,7 +1032,8 @@ } public void remove(int _idxPoint, CtuluCommandContainer _cmd) throws ProfilContainerException { - if(biefContainer_.getZoneProfils()==null||z_==null||curv_==null||_idxPoint<0||_idxPoint>=curv_.size()) + GISAttributeModel z=getZCollection(); + if(biefContainer_.getZoneProfils()==null||z==null||curv_==null||_idxPoint<0||_idxPoint>=curv_.size()) throw new IllegalArgumentException("Cet index n'existe pas."); if(curv_.size()==2) throw new ProfilContainerException("On ne peut pas enlever un point quand il n'en reste que deux."); @@ -1013,7 +1043,6 @@ // Gestion du undo/redo \\ if(_cmd!=null) _cmd.addCmd(new DGCommandUndoRedo(cmd, true, true)); - z_=(CtuluCollection)biefContainer_.getZoneProfils().getValue(biefContainer_.getZoneProfils().getIndiceOf(biefContainer_.getZoneProfils().getAttributeIsZ()), idxProfilSelected_); // Mise \xE0 jour des informations curvilignes \\ if (_idxPoint==0) { // Si _idxPoint est le premier point Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/ExportPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/ExportPanel.java 2009-03-21 18:29:25 UTC (rev 4558) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/ExportPanel.java 2009-03-23 10:03:11 UTC (rev 4559) @@ -98,8 +98,11 @@ } // Verification de l'\xE9crasement - if(f.exists()&&!ui_.question(CtuluLib.getS("Attention"), CtuluLib.getS("Le fichier {0} existe d\xE9j\xE0. Voulez-vous l'\xE9craser?", CtuluLibFile.getSansExtension(f.getName())))) + if(f.exists()) { + if (!ui_.question(CtuluLib.getS("Attention"), CtuluLib.getS("Le fichier '{0}' existe d\xE9j\xE0. Voulez-vous l'\xE9craser?", f.getName()))) return false; + f.delete(); + } if (CtuluLibFile.getExtension(CtuluLibFile.getSansExtension(f.getName()))!=null) { setErrorText(CtuluLib.getS("Ne mettez pas plusieurs '.' dans le nom.")); return false; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueCourbe.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueCourbe.java 2009-03-21 18:29:25 UTC (rev 4558) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueCourbe.java 2009-03-23 10:03:11 UTC (rev 4559) @@ -39,6 +39,8 @@ import org.fudaa.ebli.courbe.EGGrapheSimpleModel; import org.fudaa.ebli.courbe.EGModel; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; +import org.fudaa.ebli.trace.TraceIcon; +import org.fudaa.ebli.trace.TraceIconModel; import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.trace.TraceLigneModel; import org.fudaa.fudaa.commun.FudaaLib; @@ -458,6 +460,7 @@ courbeModel_=new CourbeGeomModel(_dataGeom); courbe_=new EGCourbeSimple(axeY, courbeModel_); courbe_.setAspectContour(Color.RED); + courbe_.setIconeModel(new TraceIconModel(TraceIcon.CARRE_PLEIN,2,Color.RED)); grapheModel.addCourbe(courbe_, null); // Cr\xE9ation du panel contenant l'ensemble des courbes \\ containerCourbe_ = new EGFillePanel(grapheVue_); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueTableau.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueTableau.java 2009-03-21 18:29:25 UTC (rev 4558) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueTableau.java 2009-03-23 10:03:11 UTC (rev 4559) @@ -92,7 +92,7 @@ * @throws ProfilContainerException */ public void moveProfilOnAxeHydraulique(double _value) throws ProfilContainerException { - CtuluCommandComposite cmp=new CtuluCommandComposite(FudaaLib.getS("D\xE9placement d'un profil")); + CtuluCommandComposite cmp=new CtuluCommandComposite(FudaaLib.getS("Changement d'abscisse de profil sur l'axe")); boolean result=data_.moveProfilOnAxeHydraulique(_value, cmp); if(result) controller_.orderProfils(cmp); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |