Change AltosLib to altoslib
[fw/altos] / micropeak / MicroGraph.java
index 38f54fe04fa7f9905327000de0f2a47721669ba0..8cb9504bd12170ec68ad3fa834316c8a22347ff4 100644 (file)
@@ -22,7 +22,7 @@ import java.util.ArrayList;
 
 import java.awt.*;
 import javax.swing.*;
-import org.altusmetrum.AltosLib.*;
+import org.altusmetrum.altoslib.*;
 
 import org.jfree.ui.*;
 import org.jfree.chart.*;
@@ -39,15 +39,24 @@ class MicroSeries extends XYSeries {
        String          label;
        String          units;
        Color           color;
+       XYItemRenderer  renderer;
        
-       String label() {
-               return String.format("%s (%s)", label, units);
-       }
-
        void set_units(String units) {
                this.units = units;
 
-               axis.setLabel(label());
+               axis.setLabel(String.format("%s (%s)", label, units));
+
+               StandardXYToolTipGenerator      ttg;
+
+               ttg = new StandardXYToolTipGenerator(String.format("{1}s: {2}%s ({0})", units),
+                                                    new java.text.DecimalFormat("0.00"),
+                                                    new java.text.DecimalFormat("0.00"));
+               renderer.setBaseToolTipGenerator(ttg);
+       }
+
+       void set_enable(boolean enable) {
+               renderer.setSeriesVisible(0, enable);
+               axis.setVisible(enable);
        }
 
        public MicroSeries (String label, String units, Color color) {
@@ -56,9 +65,13 @@ class MicroSeries extends XYSeries {
                this.units = units;
                this.color = color;
 
-               axis = new NumberAxis(label());
+               axis = new NumberAxis();
                axis.setLabelPaint(color);
                axis.setTickLabelPaint(color);
+
+               renderer = new XYLineAndShapeRenderer(true, false);
+               renderer.setSeriesPaint(0, color);
+               set_units(units);
        }
 }
 
@@ -72,9 +85,12 @@ public class MicroGraph implements AltosUnitsListener {
         MicroSeries    speedSeries;
        MicroSeries     accelSeries;
 
-       static final private Color red = new Color(194,31,31);
-       static final private Color green = new Color(31,194,31);
-       static final private Color blue = new Color(31,31,194);
+       static final private Color height_color = new Color(194,31,31);
+       static final private Color speed_color = new Color(31,194,31);
+       static final private Color accel_color = new Color(31,31,194);
+       static final private Color gridline_color = new Color(0, 0, 0);
+       static final private Color border_color = new Color(255, 255, 255);
+       static final private Color background_color = new Color(255, 255, 255);
 
        MicroData       data;
 
@@ -85,16 +101,11 @@ public class MicroGraph implements AltosUnitsListener {
        private MicroSeries addSeries(int index, String label, String units, Color color) {
                MicroSeries             series = new MicroSeries(label, units, color);
                XYSeriesCollection      dataset = new XYSeriesCollection(series);
-               XYItemRenderer          renderer = new XYLineAndShapeRenderer(true, false);
 
-               renderer.setSeriesPaint(0, color);
-               renderer.setPlot(plot);
-               renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator(String.format("{1}s: {2}%s ({0})", units),
-                                                                               new java.text.DecimalFormat("0.00"),
-                                                                               new java.text.DecimalFormat("0.00")));
+               series.renderer.setPlot(plot);
                plot.setRangeAxis(index, series.axis);
                plot.setDataset(index, dataset);
-               plot.setRenderer(index, renderer);
+               plot.setRenderer(index, series.renderer);
                plot.mapDatasetToRangeAxis(index, index);
                return series;
        }
@@ -103,26 +114,32 @@ public class MicroGraph implements AltosUnitsListener {
                heightSeries.clear();
                speedSeries.clear();
                accelSeries.clear();
-               for (int i = 0; i < data.pressures.length; i++) {
-                       double x = data.time(i);
-                       heightSeries.add(x, AltosConvert.height.value(data.height(i)));
-                       speedSeries.add(x, AltosConvert.speed.value(data.speed(i)));
-                       accelSeries.add(x, AltosConvert.accel.value(data.acceleration(i)));
+               if (data != null) {
+                       for (MicroDataPoint point : data.points()) {
+                               heightSeries.add(point.time, AltosConvert.height.value(point.height));
+                               speedSeries.add(point.time, AltosConvert.speed.value(point.speed));
+                               accelSeries.add(point.time, AltosConvert.accel.value(point.accel));
+                       }
                }
+//             accelSeries.set_enable(false);
+       }
+
+       public void setName (String name) {
+               chart.setTitle(name);
        }
 
        public void setData (MicroData data) {
                this.data = data;
+               if (data != null)
+                       setName(data.name);
                resetData();
        }
 
        public void units_changed(boolean imperial_units) {
-               if (data != null) {
-                       heightSeries.set_units(AltosConvert.height.show_units());
-                       speedSeries.set_units(AltosConvert.speed.show_units());
-                       accelSeries.set_units(AltosConvert.accel.show_units());
-                       resetData();
-               }
+               heightSeries.set_units(AltosConvert.height.show_units());
+               speedSeries.set_units(AltosConvert.speed.show_units());
+               accelSeries.set_units(AltosConvert.accel.show_units());
+               resetData();
        }
 
        public MicroGraph() {
@@ -137,14 +154,22 @@ public class MicroGraph implements AltosUnitsListener {
                plot.setDomainPannable(true);
                plot.setRangePannable(true);
 
-               heightSeries = addSeries(0, "Height", AltosConvert.height.show_units(), red);
-               speedSeries = addSeries(1, "Speed", AltosConvert.speed.show_units(), green);
-               accelSeries = addSeries(2, "Acceleration", AltosConvert.accel.show_units(), blue);
-
                chart = new JFreeChart("Flight", JFreeChart.DEFAULT_TITLE_FONT,
                                       plot, true);
 
                ChartUtilities.applyCurrentTheme(chart);
+
+               heightSeries = addSeries(0, "Height", AltosConvert.height.show_units(), height_color);
+               speedSeries = addSeries(1, "Speed", AltosConvert.speed.show_units(), speed_color);
+               accelSeries = addSeries(2, "Acceleration", AltosConvert.accel.show_units(), accel_color);
+
+               plot.setDomainGridlinePaint(gridline_color);
+               plot.setRangeGridlinePaint(gridline_color);
+               plot.setBackgroundPaint(background_color);
+               plot.setBackgroundAlpha((float) 1);
+
+               chart.setBackgroundPaint(background_color);
+               chart.setBorderPaint(border_color);
                panel = new ChartPanel(chart);
                panel.setMouseWheelEnabled(true);
                panel.setPreferredSize(new java.awt.Dimension(800, 500));