altosuilib/micropeak: Add state markers to micropeak graph
[fw/altos] / micropeak / MicroStatsTable.java
index f373e25d4a68f96a5fb67d4c27453059a8163250..145bb70ea6dd453ec9730beda5e0dde5615808b5 100644 (file)
@@ -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);
@@ -75,27 +81,39 @@ public class MicroStatsTable extends JComponent {
        MicroStat       flight_time;
        
        public void setStats(MicroStats stats) {
-               max_height.set_values(String.format("%5.0f m", stats.apogee_height),
-                                     String.format("%5.0f ft", AltosConvert.meters_to_feet(stats.apogee_height)));
-               max_speed.set_values(String.format("%5.0f m/s", stats.max_speed),
-                                    String.format("%5.0f mph", AltosConvert.meters_to_mph(stats.max_speed)),
-                                    String.format("Mach %4.1f", AltosConvert.meters_to_mach(stats.max_speed)));
-               max_accel.set_values(String.format("%5.0f m/s²", stats.max_accel),
-                                    String.format("%5.0f ft/s²", AltosConvert.meters_to_feet(stats.max_accel)),
-                                    String.format("%5.0f G", AltosConvert.meters_to_g(stats.max_accel)));
-               avg_accel.set_values(String.format("%5.0f m/s²", stats.boost_accel(),
-                                                  String.format("%5.0f ft/s²", AltosConvert.meters_to_feet(stats.boost_accel())),
-                                                  String.format("%5.0f G", AltosConvert.meters_to_g(stats.boost_accel()))));
+               max_height.set_values(String.format("%7.1f m", stats.apogee_height),
+                                     String.format("%7.1f ft", AltosConvert.meters_to_feet(stats.apogee_height)));
+               max_speed.set_values(String.format("%7.1f m/s", stats.max_speed),
+                                    String.format("%7.1f mph", AltosConvert.meters_to_mph(stats.max_speed)),
+                                    String.format("Mach %7.3f", AltosConvert.meters_to_mach(stats.max_speed)));
+               max_accel.set_values(String.format("%7.1f m/s²", stats.max_accel),
+                                    String.format("%7.1f ft/s²", AltosConvert.meters_to_feet(stats.max_accel)),
+                                    String.format("%7.3f G", AltosConvert.meters_to_g(stats.max_accel)));
+               avg_accel.set_values(String.format("%7.1f m/s²", stats.boost_accel(),
+                                                  String.format("%7.1f ft/s²", AltosConvert.meters_to_feet(stats.boost_accel())),
+                                                  String.format("%7.3f G", AltosConvert.meters_to_g(stats.boost_accel()))));
                boost_duration.set_values(String.format("%6.1f s", stats.boost_duration()));
                coast_duration.set_values(String.format("%6.1f s", stats.coast_duration()));
-               descent_speed.set_values(String.format("%5.0f m/s", stats.descent_speed()),
-                                        String.format("%5.0f ft/s", AltosConvert.meters_to_feet(stats.descent_speed())));
+               descent_speed.set_values(String.format("%7.1f m/s", stats.descent_speed()),
+                                        String.format("%7.1f ft/s", AltosConvert.meters_to_feet(stats.descent_speed())));
                descent_duration.set_values(String.format("%6.1f s", stats.descent_duration()));
                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) {
@@ -104,31 +122,38 @@ public class MicroStatsTable extends JComponent {
                setLayout(layout);
                int y = 0;
                max_height = new MicroStat(layout, y++, "Maximum height",
-                                          String.format("%5.0f m", stats.apogee_height),
-                                          String.format("%5.0f ft", AltosConvert.meters_to_feet(stats.apogee_height)));
+                                          String.format("%7.1f m", stats.apogee_height),
+                                          String.format("%7.1f ft", AltosConvert.meters_to_feet(stats.apogee_height)));
                max_speed = new MicroStat(layout, y++, "Maximum speed",
-                                         String.format("%5.0f m/s", stats.max_speed),
-                                         String.format("%5.0f mph", AltosConvert.meters_to_mph(stats.max_speed)),
+                                         String.format("%7.1f m/s", stats.max_speed),
+                                         String.format("%7.1f mph", AltosConvert.meters_to_mph(stats.max_speed)),
                                          String.format("Mach %4.1f", AltosConvert.meters_to_mach(stats.max_speed)));
                max_accel = new MicroStat(layout, y++, "Maximum boost acceleration",
-                                         String.format("%5.0f m/s²", stats.max_accel),
-                                         String.format("%5.0f ft/s²", AltosConvert.meters_to_feet(stats.max_accel)),
-                                         String.format("%5.0f G", AltosConvert.meters_to_g(stats.max_accel)));
+                                         String.format("%7.1f m/s²", stats.max_accel),
+                                         String.format("%7.1f ft/s²", AltosConvert.meters_to_feet(stats.max_accel)),
+                                         String.format("%7.3f G", AltosConvert.meters_to_g(stats.max_accel)));
                avg_accel = new MicroStat(layout, y++, "Average boost acceleration",
-                                         String.format("%5.0f m/s²", stats.boost_accel(),
-                                                       String.format("%5.0f ft/s²", AltosConvert.meters_to_feet(stats.boost_accel())),
-                                                       String.format("%5.0f G", AltosConvert.meters_to_g(stats.boost_accel()))));
+                                         String.format("%7.1f m/s²", stats.boost_accel(),
+                                                       String.format("%7.1f ft/s²", AltosConvert.meters_to_feet(stats.boost_accel())),
+                                                       String.format("%7.3f G", AltosConvert.meters_to_g(stats.boost_accel()))));
                boost_duration = new MicroStat(layout, y++, "Boost duration",
-                                              String.format("%6.0f s", stats.boost_duration()));
+                                              String.format("%6.1f s", stats.boost_duration()));
                coast_duration = new MicroStat(layout, y++, "Coast duration",
                                               String.format("%6.1f s", stats.coast_duration()));
                descent_speed = new MicroStat(layout, y++, "Descent rate",
-                                             String.format("%5.0f m/s", stats.descent_speed()),
-                                             String.format("%5.0f ft/s", AltosConvert.meters_to_feet(stats.descent_speed())));
+                                             String.format("%7.1f m/s", stats.descent_speed()),
+                                             String.format("%7.1f ft/s", AltosConvert.meters_to_feet(stats.descent_speed())));
                descent_duration = new MicroStat(layout, y++, "Descent duration",
                                                 String.format("%6.1f s", stats.descent_duration()));
                flight_time = new MicroStat(layout, y++, "Flight Time",
-                                           String.format("%6.0f s", stats.landed_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() {