X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=micropeak%2FMicroGraph.java;h=8cb9504bd12170ec68ad3fa834316c8a22347ff4;hp=38f54fe04fa7f9905327000de0f2a47721669ba0;hb=5a3c5de6657d1c26e52015a8acec0cd05e294cef;hpb=65b512c890a3ccf487655b79305ab1cfcf49259c diff --git a/micropeak/MicroGraph.java b/micropeak/MicroGraph.java index 38f54fe0..8cb9504b 100644 --- a/micropeak/MicroGraph.java +++ b/micropeak/MicroGraph.java @@ -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));