X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosui%2FAltosGraphTime.java;h=62d516b24f7782e1a1343409ed9b8c1d602e5012;hb=59f355f5288b42b2e47743d06e41e55819a55f64;hp=a5451280ca9d0d4a486e8f95b5edcfb430868c0f;hpb=3fbefb3eea981d34a09496cf8abf0119de2e35bf;p=fw%2Faltos diff --git a/altosui/AltosGraphTime.java b/altosui/AltosGraphTime.java index a5451280..62d516b2 100644 --- a/altosui/AltosGraphTime.java +++ b/altosui/AltosGraphTime.java @@ -4,10 +4,10 @@ package altosui; +import java.util.*; import java.awt.Color; import java.util.ArrayList; import java.util.HashMap; - import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.AxisLocation; @@ -68,11 +68,13 @@ class AltosGraphTime extends AltosGraph { abstract static class TimeSeries implements Element { protected XYSeries series; private String axisName; + private String axisUnits; private Color color; - public TimeSeries(String axisName, String label, Color color) { + public TimeSeries(String axisName, String axisUnits, String label, Color color) { this.series = new XYSeries(label); - this.axisName = axisName; + this.axisName = String.format("%s (%s)", axisName, axisUnits); + this.axisUnits = axisUnits; this.color = color; } @@ -85,8 +87,14 @@ class AltosGraphTime extends AltosGraph { XYSeriesCollection dataset = new XYSeriesCollection(); dataset.addSeries(this.series); - XYItemRenderer renderer = new StandardXYItemRenderer(); + XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false); renderer.setSeriesPaint(0, color); + StandardXYToolTipGenerator tool_tip; + + tool_tip = new StandardXYToolTipGenerator(String.format("{1}s: {2}%s ({0})", axisUnits), + new java.text.DecimalFormat("0.00"), + new java.text.DecimalFormat("0.00")); + renderer.setBaseToolTipGenerator(tool_tip); int dataNum = g.getDataNum(this); int axisNum = g.getAxisNum(this); @@ -98,9 +106,10 @@ class AltosGraphTime extends AltosGraph { } static class StateMarker implements Element { - private double val = Double.NaN; + private LinkedList times = new LinkedList(); private String name; private int state; + private int prev_state = Altos.ao_flight_startup; StateMarker(int state, String name) { this.state = state; @@ -109,22 +118,19 @@ class AltosGraphTime extends AltosGraph { public void attachGraph(AltosGraphTime g) { return; } public void gotTimeData(double time, AltosDataPoint d) { - if (Double.isNaN(val) || time < val) { - if (d.state() == state) { - val = time; - } - } + if (prev_state != state && d.state() == state) + times.add(time); + prev_state = d.state(); } public void addToPlot(AltosGraphTime g, XYPlot plot) { - if (Double.isNaN(val)) - return; - - ValueMarker m = new ValueMarker(val); - m.setLabel(name); - m.setLabelAnchor(RectangleAnchor.TOP_RIGHT); - m.setLabelTextAnchor(TextAnchor.TOP_LEFT); - plot.addDomainMarker(m); + for (double time : times) { + ValueMarker m = new ValueMarker(time); + m.setLabel(name); + m.setLabelAnchor(RectangleAnchor.TOP_RIGHT); + m.setLabelTextAnchor(TextAnchor.TOP_LEFT); + plot.addDomainMarker(m); + } } } @@ -132,7 +138,6 @@ class AltosGraphTime extends AltosGraph { private Integer serial = null; private Integer flight = null; - private String title; private ArrayList elements; private HashMap axes; private HashMap datasets; @@ -195,10 +200,8 @@ class AltosGraphTime extends AltosGraph { public JFreeChart createChart() { NumberAxis xAxis = new NumberAxis("Time (s)"); xAxis.setAutoRangeIncludesZero(false); - XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false); XYPlot plot = new XYPlot(); plot.setDomainAxis(xAxis); - plot.setRenderer(renderer); plot.setOrientation(PlotOrientation.VERTICAL); if (serial != null && flight != null) { @@ -208,7 +211,6 @@ class AltosGraphTime extends AltosGraph { title = callsign + " - " + title; } - renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator()); JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true); ChartUtilities.applyCurrentTheme(chart);