|
From: <bma...@us...> - 2008-06-12 13:38:40
|
Revision: 3639
http://fudaa.svn.sourceforge.net/fudaa/?rev=3639&view=rev
Author: bmarchan
Date: 2008-06-12 06:38:48 -0700 (Thu, 12 Jun 2008)
Log Message:
-----------
Bug#21 : Correction CTRL-A sur les calques invisibles.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesMultiSpecial.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueMultiPoint.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacWeirLayer.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java 2008-06-12 13:36:36 UTC (rev 3638)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java 2008-06-12 13:38:48 UTC (rev 3639)
@@ -205,6 +205,7 @@
}
public void selectAll() {
+ if (!isVisible()) return;
initSelection();
selection_.addInterval(0, modeleDonnees().getNombre() - 1);
fireSelectionEvent();
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java 2008-06-12 13:36:36 UTC (rev 3638)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java 2008-06-12 13:38:48 UTC (rev 3639)
@@ -616,4 +616,14 @@
public boolean isAntialiasing() {
return antialiasing_;
}
+
+ /**
+ * Efface la selection si le calque est rendu invisible.
+ */
+ public void setVisible(boolean _b) {
+ if (isVisible()!=_b) {
+ super.setVisible(_b);
+ if (!_b) clearSelection();
+ }
+ }
}
\ No newline at end of file
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesMultiSpecial.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesMultiSpecial.java 2008-06-12 13:36:36 UTC (rev 3638)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesMultiSpecial.java 2008-06-12 13:38:48 UTC (rev 3639)
@@ -47,6 +47,8 @@
}
public void selectAll(){
+ if (!isVisible()) return;
+
initSelection();
final ZModeleDonneesMulti m = getModeleMulti();
for (int i = m.getNombre() - 1; i >= 0; i--) {
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2008-06-12 13:36:36 UTC (rev 3638)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2008-06-12 13:38:48 UTC (rev 3639)
@@ -662,6 +662,8 @@
}
public void selectAll() {
+ if (!isVisible()) return;
+
if (!isAtomicMode_) {
super.selectAll();
return;
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueMultiPoint.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueMultiPoint.java 2008-06-12 13:36:36 UTC (rev 3638)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueMultiPoint.java 2008-06-12 13:38:48 UTC (rev 3639)
@@ -512,6 +512,8 @@
}
public void selectAll() {
+ if (!isVisible()) return;
+
if (!isAtomicMode_) {
super.selectAll();
return;
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacWeirLayer.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacWeirLayer.java 2008-06-12 13:36:36 UTC (rev 3638)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacWeirLayer.java 2008-06-12 13:38:48 UTC (rev 3639)
@@ -653,6 +653,8 @@
}
public void selectAll() {
+ if (!isVisible()) return;
+
if (getM().isWorkOnFrontierPt()) {
super.selectAll();
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-06-18 09:11:36
|
Revision: 3643
http://fudaa.svn.sourceforge.net/fudaa/?rev=3643&view=rev
Author: bmarchan
Date: 2008-06-18 02:09:38 -0700 (Wed, 18 Jun 2008)
Log Message:
-----------
Impl?\195?\169mentation fonction dupliquer geometrie.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -60,6 +60,14 @@
boolean rotateSelectedObjects(double _angRad, double _xreel0, double _yreel0, CtuluCommandContainer _cmd, CtuluUI _ui);
/**
+ * Duplique les objets s\xE9lectionn\xE9s avec un d\xE9calage suivant X et Y.
+ * @param _cmd le receveur de commande
+ * @param _ui l'interface utilisateur
+ * @return true is commande reussie
+ */
+ public boolean copySelectedObjects(CtuluCommandContainer _cmd, CtuluUI _ui);
+
+ /**
* Retourne si la forme d'un certain type peut \xEAtre ajout\xE9e.
* @param _typeForme Le type de forme
* @return true si ce type de forme peut \xEAtre ajout\xE9.
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -248,9 +248,9 @@
public boolean moveSelectedObjects(final double _reelDx, final double _reelDy, final double _reelDz, final CtuluCommandContainer _cmd, final CtuluUI _ui) {
if (!isSelectionEmpty()) {
if (isAtomicMode()) {
- getModelePoly().moveAtomic(selectionMulti_, _reelDx, _reelDy, _reelDz, _cmd, _ui);
+ return getModelePoly().moveAtomic(selectionMulti_, _reelDx, _reelDy, _reelDz, _cmd, _ui);
} else {
- getModelePoly().moveGlobal(selection_, _reelDx, _reelDy, _reelDz, _cmd);
+ return getModelePoly().moveGlobal(selection_, _reelDx, _reelDy, _reelDz, _cmd);
}
}
@@ -262,14 +262,34 @@
public boolean rotateSelectedObjects(double _angRad, double _xreel0, double _yreel0, CtuluCommandContainer _cmd, CtuluUI _ui) {
if (!isSelectionEmpty()) {
if (isAtomicMode()) {
- getModelePoly().rotateAtomic(selectionMulti_, _angRad, _xreel0, _yreel0, _cmd, _ui);
+ return getModelePoly().rotateAtomic(selectionMulti_, _angRad, _xreel0, _yreel0, _cmd, _ui);
} else {
- getModelePoly().rotateGlobal(selection_, _angRad, _xreel0, _yreel0, _cmd);
+ return getModelePoly().rotateGlobal(selection_, _angRad, _xreel0, _yreel0, _cmd);
}
}
return false;
}
+ /*
+ * @see org.fudaa.ebli.calque.edition.ZCalqueEditable#copySelectedObjects(org.fudaa.ctulu.CtuluCommandContainer, org.fudaa.ctulu.CtuluUI)
+ */
+ public boolean copySelectedObjects(CtuluCommandContainer _cmd, CtuluUI _ui) {
+ if (isSelectionEmpty() || isAtomicMode()) return false;
+ int nb=getModelePoly().getNombre();
+
+ GrSegment pdec=new GrSegment(new GrPoint(0,5,0),new GrPoint(5,0,0));
+ pdec.autoApplique(getVersReel());
+ if (!getModelePoly().copyGlobal(selection_, pdec.getVx(), pdec.getVy(), _cmd)) return false;
+
+ // Changement de selection.
+ int[] isels=new int[selection_.getNbSelectedIndex()];
+ for (int i=0; i<isels.length; i++) {
+ isels[i]=nb+i;
+ }
+ setSelection(isels);
+ return true;
+ }
+
public void paintDeplacement(final Graphics2D _g2d, final int _dxEcran, final int _dyEcran, final TraceIcon _trace) {
if (!isSelectionEmpty()) {
if (isAtomicMode()) {
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -26,6 +26,7 @@
import org.fudaa.ebli.geometrie.GrObjet;
import org.fudaa.ebli.geometrie.GrPoint;
import org.fudaa.ebli.geometrie.GrPolyligne;
+import org.fudaa.ebli.geometrie.GrSegment;
import org.fudaa.ebli.trace.TraceIcon;
import org.fudaa.ebli.trace.TraceLigne;
@@ -181,6 +182,26 @@
}
}
+ /*
+ * @see org.fudaa.ebli.calque.edition.ZCalqueEditable#copySelectedObjects(org.fudaa.ctulu.CtuluCommandContainer, org.fudaa.ctulu.CtuluUI)
+ */
+ public boolean copySelectedObjects(CtuluCommandContainer _cmd, CtuluUI _ui) {
+ if (isSelectionEmpty() || isAtomicMode()) return false;
+ int nb=getMultiPointModel().getNombre();
+
+ GrSegment pdec=new GrSegment(new GrPoint(0,5,0),new GrPoint(5,0,0));
+ pdec.autoApplique(getVersReel());
+ if (!getMultiPointModel().copyGlobal(selection_, pdec.getVx(), pdec.getVy(), _cmd)) return false;
+
+ // Changement de selection.
+ int[] isels=new int[selection_.getNbSelectedIndex()];
+ for (int i=0; i<isels.length; i++) {
+ isels[i]=nb+i;
+ }
+ setSelection(isels);
+ return true;
+ }
+
/**
* Dessine le deplacement pour les sommets selectionn\xE9s.
* @param _g2d Le contexte graphique.
@@ -318,5 +339,4 @@
public final void setEditor(final ZEditorInterface _editor) {
editor_ = _editor;
}
-
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -33,6 +33,7 @@
import org.fudaa.ebli.geometrie.GrMorphisme;
import org.fudaa.ebli.geometrie.GrObjet;
import org.fudaa.ebli.geometrie.GrPoint;
+import org.fudaa.ebli.geometrie.GrSegment;
import org.fudaa.ebli.trace.TraceIcon;
import com.memoire.fu.FuLog;
@@ -264,6 +265,26 @@
return false;
}
+ /*
+ * @see org.fudaa.ebli.calque.edition.ZCalqueEditable#copySelectedObjects(org.fudaa.ctulu.CtuluCommandContainer, org.fudaa.ctulu.CtuluUI)
+ */
+ public boolean copySelectedObjects(CtuluCommandContainer _cmd, CtuluUI _ui) {
+ if (isSelectionEmpty() || isAtomicMode()) return false;
+ int nb=modele_.getNombre();
+
+ GrSegment pdec=new GrSegment(new GrPoint(0,5,0),new GrPoint(5,0,0));
+ pdec.autoApplique(getVersReel());
+ if (!((ZModelePointEditable)modele_).copyGlobal(selection_, pdec.getVx(), pdec.getVy(), _cmd)) return false;
+
+ // Changement de selection.
+ int[] isels=new int[selection_.getNbSelectedIndex()];
+ for (int i=0; i<isels.length; i++) {
+ isels[i]=nb+i;
+ }
+ setSelection(isels);
+ return true;
+ }
+
public final void setEditor(final ZEditorInterface _editor) {
editor_ = _editor;
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -744,4 +744,35 @@
geometries_.removeLignes(_idx, _cmd);
return true;
}
+
+ /**
+ * Copie d'une geom\xE9trie, avec d\xE9calage.
+ */
+ public boolean copyGlobal(CtuluListSelectionInterface _selection, double _dx, double _dy, final CtuluCommandContainer _cmd) {
+ if (geometries_ == null) return false;
+
+ final CtuluCommandComposite cmp = new CtuluCommandComposite();
+ for (int idx = _selection.getMinIndex(); idx<=_selection.getMaxIndex(); idx++) {
+ if (_selection.isSelected(idx)) {
+ // La g\xE9ometrie, d\xE9cal\xE9e.
+ LineString geom=(LineString)geometries_.getGeometry(idx).clone();
+ CoordinateSequence seq=geom.getCoordinateSequence();
+ for (int i=0; i<seq.size(); i++) {
+ seq.setOrdinate(i,0,seq.getX(i)+_dx);
+ seq.setOrdinate(i,1,seq.getY(i)+_dy);
+ }
+ // Les valeurs d'attribut.
+ Object[] vals=new Object[geometries_.getNbAttributes()];
+ for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) {
+ Object val=geometries_.getValue(iatt,idx);
+ int nbpt=geom.getNumPoints();
+ vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt);
+ }
+ geometries_.addGeometry(geom,vals,cmp);
+ }
+ }
+
+ if (_cmd!=null) _cmd.addCmd(cmp.getSimplify());
+ return true;
+ }
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -18,6 +18,7 @@
import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.LineString;
import com.memoire.bu.BuTable;
import com.memoire.fu.FuLog;
@@ -720,4 +721,35 @@
}
return r;
}
+
+ /**
+ * Copie d'une geom\xE9trie, avec d\xE9calage.
+ */
+ public boolean copyGlobal(CtuluListSelectionInterface _selection, double _dx, double _dy, final CtuluCommandContainer _cmd) {
+ if (geometries_ == null) return false;
+
+ final CtuluCommandComposite cmp = new CtuluCommandComposite();
+ for (int idx = _selection.getMinIndex(); idx<=_selection.getMaxIndex(); idx++) {
+ if (_selection.isSelected(idx)) {
+ // La g\xE9ometrie, d\xE9cal\xE9e.
+ CoordinateSequence seq=(CoordinateSequence)((GISMultiPoint)geometries_.getGeometry(idx)).getCoordinateSequence().clone();
+ for (int i=0; i<seq.size(); i++) {
+ seq.setOrdinate(i,0,seq.getX(i)+_dx);
+ seq.setOrdinate(i,1,seq.getY(i)+_dy);
+ }
+ GISMultiPoint geom=(GISMultiPoint)GISGeometryFactory.INSTANCE.createMultiPoint(seq);
+ // Les valeurs d'attribut.
+ Object[] vals=new Object[geometries_.getNbAttributes()];
+ for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) {
+ Object val=geometries_.getValue(iatt,idx);
+ int nbpt=geom.getNumPoints();
+ vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt);
+ }
+ geometries_.addGeometry(geom,vals,cmp);
+ }
+ }
+
+ if (_cmd!=null) _cmd.addCmd(cmp.getSimplify());
+ return true;
+ }
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -14,14 +14,18 @@
import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Point;
import com.memoire.bu.BuTable;
import org.fudaa.ctulu.CtuluAnalyze;
+import org.fudaa.ctulu.CtuluCommandComposite;
import org.fudaa.ctulu.CtuluCommandContainer;
import org.fudaa.ctulu.CtuluLib;
import org.fudaa.ctulu.CtuluLibGeometrie;
import org.fudaa.ctulu.CtuluLibString;
+import org.fudaa.ctulu.CtuluListSelectionInterface;
+import org.fudaa.ctulu.gis.GISMultiPoint;
import org.fudaa.ctulu.gis.GISPoint;
import org.fudaa.ctulu.gis.GISZoneCollection;
import org.fudaa.ctulu.gis.GISZoneCollectionPoint;
@@ -222,6 +226,37 @@
}
}
}
+
+ /**
+ * Copie d'une geom\xE9trie, avec d\xE9calage.
+ */
+ public boolean copyGlobal(CtuluListSelectionInterface _selection, double _dx, double _dy, final CtuluCommandContainer _cmd) {
+ if (pts_ == null) return false;
+
+ final CtuluCommandComposite cmp = new CtuluCommandComposite();
+ for (int idx = _selection.getMinIndex(); idx<=_selection.getMaxIndex(); idx++) {
+ if (_selection.isSelected(idx)) {
+ // La g\xE9ometrie, d\xE9cal\xE9e.
+ Point geom=(Point)pts_.getGeometry(idx).clone();
+ CoordinateSequence seq=geom.getCoordinateSequence();
+ for (int i=0; i<seq.size(); i++) {
+ seq.setOrdinate(i,0,seq.getX(i)+_dx);
+ seq.setOrdinate(i,1,seq.getY(i)+_dy);
+ }
+ // Les valeurs d'attribut.
+ Object[] vals=new Object[pts_.getNbAttributes()];
+ for (int iatt=0; iatt<pts_.getNbAttributes(); iatt++) {
+ Object val=pts_.getValue(iatt,idx);
+ int nbpt=geom.getNumPoints();
+ vals[iatt]=pts_.getAttribute(iatt).createDataForGeom(val, nbpt);
+ }
+ pts_.addGeometry(geom,vals,cmp);
+ }
+ }
+
+ if (_cmd!=null) _cmd.addCmd(cmp.getSimplify());
+ return true;
+ }
public int getNombre() {
return pts_.getNumGeometries();
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -85,6 +85,20 @@
}
}
+ /**
+ * Copie les objets s\xE9lectionn\xE9s.
+ */
+ public void copySelectedObjects() {
+ ZCalqueEditable[] cqs=scene_.getEditableLayers();
+ final CtuluCommandComposite cmp = new CtuluCommandComposite();
+ for (int i=0; i<cqs.length; i++) {
+ cqs[i].copySelectedObjects(cmp, ui_);
+ }
+ if (mng_ != null) {
+ mng_.addCmd(cmp.getSimplify());
+ }
+ }
+
protected void methodNotImplemented() {
StackTraceElement stel=new Throwable().getStackTrace()[1];
String name=stel.getClassName()+"."+stel.getMethodName();
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -32,6 +32,7 @@
import java.util.List;
import java.util.Locale;
+import javax.swing.AbstractAction;
import javax.swing.AbstractButton;
import javax.swing.Action;
import javax.swing.JButton;
@@ -156,24 +157,6 @@
return idx;
}
- /**
- * Retourne l'index d'une commande dans le menu.
- * @param _mn Le menu
- * @param _cmd La chaine repr\xE9sentant la commande
- * @return L'index, ou -1 si non trouv\xE9.
- */
- private int indexOfActionInMenu(final BuMenu _mn, String _cmd) {
- int idx = -1;
- for (int i = _mn.getItemCount() - 1; i >= 0; i--) {
- if (_mn.getItem(i) instanceof JMenuItem
- && _cmd.equals(_mn.getItem(i).getActionCommand())) {
- idx = i;
- break;
- }
- }
- return idx;
- }
-
private void gestionnaireImpression(final String _commande) {
final JInternalFrame frame = getCurrentInternalFrame();
final EbliPageable target;
@@ -275,14 +258,18 @@
return false;
}
-
/**
- * Cr\xE9ation d'une action ebli a partir d'un item menu.
- * @return L'action cr\xE9\xE9e, ou null si aucune commande ne correspond.
+ * Remplace un item menu en provenance de Bu par une action, plus g\xE9n\xE9raliste.
+ * @param _command La commande.
+ * @return L'action de remplacement, ou null si la commande n'existait pas.
*/
- private EbliActionAbstract createActionFromItem(String _command) {
+ protected EbliActionAbstract replaceItemByAction(String _command) {
JMenuItem it=((JMenuItem)getMainMenuBar().getMenuItem(_command));
if (it==null) return null;
+ BuMenu mn=(BuMenu)getMainMenuBar().getMenuForAction(_command);
+ if (mn==null) return null;
+ int idx=mn.indexOf(_command);
+ if (idx==-1) return null;
EbliActionAbstract act=new EbliActionSimple(it.getText(),it.getIcon(),it.getActionCommand()) {
public void actionPerformed(ActionEvent _evt) {
@@ -291,18 +278,23 @@
};
act.setDefaultToolTip(it.getToolTipText());
act.setKey(it.getAccelerator());
+ mn.remove(idx);
+ mn.insert(act,idx)
+ // Pour rester compatible avec Bu.
+ .setName("mi"+_command);
+
return act;
}
-
+
/**
* Cr\xE9ation des actions sp\xE9cifiques a Fudaa.
*/
private void buildActions() {
EbliActionAbstract act;
- act=createActionFromItem("TOUTSELECTIONNER");
+ act=replaceItemByAction("TOUTSELECTIONNER");
if (act!=null) EbliActionMap.getInstance().addAction(act);
- act=createActionFromItem("RECHERCHER");
+ act=replaceItemByAction("RECHERCHER");
if (act!=null) EbliActionMap.getInstance().addAction(act);
act=new EbliActionSimple(CtuluLib.getS("Inverser la s\xE9lection"),BuResource.BU.getIcon("aucun"),"INVERSESELECTION") {
@@ -321,6 +313,9 @@
act.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK | InputEvent.SHIFT_MASK));
EbliActionMap.getInstance().addAction(act);
+ act=replaceItemByAction("DUPLIQUER");
+ act.setEnabled(false);
+ if (act!=null) EbliActionMap.getInstance().addAction(act);
}
/**
@@ -495,14 +490,10 @@
}
protected void rebuildEditionMenu(final BuMenu _dest) {
- int indSelect=indexOfActionInMenu(_dest, "TOUTSELECTIONNER");
- _dest.remove(indSelect);
- _dest.remove(indSelect);
- _dest.remove(indSelect);
- _dest.insert(EbliActionMap.getInstance().getAction("TOUTSELECTIONNER"),indSelect);
+ int indSelect=_dest.indexOf("TOUTSELECTIONNER");
+ _dest.remove(indSelect+2);
_dest.insert(EbliActionMap.getInstance().getAction("INVERSESELECTION"),indSelect+1);
_dest.insert(EbliActionMap.getInstance().getAction("CLEARSELECTION"),indSelect+2);
- _dest.insert(EbliActionMap.getInstance().getAction("RECHERCHER"),indSelect+3);
addConsoleMenu(_dest);
}
@@ -805,8 +796,8 @@
*/
public void init() {
super.init();
+
buildActions();
-// addConsoleMenu((BuMenu) getMainMenuBar().getMenu("MENU_EDITION"));
rebuildEditionMenu((BuMenu) getMainMenuBar().getMenu("MENU_EDITION"));
final BuToolBar tb = getMainToolBar();
@@ -844,7 +835,7 @@
}
}
- final BuMenu mn = (BuMenu) getMainMenuBar().getMenu("MENU_FENETRES");
+ BuMenu mn = (BuMenu) getMainMenuBar().getMenu("MENU_FENETRES");
if (mn != null) {
mn.remove(0);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -11,6 +11,7 @@
import com.db4o.ObjectContainer;
+import com.memoire.bu.BuCutCopyPasteInterface;
import com.memoire.bu.BuUndoRedoInterface;
import org.fudaa.ctulu.CtuluCommandManager;
@@ -39,7 +40,7 @@
* @version $Id: MdlFille2d.java,v 1.1.2.1 2008/02/01 14:40:03 bmarchan Exp $
*/
public class MdlFille2d extends ZEbliFilleCalques implements BuUndoRedoInterface, CtuluExportDataInterface,
- CtuluImageImporter, CtuluUndoRedoInterface, FudaaSavable {
+ CtuluImageImporter, CtuluUndoRedoInterface, FudaaSavable, BuCutCopyPasteInterface {
public MdlFille2d(FudaaCommonImplementation _ui) {
super(new MdlVisuPanel(_ui), _ui, null);
@@ -80,7 +81,6 @@
public void undo() {
getMdlVisuPanel().undo();
-
}
public void clearCmd(final CtuluCommandManager _source) {
@@ -96,4 +96,19 @@
}
+ public void copy() {
+ getMdlVisuPanel().copy();
+ }
+
+ public void cut() {
+ getMdlVisuPanel().cut();
+ }
+
+ public void duplicate() {
+ getMdlVisuPanel().duplicate();
+ }
+
+ public void paste() {
+ getMdlVisuPanel().paste();
+ }
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -10,7 +10,10 @@
import javax.swing.Action;
import org.fudaa.ebli.calque.BGroupeCalque;
+import org.fudaa.ebli.calque.ZSelectionEvent;
+import org.fudaa.ebli.calque.ZSelectionListener;
import org.fudaa.ebli.commun.EbliActionInterface;
+import org.fudaa.ebli.commun.EbliActionMap;
import org.fudaa.ebli.ressource.EbliResource;
import org.fudaa.fudaa.commun.FudaaLib;
import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation;
@@ -35,7 +38,7 @@
* @author fred deniger
* @version $Id: MdlVisuPanel.java,v 1.1.2.6 2008/05/13 12:10:21 bmarchan Exp $
*/
-public class MdlVisuPanel extends FSigVisuPanel {
+public class MdlVisuPanel extends FSigVisuPanel implements ZSelectionListener {
// final FSigLayerGroup parent_;
BGroupeCalque cqImg_;
@@ -50,8 +53,9 @@
public MdlVisuPanel(FudaaCommonImplementation _impl/*, boolean _createDefault*/) {
super(_impl);
initCalques(true);
- installActions();
+ installLayerActions();
getScene().setRestrictedToCalqueActif(false);
+ getScene().addSelectionListener(this);
}
protected FSigEditor createGisEditor() {
@@ -78,10 +82,10 @@
buildModel1dLayerGroup(_build);
buildImageGroup();
- installActions();
+ installLayerActions();
}
- protected void installActions() {
+ protected void installLayerActions() {
EbliActionInterface actNewCloud=new CalqueNewCalqueAction(FudaaLib.getS("Nouveau calque semis"),FudaaResource.FUDAA.getIcon("ajouter"),"NEW_LAYER2D_CLOUD",cqAlti_,getGisEditor());
EbliActionInterface actNewLevel=new CalqueNewCalqueAction(FudaaLib.getS("Nouveau calque courbes de niveaux"),FudaaResource.FUDAA.getIcon("ajouter"),"NEW_LAYER2D_LEVEL",cqAlti_,getGisEditor());
EbliActionInterface actNewProfile=new CalqueNewCalqueAction(FudaaLib.getS("Nouveau calque profils"),FudaaResource.FUDAA.getIcon("ajouter"),"NEW_LAYER2D_PROFILE",cqAlti_,getGisEditor());
@@ -146,4 +150,12 @@
cqTrace.setName(BGroupeCalque.findUniqueChildName(cqMdl1d_, cqTrace.getExtName()));
cqMdl1d_.add(cqTrace);
}
+
+ /*
+ * @see org.fudaa.ebli.calque.ZSelectionListener#selectionChanged(org.fudaa.ebli.calque.ZSelectionEvent)
+ */
+ public void selectionChanged(ZSelectionEvent _evt) {
+ EbliActionInterface act=EbliActionMap.getInstance().getAction("DUPLIQUER");
+ act.setEnabled(!getScene().isSelectionEmpty());
+ }
}
\ No newline at end of file
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java 2008-06-18 09:00:45 UTC (rev 3642)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java 2008-06-18 09:09:38 UTC (rev 3643)
@@ -220,6 +220,10 @@
mng_.undo();
}
+ public void duplicate() {
+ gisEditor_.getSceneEditor().copySelectedObjects();
+ }
+
/**
* @return le groupe contenant les donn\xE9es geographiques.
*/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-06-20 14:53:23
|
Revision: 3655
http://fudaa.svn.sourceforge.net/fudaa/?rev=3655&view=rev
Author: bmarchan
Date: 2008-06-20 07:53:29 -0700 (Fri, 20 Jun 2008)
Log Message:
-----------
Mise a jour de l'arbre des calques en fonction des g?\195?\169ometries s?\195?\169lectionn?\195?\169es.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java
Added Paths:
-----------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/ressource/selection.gif
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2008-06-20 14:51:55 UTC (rev 3654)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2008-06-20 14:53:29 UTC (rev 3655)
@@ -68,7 +68,7 @@
* @author Guillaume Desnoix , Axel von Arnim, Fred deniger
*/
public class ZEbliCalquesPanel extends BuPanel implements EbliFilleCalquesInterface, BCalqueContextuelListener,
- CtuluImageProducer, BCalqueSaverTargetInterface, EbliFindable, ActionListener {
+ CtuluImageProducer, BCalqueSaverTargetInterface, EbliFindable, ActionListener, ZSelectionListener {
protected class AnimAdapter extends EbliAnimationSourceAbstract {
@@ -382,6 +382,7 @@
scene_=new ZScene(gcDonnees_,controller_.getCqSelectionI());
scene_.setRestrictedToCalqueActif(true);
+ scene_.addSelectionListener(this);
modelArbre_.addTreeModelListener(scene_);
}
@@ -909,4 +910,11 @@
return selection;
}
+ /*
+ * @see org.fudaa.ebli.calque.ZSelectionListener#selectionChanged(org.fudaa.ebli.calque.ZSelectionEvent)
+ */
+ public void selectionChanged(ZSelectionEvent _evt) {
+ modelArbre_.fireObservableChanged();
+ }
+
}
\ No newline at end of file
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/ressource/selection.gif
===================================================================
(Binary files differ)
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/ressource/selection.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java 2008-06-20 14:51:55 UTC (rev 3654)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlVisuPanel.java 2008-06-20 14:53:29 UTC (rev 3655)
@@ -43,7 +43,7 @@
* @author fred deniger
* @version $Id: MdlVisuPanel.java,v 1.1.2.6 2008/05/13 12:10:21 bmarchan Exp $
*/
-public class MdlVisuPanel extends FSigVisuPanel implements ZSelectionListener {
+public class MdlVisuPanel extends FSigVisuPanel {
// final FSigLayerGroup parent_;
BGroupeCalque cqImg_;
@@ -61,7 +61,6 @@
initCalques(true);
installLayerActions();
getScene().setRestrictedToCalqueActif(false);
- getScene().addSelectionListener(this);
}
protected FSigEditor createGisEditor() {
@@ -193,10 +192,12 @@
cqMdl1d_.add(cqTrace);
}
- /*
+ /**
+ * Mise a jour des actions.
* @see org.fudaa.ebli.calque.ZSelectionListener#selectionChanged(org.fudaa.ebli.calque.ZSelectionEvent)
*/
public void selectionChanged(ZSelectionEvent _evt) {
+ super.selectionChanged(_evt);
EbliActionInterface act=EbliActionMap.getInstance().getAction("DUPLIQUER");
act.setEnabled(!getScene().isSelectionEmpty());
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-06-27 15:25:45
|
Revision: 3665
http://fudaa.svn.sourceforge.net/fudaa/?rev=3665&view=rev
Author: bmarchan
Date: 2008-06-27 08:25:48 -0700 (Fri, 27 Jun 2008)
Log Message:
-----------
Track#32, Track#33 : Lecture des lignes directrices + des noms de geometries
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2008-06-27 15:22:32 UTC (rev 3664)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2008-06-27 15:25:48 UTC (rev 3665)
@@ -11,21 +11,27 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.LineString;
+import org.fudaa.ctulu.CtuluLib;
import org.fudaa.ctulu.CtuluLibString;
import org.fudaa.ctulu.gis.GISAttributeConstants;
import org.fudaa.ctulu.gis.GISAttributeInterface;
+import org.fudaa.ctulu.gis.GISAttributeModel;
+import org.fudaa.ctulu.gis.GISGeometry;
import org.fudaa.ctulu.gis.GISLib;
import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
import org.fudaa.dodico.fortran.FileOpReadCharSimpleAbstract;
/**
- * @author fred deniger
+ * Un reader pour un fichier Rubar (ST, ou CN).
+ * @author fred deniger, Bertrand Marchand
* @version $Id: RubarStReader.java,v 1.5 2007-06-11 13:07:05 deniger Exp $
*/
public class RubarStReader extends FileOpReadCharSimpleAbstract {
@@ -48,7 +54,14 @@
return _s.equals(sep_) || _s.equals(sep1_);
}
+ /**
+ * Lit les profils et les lignes directrices.
+ * @return Un tableau GISZoneCollectionLigneBrisee[2]. [0] : la collection des profils, [1] : la collection de lignes directrices.
+ */
protected Object internalRead() {
+ // Remarque : Cette impl\xE9mentation empeche des noms semblables (les noms sont stock\xE9s comme cl\xE9 de Map) sur les lignes
+ // directrices (ce qui peut \xEAtre normal puisque c'est le m\xEAme nom en un point de chaque profil qui permet de constituer
+ // la ligne.
if (in_ == null) {
return null;
}
@@ -58,15 +71,21 @@
in_.setJumpCommentLine(true);
final List lignes = new ArrayList(200);
+ final List names=new ArrayList(200);
final List coordinatesEnCours = new ArrayList();
+ // Contient les listes de coordonn\xE9es pour les lignes directrices (Map<String,ArrayList<Coordinate>> en Java 1.5)
+ final Map mdirs=new HashMap(20);
- final int[] fmt = new int[] { 13, 13, 13, 3 };
+ final int[] fmt = new int[] { 13, 13, 13, 1, 3 };
+ final int[] fmt1Line=new int[]{6,6,6,6,13,1,42};
Coordinate last = null;
+ String name="";
try {
while (true) {
if (isSt_) {
- in_.readLine();
+ in_.readFields(fmt1Line);
+ name=in_.stringField(6).trim();
}
String first = CtuluLibString.EMPTY_STRING;
String sec = CtuluLibString.EMPTY_STRING;
@@ -78,6 +97,18 @@
coordinatesEnCours.add(coordinate);
}
last = coordinate;
+
+ // Ligne directrice eventuelle. Pas de controle que la ligne directrice est bien sur tous les profils.
+ String namedir=in_.stringField(4).trim();
+ if (!"".equals(namedir)) {
+ List coordldir=(List)mdirs.get(namedir);
+ if (coordldir==null) {
+ coordldir=new ArrayList(200);
+ mdirs.put(namedir,coordldir);
+ }
+ coordldir.add(coordinate.clone());
+ }
+
in_.readFields(fmt);
first = in_.stringField(0);
sec = in_.stringField(1);
@@ -85,6 +116,12 @@
final LineString str = GISLib.createLineOrLinearFromList(coordinatesEnCours);
if (str != null) {
lignes.add(str);
+ if ("".equals(name)) {
+ names.add(CtuluLib.getS("_P")+((GISGeometry)str).getId());
+ }
+ else {
+ names.add(name);
+ }
}
coordinatesEnCours.clear();
}
@@ -96,14 +133,51 @@
final LineString str = GISLib.createLineOrLinearFromList(coordinatesEnCours);
if (str != null) {
lignes.add(str);
+ if ("".equals(name)) {
+ names.add(CtuluLib.getS("_P")+((GISGeometry)str).getId());
+ }
+ else {
+ names.add(name);
+ }
}
+
+ GISZoneCollectionLigneBrisee[] ret=new GISZoneCollectionLigneBrisee[2];
+ // Profils
if (lignes.size() > 0) {
- final GISZoneCollectionLigneBrisee res = new GISZoneCollectionLigneBrisee(null);
- res.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY }, null);
- res.addAllLineStringClosedOrNode((LineString[]) lignes.toArray(new LineString[lignes.size()]), null);
- res.postImport(0);
- return res;
+ final GISZoneCollectionLigneBrisee zligs = new GISZoneCollectionLigneBrisee(null);
+ zligs.addAllLineStringClosedOrNode((LineString[]) lignes.toArray(new LineString[lignes.size()]), null);
+ zligs.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY, GISAttributeConstants.TITRE}, null);
+ zligs.postImport(0);
+
+ // Affectation de l'attribut titre.
+ GISAttributeModel attmod=zligs.getModel(GISAttributeConstants.TITRE);
+ for (int i=0; i<names.size(); i++) {
+ attmod.setObject(i,attmod.getAttribute().createDataForGeom(names.get(i),1),null);
+ }
+ ret[0]=zligs;
}
- return null;
+
+ // Lignes directrices
+ if (mdirs.size()>0) {
+ final GISZoneCollectionLigneBrisee zdirs = new GISZoneCollectionLigneBrisee(null);
+ // Pour \xEAtre sur de la correspondance nom/coordonn\xE9es
+ String[] namedirs=(String[])mdirs.keySet().toArray(new String[0]);
+ LineString[] ldirs=new LineString[namedirs.length];
+ for (int i=0; i<namedirs.length; i++) {
+ ldirs[i]=GISLib.createLineOrLinearFromList((List)(mdirs.get(namedirs[i])));
+ }
+
+ zdirs.addAllLineStringClosedOrNode(ldirs, null);
+ zdirs.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY, GISAttributeConstants.TITRE}, null);
+ zdirs.postImport(0);
+
+ // Affectation de l'attribut titre.
+ GISAttributeModel attmod=zdirs.getModel(GISAttributeConstants.TITRE);
+ for (int i=0; i<namedirs.length; i++) {
+ attmod.setObject(i,attmod.getAttribute().createDataForGeom(namedirs[i],1),null);
+ }
+ ret[1]=zdirs;
+ }
+ return ret;
}
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java 2008-06-27 15:22:32 UTC (rev 3664)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java 2008-06-27 15:25:48 UTC (rev 3665)
@@ -52,17 +52,21 @@
_analyze.merge(op.getAnalyze());
return;
}
- final GISZoneCollectionLigneBrisee res = (GISZoneCollectionLigneBrisee) op.getSource();
- if (res==null || res.getNumGeometries() == 0) {
- return;
+ final GISZoneCollectionLigneBrisee[] res = (GISZoneCollectionLigneBrisee[]) op.getSource();
+
+ boolean blines=false;
+ final GISVisitorCount counter=new GISVisitorCount();
+ for (int i=0; i<res.length; i++) {
+ if (res[i]==null||res[i].getNumGeometries()==0) continue;
+ blines=true;
+ res[i].accept(counter);
+ _r.nbPoint_+=counter.nbPt_;
+ _r.nbPointTotal_+=counter.nbPt_;
+ _r.nbPolygones_+=counter.nbPolygone_;
+ _r.nbPolylignes_+=counter.nbPolyligne_;
+ _r.ligneModel_.add(res[i]);
}
- _r.addUsedAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY });
- final GISVisitorCount counter = new GISVisitorCount();
- res.accept(counter);
- _r.nbPoint_ += counter.nbPt_;
- _r.nbPointTotal_ += counter.nbPt_;
- _r.nbPolygones_ += counter.nbPolygone_;
- _r.nbPolylignes_ += counter.nbPolyligne_;
- _r.ligneModel_.add(res);
+ if (blines)
+ _r.addUsedAttributes(new GISAttributeInterface[]{GISAttributeConstants.BATHY, GISAttributeConstants.TITRE});
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-07-03 13:19:24
|
Revision: 3667
http://fudaa.svn.sourceforge.net/fudaa/?rev=3667&view=rev
Author: bmarchan
Date: 2008-07-03 06:19:32 -0700 (Thu, 03 Jul 2008)
Log Message:
-----------
Ticket#22 : Action Split applicable aussi aux multipoints.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java
Added Paths:
-----------
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-07-01 14:44:38 UTC (rev 3666)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-07-03 13:19:32 UTC (rev 3667)
@@ -58,6 +58,18 @@
}
/**
+ * @return La liste de selection des atomiques pour la g\xE9om\xE9trie unique s\xE9lectionn\xE9e. <code>null</code> si plusieurs g\xE9om\xE9tries
+ * ou pas en mode atomique.
+ */
+ public CtuluListSelectionInterface getUniqueAtomicSelection() {
+ if (!ZScene.this.isAtomicMode()) return null;
+ int idGeom=getUniqueSelectedIdx();
+ if (idGeom==-1) return null;
+
+ return ZScene.this.getLayerSelectionMulti().getSelection(idGeom);
+ }
+
+ /**
* @return Le nombre d'atomiques s\xE9lectionn\xE9s, ou 0 si mode global.
*/
public int getNbAtomicSelected() {
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java 2008-07-03 13:19:32 UTC (rev 3667)
@@ -0,0 +1,72 @@
+/*
+ * @creation 3 juil. 2008
+ * @modification $Date:$
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail fud...@li...
+ */
+package org.fudaa.ebli.calque.action;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.Action;
+
+import org.fudaa.ctulu.CtuluLib;
+import org.fudaa.ctulu.gis.GISMultiPoint;
+import org.fudaa.ctulu.gis.GISPolyligne;
+import org.fudaa.ebli.calque.ZScene;
+import org.fudaa.ebli.calque.ZScene.SceneSelectionHelper;
+import org.fudaa.ebli.calque.edition.ZCalqueEditable;
+import org.fudaa.ebli.calque.edition.ZSceneEditor;
+import org.fudaa.ebli.commun.EbliActionSimple;
+
+import com.memoire.bu.BuResource;
+
+/**
+ * Une action pour scinder une g\xE9om\xE9trie sur le sommet d\xE9sign\xE9. Valable uniquement sur des calques
+ * {@link ZCalqueEditable}. Ne fonctionne pas sur des polygones.
+ * @author Bertrand Marchand
+ */
+public class SceneSplitAction extends EbliActionSimple {
+ ZSceneEditor editor_;
+
+ public SceneSplitAction(ZSceneEditor _editor) {
+ super(BuResource.BU.getString("Scinder"), BuResource.BU.getIcon("couperligne"), "GIS_SPLIT");
+ editor_=_editor;
+ setDefaultToolTip(CtuluLib.getS("Scinder la g\xE9om\xE9trie"));
+ }
+
+ public void actionPerformed(final ActionEvent _e) {
+ editor_.splitSelectedObject();
+ }
+
+ public void updateStateBeforeShow() {
+ ZScene scn=editor_.getScene();
+ SceneSelectionHelper hlp=editor_.getScene().getSelectionHelper();
+ int idGeom=-1;
+
+ boolean b=true;
+ // Si la selection n'est pas null et atomique
+ b=b && !scn.isSelectionEmpty() && scn.isAtomicMode();
+ // Si la selection est sur le m\xEAme objet.
+ b=b && (idGeom=hlp.getUniqueSelectedIdx())!=-1;
+ // Si le nombre d'atomiques est de 2 cons\xE9cutifs sur une g\xE9om\xE9trie de type polyligne.
+ if (b && scn.getObject(idGeom) instanceof GISPolyligne) {
+ b=b && hlp.getNbAtomicSelected()==2;
+ b=b && Math.abs(hlp.getUniqueAtomicSelection().getMinIndex()-hlp.getUniqueAtomicSelection().getMaxIndex())==1;
+ if (b) putValue(Action.NAME, BuResource.BU.getString("Scinder la polyligne"));
+ }
+ // Si ou est sur un multipoint
+ else {
+ b=b && (scn.getObject(idGeom) instanceof GISMultiPoint);
+ if (b) putValue(Action.NAME, BuResource.BU.getString("Scinder le multipoint"));
+ }
+ if (!b) putValue(Action.NAME, BuResource.BU.getString("Scinder"));
+
+ setEnabled(b);
+ }
+
+ public String getEnableCondition() {
+ return CtuluLib.getS("S\xE9lectionner 2 sommets consecutifs d'une polyligne<br>ou les sommets d'un multipoint");
+ }
+}
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneSplitAction.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java 2008-07-01 14:44:38 UTC (rev 3666)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditable.java 2008-07-03 13:19:32 UTC (rev 3667)
@@ -68,6 +68,14 @@
public boolean copySelectedObjects(CtuluCommandContainer _cmd, CtuluUI _ui);
/**
+ * Scinde une geometrie.
+ * @param _cmd le receveur de commande
+ * @param _ui l'interface utilisateur
+ * @return true is commande reussie
+ */
+ public boolean splitSelectedObject(CtuluCommandContainer _cmd, CtuluUI _ui);
+
+ /**
* Retourne si la forme d'un certain type peut \xEAtre ajout\xE9e.
* @param _typeForme Le type de forme
* @return true si ce type de forme peut \xEAtre ajout\xE9.
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-07-01 14:44:38 UTC (rev 3666)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-07-03 13:19:32 UTC (rev 3667)
@@ -63,7 +63,7 @@
* @param _cmd La pile de commandes.
* @return true si le la polyligne a \xE9t\xE9 scind\xE9e.
*/
- public boolean splitGeometry(final CtuluCommandContainer _cmd) {
+ public boolean splitSelectedObject(CtuluCommandContainer _cmd, CtuluUI _ui) {
if (isSelectionEmpty() || !isAtomicMode()) return false;
int idxLine=selectionMulti_.getIdxSelected()[0];
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-07-01 14:44:38 UTC (rev 3666)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-07-03 13:19:32 UTC (rev 3667)
@@ -203,6 +203,22 @@
}
/**
+ * Scinde en 2 une multipoint dont plusieurs sommets sont s\xE9lectionn\xE9s. Les attributs sont copi\xE9s.
+ * @param _cmd La pile de commandes.
+ * @return true si le multipoint a \xE9t\xE9 scind\xE9e.
+ */
+ public boolean splitSelectedObject(CtuluCommandContainer _cmd, CtuluUI _ui) {
+ if (isSelectionEmpty() || !isAtomicMode()) return false;
+
+ int idxGeom=selectionMulti_.getIdxSelected()[0];
+ int[] idxSels=selectionMulti_.get(idxGeom).getSelectedIndex();
+
+ // On vide la selection, le multipoint est supprim\xE9es par le split.
+ clearSelection();
+ return getMultiPointModel().splitGeometry(idxGeom, idxSels, _cmd)!=null;
+ }
+
+ /**
* Dessine le deplacement pour les sommets selectionn\xE9s.
* @param _g2d Le contexte graphique.
* @param _dx Le delta suivant X
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java 2008-07-01 14:44:38 UTC (rev 3666)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java 2008-07-03 13:19:32 UTC (rev 3667)
@@ -288,4 +288,9 @@
public final void setEditor(final ZEditorInterface _editor) {
editor_ = _editor;
}
+
+ /* Sans objet */
+ public boolean splitSelectedObject(CtuluCommandContainer _cmd, CtuluUI _ui) {
+ return false;
+ }
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-07-01 14:44:38 UTC (rev 3666)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-07-03 13:19:32 UTC (rev 3667)
@@ -102,7 +102,7 @@
CtuluCommandManager mng_;
- ZSceneEditor sceneEditor_=null;
+ protected ZSceneEditor sceneEditor_=null;
ZCalqueDeplacement move_;
@@ -168,17 +168,28 @@
return target_;
}
+ public ZEditorDefault(final ZEbliCalquesPanel _panel) {
+ this(_panel,new ZSceneEditor(_panel.getScene()));
+ }
+
/**
* @param _panel le panneau des calques
*/
- public ZEditorDefault(final ZEbliCalquesPanel _panel) {
+ public ZEditorDefault(final ZEbliCalquesPanel _panel, final ZSceneEditor _editor) {
super();
panel_ = _panel;
- sceneEditor_=new ZSceneEditor(panel_.getScene());
+ sceneEditor_=_editor;
// panel_.addKeyListener(this);
buildDeletesAction();
EbliLib.updateMapKeyStroke(_panel, getDeleteActions());
+ installSceneActions();
}
+
+ /**
+ * Installation des actions de scene. En particulier, rend visible les actions de scene
+ * dans le menu contextuel de la fenetre 2D.
+ */
+ protected void installSceneActions() {}
private void activeCurrentState() {
boolean updateDessinLayer = false;
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-07-01 14:44:38 UTC (rev 3666)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-07-03 13:19:32 UTC (rev 3667)
@@ -18,7 +18,6 @@
import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.LineString;
import com.memoire.bu.BuTable;
import com.memoire.fu.FuLog;
@@ -28,9 +27,11 @@
import org.fudaa.ctulu.CtuluCommandContainer;
import org.fudaa.ctulu.CtuluLib;
import org.fudaa.ctulu.CtuluLibString;
+import org.fudaa.ctulu.CtuluListSelection;
import org.fudaa.ctulu.CtuluListSelectionInterface;
import org.fudaa.ctulu.CtuluUI;
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.GISAttributeModelDoubleArray;
@@ -531,6 +532,86 @@
}
/**
+ * Scinde en 2 un multipoint. Les attributs globaux sont recopi\xE9es dans chacune des 2
+ * polylignes, les attributs atomiques sont dispatch\xE9s.<br>
+ * Si tous les points du multipoint sont selectionn\xE9s, alors aucun split n'est r\xE9alis\xE9.
+ *
+ * @param _geomIdx L'index de geometrie.
+ * @param _idx Les indices des sommets de multipoints.
+ * @param _cmd Le conteneur de commandes.
+ * @return Les indices des 2 nouvelles g\xE9om\xE9tries cr\xE9\xE9es si tout s'est bien pass\xE9, null sinon.
+ */
+ public int[] splitGeometry(final int _geomIdx, final int[] _idx, final CtuluCommandContainer _cmd){
+ if (geometries_ == null) {
+ return null;
+ }
+ GISMultiPoint geom=(GISMultiPoint)geometries_.getGeometry(_geomIdx); // Old g\xE9ometrie
+ if (geom==null) return null;
+ CoordinateSequence cgeom=geom.getCoordinateSequence();
+ if (_idx.length<0 || _idx.length>=cgeom.size()) return null;
+
+ final CtuluCommandComposite cmp = new CtuluCommandComposite();
+ CtuluListSelection sel=new CtuluListSelection(_idx);
+
+ // Les coordonn\xE9es
+ Coordinate[] cgeom1=new Coordinate[_idx.length];
+ Coordinate[] cgeom2=new Coordinate[cgeom.size()-cgeom1.length];
+ int idgeom1=0;
+ int idgeom2=0;
+ for (int i=0; i<cgeom.size(); i++) {
+ if (sel.isSelected(i))
+ cgeom1[idgeom1++]=cgeom.getCoordinateCopy(i);
+ else
+ cgeom2[idgeom2++]=cgeom.getCoordinateCopy(i);
+ }
+
+ // Les datas
+ Object[] datageom1=new Object[getAttributeNb()];
+ Object[] datageom2=new Object[getAttributeNb()];
+ for (int i=0; i<getAttributeNb(); i++) {
+ GISAttributeModel attmodel=geometries_.getModel(i);
+ if (attmodel.getAttribute().isAtomicValue()) {
+ GISAttributeModel atomModel1=attmodel.getAttribute().createAtomicModel(null,cgeom1.length);
+ GISAttributeModel atomModel2=attmodel.getAttribute().createAtomicModel(null,cgeom2.length);
+
+ idgeom1=0;
+ idgeom2=0;
+ for (int j=0; j<cgeom.size(); j++) {
+ Object data=((GISAttributeModel)attmodel.getObjectValueAt(_geomIdx)).getObjectValueAt(j);
+ if (sel.isSelected(j))
+ atomModel1.setObject(idgeom1++,data,null);
+ else
+ atomModel2.setObject(idgeom2++,data,null);
+ }
+ datageom1[i]=atomModel1;
+ datageom2[i]=atomModel2;
+ }
+ else {
+ // Cas particulier de l'attribut TITRE => <TITRE_GEOM>_1 et <TITRE_GEOM>_2
+ if (attmodel.getAttribute()==GISAttributeConstants.TITRE) {
+ String name=(String)attmodel.getObjectValueAt(_geomIdx);
+ datageom1[i]=name+"_1";
+ datageom2[i]=name+"_2";
+ }
+ else {
+ datageom1[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_geomIdx),1);
+ datageom2[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_geomIdx),1);
+ }
+ }
+ }
+
+ // Remplacement dans la collection.
+ geometries_.removeGeometries(new int[]{_geomIdx}, cmp);
+ geometries_.addGeometry(GISGeometryFactory.INSTANCE.createMultiPoint(cgeom1), datageom1, cmp);
+ geometries_.addGeometry(GISGeometryFactory.INSTANCE.createMultiPoint(cgeom2), datageom2, cmp);
+
+ if (_cmd != null) {
+ _cmd.addCmd(cmp.getSimplify());
+ }
+ return new int[]{geometries_.getNbGeometries()-2,geometries_.getNbGeometries()-1};
+ }
+
+ /**
* @param _selection la selection
* @param _dx dx reel
* @param _dy dy reel
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-07-01 14:44:38 UTC (rev 3666)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-07-03 13:19:32 UTC (rev 3667)
@@ -7,8 +7,6 @@
*/
package org.fudaa.ebli.calque.edition;
-import java.lang.reflect.Method;
-
import org.fudaa.ctulu.CtuluCommandComposite;
import org.fudaa.ctulu.CtuluCommandContainer;
import org.fudaa.ctulu.CtuluCommandManager;
@@ -99,6 +97,18 @@
}
}
+ /**
+ * Scinde une g\xE9om\xE9trie en 2 distinctes.<p>
+ * Principe : <br>
+ * Pour un multipoint, selection de plusieurs sommets d'un multipoint, et s\xE9paration.<br>
+ * Pour une polyligne, selection de 2 sommets cons\xE9cutifs, et s\xE9paration.
+ */
+ public void splitSelectedObject() {
+ int idx=getScene().getLayerSelectionMulti().isSelectionInOneBloc();
+ ZCalqueEditable cq=(ZCalqueEditable)getScene().getLayerForId(idx);
+ cq.splitSelectedObject(mng_,ui_);
+ }
+
protected void methodNotImplemented() {
StackTraceElement stel=new Throwable().getStackTrace()[1];
String name=stel.getClassName()+"."+stel.getMethodName();
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java 2008-07-01 14:44:38 UTC (rev 3666)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dLine.java 2008-07-03 13:19:32 UTC (rev 3667)
@@ -57,7 +57,6 @@
FSigEditor editor=(FSigEditor)getEditor();
ArrayList vacts=new ArrayList();
vacts.addAll(Arrays.asList(editor.getEditAction()));
- vacts.add(editor.getSplitAction());
vacts.add(editor.getJoinAction());
vacts.add(null);
vacts.add(editor.getImportAction());
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-07-01 14:44:38 UTC (rev 3666)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-07-03 13:19:32 UTC (rev 3667)
@@ -21,9 +21,6 @@
import com.memoire.bu.BuWizardDialog;
import com.memoire.fu.Fu;
import com.memoire.fu.FuLog;
-import com.vividsolutions.jts.geom.LineString;
-
-import org.apache.tools.ant.taskdefs.condition.IsSet;
import org.fudaa.ctulu.CtuluCommandManager;
import org.fudaa.ctulu.CtuluIOOperationSynthese;
import org.fudaa.ctulu.CtuluRunnable;
@@ -47,15 +44,14 @@
import org.fudaa.ebli.calque.BCalque;
import org.fudaa.ebli.calque.ZCalqueAffichageDonnees;
import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface;
-import org.fudaa.ebli.calque.ZCalqueLigneBrisee;
import org.fudaa.ebli.calque.ZEbliCalquesPanel;
import org.fudaa.ebli.calque.ZModeleGeom;
import org.fudaa.ebli.calque.edition.ZCalqueEditable;
import org.fudaa.ebli.calque.edition.ZCalqueEditionGroup;
import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable;
import org.fudaa.ebli.calque.edition.ZEditorDefault;
+import org.fudaa.ebli.calque.edition.ZSceneEditor;
import org.fudaa.ebli.commun.EbliActionSimple;
-import org.fudaa.ebli.commun.EbliListeSelectionMultiInterface;
import org.fudaa.ebli.geometrie.GrBoite;
import org.fudaa.fudaa.commun.FudaaLib;
@@ -71,6 +67,14 @@
/**
* @param _panel
*/
+ public FSigEditor(final ZEbliCalquesPanel _panel, final ZSceneEditor _editor, final CtuluCommandManager _cmd) {
+ super(_panel,_editor);
+ setMng(_cmd);
+ }
+
+ /**
+ * @param _panel
+ */
public FSigEditor(final ZEbliCalquesPanel _panel, final CtuluCommandManager _cmd) {
super(_panel);
setMng(_cmd);
@@ -136,7 +140,7 @@
dialog.pack();
dialog.setModal(true);
dialog.setLocationRelativeTo(getPanel());
- dialog.show();
+ dialog.setVisible(true);
}
@@ -160,7 +164,7 @@
final Map filterExporter = new HashMap(5);// pour l'instant .....
filterExporter.put(sx, new FSigLayerExporter.ToSinusX());
- filterExporter.put(st, new FSigLayerExporter.ToSt());
+ filterExporter.put(st, new FSigLayerExporter.ToRubar());
final Map dataStores = GISExportDataStoreFactory.buildFileFilterMap(false);
if (dataStores.size() == 0) {
if (FuLog.isTrace()) {
@@ -205,8 +209,6 @@
EbliActionSimple importAction_;
- EbliActionSimple splitAction_;
-
EbliActionSimple joinAction_;
/**
@@ -241,17 +243,6 @@
}
/**
- * Une action pour scinder une polyligne. N'est pas dans les actions par defaut.
- * @return L'action
- */
- public EbliActionSimple getSplitAction() {
- if (splitAction_ == null) {
- splitAction_ = new SplitAction();
- }
- return splitAction_;
- }
-
- /**
* Une action pour joindre 2 polylignes. N'est pas dans les actions par defaut.
* @return L'action
*/
@@ -350,45 +341,6 @@
}
/**
- * Une action pour scinder une polyligne sur le sommet d\xE9sign\xE9. Valable uniquement sur des calques
- * {@link ZCalqueLigneBriseeEditable}. Ne fonctionne pas sur des polygones.
- * @author Bertrand Marchand
- */
- private class SplitAction extends EbliActionSimple {
-
- protected SplitAction() {
- super(BuResource.BU.getString("Scinder"), BuResource.BU.getIcon("couperligne"), "GIS_SPLIT");
- setDefaultToolTip(FudaaLib.getS("Scinder la polyligne"));
- }
-
- public void actionPerformed(final ActionEvent _e) {
- splitSelectedLayer();
- }
-
- public void updateStateBeforeShow() {
- if (Fu.DEBUG && FuLog.isDebug()) {
- FuLog.debug("FTR gis target= " + FSigEditor.this.getTarget());
- }
-
- ZCalqueLigneBriseeEditable cq=null;
- if (getSupport().getCalqueActif() instanceof ZCalqueLigneBriseeEditable) cq=(ZCalqueLigneBriseeEditable)getSupport().getCalqueActif();
- EbliListeSelectionMultiInterface multiSelect_=null;
- super.setEnabled(cq!=null &&
- FSigEditor.this.isEditable(cq) &&
- cq.isAtomicMode() &&
- (multiSelect_=cq.getLayerSelectionMulti())!=null &&
- multiSelect_.getNbSelectedItem()==2 &&
- Math.abs(multiSelect_.getSelection(multiSelect_.getIdxSelected()[0]).getMinIndex()-multiSelect_.getSelection(multiSelect_.getIdxSelected()[0]).getMaxIndex())==1 &&
- // Uniquement les polylignes.
- (((GISZoneCollectionLigneBrisee)cq.getModele().getGeomData()).getGeometry(multiSelect_.isSelectionInOneBloc()) instanceof GISPolyligne));
- }
-
- public String getEnableCondition() {
- return FudaaLib.getS("S\xE9lectionner 2 sommets consecutifs d'une polyligne");
- }
- }
-
- /**
* Une action pour joindre 2 polylignes \xE0 partir de leurs extremit\xE9s. Valable uniquement sur des calques
* {@link ZCalqueLigneBriseeEditable}. Ne fonctionne pas sur des polygones.
* @author Bertrand Marchand
@@ -446,17 +398,7 @@
ZCalqueLigneBriseeEditable cq=(ZCalqueLigneBriseeEditable)getSupport().getCalqueActif();
cq.joinGeometries(getMng());
}
-
- /**
- * Scinde une polyligne en 2 polylignes distinctes.
- */
- protected void splitSelectedLayer() {
- if (!(getSupport().getCalqueActif() instanceof ZCalqueLigneBriseeEditable)) return;
- ZCalqueLigneBriseeEditable cq=(ZCalqueLigneBriseeEditable)getSupport().getCalqueActif();
- cq.splitGeometry(getMng());
- }
-
protected boolean canExportSelectedLayer() {
final BCalque[] parent = super.getPanel().getArbreCalqueModel().getSelection();
if (parent == null) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-07-04 08:59:15
|
Revision: 3668
http://fudaa.svn.sourceforge.net/fudaa/?rev=3668&view=rev
Author: bmarchan
Date: 2008-07-04 01:59:20 -0700 (Fri, 04 Jul 2008)
Log Message:
-----------
Am?\195?\169lioration sur les noms d'objets cr?\195?\169?\195?\169s
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-07-03 13:19:32 UTC (rev 3667)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-07-04 08:59:20 UTC (rev 3668)
@@ -93,12 +93,13 @@
}
/**
- * Un attribut nom, non atomique.
+ * Un attribut nom, global.
*/
public final static GISAttributeString TITRE = new GISAttributeString(CtuluLib.getS("Nom")) {
+ /** Numero d'identifiant, incr\xE9ment\xE9 \xE0 chaque nouvelle cr\xE9ation de nom. */
+ private int numid_=0;
+ String def_ = CtuluLib.getS("<Defaut>");
- String def_ = CtuluLib.getS("_Nouveau");
-
protected Object readResolve() {
return TITRE;
}
@@ -106,7 +107,18 @@
public String getID() {
return "ATTRIBUTE_TITLE";
}
+
+ protected Object createGlobalValues(final Object _initValues) {
+ Object r = _initValues;
+ // Si la valeur en entr\xE9e est la valeur par d\xE9faut, alors une nouvelle valeur en sortie est cr\xE9\xE9e.
+ // Ceci permet d'affecter automatiquement un nom nouveau \xE0 une g\xE9om\xE9trie cr\xE9\xE9e.
+ if (r == null || def_.equals(r)) {
+ r="Geom_"+(++numid_);
+ }
+ return r;
+ }
+
public Object getDefaultValue() {
return def_;
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-07-03 13:19:32 UTC (rev 3667)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-07-04 08:59:20 UTC (rev 3668)
@@ -112,7 +112,7 @@
*
* @param _init Les valeurs d'initialisation, dans l'ordre et au nombre des mod\xE8les d'attributs.
* Si null, les valeurs par d\xE9faut sont affect\xE9es (voir {@link GISAttributeInterface#getDefaultValue()})
- * @param _dest La g\xE9ometrie polyligne ou polygone.
+ * @param _dest La g\xE9ometrie.
* @param _isClosed Param\xE8tre inutilis\xE9.
* @return
*/
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-07-03 13:19:32 UTC (rev 3667)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-07-04 08:59:20 UTC (rev 3668)
@@ -765,6 +765,7 @@
Object[] vals=new Object[geometries_.getNbAttributes()];
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;
int nbpt=geom.getNumPoints();
vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt);
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-07-03 13:19:32 UTC (rev 3667)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-07-04 08:59:20 UTC (rev 3668)
@@ -823,6 +823,7 @@
Object[] vals=new Object[geometries_.getNbAttributes()];
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;
int nbpt=geom.getNumPoints();
vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt);
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-07-03 13:19:32 UTC (rev 3667)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-07-04 08:59:20 UTC (rev 3668)
@@ -25,7 +25,7 @@
import org.fudaa.ctulu.CtuluLibGeometrie;
import org.fudaa.ctulu.CtuluLibString;
import org.fudaa.ctulu.CtuluListSelectionInterface;
-import org.fudaa.ctulu.gis.GISMultiPoint;
+import org.fudaa.ctulu.gis.GISAttributeConstants;
import org.fudaa.ctulu.gis.GISPoint;
import org.fudaa.ctulu.gis.GISZoneCollection;
import org.fudaa.ctulu.gis.GISZoneCollectionPoint;
@@ -247,6 +247,7 @@
Object[] vals=new Object[pts_.getNbAttributes()];
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;
int nbpt=geom.getNumPoints();
vals[iatt]=pts_.getAttribute(iatt).createDataForGeom(val, nbpt);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-07-15 15:23:35
|
Revision: 3688
http://fudaa.svn.sourceforge.net/fudaa/?rev=3688&view=rev
Author: bmarchan
Date: 2008-07-15 08:22:51 -0700 (Tue, 15 Jul 2008)
Log Message:
-----------
Impl?\195?\169mentation import/export SinusX.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java
branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigDataModelSinusxAdapter.java
branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderSinusX.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java 2008-07-15 15:11:13 UTC (rev 3687)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java 2008-07-15 15:22:51 UTC (rev 3688)
@@ -12,8 +12,12 @@
import java.io.EOFException;
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.Geometry;
import com.memoire.fu.FuLog;
@@ -21,8 +25,14 @@
import org.fudaa.ctulu.CtuluLibFile;
import org.fudaa.ctulu.CtuluLibString;
import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
+import org.fudaa.ctulu.gis.GISAttribute;
+import org.fudaa.ctulu.gis.GISAttributeConstants;
+import org.fudaa.ctulu.gis.GISAttributeInterface;
import org.fudaa.ctulu.gis.GISCoordinateSequence;
+import org.fudaa.ctulu.gis.GISDataModelPointMultiPointAdapter;
+import org.fudaa.ctulu.gis.GISGeometryFactory;
import org.fudaa.ctulu.gis.GISZone;
+import org.fudaa.ctulu.gis.GISZoneCollection;
import org.fudaa.ctulu.gis.GISZoneCollectionPoint;
import org.fudaa.ctulu.gis.GISZoneCollectionPolygone;
import org.fudaa.ctulu.gis.GISZoneCollectionPolyligne;
@@ -89,7 +99,9 @@
/**
* En retour, les polylignes sont stock\xE9es dans une seule GISZoneCollectionPolyligne, les polygones dans une
- * seule GISZoneCollectionPolygone, les points par blocs, chaque bloc correspondant \xE0 une GISZoneCollectionPoint.
+ * seule GISZoneCollectionPolygone, les points par blocs, chaque bloc correspondant \xE0 une GISZoneCollectionPoint.<p>
+ * Les collections de points poss\xE8dent un attribut TITLE, chaque point de la collection ayant m\xEAme TITLE, qui correspond
+ * au nom du semis dont ils font partie. Ils poss\xE8dent \xE9galement un attribut ATT_NUM_BLOC pour pouvoir les regrouper.<p>
*
* Utilise FortranReader ( donc un buffer).
*
@@ -101,7 +113,18 @@
GISZoneCollectionPoint ptDefZone = null;
GISZoneCollectionPolygone polygones = null;
GISZoneCollectionPolyligne polylignes = null;
- int idx = 1;
+
+// GISAttribute[] atts=new GISAttribute[]{GISAttributeConstants.BATHY,GISAttributeConstants.TITRE};
+ GISAttributeInterface[] attPts=new GISAttributeInterface[]{
+ GISAttributeConstants.BATHY,
+ GISAttributeConstants.TITRE,
+ GISDataModelPointMultiPointAdapter.ATT_NUM_BLOC
+ };
+
+// Geometry geom;
+ String name = "";
+
+ int idx = 0;
defZone.setNom(name_);
// GISZone profilZone = null;
if (super.in_ == null) {
@@ -135,7 +158,6 @@
}
} while (key.isBlocCommentaire(bloc));
String type = null;
- // String nom = "";
// MNTEntite ent = null;
// approximation
lu += 150;
@@ -157,9 +179,10 @@
while (!estPoint(bloc)) {
if (key.isBlocNomEntite(bloc)) {
- if (FuLog.isDebug()) {
- FuLog.debug("DTE: name " + in_.getLine().substring(key.getBlocNomEntite().length()).trim());
- }
+ name=in_.getLine().substring(key.getBlocNomEntite().length()).trim();
+// if (FuLog.isDebug()) {
+// FuLog.debug("DTE: name " + in_.getLine().substring(key.getBlocNomEntite().length()).trim());
+// }
} else if (key.isBlocInfos(bloc)) {
final String t1 = in_.stringField(1);
final int nbChamps = in_.getNumberOfFields();
@@ -185,40 +208,57 @@
if (key.isTypeCourbe(type)) {
// DEBUG:FERME??
polyligneXyz = new TDoubleArrayList();
- } else if (key.isTypeCourbeNiveau(type)) {
+ }
+ else if (key.isTypeCourbeNiveau(type)) {
polyligneXyz = new TDoubleArrayList();
niveau = true;
/*
* temp.niveau(true); defZone.ajoutePolyligne(temp); ent = temp; temp = null; ent.setNom(nom);
*/
// ent.setNom(nom);
- } else if (key.isTypeProfil(type)) {
- analyze_.addWarn(H2dResource.getS("Pofils non g\xE9r\xE9s"), in_.getLineNumber());
+ }
+ else if (key.isTypeProfil(type)) {
+ analyze_.addWarn(H2dResource.getS("Profils non g\xE9r\xE9s"), in_.getLineNumber());
pt = defZone.createPointContainer();
- pt.setTitle("profil", null);
- } else {
- if (!key.isTypeSemis(type)) {
- analyze_.addWarn(H2dResource.getS("TYPE inconnu : assimil\xE9 a un semis"), in_.getLineNumber());
+ pt.setAttributes(attPts, null);
+ idx++;
+// pt.setTitle("profil", null);
+ }
+ else if (key.isTypeSemis(type)) {
+ if (ptDefZone == null) {
+ ptDefZone = defZone.createPointContainer();
+ pt = ptDefZone;
+ pt.setAttributes(attPts, null);
+ idx++;
+ } else {
pt = defZone.createPointContainer();
- pt.setTitle(H2dResource.getS("type inconnu"), null);
- } else {
- if (ptDefZone == null) {
- ptDefZone = defZone.createPointContainer();
- pt = ptDefZone;
- } else {
- pt = defZone.createPointContainer();
- pt.setTitle(name_ + " " + (idx++), null);
- }
+ pt.setAttributes(attPts, null);
+ idx++;
+// pt.setTitle(name_ + " " + (idx++), null);
}
}
- } else {
+ else {
+ analyze_.addWarn(H2dResource.getS("TYPE inconnu : assimil\xE9 a un semis"), in_.getLineNumber());
+ pt = defZone.createPointContainer();
+ pt.setAttributes(attPts, null);
+ idx++;
+// pt.setTitle(H2dResource.getS("type inconnu"), null);
+ }
+ }
+ else {
analyze_.addWarn(H2dResource.getS("Liste de points uniquement"), in_.getLineNumber());
if (ptDefZone == null) {
ptDefZone = defZone.createPointContainer();
pt = ptDefZone;
+ pt.setAttributes(attPts, null);
+ idx++;
+ name=name_+" "+(idx);
} else {
pt = defZone.createPointContainer();
- pt.setTitle(name_ + " " + (idx++), null);
+ pt.setAttributes(attPts, null);
+ idx++;
+ name=name_+" "+(idx);
+// pt.setTitle(name_ + " " + (idx++), null);
}
}
lu += 30;
@@ -229,7 +269,7 @@
}
if (estPoint(bloc)) {
if (pt != null) {
- pt.add(Double.parseDouble(bloc), in_.doubleField(1), in_.doubleField(2));
+ pt.add(Double.parseDouble(bloc), in_.doubleField(1), in_.doubleField(2),Arrays.asList(new Object[]{null,name,idx-1}),null);
} else if (polyligneXyz != null) {
polyligneXyz.add(Double.parseDouble(bloc));
polyligneXyz.add(in_.doubleField(1));
@@ -246,34 +286,41 @@
}
// Fin de lecture des points du bloc => Si polyligne ou polygone, cr\xE9ation et ajout des points.
if (polyligneXyz != null) {
- if (!ferme) {
- ferme = isClosed(polyligneXyz);
- }
- if (ferme) {
- if (polygones == null) {
- polygones = defZone.createPolygoneContainer();
- }
- polyligneXyz.add(polyligneXyz.getQuick(0));
- polyligneXyz.add(polyligneXyz.getQuick(1));
- polyligneXyz.add(polyligneXyz.getQuick(2));
- if (niveau) {
- polygones.addPolygoneNiveau(new GISCoordinateSequence(polyligneXyz), null);
- } else {
- polygones.addPolygone(new GISCoordinateSequence(polyligneXyz), null);
- }
- } else {
- if (polylignes == null) {
- polylignes = defZone.createPolyligneContainer();
- }
- if (niveau) {
- polylignes.addPolyligneNiveau(new GISCoordinateSequence(polyligneXyz), null);
- } else {
- polylignes.addPolyligne(new GISCoordinateSequence(polyligneXyz), null);
- }
- }
- ferme = false;
- niveau = false;
+ addLigne(defZone, polyligneXyz, name, polygones, polylignes, ferme, niveau);
+// if (!ferme) {
+// ferme = isClosed(polyligneXyz);
+// }
+// if (ferme) {
+// if (polygones == null) {
+// polygones = defZone.createPolygoneContainer();
+// polygones.setAttributes(atts, null);
+// }
+// polyligneXyz.add(polyligneXyz.getQuick(0));
+// polyligneXyz.add(polyligneXyz.getQuick(1));
+// polyligneXyz.add(polyligneXyz.getQuick(2));
+// if (niveau) {
+// geom=GISGeometryFactory.INSTANCE.createLinearRingNiveau(new GISCoordinateSequence(polyligneXyz));
+// } else {
+// geom=GISGeometryFactory.INSTANCE.createLinearRing(new GISCoordinateSequence(polyligneXyz));
+// }
+// polygones.addGeometry(geom, new Object[]{null,name}, null);
+// } else {
+// if (polylignes == null) {
+// polylignes = defZone.createPolyligneContainer();
+// polylignes.setAttributes(atts, null);
+// }
+// if (niveau) {
+// geom=GISGeometryFactory.INSTANCE.createLineStringNiveau(new GISCoordinateSequence(polyligneXyz));
+// } else {
+// geom=GISGeometryFactory.INSTANCE.createLineString(new GISCoordinateSequence(polyligneXyz));
+// }
+// polylignes.addGeometry(geom, new Object[]{null,name}, null);
+// }
+// ferme = false;
+// niveau = false;
}
+ ferme = false;
+ niveau = false;
}
} catch (final EOFException e) {} catch (final IOException e) {
analyze_.manageException(e);
@@ -284,33 +331,90 @@
return null;
}
if (polyligneXyz != null) {
- if (!ferme) {
- ferme = isClosed(polyligneXyz);
+ addLigne(defZone, polyligneXyz, name, polygones, polylignes, ferme, niveau);
+// if (!ferme) {
+// ferme = isClosed(polyligneXyz);
+// }
+// if (ferme) {
+// if (polygones == null) {
+// polygones = defZone.createPolygoneContainer();
+// polygones.setAttributes(atts, null);
+// }
+// polyligneXyz.add(polyligneXyz.getQuick(0));
+// polyligneXyz.add(polyligneXyz.getQuick(1));
+// polyligneXyz.add(polyligneXyz.getQuick(2));
+// if (niveau) {
+// geom=GISGeometryFactory.INSTANCE.createLinearRingNiveau(new GISCoordinateSequence(polyligneXyz));
+// } else {
+// geom=GISGeometryFactory.INSTANCE.createLinearRing(new GISCoordinateSequence(polyligneXyz));
+// }
+// polygones.addGeometry(geom, new Object[]{null,name}, null);
+// } else {
+// if (polylignes == null) {
+// polylignes = defZone.createPolyligneContainer();
+// polylignes.setAttributes(atts, null);
+// }
+// if (niveau) {
+// geom=GISGeometryFactory.INSTANCE.createLineStringNiveau(new GISCoordinateSequence(polyligneXyz));
+// } else {
+// geom=GISGeometryFactory.INSTANCE.createLineString(new GISCoordinateSequence(polyligneXyz));
+// }
+// polylignes.addGeometry(geom, new Object[]{null,name}, null);
+// }
+ }
+
+ for (int i=0; i<defZone.getNumGeometries(); i++) {
+ ((GISZoneCollection)defZone.getGeometry(i)).postImport(0);
+ }
+ return defZone;
+ }
+
+ private void addLigne(GISZone _defZone, TDoubleArrayList _polyligneXyz, String _name, GISZoneCollection _polygones, GISZoneCollection _polylignes,
+ boolean _ferme, boolean _niveau) {
+
+ if (_polyligneXyz.size()<=3) { // Une polyligne ne peut pas contenir moins de 2 points.
+ analyze_.addWarn(H2dResource.getS("La polyligne {0} est vide ou ne contient qu'un point",_name), in_.getLineNumber());
+ return;
+ }
+
+ GISAttribute[] atts=new GISAttribute[]{GISAttributeConstants.BATHY,GISAttributeConstants.TITRE};
+ Geometry geom;
+
+ if (!_ferme) {
+ _ferme = isClosed(_polyligneXyz);
+ }
+ if (_ferme) {
+ if (_polygones == null) {
+ _polygones = _defZone.createPolygoneContainer();
+ _polygones.setAttributes(atts, null);
}
- if (ferme) {
- if (polygones == null) {
- polygones = defZone.createPolygoneContainer();
- }
- polyligneXyz.add(polyligneXyz.getQuick(0));
- polyligneXyz.add(polyligneXyz.getQuick(1));
- polyligneXyz.add(polyligneXyz.getQuick(2));
- if (niveau) {
- polygones.addPolygoneNiveau(new GISCoordinateSequence(polyligneXyz), null);
- } else {
- polygones.addPolygone(new GISCoordinateSequence(polyligneXyz), null);
- }
+ _polyligneXyz.add(_polyligneXyz.getQuick(0));
+ _polyligneXyz.add(_polyligneXyz.getQuick(1));
+ _polyligneXyz.add(_polyligneXyz.getQuick(2));
+ if (_niveau) {
+ geom=GISGeometryFactory.INSTANCE.createLinearRingNiveau(new GISCoordinateSequence(_polyligneXyz));
+// polygones.addPolygoneNiveau(new GISCoordinateSequence(polyligneXyz), null);
} else {
- if (polylignes == null) {
- polylignes = defZone.createPolyligneContainer();
- }
- if (niveau) {
- polylignes.addPolyligneNiveau(new GISCoordinateSequence(polyligneXyz), null);
- } else {
- polylignes.addPolyligne(new GISCoordinateSequence(polyligneXyz), null);
- }
+ geom=GISGeometryFactory.INSTANCE.createLinearRing(new GISCoordinateSequence(_polyligneXyz));
+// polygones.addPolygone(new GISCoordinateSequence(polyligneXyz), null);
}
+ _polygones.addGeometry(geom, new Object[]{null,_name}, null);
+ } else {
+ if (_polylignes == null) {
+ _polylignes = _defZone.createPolyligneContainer();
+ _polylignes.setAttributes(atts, null);
+ }
+ if (_niveau) {
+ geom=GISGeometryFactory.INSTANCE.createLineStringNiveau(new GISCoordinateSequence(_polyligneXyz));
+// polylignes.addPolyligneNiveau(new GISCoordinateSequence(polyligneXyz), null);
+ } else {
+ geom=GISGeometryFactory.INSTANCE.createLineString(new GISCoordinateSequence(_polyligneXyz));
+// polylignes.addPolyligne(new GISCoordinateSequence(polyligneXyz), null);
+ }
+ _polylignes.addGeometry(geom, new Object[]{null,_name}, null);
}
- return defZone;
+ _ferme = false;
+ _niveau = false;
}
public boolean isClosed(final TDoubleArrayList _list) {
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java 2008-07-15 15:11:13 UTC (rev 3687)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java 2008-07-15 15:22:51 UTC (rev 3688)
@@ -17,6 +17,7 @@
import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.geom.LinearRing;
+import com.vividsolutions.jts.geom.MultiPoint;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.Polygon;
@@ -24,8 +25,13 @@
import org.fudaa.ctulu.CtuluLibString;
import org.fudaa.ctulu.ProgressionUpdater;
import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
+import org.fudaa.ctulu.gis.GISAttribute;
+import org.fudaa.ctulu.gis.GISAttributeConstants;
+import org.fudaa.ctulu.gis.GISCollection;
+import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface;
import org.fudaa.ctulu.gis.GISGeometry;
import org.fudaa.ctulu.gis.GISLib;
+import org.fudaa.ctulu.gis.GISMultiPoint;
import org.fudaa.ctulu.gis.GISPolygone;
import org.fudaa.ctulu.gis.GISPolyligne;
import org.fudaa.ctulu.gis.GISVisitorDefault;
@@ -228,34 +234,65 @@
if (g == null) {
continue;
}
+ int attName=g.getIndiceOf(GISAttributeConstants.TITRE);
+ // Les lignes et polygones
if (g.getDataStoreClass() == LineString.class || g.getDataStoreClass() == LinearRing.class) {
final int nbPoly = g.getNumGeometries();
for (int polyIdx = 0; polyIdx < nbPoly; polyIdx++) {
final StringBuffer buf = new StringBuffer();
buf.append(bs_).append(CtuluLibString.ESPACE);
- final LineString l = (LineString) g.getGeometryN(polyIdx);
- ((GISGeometry) l).accept(identifieur);
+ final LineString geom = (LineString) g.getGeometryN(polyIdx);
+ ((GISGeometry) geom).accept(identifieur);
final boolean ferme = identifieur.isClosed_;
- final String nom = ((ferme) ? "polygone" : "polyligne");
+
+ final String nom;
+ if (attName==-1)
+ nom= ((ferme) ? "polygone" : "polyligne") + CtuluLibString.ESPACE + (j + 1) + "-" + (polyIdx + 1);
+ else
+ nom=(String)g.getValue(attName, polyIdx);
+
if (identifieur.isNiveau_) {
buf.append(key_.getTypeCourbeNiveau());
- spec = formate_.format(l.getCoordinateSequence().getOrdinate(0, 2));
+ spec = formate_.format(geom.getCoordinateSequence().getOrdinate(0, 2));
} else {
buf.append(key_.getTypeCourbe());
spec = courbeDefaut(key_.getCourbeNBIndic());
}
writeToOut(buf.toString());
- writeEntete(j + polyIdx, nom + CtuluLibString.ESPACE + (j + 1) + "-" + (polyIdx + 1), spec, ferme);
- writeCoordinateSequence(l.getCoordinateSequence(), up, ferme);
+ writeEntete(j + polyIdx, nom, spec, ferme);
+ writeCoordinateSequence(geom.getCoordinateSequence(), up, ferme);
}
// DEBUG: Que veut dire ferme??
// if(ent instanceof MNTPolygone) fermee=true;
}
- /*
- * else if (ent instanceof MNTProfil) { buf.append(key.getTypeProfil()); spec = profilDefaut(); }
- */
+
+ // Multipoints
+ else if (g.getDataStoreClass() == GISMultiPoint.class) {
+ final int nbPoly = g.getNumGeometries();
+ for (int polyIdx = 0; polyIdx < nbPoly; polyIdx++) {
+ final StringBuffer buf = new StringBuffer();
+ buf.append(bs_).append(CtuluLibString.ESPACE);
+ final GISMultiPoint geom = (GISMultiPoint) g.getGeometryN(polyIdx);
+
+ final String nom;
+ if (attName==-1)
+ nom = "semis"+ CtuluLibString.ESPACE + (j + 1) + "-" + (polyIdx + 1);
+ else
+ nom=(String)g.getValue(attName, polyIdx);
+
+ buf.append(key_.getTypeSemis());
+ spec = null;
+ writeToOut(buf.toString());
+ writeEntete(j + polyIdx, nom , spec, false);
+ writeCoordinateSequence(geom.getCoordinateSequence(), up, false);
+ }
+ // DEBUG: Que veut dire ferme??
+ // if(ent instanceof MNTPolygone) fermee=true;
+ }
+
+ // Points
else {
final StringBuffer buf = new StringBuffer(50);
buf.append(bs_).append(' ');
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-07-15 15:11:13 UTC (rev 3687)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-07-15 15:22:51 UTC (rev 3688)
@@ -22,6 +22,7 @@
import org.fudaa.ctulu.gis.GISPolygone;
import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
import org.fudaa.ctulu.gis.GISZoneCollectionMultiPoint;
+import org.fudaa.ebli.calque.dessin.DeForme;
import org.fudaa.ebli.calque.edition.ZCalqueEditable;
import org.fudaa.fudaa.commun.FudaaLib;
import org.fudaa.fudaa.modeleur.layer.MdlLayer2dLine;
@@ -51,8 +52,11 @@
@Override
public void doTask() {
- if (data_==null) data_ = fileLoader_.loadAll(null, new CtuluAnalyze());
-
+ CtuluAnalyze analyze=new CtuluAnalyze();
+ if (data_==null) data_ = fileLoader_.loadAll(null, analyze);
+ // Affiche les erreurs dans une boite de dialogue.
+ impl_.manageAnalyzeAndIsFatal(analyze);
+
// Pas de fichier, retour sans message.
done_=true;
if (data_==null) return;
@@ -83,8 +87,8 @@
protected void importData(ProgressionInterface _prog) {
final CtuluCommandComposite cmp = new CtuluCommandComposite();
- // Calque des semis de points.
- if (selectedLayer_ instanceof MdlLayer2dMultiPoint) {
+ // Les semis de points.
+ if (selectedLayer_ instanceof MdlLayer2dMultiPoint && selectedLayer_.canAddForme(DeForme.MULTI_POINT)) {
final GISZoneCollectionMultiPoint col = (GISZoneCollectionMultiPoint)((MdlModel2dMultiPoint)selectedLayer_.modeleDonnees()).getGeomData();
final GISAttributeInterface[] attChosen=col.getAttributes();
final GISDataModel[] pts = data_.getPoints();
@@ -95,8 +99,8 @@
}
}
- // Les autres calques.
- else if (selectedLayer_ instanceof MdlLayer2dLine) {
+ // Les polylignes.
+ if (selectedLayer_ instanceof MdlLayer2dLine && selectedLayer_.canAddForme(DeForme.LIGNE_BRISEE)) {
final GISZoneCollectionLigneBrisee col = (GISZoneCollectionLigneBrisee)((MdlModel2dLine)selectedLayer_.modeleDonnees()).getGeomData();
final GISAttributeInterface[] attChosen=col.getAttributes();
GISDataModel[] lines = data_.getPolylignes();
@@ -106,6 +110,18 @@
col.addAll(model, cmp, true);
}
}
+
+ // Les polygones.
+ if (selectedLayer_ instanceof MdlLayer2dLine && selectedLayer_.canAddForme(DeForme.POLYGONE)) {
+ final GISZoneCollectionLigneBrisee col = (GISZoneCollectionLigneBrisee)((MdlModel2dLine)selectedLayer_.modeleDonnees()).getGeomData();
+ final GISAttributeInterface[] attChosen=col.getAttributes();
+ GISDataModel[] lines = data_.getPolygones();
+ final int nb=lines.length;
+ for (int i=0; i<nb; i++) {
+ final GISDataModel model=GISDataModelFilterAdapter.buildLigneAdapter(lines[i], attChosen);
+ col.addAll(model, cmp, true);
+ }
+ }
if (mng_!=null) mng_.addCmd(cmp.getSimplify());
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2008-07-15 15:11:13 UTC (rev 3687)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2008-07-15 15:22:51 UTC (rev 3688)
@@ -132,6 +132,11 @@
final GISZoneCollection collec = _filter.getCollect(_filter.polyCq_.get(i));
z.add(collec);
}
+ nb = _filter.mlptsCq_.size();
+ for (int i = 0; i < nb; i++) {
+ final GISZoneCollection collec = _filter.getCollect(_filter.mlptsCq_.get(i));
+ z.add(collec);
+ }
return SinusxFileFormat.getInstance().write(f, z, _prog);
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigDataModelSinusxAdapter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigDataModelSinusxAdapter.java 2008-07-15 15:11:13 UTC (rev 3687)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigDataModelSinusxAdapter.java 2008-07-15 15:22:51 UTC (rev 3688)
@@ -50,10 +50,10 @@
* @param _progress la barre de progression
* @return le model correspondant
*/
- public static GISDataModel readSxFilePoly(final File _f, final Class _filterClass, final CtuluUI _impl,
- final ProgressionInterface _progress) {
- return readSxFilePoly(_f, _filterClass, _impl, _progress, null);
- }
+// public static GISDataModel readSxFilePoly(final File _f, final Class _filterClass, final CtuluUI _impl,
+// final ProgressionInterface _progress) {
+// return readSxFilePoly(_f, _filterClass, _impl, _progress, null);
+// }
public Envelope getEnvelopeInternal() {
return GISLib.computeEnveloppe(geoms_);
@@ -69,143 +69,171 @@
* @param _isPolygoneAccepted true si les polygones sont acceptees dans le modele
* @param _progress la barre de progression
* @param _res le resultat peut etre null
- * @return le model
+ * @return le model, null si aucune g\xE9om\xE9trie.
*/
public static GISDataModel analyseSxFile(final GISZone _zi, final boolean _isPointAccepted,
final boolean _isPolyligneAccepted, final boolean _isPolygoneAccepted, final ProgressionInterface _progress,
final FSigFileLoadResult _res) {
- int ibloc=0;
- final List res = new ArrayList(100);
- // final TDoubleArrayList zAverage = new TDoubleArrayList(100);
- final List z = new ArrayList();
- final TIntArrayList numBloc=new TIntArrayList();
- final GISAttributeDouble zAtt = (GISAttributeDouble) GISAttributeConstants.BATHY;
- final GISAttributeInterface numBlocAtt=GISDataModelPointMultiPointAdapter.ATT_NUM_BLOC;
- if (_res != null) {
- _res.allAttribute_.add(zAtt);
- _res.allAttribute_.add(numBlocAtt);
- }
+// int ibloc=0;
+// final List res = new ArrayList(100);
+// // final TDoubleArrayList zAverage = new TDoubleArrayList(100);
+// final List z = new ArrayList();
+// final TIntArrayList numBloc=new TIntArrayList();
+// final GISAttributeDouble zAtt = (GISAttributeDouble) GISAttributeConstants.BATHY;
+// final GISAttributeInterface numBlocAtt=GISDataModelPointMultiPointAdapter.ATT_NUM_BLOC;
+// final GISAttribute nameAtt = GISAttributeConstants.TITRE;
+// if (_res != null) {
+// _res.allAttribute_.add(zAtt);
+// _res.allAttribute_.add(numBlocAtt);
+// _res.allAttribute_.add(nameAtt);
+// }
final GISZoneCollectionPolygone[] polygones = _zi.getPolygoneCollections();
// on parcourt les polygones
if (polygones != null && _isPolygoneAccepted) {
+ if (polygones.length==0) return null;
final int nbPolyg = polygones.length;
for (int j = 0; j < nbPolyg; j++) {
- final GISZoneCollectionPolygone polyzj = polygones[j];
- final int nbpoly = polyzj.getNumGeometries();
- for (int k = 0; k < nbpoly; k++) {
- final GISPolygone pk = (GISPolygone) polyzj.getGeometry(k);
- res.add(pk);
- if (_res != null) {
- _res.nbPolygones_++;
- _res.nbPointTotal_ += pk.getNumGeometries();
- }
- final CoordinateSequence seq = pk.getCoordinateSequence();
- final GISAttributeModelDoubleArray zl = zAtt.createAtomicModelDouble(pk.getNumPoints());
- for (int l = zl.getSize() - 1; l >= 0; l--) {
- zl.set(l, seq.getOrdinate(l, 2));
- }
- z.add(zl);
- numBloc.add(ibloc++);
- }
-
+ _res.nbPolygones_+=polygones[j].getNumGeometries();
+ _res.nbPointTotal_+=polygones[j].getNumPoints();
}
+ GISDataModel mdl=new GISDataModelMultiAdapter(polygones);
+ return mdl;
+// final int nbPolyg = polygones.length;
+// for (int j = 0; j < nbPolyg; j++) {
+// final GISZoneCollectionPolygone polyzj = polygones[j];
+// final int nbpoly = polyzj.getNumGeometries();
+// for (int k = 0; k < nbpoly; k++) {
+// final GISPolygone pk = (GISPolygone) polyzj.getGeometry(k);
+// res.add(pk);
+// if (_res != null) {
+// _res.nbPolygones_++;
+// _res.nbPointTotal_ += pk.getNumGeometries();
+// }
+// final CoordinateSequence seq = pk.getCoordinateSequence();
+// final GISAttributeModelDoubleArray zl = zAtt.createAtomicModelDouble(pk.getNumPoints());
+// for (int l = zl.getSize() - 1; l >= 0; l--) {
+// zl.set(l, seq.getOrdinate(l, 2));
+// }
+// z.add(zl);
+// numBloc.add(ibloc++);
+// }
+//
+// }
}
final GISZoneCollectionPolyligne[] polyligne = _zi.getPolyligneCollections();
// on parcourt les polygones
if (polyligne != null && _isPolyligneAccepted) {
- final int nbLignes = polyligne.length;
- for (int j = 0; j < nbLignes; j++) {
- final GISZoneCollectionPolyligne lignes = polyligne[j];
- final int nbpoly = lignes.getNumGeometries();
- for (int k = 0; k < nbpoly; k++) {
- final GISPolyligne pk = (GISPolyligne) lignes.getGeometry(k);
- res.add(pk);
- if (_res != n...
[truncated message content] |