diff options
Diffstat (limited to 'micropeak')
-rw-r--r-- | micropeak/.gitignore | 13 | ||||
-rw-r--r-- | micropeak/Info.plist | 50 | ||||
-rw-r--r-- | micropeak/Makefile.am | 19 | ||||
-rw-r--r-- | micropeak/MicroData.java | 49 | ||||
-rw-r--r-- | micropeak/MicroDataPoint.java | 58 | ||||
-rw-r--r-- | micropeak/MicroDeviceDialog.java | 2 | ||||
-rw-r--r-- | micropeak/MicroDownload.java | 4 | ||||
-rw-r--r-- | micropeak/MicroExport.java | 4 | ||||
-rw-r--r-- | micropeak/MicroFile.java | 4 | ||||
-rw-r--r-- | micropeak/MicroFileChooser.java | 4 | ||||
-rw-r--r-- | micropeak/MicroFrame.java | 2 | ||||
-rw-r--r-- | micropeak/MicroGraph.java | 146 | ||||
-rw-r--r-- | micropeak/MicroPeak.java | 22 | ||||
-rw-r--r-- | micropeak/MicroRaw.java | 4 | ||||
-rw-r--r-- | micropeak/MicroSave.java | 4 | ||||
-rw-r--r-- | micropeak/MicroSerial.java | 2 | ||||
-rw-r--r-- | micropeak/MicroStats.java | 41 | ||||
-rw-r--r-- | micropeak/MicroStatsTable.java | 35 | ||||
-rw-r--r-- | micropeak/MicroUSB.java | 2 |
19 files changed, 279 insertions, 186 deletions
diff --git a/micropeak/.gitignore b/micropeak/.gitignore index fc99b31c..ab80492b 100644 --- a/micropeak/.gitignore +++ b/micropeak/.gitignore @@ -1,6 +1,19 @@ *.jar Manifest.txt +Manifest-fat.txt classes *.stamp micropeak micropeak-test +micropeak-jdb +micropeak-windows.log +MicroPeak-Linux-* +MicroPeak-Mac-* +MicroPeak-Windows-* +*.dll +*.dylib +*.so +linux +macosx +CDM*.exe +FTDI*.dmg diff --git a/micropeak/Info.plist b/micropeak/Info.plist new file mode 100644 index 00000000..7837f992 --- /dev/null +++ b/micropeak/Info.plist @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> +<plist version="0.9"> +<dict> + <key>CFBundleName</key> + <string>MicroPeak</string> + <key>CFBundleVersion</key> + <string>1.1.9.3</string> + <key>CFBundleAllowMixedLocalizations</key> + <string>true</string> + <key>CFBundleExecutable</key> + <string>JavaApplicationStub</string> + <key>CFBundleDevelopmentRegion</key> + <string>English</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleIdentifier</key> + <string>org.altusmetrum.micropeak</string> + <key>CFBundleSignature</key> + <string>Altu</string> + <key>CFBundleGetInfoString</key> + <string>MicroPeak UI version 1.1.9.3</string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleIconFile</key> + <string>MicroPeak.icns</string> + <key>Java</key> + <dict> + <key>MainClass</key> + <string>org.altusmetrum.micropeak.MicroPeak</string> + <key>JVMVersion</key> + <string>1.5+</string> + <key>ClassPath</key> + <array> + <string>$JAVAROOT/micropeak.jar</string> + </array> + <key>Properties</key> + <dict> + <key>apple.laf.useScreenMenuBar</key> + <string>true</string> + </dict> + <key>VMOptions</key> + <array> + <string>-Xms512M</string> + <string>-Xmx512M</string> + <string>-Dosgi.clean=true</string> + </array> + </dict> +</dict> +</plist> diff --git a/micropeak/Makefile.am b/micropeak/Makefile.am index 06eb3115..d45ecab9 100644 --- a/micropeak/Makefile.am +++ b/micropeak/Makefile.am @@ -44,10 +44,10 @@ LIBALTOS= \ altos.dll ALTOSLIB_CLASS=\ - AltosLib.jar + altoslib_$(ALTOSLIB_VERSION).jar ALTOSUILIB_CLASS=\ - altosuilib.jar + altosuilib_$(ALTOSUILIB_VERSION).jar # Icons ICONDIR=$(top_srcdir)/icon @@ -74,16 +74,20 @@ all-local: micropeak-test micropeak-jdb $(JAR) clean-local: -rm -rf classes $(JAR) $(FATJAR) \ - $(LINUX_DIST) $(MACOSX_DIST) windows $(WINDOWS_DIST) \ + MicroPeak-Linux-*.tar.bz2 MicroPeak-Mac-*.dmg MicroPeak-Windows-*.exe \ $(ALTOSLIB_CLASS) \ $(ALTOSUILIB_CLASS) \ - $(JFREECHART_CLASS) $(JCOMMON_CLASS) $(LIBALTOS) Manifest.txt \ - micropeak micropeak-test macosx linux windows + $(JFREECHART_CLASS) $(JCOMMON_CLASS) $(LIBALTOS) Manifest.txt Manifest-fat.txt \ + micropeak micropeak-test micropeak-jdb macosx linux windows micropeak-windows.log LINUX_DIST=MicroPeak-Linux-$(VERSION).tar.bz2 MACOSX_DIST=MicroPeak-Mac-$(VERSION).dmg WINDOWS_DIST=MicroPeak-Windows-$(VERSION_DASH).exe +MICROPEAK_DOC=$(top_srcdir)/doc/micropeak.pdf + +DOC=$(MICROPEAK_DOC) + FAT_FILES=$(FATJAR) $(ALTOSLIB_CLASS) $(ALTOSUILIB_CLASS) $(FREETTS_CLASS) $(JFREECHART_CLASS) $(JCOMMON_CLASS) LINUX_FILES=$(FAT_FILES) libaltos.so $(FIRMWARE) $(DOC) @@ -93,7 +97,7 @@ MACOSX_DRIVER_URL=http://www.ftdichip.com/Drivers/VCP/MacOSX/FTDIUSBSerialDriver MACOSX_DRIVER=FTDIUSBSerialDriver_v2_2_18.dmg MACOSX_INFO_PLIST=Info.plist MACOSX_README=ReadMe-Mac.rtf -MACOSX_FILES=$(FAT_FILES) libaltos.dylib $(MACOSX_INFO_PLIST) $(MACOSX_DRIVER) $(MACOSX_README) +MACOSX_FILES=$(FAT_FILES) libaltos.dylib $(MACOSX_INFO_PLIST) $(MACOSX_DRIVER) $(MACOSX_README) $(DOC) $(MACOSX_DRIVER): wget $(MACOSX_DRIVER_URL) @@ -104,7 +108,7 @@ WINDOWS_DRIVER=CDM20824_Setup.exe $(WINDOWS_DRIVER): wget $(WINDOWS_DRIVER_URL) -WINDOWS_FILES=$(FAT_FILES) altos.dll altos64.dll $(top_srcdir)/telemetrum.inf $(WINDOWS_ICON) $(WINDOWS_DRIVER) +WINDOWS_FILES=$(FAT_FILES) altos.dll altos64.dll $(DOC) $(WINDOWS_ICON) $(WINDOWS_DRIVER) if FATINSTALL @@ -228,6 +232,7 @@ $(MACOSX_DIST): $(MACOSX_FILES) mkdir macosx cp -a MicroPeak.app macosx/ cp -a $(MACOSX_README) macosx/ReadMe.rtf + cp -a $(DOC) macosx cp -p Info.plist macosx/MicroPeak.app/Contents cp -p $(MACOSX_DRIVER) macosx mkdir -p macosx/MicroPeak.app/Contents/Resources/Java diff --git a/micropeak/MicroData.java b/micropeak/MicroData.java index 71919ddb..4c0ed4c3 100644 --- a/micropeak/MicroData.java +++ b/micropeak/MicroData.java @@ -20,7 +20,8 @@ package org.altusmetrum.micropeak; import java.lang.*; import java.io.*; import java.util.*; -import org.altusmetrum.AltosLib.*; +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; @@ -64,8 +98,8 @@ public class MicroData { private double ground_altitude; private ArrayList<Integer> bytes; String name; + MicroStats stats; - class FileEndedException extends Exception { } @@ -178,6 +212,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); } @@ -339,6 +381,7 @@ public class MicroData { crc_valid = crc == current_crc; time_step = 0.192; + stats = new MicroStats(this); } catch (FileEndedException fe) { throw new IOException("File Ended Unexpectedly"); } catch (NonHexcharException ne) { diff --git a/micropeak/MicroDataPoint.java b/micropeak/MicroDataPoint.java index c58708e6..61faf794 100644 --- a/micropeak/MicroDataPoint.java +++ b/micropeak/MicroDataPoint.java @@ -17,19 +17,58 @@ package org.altusmetrum.micropeak; -public class MicroDataPoint { - public double time; - public double pressure; - public double height; - public double speed; - public double accel; - - public MicroDataPoint (double pressure, double height, double speed, double accel, double time) { +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 MicroStats stats; + + public static final int data_height = 0; + public static final int data_speed = 1; + public static final int data_accel = 2; + public static final int data_state = 3; + + 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 int id(int index) { + if (index == data_state) { + return stats.state(time); + } + return 0; + } + + public String id_name(int index) { + if (index == data_state) + return stats.state_name(time); + return ""; + } + + public MicroDataPoint (double pressure, double height, double speed, double accel, double time, MicroStats stats) { this.pressure = pressure; this.height = height; this.speed = speed; this.accel = accel; this.time = time; + this.stats = stats; } public MicroDataPoint(MicroData data, int i) { @@ -37,6 +76,7 @@ public class MicroDataPoint { data.height(i), data.speed(i), data.acceleration(i), - data.time(i)); + data.time(i), + data.stats); } }
\ No newline at end of file diff --git a/micropeak/MicroDeviceDialog.java b/micropeak/MicroDeviceDialog.java index 23195dac..533605d6 100644 --- a/micropeak/MicroDeviceDialog.java +++ b/micropeak/MicroDeviceDialog.java @@ -21,7 +21,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altosuilib_1.*; public class MicroDeviceDialog extends AltosDeviceDialog { diff --git a/micropeak/MicroDownload.java b/micropeak/MicroDownload.java index 28a7550d..6f0ca4f6 100644 --- a/micropeak/MicroDownload.java +++ b/micropeak/MicroDownload.java @@ -23,8 +23,8 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.AltosLib.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altosuilib_1.*; public class MicroDownload extends AltosUIDialog implements Runnable, ActionListener { MicroPeak owner; diff --git a/micropeak/MicroExport.java b/micropeak/MicroExport.java index 4b83bb4d..20a6f79a 100644 --- a/micropeak/MicroExport.java +++ b/micropeak/MicroExport.java @@ -23,8 +23,8 @@ import java.util.ArrayList; import java.awt.*; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; -import org.altusmetrum.AltosLib.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altosuilib_1.*; public class MicroExport extends JFileChooser { diff --git a/micropeak/MicroFile.java b/micropeak/MicroFile.java index 13d48380..cdd42e66 100644 --- a/micropeak/MicroFile.java +++ b/micropeak/MicroFile.java @@ -19,8 +19,8 @@ package org.altusmetrum.micropeak; import java.io.*; import java.util.*; -import org.altusmetrum.AltosLib.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altosuilib_1.*; public class MicroFile { diff --git a/micropeak/MicroFileChooser.java b/micropeak/MicroFileChooser.java index 21ddb0f8..7a3423b4 100644 --- a/micropeak/MicroFileChooser.java +++ b/micropeak/MicroFileChooser.java @@ -20,8 +20,8 @@ package org.altusmetrum.micropeak; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; -import org.altusmetrum.AltosLib.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altosuilib_1.*; public class MicroFileChooser extends JFileChooser { JFrame frame; diff --git a/micropeak/MicroFrame.java b/micropeak/MicroFrame.java index 03e3af0c..ef8b24cc 100644 --- a/micropeak/MicroFrame.java +++ b/micropeak/MicroFrame.java @@ -21,7 +21,7 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altosuilib_1.*; public class MicroFrame extends AltosUIFrame { static String[] micro_icon_names = { diff --git a/micropeak/MicroGraph.java b/micropeak/MicroGraph.java index 5aa127bb..50508a61 100644 --- a/micropeak/MicroGraph.java +++ b/micropeak/MicroGraph.java @@ -22,7 +22,8 @@ import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.AltosLib.*; +import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altosuilib_1.*; import org.jfree.ui.*; import org.jfree.chart.*; @@ -34,146 +35,19 @@ 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); + static final private Color state_color = new Color(3,3,3); - 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("Height", MicroDataPoint.data_height, AltosConvert.height, height_color); + addSeries("Speed", MicroDataPoint.data_speed, AltosConvert.speed, speed_color); + addSeries("Acceleration", MicroDataPoint.data_accel, AltosConvert.accel, accel_color); + addMarker("State", MicroDataPoint.data_state, state_color); } }
\ No newline at end of file diff --git a/micropeak/MicroPeak.java b/micropeak/MicroPeak.java index 6f5e432c..57f17dbe 100644 --- a/micropeak/MicroPeak.java +++ b/micropeak/MicroPeak.java @@ -23,16 +23,18 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.AltosLib.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altosuilib_1.*; public class MicroPeak extends MicroFrame implements ActionListener, ItemListener { File filename; MicroGraph graph; - MicroStatsTable stats; + AltosUIEnable enable; + MicroStatsTable statsTable; MicroRaw raw; MicroData data; + MicroStats stats; Container container; JTabbedPane pane; static int number_of_windows; @@ -44,8 +46,9 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene return mp.SetData(data); } this.data = data; - graph.setData(data); - stats.setData(data); + stats = new MicroStats(data); + graph.setDataSet(data); + statsTable.setStats(stats); raw.setData(data); setTitle(data.name); return this; @@ -231,15 +234,18 @@ public class MicroPeak extends MicroFrame implements ActionListener, ItemListene addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { + statsTable.tell_closing(); Close(); } }); - graph = new MicroGraph(); - stats = new MicroStatsTable(); + enable = new AltosUIEnable(); + graph = new MicroGraph(enable); + statsTable = new MicroStatsTable(); raw = new MicroRaw(); pane.add(graph.panel, "Graph"); - pane.add(stats, "Statistics"); + pane.add(enable, "Configure Graph"); + pane.add(statsTable, "Statistics"); JScrollPane scroll = new JScrollPane(raw); pane.add(scroll, "Raw Data"); pane.doLayout(); diff --git a/micropeak/MicroRaw.java b/micropeak/MicroRaw.java index 8546cffb..7337a1de 100644 --- a/micropeak/MicroRaw.java +++ b/micropeak/MicroRaw.java @@ -20,8 +20,8 @@ package org.altusmetrum.micropeak; import java.awt.*; import java.io.*; import javax.swing.*; -import org.altusmetrum.AltosLib.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altosuilib_1.*; public class MicroRaw extends JTextArea { diff --git a/micropeak/MicroSave.java b/micropeak/MicroSave.java index 7879ff90..5088b7d7 100644 --- a/micropeak/MicroSave.java +++ b/micropeak/MicroSave.java @@ -24,8 +24,8 @@ import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.AltosLib.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altosuilib_1.*; public class MicroSave extends JFileChooser { diff --git a/micropeak/MicroSerial.java b/micropeak/MicroSerial.java index 15ef8582..376223f1 100644 --- a/micropeak/MicroSerial.java +++ b/micropeak/MicroSerial.java @@ -20,7 +20,7 @@ package org.altusmetrum.micropeak; import java.util.*; import java.io.*; import libaltosJNI.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altosuilib_1.*; public class MicroSerial extends InputStream { SWIGTYPE_p_altos_file file; diff --git a/micropeak/MicroStats.java b/micropeak/MicroStats.java index 90e9dd1f..99479cb4 100644 --- a/micropeak/MicroStats.java +++ b/micropeak/MicroStats.java @@ -18,8 +18,8 @@ package org.altusmetrum.micropeak; import java.io.*; -import org.altusmetrum.AltosLib.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altosuilib_1.*; public class MicroStats { double coast_height; @@ -150,6 +150,43 @@ public class MicroStats { return descent_height() / descent_duration(); } + public static final int state_startup = -1; + public static final int state_pad = 0; + public static final int state_boost = 1; + public static final int state_coast = 2; + public static final int state_descent = 3; + public static final int state_landed = 4; + + static final String state_names[] = { + "pad", + "boost", + "coast", + "descent", + "landed" + }; + + public int state(double t) { + if (t >= landed_time) + return state_landed; + if (t >= apogee_time) + return state_descent; + if (t >= coast_time) + return state_coast; + if (t >= 0) + return state_boost; + return state_pad; + } + + public static String state_name(int state) { + if (state < 0 || state > state_landed) + return "unknown"; + return state_names[state]; + } + + public String state_name(double t) { + return state_name(state(t)); + } + public MicroStats(MicroData data) { this.data = data; diff --git a/micropeak/MicroStatsTable.java b/micropeak/MicroStatsTable.java index cf30fcb7..145bb70e 100644 --- a/micropeak/MicroStatsTable.java +++ b/micropeak/MicroStatsTable.java @@ -19,10 +19,10 @@ package org.altusmetrum.micropeak; import java.awt.*; import javax.swing.*; -import org.altusmetrum.AltosLib.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altoslib_1.*; +import org.altusmetrum.altosuilib_1.*; -public class MicroStatsTable extends JComponent { +public class MicroStatsTable extends JComponent implements AltosFontListener { GridBagLayout layout; class MicroStat { @@ -35,6 +35,12 @@ public class MicroStatsTable extends JComponent { } } + public void set_font() { + for (int j = 0; j < texts.length; j++) + texts[j].setFont(AltosUILib.value_font); + label.setFont(AltosUILib.label_font); + } + public MicroStat(GridBagLayout layout, int y, String label_text, String ... values) { GridBagConstraints c = new GridBagConstraints(); c.insets = new Insets(AltosUILib.tab_elt_pad, AltosUILib.tab_elt_pad, AltosUILib.tab_elt_pad, AltosUILib.tab_elt_pad); @@ -94,8 +100,20 @@ public class MicroStatsTable extends JComponent { flight_time.set_values(String.format("%6.1f s", stats.landed_time)); } - public void setData(MicroData data) { - setStats(new MicroStats(data)); + public void set_font() { + max_height.set_font(); + max_speed.set_font(); + max_accel.set_font(); + avg_accel.set_font(); + boost_duration.set_font(); + coast_duration.set_font(); + descent_speed.set_font(); + descent_duration.set_font(); + flight_time.set_font(); + } + + public void font_size_changed(int font_size) { + set_font(); } public MicroStatsTable(MicroStats stats) { @@ -129,6 +147,13 @@ public class MicroStatsTable extends JComponent { String.format("%6.1f s", stats.descent_duration())); flight_time = new MicroStat(layout, y++, "Flight Time", String.format("%6.1f s", stats.landed_time)); + set_font(); + + AltosUIPreferences.register_font_listener(this); + } + + public void tell_closing() { + AltosUIPreferences.unregister_font_listener(this); } public MicroStatsTable() { diff --git a/micropeak/MicroUSB.java b/micropeak/MicroUSB.java index f56d81d4..3bd61470 100644 --- a/micropeak/MicroUSB.java +++ b/micropeak/MicroUSB.java @@ -19,7 +19,7 @@ package org.altusmetrum.micropeak; import java.util.*; import libaltosJNI.*; -import org.altusmetrum.altosuilib.*; +import org.altusmetrum.altosuilib_1.*; public class MicroUSB extends altos_device implements AltosDevice { |