Merge branches/froyo_12.03 to head.
[debian/openrocket] / android / src / net / sf / openrocket / android / simulation / SimulationChart.java
index 807c58a77a48c74007ca2f9d709e8e7ac1db27b5..afe1edb83cf0e7d88acfde8ba692b97649f45594 100644 (file)
@@ -17,13 +17,16 @@ package net.sf.openrocket.android.simulation;
 \r
 import java.io.Serializable;\r
 import java.util.ArrayList;\r
+import java.util.HashMap;\r
 import java.util.List;\r
+import java.util.Map;\r
 \r
 import net.sf.openrocket.android.util.AndroidLogWrapper;\r
 import net.sf.openrocket.document.OpenRocketDocument;\r
 import net.sf.openrocket.document.Simulation;\r
 import net.sf.openrocket.simulation.FlightDataBranch;\r
 import net.sf.openrocket.simulation.FlightDataType;\r
+import net.sf.openrocket.simulation.FlightEvent;\r
 import net.sf.openrocket.unit.Unit;\r
 \r
 import org.achartengine.chart.LineChart;\r
@@ -55,6 +58,7 @@ public class SimulationChart implements Serializable {
        private final int simulationIndex;\r
        private transient FlightDataType series1;\r
        private transient FlightDataType series2;\r
+       private transient Map<Double,String> events;\r
        \r
        // Define 4 different colors and point styles to use for the series.\r
        // For now only 2 series are supported though.\r
@@ -79,6 +83,10 @@ public class SimulationChart implements Serializable {
                this.series2 = series2;\r
        }\r
 \r
+       public void setEvents( Map<Double,String> events ) {\r
+               this.events = events;\r
+       }\r
+       \r
        public FlightDataBranch getFlightDataBranch( OpenRocketDocument rocketDocument ) {\r
                Simulation sim = rocketDocument.getSimulation(simulationIndex);\r
                FlightDataBranch flightDataBranch = sim.getSimulatedData().getBranch(0);\r
@@ -101,6 +109,13 @@ public class SimulationChart implements Serializable {
                if (series2== null) {\r
                        series2 = flightDataBranch.getTypes()[2];\r
                }\r
+               \r
+               if ( events == null ) {\r
+                       events = new HashMap<Double,String>();\r
+                       for ( FlightEvent event : flightDataBranch.getEvents() ) {\r
+                               events.put(event.getTime(), event.getType().toString() );\r
+                       }\r
+               }\r
 \r
                /*\r
                 * TODO -\r
@@ -124,6 +139,12 @@ public class SimulationChart implements Serializable {
                renderer.setShowGrid(true);\r
                renderer.setZoomButtonsVisible(true);\r
                renderer.setChartTitle(sim.getName());\r
+               renderer.setShowCustomTextGrid(true);\r
+               renderer.setXLabelsAlign(Align.RIGHT);\r
+               renderer.setXLabelsAngle(90);  // rotate right\r
+               for( Map.Entry<Double,String> event : events.entrySet() ) {\r
+                       renderer.addXTextLabel(event.getKey(), event.getValue());\r
+               }\r
 \r
                renderer.setMargins(new int[] { 50, 30, 0, 20 });\r
                {\r