diff options
| -rw-r--r-- | micropeak/MicroData.java | 45 | ||||
| -rw-r--r-- | micropeak/MicroDataPoint.java | 25 | ||||
| -rw-r--r-- | micropeak/MicroGraph.java | 142 | ||||
| -rw-r--r-- | micropeak/MicroPeak.java | 7 | 
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"); | 
