X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=micropeak%2FMicroGraph.java;h=811b1e7c14984c6511e46611285371f9c6a4538a;hp=e8a6ea16f7967ee034e9f7ee1661217673d86d86;hb=c8078d352a7f54a4a97d25af080155d3f875536a;hpb=8d1d8d2a3c129cdbd55427bcda0f26715b02f1ee diff --git a/micropeak/MicroGraph.java b/micropeak/MicroGraph.java index e8a6ea16..811b1e7c 100644 --- a/micropeak/MicroGraph.java +++ b/micropeak/MicroGraph.java @@ -22,7 +22,8 @@ import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altoslib_5.*; +import org.altusmetrum.altosuilib_3.*; import org.jfree.ui.*; import org.jfree.chart.*; @@ -34,146 +35,19 @@ import org.jfree.chart.labels.*; import org.jfree.data.xy.*; import org.jfree.data.*; -class MicroSeries extends XYSeries { - NumberAxis axis; - String label; - String units; - Color color; - XYItemRenderer renderer; - - void set_units(String units) { - this.units = units; - - 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) { - super(label); - this.label = label; - this.units = units; - this.color = color; - - axis = new NumberAxis(); - axis.setLabelPaint(color); - axis.setTickLabelPaint(color); - - renderer = new XYLineAndShapeRenderer(true, false); - renderer.setSeriesPaint(0, color); - set_units(units); - } -} - -public class MicroGraph implements AltosUnitsListener { - - XYPlot plot; - JFreeChart chart; - ChartPanel panel; - NumberAxis xAxis; - MicroSeries heightSeries; - MicroSeries speedSeries; - MicroSeries accelSeries; +public class MicroGraph extends AltosUIGraph { 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; - - public JPanel panel() { - return panel; - } - - private MicroSeries addSeries(int index, String label, String units, Color color) { - MicroSeries series = new MicroSeries(label, units, color); - XYSeriesCollection dataset = new XYSeriesCollection(series); - - series.renderer.setPlot(plot); - plot.setRangeAxis(index, series.axis); - plot.setDataset(index, dataset); - plot.setRenderer(index, series.renderer); - plot.mapDatasetToRangeAxis(index, index); - return series; - } - - public void resetData() { - heightSeries.clear(); - speedSeries.clear(); - accelSeries.clear(); - 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) { - heightSeries.set_units(AltosConvert.height.show_units()); - speedSeries.set_units(AltosConvert.speed.show_units()); - accelSeries.set_units(AltosConvert.accel.show_units()); - resetData(); - } - - public MicroGraph() { - - xAxis = new NumberAxis("Time (s)"); - - xAxis.setAutoRangeIncludesZero(true); - - plot = new XYPlot(); - plot.setDomainAxis(xAxis); - plot.setOrientation(PlotOrientation.VERTICAL); - plot.setDomainPannable(true); - plot.setRangePannable(true); - - 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); + static final private Color state_color = new Color(3,3,3); - chart.setBackgroundPaint(background_color); - chart.setBorderPaint(border_color); - panel = new ChartPanel(chart); - panel.setMouseWheelEnabled(true); - panel.setPreferredSize(new java.awt.Dimension(800, 500)); + public MicroGraph(AltosUIEnable enable) { + super(enable); - AltosPreferences.register_units_listener(this); + addSeries("Height", MicroDataPoint.data_height, AltosConvert.height, height_color); + addSeries("Speed", MicroDataPoint.data_speed, AltosConvert.speed, speed_color); + addSeries("Acceleration", MicroDataPoint.data_accel, AltosConvert.accel, accel_color); + addMarker("State", MicroDataPoint.data_state, state_color); } } \ No newline at end of file