|
From: <bma...@us...> - 2011-04-22 08:27:18
|
Revision: 6232
http://fudaa.svn.sourceforge.net/fudaa/?rev=6232&view=rev
Author: bmarchan
Date: 2011-04-22 08:27:12 +0000 (Fri, 22 Apr 2011)
Log Message:
-----------
Ajout methode ZModelLigneBriseeEditable.invertGeometry() + bricoles.
Modified Paths:
--------------
trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZModeleLigneBrisee.java
trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java
trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModelePointEditable.java
trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionMap.java
Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZModeleLigneBrisee.java
===================================================================
--- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZModeleLigneBrisee.java 2011-04-22 08:04:13 UTC (rev 6231)
+++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZModeleLigneBrisee.java 2011-04-22 08:27:12 UTC (rev 6232)
@@ -7,8 +7,10 @@
*/
package org.fudaa.ebli.calque;
+import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
+
/**
* Une interface mod\xE8le manipul\xE9e par un calque ZCalqueLigneBrisee.
* @see org.fudaa.ebli.calque.ZCalqueLigneBrisee
@@ -17,6 +19,8 @@
*/
public interface ZModeleLigneBrisee extends ZModeleGeometry {
+ GISZoneCollectionLigneBrisee getGeomData();
+
/**
* Retourne le nombre de polylignes (ligne bris\xE9e ouvertes) contenues dans le mod\xE8le.
* @return Le nombre de poylignes.
Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java
===================================================================
--- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2011-04-22 08:04:13 UTC (rev 6231)
+++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2011-04-22 08:27:12 UTC (rev 6232)
@@ -46,6 +46,8 @@
import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.LineString;
+import org.fudaa.ctulu.CtuluNamedCommand;
+import org.fudaa.ebli.calque.ZModelListener;
/**
* @author Fred Deniger
@@ -657,6 +659,50 @@
return true;
}
+ /**
+ * Inverse le sens de la polyligne.
+ * @param _idxGeom index de la g\xE9om\xE9trie \xE0 inverser.
+ * @param _cmd Le container de commandes.
+ */
+ public void invertGeometry(final int _idxGeom, CtuluCommandContainer _cmd){
+ // Inversion des coordonn\xE9es
+ LineString geom=(LineString)getGeomData().getGeometry(_idxGeom);
+ CoordinateSequence seq=geom.getCoordinateSequence();
+ for(int i=0;i<seq.size()/2;i++)
+ for(int j=0;j<3;j++){
+ double valTmp=seq.getOrdinate(i, j);
+ seq.setOrdinate(i, j, seq.getOrdinate(seq.size()-1-i, j));
+ seq.setOrdinate(seq.size()-1-i, j, valTmp);
+ }
+ // Inversion des attributs
+ for(int i=0;i<getAttributeNb();i++)
+ if(getAttribute(i).isAtomicValue()){
+ GISAttributeModel values=(GISAttributeModel) getDataModel(i).getObjectValueAt(_idxGeom);
+ for(int j=0;j<values.getSize()/2;j++){
+ Object valTmp=values.getObjectValueAt(j);
+ values.setObject(j, values.getObjectValueAt(values.getSize()-1-j), null);
+ values.setObject(values.getSize()-1-j, valTmp, null);
+ }
+ }
+ // Fires
+ fireModelAction(_idxGeom, geom, ZModelListener.GEOMETRY_ACTION_MODIFY);
+ fireAttributeValueChangeAction(this, -1, null, _idxGeom, null);
+
+ if (_cmd!=null){
+ _cmd.addCmd(new CtuluNamedCommand() {
+ public void redo() {
+ invertGeometry(_idxGeom, null);
+ }
+ public void undo() {
+ invertGeometry(_idxGeom, null);
+ }
+ public String getName() {
+ return EbliLib.getS("Inversion de l'orientation");
+ }
+ });
+ }
+ }
+
public GISAttributeModel getDataModel(final int _i){
return geometries_.getDataModel(_i);
}
Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModelePointEditable.java
===================================================================
--- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2011-04-22 08:04:13 UTC (rev 6231)
+++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2011-04-22 08:27:12 UTC (rev 6232)
@@ -112,7 +112,8 @@
return pts_.getX(_idx);
}
- public GISZoneCollection getGeomData() {
+ @Override
+ public GISZoneCollectionPoint getGeomData() {
return pts_;
}
Modified: trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionMap.java
===================================================================
--- trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionMap.java 2011-04-22 08:04:13 UTC (rev 6231)
+++ trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliActionMap.java 2011-04-22 08:27:12 UTC (rev 6232)
@@ -7,6 +7,7 @@
*/
package org.fudaa.ebli.commun;
+import com.memoire.fu.FuLog;
import java.util.HashMap;
import javax.swing.Action;
@@ -39,7 +40,13 @@
* Ajoute une action.
*/
public void addAction(EbliActionAbstract _action) {
- map_.put(_action.getValue(Action.ACTION_COMMAND_KEY), _action);
+ if (!map_.containsKey(_action.getValue(Action.ACTION_COMMAND_KEY))) {
+ map_.put(_action.getValue(Action.ACTION_COMMAND_KEY), _action);
+ }
+ else {
+ // Erreur destin\xE9e au programmeur => Pas de traduction
+ FuLog.error("Command "+_action.getValue(Action.ACTION_COMMAND_KEY)+" is already registered");
+ }
}
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|