summaryrefslogtreecommitdiff
path: root/micropeak
diff options
context:
space:
mode:
Diffstat (limited to 'micropeak')
-rw-r--r--micropeak/MicroData.java45
-rw-r--r--micropeak/MicroDataPoint.java25
-rw-r--r--micropeak/MicroGraph.java142
-rw-r--r--micropeak/MicroPeak.java7
4 files changed, 79 insertions, 140 deletions
diff --git a/micropeak/MicroData.java b/micropeak/MicroData.java
index 473af44b..26e3c07d 100644
--- a/micropeak/MicroData.java
+++ b/micropeak/MicroData.java
@@ -21,6 +21,7 @@ import java.lang.*;
import java.io.*;
import java.util.*;
import org.altusmetrum.altoslib_1.*;
+import org.altusmetrum.altosuilib_1.*;
class MicroIterator implements Iterator<MicroDataPoint> {
int i;
@@ -56,7 +57,40 @@ class MicroIterable implements Iterable<MicroDataPoint> {
}
}
-public class MicroData {
+class MicroUIIterator implements Iterator<AltosUIDataPoint> {
+ int i;
+ MicroData data;
+
+ public boolean hasNext() {
+ return i < data.pressures.length;
+ }
+
+ public AltosUIDataPoint next() {
+ return new MicroDataPoint(data, i++);
+ }
+
+ public MicroUIIterator (MicroData data) {
+ this.data = data;
+ i = 0;
+ }
+
+ public void remove() {
+ }
+}
+
+class MicroUIIterable implements Iterable<AltosUIDataPoint> {
+ MicroData data;
+
+ public Iterator<AltosUIDataPoint> iterator() {
+ return new MicroUIIterator(data);
+ }
+
+ public MicroUIIterable(MicroData data) {
+ this.data = data;
+ }
+}
+
+public class MicroData implements AltosUIDataSet {
public int ground_pressure;
public int min_pressure;
public int[] pressures;
@@ -65,7 +99,6 @@ public class MicroData {
private ArrayList<Integer> bytes;
String name;
-
class FileEndedException extends Exception {
}
@@ -178,6 +211,14 @@ public class MicroData {
return AltosConvert.pressure_to_altitude(pressures[i]);
}
+ public String name() {
+ return name;
+ }
+
+ public Iterable<AltosUIDataPoint> dataPoints() {
+ return new MicroUIIterable(this);
+ }
+
public Iterable<MicroDataPoint> points() {
return new MicroIterable(this);
}
diff --git a/micropeak/MicroDataPoint.java b/micropeak/MicroDataPoint.java
index c58708e6..a81eb0d3 100644
--- a/micropeak/MicroDataPoint.java
+++ b/micropeak/MicroDataPoint.java
@@ -17,13 +17,36 @@
package org.altusmetrum.micropeak;
-public class MicroDataPoint {
+import org.altusmetrum.altosuilib_1.*;
+
+public class MicroDataPoint implements AltosUIDataPoint {
public double time;
public double pressure;
public double height;
public double speed;
public double accel;
+ public static final int data_height = 0;
+ public static final int data_speed = 1;
+ public static final int data_accel = 2;
+
+ public double x() {
+ return time;
+ }
+
+ public double y(int index) {
+ switch (index) {
+ case data_height:
+ return height;
+ case data_speed:
+ return speed;
+ case data_accel:
+ return accel;
+ default:
+ return 0;
+ }
+ }
+
public MicroDataPoint (double pressure, double height, double speed, double accel, double time) {
this.pressure = pressure;
this.height = height;
diff --git a/micropeak/MicroGraph.java b/micropeak/MicroGraph.java
index e8a6ea16..0071a160 100644
--- a/micropeak/MicroGraph.java
+++ b/micropeak/MicroGraph.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.awt.*;
import javax.swing.*;
import org.altusmetrum.altoslib_1.*;
+import org.altusmetrum.altosuilib_1.*;
import org.jfree.ui.*;
import org.jfree.chart.*;
@@ -34,146 +35,17 @@ 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);
- 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(0, "Height", MicroDataPoint.data_height, AltosConvert.height, height_color);
+ addSeries(1, "Speed", MicroDataPoint.data_speed, AltosConvert.speed, speed_color);
+ addSeries(2, "Acceleration", MicroDataPoint.data_accel, AltosConvert.accel, accel_color);
}
} \ No newline at end of file
diff --git a/micropeak/MicroPeak.java b/micropeak/MicroPeak.java
index 63387ed1..871d5cc3 100644
--- a/micropeak/MicroPeak.java
+++ b/micropeak/MicroPeak.java
@@ -30,6 +30,7 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene
File filename;
MicroGraph graph;
+ AltosUIEnable enable;
MicroStatsTable stats;
MicroRaw raw;
MicroData data;
@@ -44,7 +45,7 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene
return mp.SetData(data);
}
this.data = data;
- graph.setData(data);
+ graph.setDataSet(data);
stats.setData(data);
raw.setData(data);
setTitle(data.name);
@@ -236,10 +237,12 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene
}
});
- graph = new MicroGraph();
+ enable = new AltosUIEnable();
+ graph = new MicroGraph(enable);
stats = new MicroStatsTable();
raw = new MicroRaw();
pane.add(graph.panel, "Graph");
+ pane.add(enable, "Configure Graph");
pane.add(stats, "Statistics");
JScrollPane scroll = new JScrollPane(raw);
pane.add(scroll, "Raw Data");