From: <emm...@us...> - 2008-10-03 15:30:10
|
Revision: 4030 http://fudaa.svn.sourceforge.net/fudaa/?rev=4030&view=rev Author: emmanuel_martin Date: 2008-10-03 15:29:59 +0000 (Fri, 03 Oct 2008) Log Message: ----------- L'attribut ETAT_GEOM existe par defaut et passe automatiquement ?\195?\160 modifi?\195?\169 losqu'une action est faite sur la g?\195?\169ometrie. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/Mv3DFrontierData.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -10,10 +10,11 @@ import java.util.ArrayList; import java.util.List; -import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibString; -import org.fudaa.ctulu.gui.CtuluValueEditorStringRestricted; +import org.fudaa.ctulu.gui.CtuluValueEditorChoice; +import org.fudaa.ctulu.CtuluLib; + import com.memoire.fu.FuLib; /** @@ -153,9 +154,7 @@ /** * Un attribut etat, global a la g\xE9om\xE9trie. */ - public final static GISAttributeString ETAT_GEOM=new GISAttributeString(new CtuluValueEditorStringRestricted(new String[]{ - ATT_VAL_ETAT_ORIG, ATT_VAL_ETAT_MODI}, new String[]{CtuluLib.getS("Origine"), CtuluLib.getS("Modifi\xE9")}), CtuluLib - .getS("Etat"), false) { + public final static GISAttributeString ETAT_GEOM=new GISAttributeString(new CtuluValueEditorChoice(new String[]{ATT_VAL_ETAT_ORIG, ATT_VAL_ETAT_MODI}, new String[]{CtuluLib.getS("Origine"), CtuluLib.getS("Modifi\xE9")}), CtuluLib.getS("Etat"), false) { public String getID() { return "ATTRIBUTE_ETAT_GEOM"; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -270,8 +270,9 @@ * @param _geom La g\xE9om\xE9trie. * @param _datas Les valeurs d'attributs, dans l'ordre. * @param _cmd Le manager de commandes. + * @return l'index de l'attribut cr\xE9e, -1 si rien n'est cr\xE9e */ - public abstract void addGeometry(Geometry _geom, Object[] _datas, CtuluCommandContainer _cmd); + public abstract int addGeometry(Geometry _geom, Object[] _datas, CtuluCommandContainer _cmd); public void removeGeometries(final int[] _idx, CtuluCommandContainer _cmd) { super.geometry_.remove(_idx, _cmd); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -90,13 +90,15 @@ throw new IllegalAccessError("Can't call this method"); } - public void addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { + public int addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { if (!(_geom instanceof GISCoordinateSequenceContainerInterface)) throw new IllegalArgumentException("Bad type geometry"); if (isGeomModifiable_) { geometry_.add(_geom, Arrays.asList(createAttributeList(_data, _geom, true)), _cmd); + return geometry_.getSize() - 1; } + return -1; } public boolean accept(final GISVisitor _v) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -183,13 +183,15 @@ } } - public void addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { + public int addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { if (!(_geom instanceof LineString)) throw new IllegalArgumentException("Bad type geometry"); if (isGeomModifiable_) { geometry_.add(_geom, Arrays.asList(createAttributeList(_data, _geom, true)), _cmd); + return geometry_.getSize() - 1; } + return -1; } /** Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -173,13 +173,16 @@ addGeometry(geom,_data,_cmd); } - public void addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { + public int addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { if (!(_geom instanceof GISMultiPoint)) throw new IllegalArgumentException("Bad type geometry"); if (isGeomModifiable_) { - geometry_.add(_geom, Arrays.asList(createAttributeList(_data, _geom, true)), _cmd); + Object[] atts = createAttributeList(_data, _geom, true); + geometry_.add(_geom, Arrays.asList(atts), _cmd); + return geometry_.getSize() - 1; } + return -1; } public boolean accept(final GISVisitor _v) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionPoint.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionPoint.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -242,10 +242,11 @@ return geometry_.add(new GISPoint(_x, _y, _z), _o, _c); } - public void addGeometry(final Geometry _seq, final Object[] _datas, final CtuluCommandContainer _cmd) { + public int addGeometry(final Geometry _seq, final Object[] _datas, final CtuluCommandContainer _cmd) { final Point p = (Point) _seq; add(p.getX(), p.getY(), p.getCoordinateSequence().getOrdinate(0, 2), _datas == null ? null : Arrays.asList(_datas), _cmd); + return size() - 1; } public void addCoordinateSequence(final CoordinateSequence _seq, final Object[] _datas, Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -11,6 +11,7 @@ import java.util.Arrays; import javax.swing.DefaultCellEditor; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.table.TableCellEditor; @@ -25,37 +26,65 @@ */ public class CtuluValueEditorChoice implements CtuluValueEditorI { - final String[] choices_; + /** + * Les deux tableaux existent pour permettre un affichage diff\xE9rent des + * valeurs r\xE9els retourn\xE9es. Le cas d'utilisation \xE9tant + * l'internationnalisation : on poss\xE8de des infomations au sujet d'un \xE9l\xE9ment + * quelconque, par exemple les couleurs primaires ; on veut afficher ces + * couleurs dans la langue de l'utilisateur, mais poss\xE9der les m\xEAmes + * d\xE9nominations dans le code. Ainsi reelChoices poss\xE9dera les valeurs + * constantes (exemple BLUE, RED, GREEN) et displayChoices poss\xE9dera les + * traductions dans la langue de l'utilisateur (Bleu, Rouge, Vert). Dans le + * cas o\xF9 displayChoices n'est pas renseign\xE9 \xE0 l'instanciation, reelChoice + * sera consid\xE9r\xE9 comme valeur reel et d'affichage. + */ + private String[] displayChoices_; + private String[] reelChoices_; + + private boolean useInteger_; - public boolean useInteger_; - - public CtuluValueEditorChoice(final String[] _choices) { + /** + * Dans le cas o\xF9 dChoices est null, reelChoices sera \xE9galement affich\xE9. + * @param _reelChoices Les choix retourn\xE9s lors des getValue + * @param _dChoices Les choix affich\xE9s par la comboBox + */ + public CtuluValueEditorChoice(final String[] _reelChoices, final String[] _dChoices) { super(); - choices_ = _choices; + useInteger_ = false; + reelChoices_ = _reelChoices; + displayChoices_ = _dChoices; + if(displayChoices_!=null && reelChoices_.length!=displayChoices_.length) + throw new IllegalArgumentException("reelChoices_ and displayChoices_ must have the same size."); } private BuComboBox getCb() { - return new BuComboBox(choices_); + if(displayChoices_!=null) + return new BuComboBox(displayChoices_); + else + return new BuComboBox(reelChoices_); } - - - public Class getDataClass() { + public Class<Arrays> getDataClass() { return Arrays.class; } private boolean isMixteComponent(final BuComboBox _buComboBox) { - return _buComboBox.getModel().getSize() > choices_.length; + return _buComboBox.getModel().getSize() > reelChoices_.length; } private boolean isMixteValuesSelected(final BuComboBox _buComboBox) { - return isMixteComponent(_buComboBox) && _buComboBox.getSelectedIndex() >= choices_.length; + return isMixteComponent(_buComboBox) && _buComboBox.getSelectedIndex() >= reelChoices_.length; } public JComponent createCommonEditorComponent() { - final String[] extendedChoices = new String[choices_.length + 1]; - extendedChoices[choices_.length] = "< " + CtuluLib.getS("Ind\xE9fini") + " >"; - System.arraycopy(choices_, 0, extendedChoices, 0, choices_.length); + String[] elements; + if(displayChoices_!=null) + elements = displayChoices_; + else + elements=reelChoices_; + final String[] extendedChoices = new String[elements.length + 1]; + extendedChoices[elements.length] = "< " + CtuluLib.getS("Ind\xE9fini") + " >"; + System.arraycopy(elements, 0, extendedChoices, 0, elements.length); return new BuComboBox(extendedChoices); } @@ -90,7 +119,7 @@ /* * if (useInteger_) { return CtuluLibString.getString(buComboBox.getSelectedIndex()); } */ - return (String) buComboBox.getSelectedItem(); + return reelChoices_[buComboBox.getSelectedIndex()]; } /** @@ -104,7 +133,7 @@ if (useInteger_) { return new Integer(buComboBox.getSelectedIndex()); } - return buComboBox.getSelectedItem(); + return reelChoices_[buComboBox.getSelectedIndex()]; } public boolean isEditable() { @@ -131,16 +160,16 @@ public void setValue(final Object _s, final Component _comp) { if (useInteger_) { if (_s == null && isMixteComponent((BuComboBox) _comp)) { - ((BuComboBox) _comp).setSelectedIndex(choices_.length); + ((BuComboBox) _comp).setSelectedIndex(reelChoices_.length); } else if (_s != null) { ((BuComboBox) _comp).setSelectedIndex(((Integer) _s).intValue()); } } else { - final int idx = CtuluLibArray.findObject(choices_, _s); + final int idx = CtuluLibArray.findObject(reelChoices_, _s); if (idx >= 0) { ((BuComboBox) _comp).setSelectedIndex(idx); } else if (isMixteComponent(((BuComboBox) _comp))) { - ((BuComboBox) _comp).setSelectedIndex(choices_.length); + ((BuComboBox) _comp).setSelectedIndex(reelChoices_.length); } } @@ -148,7 +177,7 @@ public String toString(final Object _o) { if (useInteger_) { - return _o == null ? "null" : choices_[((Integer) _o).intValue()]; + return _o == null ? "null" : reelChoices_[((Integer) _o).intValue()]; } return _o == null ? "null" : _o.toString(); } @@ -160,5 +189,4 @@ public void setReturnInteger(final boolean _returnInteger) { useInteger_ = _returnInteger; } - } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -185,15 +185,7 @@ modele_.point(seg.e_, i, j); modele_.point(seg.o_, i, j-1); if (seg.distanceXY(ptToTest)<distanceReel) { - // Modification de l'etat de la geometrie - boolean found=false; - int k=-1; - while (!found&&++k<modele_.getGeomData().getNbAttributes()) - found=modele_.getGeomData().getAttribute(k)==GISAttributeConstants.ETAT_GEOM; - if (found) - modele_.getGeomData().getDataModel(k).setObject(i, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); - // Fin de la modification de l'etat de la geometrie - addPoint(i, k-1, ptToTest.x_, ptToTest.y_, _cmd); + addPoint(i, j-1, ptToTest.x_, ptToTest.y_, _cmd); return true; } } @@ -201,14 +193,6 @@ modele_.point(seg.e_, i, 0); modele_.point(seg.o_, i, modele_.getNbPointForGeometry(i)-1); if (seg.distanceXY(ptToTest)<distanceReel) { - // Modification de l'etat de la geometrie - boolean found=false; - int j=-1; - while (!found&&++j<modele_.getGeomData().getNbAttributes()) - found=modele_.getGeomData().getAttribute(j)==GISAttributeConstants.ETAT_GEOM; - if (found) - modele_.getGeomData().getDataModel(j).setObject(i, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); - // Fin de la modification de l'etat de la geometrie addPoint(i, modele_.getNbPointForGeometry(i)-1, ptToTest.x_, ptToTest.y_, _cmd); return true; } @@ -380,5 +364,4 @@ public final void setEditor(final ZEditorInterface _editor) { editor_ = _editor; } - } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -114,6 +114,7 @@ iterator.advance(); //l'indice de la ligne final int idxLigne = iterator.key(); + setGeomModif(idxLigne, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie //les points a enlever final CtuluListSelectionInterface sel = (CtuluListSelectionInterface) iterator.value(); geometries_.removeAtomics(idxLigne, sel, _ui, cmp); @@ -261,6 +262,8 @@ } final CoordinateSequence g = ((LineString) geometries_.getGeometry(_ligneIdx)) .getCoordinateSequence(); + // Modification de l'\xE9tat de la g\xE9om\xE9trie + setGeomModif(_ligneIdx, _cmd); // Cr\xE9ation du segment d\xE9fini par les deux point de la forme // Construction du point projet\xE9 grace \xE0 'pointPlusProche' GrPoint point = (new GrSegment(new GrPoint(g.getX(_idxBefore), g.getY(_idxBefore), 0), @@ -317,6 +320,11 @@ dataline1[i]=name+"_1"; dataline2[i]=name+"_2"; } + // CAs particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI + else if(attmodel.getAttribute()==GISAttributeConstants.ETAT_GEOM) { + dataline1[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + dataline2[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + } else { dataline1[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_ligneIdx),1); dataline2[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_ligneIdx),1); @@ -413,6 +421,10 @@ String name2=(String)geometries_.getModel(att).getObjectValueAt(_ligneIdx[1]); dataline[att]=name1+"_"+name2; } + // Cas particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI + else if (geometries_.getModel(att).getAttribute()==GISAttributeConstants.ETAT_GEOM) { + dataline[att]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + } else dataline[att]=geometries_.getModel(att).getAttribute().createDataForGeom(geometries_.getModel(att).getObjectValueAt(_ligneIdx[0]),1); } @@ -480,6 +492,7 @@ final int min = _selection.getMinIndex(); for (int i = _selection.getMaxIndex(); i >= min; i--) { if (_selection.isSelected(i)) { + setGeomModif(i, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie r = true; final CoordinateSequence newSeq = ((LineString) geometries_.getGeometry(i).clone()).getCoordinateSequence(); for (int j = newSeq.size() - 1; j >= 0; j--) { @@ -550,6 +563,7 @@ if (!s.isEmpty()) { r = true; final int idx = it.key(); + setGeomModif(idx, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie final CoordinateSequence newSeq = ((LineString) geometries_.getGeometry(idx).clone()) .getCoordinateSequence(); @@ -632,6 +646,7 @@ final int min = _selection.getMinIndex(); for (int i = _selection.getMaxIndex(); i >= min; i--) { if (_selection.isSelected(i)) { + setGeomModif(i, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie r = true; final CoordinateSequence newSeq = ((LineString) geometries_.getGeometry(i).clone()).getCoordinateSequence(); for (int j = newSeq.size() - 1; j >= 0; j--) { @@ -684,6 +699,7 @@ if (!s.isEmpty()) { r = true; final int idx = it.key(); + setGeomModif(idx, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie final CoordinateSequence newSeq = ((LineString) geometries_.getGeometry(idx).clone()) .getCoordinateSequence(); final int min = s.getMinIndex(); @@ -743,6 +759,8 @@ return false; } geometries_.removeLignes(_idx, _cmd); + for(int i=0 ; i<_idx.length;i++) + setGeomModif(_idx[i], _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie return true; } @@ -767,6 +785,7 @@ for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) { Object val=geometries_.getValue(iatt,idx); if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=CtuluLib.getS("Copie de")+" "+val; + if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.ETAT_GEOM)) val=GISAttributeConstants.ATT_VAL_ETAT_MODI; int nbpt=geom.getNumPoints(); vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt); } @@ -777,4 +796,14 @@ if (_cmd!=null) _cmd.addCmd(cmp.getSimplify()); return true; } + + /** + * Fait passer la g\xE9om\xE9trie en Modifier + * @param _idx : index de la geom\xE9trie + * @param _cmd : + */ + public void setGeomModif(int _idx, CtuluCommandContainer _cmd) { + getGeomData().getDataModel(getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(_idx, + GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -413,6 +413,7 @@ */ public void addAtomic(final int _idxGeom,final int _idxBefore,final double _x,final double _y,final CtuluCommandContainer _cmd){ if (geometries_ == null) return; + setGeomModif(_idxGeom, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie geometries_.addAtomic(_idxGeom, _idxBefore, _x, _y, _cmd); } @@ -502,6 +503,7 @@ final int min = _selection.getMinIndex(); for (int i = _selection.getMaxIndex(); i >= min; i--) { if (_selection.isSelected(i)) { + setGeomModif(i, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie r = true; Coordinate[] newSeq = ((Geometry) geometries_.getGeometry(i).clone()).getCoordinates(); for (int j = newSeq.length - 1; j >= 0; j--) { @@ -603,6 +605,11 @@ datageom1[i]=name+"_1"; datageom2[i]=name+"_2"; } + // CAs particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI + else if(attmodel.getAttribute()==GISAttributeConstants.ETAT_GEOM) { + datageom1[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + datageom2[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + } else { datageom1[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_geomIdx),1); datageom2[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_geomIdx),1); @@ -644,6 +651,7 @@ if (!s.isEmpty()) { r = true; final int idx = it.key(); + setGeomModif(idx, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie Coordinate[] newSeq = ((Geometry) geometries_.getGeometry(idx).clone()).getCoordinates(); // Translation suivant Z si attribut Z non null et atomic. @@ -700,6 +708,7 @@ iterator.advance(); //l'indice de la ligne final int idxLigne = iterator.key(); + setGeomModif(idxLigne, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie //les points a enlever final CtuluListSelectionInterface sel = (CtuluListSelectionInterface) iterator.value(); geometries_.removeAtomics(idxLigne, sel, _ui, cmp); @@ -714,6 +723,8 @@ if (geometries_ == null) { return false; } + for(int i=0 ; i<_idx.length;i++) + setGeomModif(_idx[i], _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie geometries_.removeGeometries(_idx, _cmd); return true; } @@ -736,6 +747,7 @@ final int min = _selection.getMinIndex(); for (int i = _selection.getMaxIndex(); i >= min; i--) { if (_selection.isSelected(i)) { + setGeomModif(i, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie r = true; final Coordinate[] newSeq = ((Geometry) geometries_.getGeometry(i).clone()).getCoordinates(); for (int j = newSeq.length - 1; j >= 0; j--) { @@ -782,6 +794,7 @@ if (!s.isEmpty()) { r = true; final int idx = it.key(); + setGeomModif(idx, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie final Coordinate[] newSeq = ((Geometry) geometries_.getGeometry(idx).clone()).getCoordinates(); final int min = s.getMinIndex(); for (int j = s.getMaxIndex(); j >= min; j--) { @@ -834,6 +847,7 @@ for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) { Object val=geometries_.getValue(iatt,idx); if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=CtuluLib.getS("Copie de")+" "+val; + if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.ETAT_GEOM)) val=GISAttributeConstants.ATT_VAL_ETAT_MODI; int nbpt=geom.getNumPoints(); vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt); } @@ -856,4 +870,14 @@ public final boolean isGeometryVisible(final int _idxLigne) { return true; } + + /** + * Fait passer la g\xE9om\xE9trie en Modifier + * @param _idx : index de la geom\xE9trie + * @param _cmd : + */ + public void setGeomModif(int _idx, CtuluCommandContainer _cmd) { + getGeomData().getDataModel(getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(_idx, + GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -165,12 +165,14 @@ * @return true si ok. */ public boolean removePoint(final int[] _idx, final CtuluCommandContainer _cmd) { + for(int i=0;i<_idx.length;i++) + setGeomModif(_idx[i], _cmd); // Modification de l'etat de la g\xE9om\xE9trie return pts_.remove(_idx, _cmd); } public boolean setPoint(final int _idx, final double _newX, final double _newY, final CtuluCommandContainer _cmd) { + setGeomModif(_idx, _cmd); // Modification de l'etat de la g\xE9om\xE9trie return pts_.set(_idx, _newX, _newY, _cmd); - } public boolean point(final GrPoint _p, final int _i, final boolean _force) { @@ -248,6 +250,7 @@ for (int iatt=0; iatt<pts_.getNbAttributes(); iatt++) { Object val=pts_.getValue(iatt,idx); if (pts_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=CtuluLib.getS("Copie de")+" "+val; + if (pts_.getAttribute(iatt).equals(GISAttributeConstants.ETAT_GEOM)) val=GISAttributeConstants.ATT_VAL_ETAT_MODI; int nbpt=geom.getNumPoints(); vals[iatt]=pts_.getAttribute(iatt).createDataForGeom(val, nbpt); } @@ -298,4 +301,14 @@ _pt.y_=getY(_idxGeom); return true; } + + /** + * Fait passer la g\xE9om\xE9trie en Modifier + * @param _idx : index de la geom\xE9trie + * @param _cmd : + */ + public void setGeomModif(int _idx, CtuluCommandContainer _cmd) { + getGeomData().getDataModel(getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(_idx, + GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/Mv3DFrontierData.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/Mv3DFrontierData.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/Mv3DFrontierData.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -154,7 +154,7 @@ } } selectionIntern.sort(); - final CtuluValueEditorChoice type = new CtuluValueEditorChoice(new String[] { getStrNone(), getStrBuilding() }); + final CtuluValueEditorChoice type = new CtuluValueEditorChoice(new String[] { getStrNone(), getStrBuilding() }, null); type.setReturnInteger(true); final CtuluValueEditorDouble db = new CtuluValueEditorDouble(true); final CtuluValuesEditorPanel pn = new CtuluValuesEditorPanel(new String[] { MvResource.getS("Type"), 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-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -144,7 +144,12 @@ GISZoneCollection colsrc=((ZModeleGeometry)getScene().getLayerForId(idxGeom[i]).modeleDonnees()).getGeomData(); for (int iatt=0; iatt<datadest.length; iatt++) { int idxAtt=colsrc.getIndiceOf(coldest.getAttribute(iatt)); - if (idxAtt!=-1) datadest[iatt]=colsrc.getValue(idxAtt,getScene().sceneId2LayerId(idxGeom[i])); + if (idxAtt!=-1) { + datadest[iatt]=colsrc.getValue(idxAtt, getScene().sceneId2LayerId(idxGeom[i])); + // Les nouvelles g\xE9om\xE9tries sont modifi\xE9s, pas d'origine + if (colsrc.getAttribute(idxAtt)==GISAttributeConstants.ETAT_GEOM) + datadest[iatt]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + } } // La g\xE9om\xE9trie @@ -315,6 +320,8 @@ int idx=getScene().sceneId2LayerId(idxGeom[i]); if (zatt!=-1) col.setAttributValue(zatt, idx, vals, cmp); + // Changement de l'attribut ETAT_GEOM en modifi\xE9 + col.getDataModel(col.getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, null); } if (mng_ != null) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -67,7 +67,9 @@ coords[coords.length-1]=(Coordinate)_coords[1].clone(); GISPolyligne poly = (GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(coords); - geometries_.addGeometry(poly, null, _cmd); + int idx = geometries_.addGeometry(poly, null, _cmd); + if(idx!=-1) + getGeomData().getDataModel(geometries_.getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); return true; } @@ -163,6 +165,7 @@ CtuluListSelectionInterface ids = new CtuluListSelection(list.toNativeArray()); geometries_.removeAtomics(_idxGeom, ids, null, _cmd); // L'UI est null, le cas ou moins de 2 points ne peut pas arriver. + setGeomModif(_idxGeom, _cmd); // Modification de l'etat de la g\xE9om\xE9trie return true; } @@ -223,6 +226,7 @@ GISPolyligne newgeom=(GISPolyligne)GISGeometryFactory.INSTANCE.createLineString((Coordinate[])coords.toArray(new Coordinate[0])); geometries_.setValue(_idxGeom, newgeom, _cmd); + setGeomModif(_idxGeom, _cmd); // Modification de l'etat de la g\xE9om\xE9trie return true; } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -58,7 +58,10 @@ coords[coords.length-1]=(Coordinate)_coords[1].clone(); GISMultiPoint poly = (GISMultiPoint) GISGeometryFactory.INSTANCE.createMultiPoint(coords); - geometries_.addGeometry(poly, null, _cmd); + int idx = geometries_.addGeometry(poly, null, _cmd); + // Modification de l'etat de la g\xE9ometrie en modifi\xE9e + if(idx != -1) + getGeomData().getDataModel(geometries_.getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); return true; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |