X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosGraphUI.java;h=127a5beb0fd1566dc8ca28ca56a25b68ca892f15;hp=f6c906c64fa78a1a14802b20d47914efcbbe7dab;hb=HEAD;hpb=a61217f0a6d0ef48b6471f632c4600255867e831 diff --git a/altosui/AltosGraphUI.java b/altosui/AltosGraphUI.java index f6c906c6..8f52728b 100644 --- a/altosui/AltosGraphUI.java +++ b/altosui/AltosGraphUI.java @@ -24,14 +24,14 @@ import java.util.ArrayList; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_12.*; -import org.altusmetrum.altosuilib_12.*; +import org.altusmetrum.altoslib_14.*; +import org.altusmetrum.altosuilib_14.*; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.ui.RefineryUtilities; -public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, AltosUnitsListener +public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, AltosUnitsListener, AltosFilterListener { JTabbedPane pane; AltosGraph graph; @@ -39,32 +39,38 @@ public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, Alt AltosUIMap map; AltosFlightStats stats; AltosFlightStatsTable statsTable; + AltosFlightConfigTable configTable; + AltosFlightPyroTable pyroTable; AltosGPS gps; boolean has_gps; void fill_map(AltosFlightSeries flight_series) { boolean any_gps = false; AltosGPSTimeValue gtv_last = null; + double gps_pad_altitude = flight_series.cal_data().gps_pad_altitude;; if (flight_series.gps_series != null) { for (AltosGPSTimeValue gtv : flight_series.gps_series) { - gtv_last = gtv; AltosGPS gps = gtv.gps; if (gps != null && gps.locked && gps.nsat >= 4) { if (map == null) map = new AltosUIMap(); - map.show(gps, (int) flight_series.value_before(AltosFlightSeries.state_name, gtv.time)); + double gps_height = gps.alt - gps_pad_altitude; + int state = (int) flight_series.value_before(AltosFlightSeries.state_name, gtv.time); + map.show(gps, gtv.time, state, gps_height); this.gps = gps; + gtv_last = gtv; has_gps = true; } } } if (gtv_last != null) { int state = (int) flight_series.value_after(AltosFlightSeries.state_name, gtv_last.time); + double gps_height = gps.alt - gps_pad_altitude; if (state == AltosLib.ao_flight_landed) - map.show(gtv_last.gps, state); + map.show(gtv_last.gps, gtv_last.time, state,gps_height); } } @@ -73,6 +79,10 @@ public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, Alt map.font_size_changed(font_size); if (statsTable != null) statsTable.font_size_changed(font_size); + if (configTable != null) + configTable.font_size_changed(font_size); + if (pyroTable != null) + pyroTable.font_size_changed(font_size); } public void units_changed(boolean imperial_units) { @@ -80,18 +90,39 @@ public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, Alt map.units_changed(imperial_units); if (enable != null) enable.units_changed(imperial_units); + if (configTable != null) + configTable.units_changed(imperial_units); + if (pyroTable != null) + pyroTable.units_changed(imperial_units); + } + + AltosUIFlightSeries flight_series; + + public void filter_changed(double speed_filter, double accel_filter) { + flight_series.set_filter(speed_filter, accel_filter); + graph.filter_changed(); + stats = new AltosFlightStats(flight_series); + statsTable.filter_changed(stats); + } + + public double speed_filter() { + return flight_series.speed_filter_width; + } + + public double accel_filter() { + return flight_series.accel_filter_width; } AltosGraphUI(AltosRecordSet set, File file) throws InterruptedException, IOException { super(file.getName()); AltosCalData cal_data = set.cal_data(); - + AltosConfigData config_data = set.config_data(); pane = new JTabbedPane(); - enable = new AltosUIEnable(); + flight_series = new AltosUIFlightSeries(cal_data); - AltosUIFlightSeries flight_series = new AltosUIFlightSeries(cal_data); + enable = new AltosUIEnable(this); set.capture_series(flight_series); @@ -106,6 +137,14 @@ public class AltosGraphUI extends AltosUIFrame implements AltosFontListener, Alt pane.add("Flight Graph", graph.panel); pane.add("Configure Graph", enable); pane.add("Flight Statistics", statsTable); + if (config_data != null) { + configTable = new AltosFlightConfigTable(config_data); + pane.add("Configuration", configTable); + if (config_data.npyro > 0) { + pyroTable = new AltosFlightPyroTable(config_data.pyros, config_data.npyro); + pane.add("Pyros", pyroTable); + } + } has_gps = false; fill_map(flight_series);