From 80b788aef2b67594ce9051f7a7d7099125b4d84f Mon Sep 17 00:00:00 2001
From: "guillaume.garbay" <guillaume.garbay>
Date: Tue, 15 Sep 2015 08:50:55 +0000
Subject: [PATCH]

---
 .../Movement2DWithinShapeObserver.java        | 92 +++++++++++++------
 1 file changed, 63 insertions(+), 29 deletions(-)

diff --git a/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java b/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java
index edc034e..c794cc4 100644
--- a/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java
+++ b/src/main/java/pikelake/environment/Movement2DWithinShapeObserver.java
@@ -49,13 +49,12 @@ import pikelake.pikes.PikesGroup;
 
 public class Movement2DWithinShapeObserver extends ObserverListener implements Configurable, Drawable {
 
+	private String title;
+	//private transient Grid grid;
     private transient JComponent display;
-
     private transient GeneralPath generalPath;
     private transient List<PikesGroup> groups;
 
-    private String title;
-
     // TODO supress transient when list will be supported by AutOUI
     @Description (name="Groups colors",tooltip="Colors af aquanisms groups")
     private transient List<Color> groupsColors;
@@ -72,7 +71,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
     private Color textColor;
     
     private int margin;
-//    private int sizeOfDisplayedIndividuals;
+    // private int sizeOfDisplayedIndividuals;
     // use for determine if generalPath must be rescaled
     private transient int displayWidthBak,displayHeightBak;
     // used for coordinates rescaling
@@ -83,42 +82,75 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
 	@SuppressWarnings("unused")
 	private transient double rescaleFactorWithOriginal;
 
-    public Movement2DWithinShapeObserver(int margin) {
+
+    public Movement2DWithinShapeObserver (int margin) {
         this(margin,Color.BLACK,Color.BLUE);
     }
 
-    public Movement2DWithinShapeObserver() {
+    public Movement2DWithinShapeObserver () {
         this(Color.BLACK,Color.BLUE);
     }
 
-    public Movement2DWithinShapeObserver(Color bgColor,Color shapeColor) {
+    public Movement2DWithinShapeObserver (Color bgColor,Color shapeColor) {
         this(0,bgColor,shapeColor);
     }
 
-    public Movement2DWithinShapeObserver(int margin,Color bgColor,Color shapeColor) {
+    public Movement2DWithinShapeObserver (int margin,Color bgColor,Color shapeColor) {
         this.margin = margin;
         this.bgColor = bgColor;
     }
 
-    public String getTitle() {
+    public String getTitle () {
         return title;
     }
 
-    public JComponent getDisplay() {
+    public JComponent getDisplay () {
         return display;
     }
 
+    @Override
+	public void init() {
+		// TODO Auto-generated method stub
+	}
+    
     @TransientParameters.InitTransientParameters
-    public void init(Pilot pilot) {
+    public void init (Pilot pilot) {
         
     	display = new DisplayComponent();
         display.setVisible(false);
         display.setDoubleBuffered(true);
 
+/*        grid = (Grid)pilot.getAquaticWorld().getEnvironment();
+
+        System.out.println(grid);
+        // init display variables
         displayWidthBak = 0;
         displayHeightBak = 0;
-     
-        
+        // compute HabitatQuality colors
+    	double cellsHabitatQualityMin = 0;
+        double cellsHabitatQualityMax = 0;
+    	cellsAlpha = new int[grid.getCells().length];
+    	if (grid.getCells().length > 0) {
+	    	cellsHabitatQualityMin = grid.getCells()[0].getHabitatQuality();
+	    	cellsHabitatQualityMax = grid.getCells()[0].getHabitatQuality();
+	    	for (int i = 1; i < grid.getCells().length; i++) {
+	    		if (grid.getCells()[i].getHabitatQuality() < cellsHabitatQualityMin)
+	    			cellsHabitatQualityMin = grid.getCells()[i].getHabitatQuality();
+	    		else if (grid.getCells()[i].getHabitatQuality() > cellsHabitatQualityMax)
+	    			cellsHabitatQualityMax = grid.getCells()[i].getHabitatQuality();
+	    	}
+    	}
+    	if (Double.compare(cellsHabitatQualityMax,cellsHabitatQualityMin) == 0) {
+    		for (int i = 0; i < grid.getCells().length; i++) {
+	    		cellsAlpha[i] = 255;
+	    	}
+    	} else {
+	    	for (int i = 0; i < grid.getCells().length; i++) {
+	    		cellsAlpha[i] = (int)(155 + 100*(grid.getCells()[i].getHabitatQuality() - cellsHabitatQualityMin)/(cellsHabitatQualityMax - cellsHabitatQualityMin));
+	    	}
+    	}
+*/
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////        
         File file = new File("data/input/shape/513_5.shp");
         FileDataStore store;
@@ -154,7 +186,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
         // vertical flip
         this.generalPath.transform(AffineTransform.getScaleInstance(1,-1)); 
         this.generalPath.transform(AffineTransform.getTranslateInstance(0,shapeOriginalHeight));
-
+        
         this.groups = new ArrayList<PikesGroup>();
         groupsColors = new ArrayList<Color>();
         groupsColors.add(Color.RED);
@@ -163,6 +195,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
         groupsColors.add(Color.CYAN);
         groupsColors.add(Color.GRAY);
         display.setVisible(true);
+
         // auto-repaint 20 times / second
         Timer timer = new Timer(50, new ActionListener() {
 
@@ -176,16 +209,16 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
 
     }
 
-    public void disable() {
+    public void disable () {
         display.setVisible(false);
     }
 
     @Override
-    public void addObservable(ObservablesHandler classObservable) {
+    public void addObservable (ObservablesHandler classObservable) {
         // nothing to do
     }
 
-    public void valueChanged(ObservablesHandler clObservable, Object instance, long t) {
+    public void valueChanged (ObservablesHandler clObservable, Object instance, long t) {
         if (groups.isEmpty() && instance != null) {
            	groups.add((PikesGroup) instance);
         }
@@ -196,18 +229,18 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
         public Shape getShape();
     }
 
-    public void configure() {
+    public void configure () {
         OhOUIDialog dialog = OhOUI.getDialog(null,this,new NoTransientField());
         dialog.setSize(new Dimension(480, 200));
         dialog.setVisible(true);
         display.repaint();
     }
 
-    public void addObservable(ObserverListener classObservable) {
+    public void addObservable (ObserverListener classObservable) {
         // nothing to do
     }
 
-    public void close() {
+    public void close () {
         // nothing to do
     }
     
@@ -238,15 +271,18 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
                 generalPath.transform (AffineTransform.getScaleInstance (rescaleFactor, rescaleFactor));
             }           
             Iterator<Color> colorsIterator = groupsColors.iterator();
+
+
             // Draw aquanisms
             g.setColor(pikeColor);
             double widthMax = 0, heightMax = 0;
             double xPike = 0, yPike = 0, xPike2 = 0, yPike2 = 0;
             widthMax = generalPath.getBounds().getWidth();
             heightMax = generalPath.getBounds().getHeight();
-            
+
             boolean oneShot = false;
             for (PikesGroup group : groups) {
+
             	final Grid grid = group.getEnvironment();
                 if (oneShot == false) {
 	            	Cell[] cells;
@@ -254,6 +290,7 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
                         synchronized (grid) {
                            cells = Arrays.copyOf(grid.getCells(), grid.getCells().length);
                         }
+
 	            	int xHSI = 0, yHSI = 0, xHSI2 = 0, yHSI2 = 0;
 	            	int xx[] = new int [(grid.getGridHeight() * grid.getGridWidth())-1], yy[] = new int [(grid.getGridHeight() * grid.getGridWidth())-1];
 	            	g.setColor(hsiColor);
@@ -265,9 +302,11 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
 		            		
 		            		xHSI2 = (int) (xHSI * (widthMax / grid.getGridWidth()));
 		            		yHSI2 = (int) (yHSI * (heightMax / grid.getGridHeight()));
+
 		            		g.setColor(new Color(0.43f, (float) (Math.max(0, Math.min(1,grid.getCell(cptCell).getHabitatQuality()/hsiMaxValueThreshold))), 0.13f));
                                         g2d.fillRect((int) xHSI2, (int) yHSI2, 3, 3);
                                         xx[cptCell] = xHSI2;
+
 		                	yy[cptCell] = yHSI2;
 		            	}
 	            	}            		
@@ -286,9 +325,9 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
                 	yPike2 = yPike * (heightMax / grid.getGridHeight());
                 	// Affichage de chaque individu
                 	g2d.drawRect((int) xPike2, (int) yPike2, 1, 1);
-                }     
+                }
             }
-            
+
             // Annotations
             DecimalFormat df = new DecimalFormat("00");
             g.setColor(textColor);
@@ -298,14 +337,9 @@ public class Movement2DWithinShapeObserver extends ObserverListener implements C
             // Nombre de pas
             line = "NbPas : " + Time.nbrIter;
             g2d.drawString(line, 5, 25);
-            // Marnage ou Cote
+            // Marnage (ou Cote)
             line = "Cote : " + Marnage.marnageNew;
             g2d.drawString(line, 5, 40);
         }
     }
-
-	@Override
-	public void init() {
-		// TODO Auto-generated method stub
-	}
 }
-- 
GitLab