import java.io.*;
import java.util.ArrayList;
-import javax.swing.JFrame;
-import java.awt.Color;
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import javax.swing.filechooser.FileNameExtensionFilter;
+import javax.swing.table.*;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
public class AltosGraphUI extends JFrame
{
+ JTabbedPane pane;
+
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 black = new Color(31,31,31);
+ static final private Color yellow = new Color(194,194,31);
+ static final private Color cyan = new Color(31,194,194);
+ static final private Color magenta = new Color(194,31,194);
static private class OverallGraphs {
AltosGraphTime.Element height =
new AltosGraphTime.TimeSeries("Height (m)", "Height (AGL)", red) {
public void gotTimeData(double time, AltosDataPoint d) {
- series.add(time, d.height());
+ double height = d.height();
+ if (height != AltosRecord.MISSING)
+ series.add(time, d.height());
}
};
AltosGraphTime.Element speed =
new AltosGraphTime.TimeSeries("Speed (m/s)", "Vertical Speed", green) {
public void gotTimeData(double time, AltosDataPoint d) {
- if (d.state() < Altos.ao_flight_drogue) {
- series.add(time, d.accel_speed());
+ double speed;
+ if (d.state() < Altos.ao_flight_drogue && d.has_accel()) {
+ speed = d.accel_speed();
} else {
- series.add(time, d.baro_speed());
+ speed = d.baro_speed();
}
+ if (speed != AltosRecord.MISSING)
+ series.add(time, speed);
}
};
"Axial Acceleration", blue)
{
public void gotTimeData(double time, AltosDataPoint d) {
- series.add(time, d.acceleration());
+ double acceleration = d.acceleration();
+ if (acceleration != AltosRecord.MISSING)
+ series.add(time, acceleration);
}
};
"Board temperature", red)
{
public void gotTimeData(double time, AltosDataPoint d) {
- series.add(time, d.temperature());
+ double temp = d.temperature();
+ if (temp != AltosRecord.MISSING)
+ series.add(time, d.temperature());
}
};
AltosGraphTime.Element drogue_voltage =
- new AltosGraphTime.TimeSeries("Voltage (V)", "Drogue Continuity", blue)
+ new AltosGraphTime.TimeSeries("Voltage (V)", "Drogue Continuity", yellow)
{
public void gotTimeData(double time, AltosDataPoint d) {
- series.add(time, d.drogue_voltage());
+ double v = d.drogue_voltage();
+ if (v != AltosRecord.MISSING)
+ series.add(time, v);
}
};
AltosGraphTime.Element main_voltage =
- new AltosGraphTime.TimeSeries("Voltage (V)", "Main Continuity", green)
+ new AltosGraphTime.TimeSeries("Voltage (V)", "Main Continuity", magenta)
{
public void gotTimeData(double time, AltosDataPoint d) {
- series.add(time, d.main_voltage());
+ double v = d.main_voltage();
+ if (v != AltosRecord.MISSING)
+ series.add(time, v);
}
};
graphs.add( myAltosGraphTime("Summary")
.addElement(height)
.addElement(speed)
- .addElement(acceleration) );
+ .addElement(acceleration)
+ .addElement(drogue_voltage)
+ .addElement(main_voltage) );
graphs.add( myAltosGraphTime("Summary")
.addElement(height)
}
}
- public AltosGraphUI(AltosRecordIterable records) {
+ public AltosGraphUI(AltosRecordIterable records) throws InterruptedException, IOException {
super("Altos Graph");
AltosDataPointReader reader = new AltosDataPointReader (records);
return;
if (reader.has_accel)
- init(reader, 0);
+ init(reader, records, 0);
else
- init(reader, 1);
+ init(reader, records, 1);
}
- public AltosGraphUI(AltosDataPointReader data, int which)
- {
- super("Altos Graph");
- init(data, which);
- }
+// public AltosGraphUI(AltosDataPointReader data, int which)
+ // {
+// super("Altos Graph");
+// init(data, which);
+// }
+
+ private void init(AltosDataPointReader data, AltosRecordIterable records, int which) throws InterruptedException, IOException {
+ pane = new JTabbedPane();
- private void init(AltosDataPointReader data, int which) {
AltosGraph graph = createGraph(data, which);
JFreeChart chart = graph.createChart();
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setMouseWheelEnabled(true);
chartPanel.setPreferredSize(new java.awt.Dimension(800, 500));
- setContentPane(chartPanel);
+ pane.add(graph.title, chartPanel);
+
+ AltosFlightStatsTable stats = new AltosFlightStatsTable(new AltosFlightStats(records));
+ pane.add("Flight Statistics", stats);
+
+ setContentPane (pane);
pack();