altosuilib: Rewrite map GUI bits
[fw/altos] / altosui / AltosFlightUI.java
index 423cf10c04cd52ba35ae41cae94d4f77f446aaa9..f2bd70a0c5b44e10b9c10b7952b44d3ca1b73940 100644 (file)
@@ -21,10 +21,10 @@ import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
 import java.util.concurrent.*;
-import org.altusmetrum.altoslib_1.*;
-import org.altusmetrum.altosuilib_1.*;
+import org.altusmetrum.altoslib_4.*;
+import org.altusmetrum.altosuilib_2.*;
 
-public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, AltosFontListener {
+public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay {
        AltosVoice              voice;
        AltosFlightReader       reader;
        AltosDisplayThread      thread;
@@ -32,14 +32,16 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
        JTabbedPane     pane;
 
        AltosPad        pad;
+       AltosIgnitor    ignitor;
        AltosAscent     ascent;
        AltosDescent    descent;
        AltosLanded     landed;
        AltosCompanionInfo      companion;
-       AltosSiteMap    sitemap;
+       AltosUIMap      sitemap;
        boolean         has_map;
        boolean         has_companion;
        boolean         has_state;
+       boolean         has_ignitor;
 
        private AltosFlightStatus flightStatus;
        private AltosInfoTable flightInfo;
@@ -73,6 +75,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
 
        public void reset() {
                pad.reset();
+               ignitor.reset();
                ascent.reset();
                descent.reset();
                landed.reset();
@@ -80,21 +83,29 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
                sitemap.reset();
        }
 
-       public void set_font() {
-               pad.set_font();
-               ascent.set_font();
-               descent.set_font();
-               landed.set_font();
-               flightStatus.set_font();
-               flightInfo.set_font();
-               sitemap.set_font();
-               companion.set_font();
-       }
-
        public void font_size_changed(int font_size) {
-               set_font();
+               pad.font_size_changed(font_size);
+               ignitor.font_size_changed(font_size);
+               ascent.font_size_changed(font_size);
+               descent.font_size_changed(font_size);
+               landed.font_size_changed(font_size);
+               flightStatus.font_size_changed(font_size);
+               flightInfo.font_size_changed(font_size);
+               sitemap.font_size_changed(font_size);
+               companion.font_size_changed(font_size);
        }
 
+       public void units_changed(boolean imperial_units) {
+               pad.units_changed(imperial_units);
+               ignitor.units_changed(imperial_units);
+               ascent.units_changed(imperial_units);
+               descent.units_changed(imperial_units);
+               landed.units_changed(imperial_units);
+               flightStatus.units_changed(imperial_units);
+               flightInfo.units_changed(imperial_units);
+               sitemap.units_changed(imperial_units);
+               companion.units_changed(imperial_units);
+       }
 
        AltosFlightStatusUpdate status_update;
 
@@ -102,7 +113,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
                status_update.saved_state = state;
 
                if (state == null)
-                       state = new AltosState(new AltosRecord());
+                       state = new AltosState();
 
                pad.show(state, listener_state);
 
@@ -130,6 +141,19 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
                flightStatus.show(state, listener_state);
                flightInfo.show(state, listener_state);
 
+               if (ignitor.should_show(state)) {
+                       if (!has_ignitor) {
+                               pane.add("Ignitor", ignitor);
+                               has_ignitor = true;
+                       }
+                       ignitor.show(state, listener_state);
+               } else {
+                       if (has_ignitor) {
+                               pane.remove(ignitor);
+                               has_ignitor = false;
+                       }
+               }
+
                if (state.companion != null) {
                        if (!has_companion) {
                                pane.add("Companion", companion);
@@ -162,7 +186,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
 
        Container       bag;
        AltosFreqList   frequencies;
-       JComboBox       telemetries;
+       JComboBox<String>       telemetries;
        JLabel          telemetry;
 
        ActionListener  show_timer;
@@ -208,8 +232,8 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
 
                        // Telemetry format menu
                        if (reader.supports_telemetry(Altos.ao_telemetry_standard)) {
-                               telemetries = new JComboBox();
-                               for (int i = 1; i <= Altos.ao_telemetry_max; i++) 
+                               telemetries = new JComboBox<String>();
+                               for (int i = 1; i <= Altos.ao_telemetry_max; i++)
                                        telemetries.addItem(Altos.telemetry_name(i));
                                int telemetry = AltosPreferences.telemetry(serial);
                                if (telemetry <= Altos.ao_telemetry_off ||
@@ -274,6 +298,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
                pad = new AltosPad();
                pane.add("Status", pad);
 
+               ignitor = new AltosIgnitor();
                ascent = new AltosAscent();
                descent = new AltosDescent();
                landed = new AltosLanded(reader);
@@ -285,7 +310,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
                has_companion = false;
                has_state = false;
 
-               sitemap = new AltosSiteMap();
+               sitemap = new AltosUIMap();
                has_map = false;
 
                /* Make the tabbed pane use the rest of the window space */
@@ -300,6 +325,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
                setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
 
                AltosUIPreferences.register_font_listener(this);
+               AltosPreferences.register_units_listener(this);
 
                addWindowListener(new WindowAdapter() {
                                @Override
@@ -308,6 +334,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
                                        setVisible(false);
                                        dispose();
                                        AltosUIPreferences.unregister_font_listener(AltosFlightUI.this);
+                                       AltosPreferences.unregister_units_listener(AltosFlightUI.this);
                                        if (exit_on_close)
                                                System.exit(0);
                                }