altosui: Add ignitor tab for TeleMega extra ignitors
[fw/altos] / altosui / AltosFlightUI.java
index c04a4357f6f898bb5a54882abf7a9366cbeee76c..aac4c9b0c655c638bc5e19d0dff5709d32beac62 100644 (file)
@@ -21,7 +21,7 @@ import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
 import java.util.concurrent.*;
-import org.altusmetrum.altoslib_1.*;
+import org.altusmetrum.altoslib_3.*;
 import org.altusmetrum.altosuilib_1.*;
 
 public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, AltosFontListener {
@@ -32,6 +32,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
        JTabbedPane     pane;
 
        AltosPad        pad;
+       AltosIgnitor    ignitor;
        AltosAscent     ascent;
        AltosDescent    descent;
        AltosLanded     landed;
@@ -40,6 +41,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
        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();
@@ -82,6 +85,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
 
        public void set_font() {
                pad.set_font();
+               ignitor.set_font();
                ascent.set_font();
                descent.set_font();
                landed.set_font();
@@ -98,11 +102,13 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
 
        AltosFlightStatusUpdate status_update;
 
-       public void show(AltosState state, int crc_errors) {
+       public void show(AltosState state, AltosListenerState listener_state) {
                status_update.saved_state = state;
-               JComponent tab = which_tab(state);
-               try {
-               pad.show(state, crc_errors);
+
+               if (state == null)
+                       state = new AltosState();
+
+               pad.show(state, listener_state);
 
                if (state.state != Altos.ao_flight_startup) {
                        if (!has_state) {
@@ -114,25 +120,39 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
                        }
                }
 
-               ascent.show(state, crc_errors);
-               descent.show(state, crc_errors);
-               landed.show(state, crc_errors);
+               ascent.show(state, listener_state);
+               descent.show(state, listener_state);
+               landed.show(state, listener_state);
 
+               JComponent tab = which_tab(state);
                if (tab != cur_tab) {
                        if (cur_tab == pane.getSelectedComponent()) {
                                pane.setSelectedComponent(tab);
                        }
                        cur_tab = tab;
                }
-               flightStatus.show(state, crc_errors);
-               flightInfo.show(state, crc_errors);
+               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.data.companion != null) {
+               if (state.companion != null) {
                        if (!has_companion) {
                                pane.add("Companion", companion);
                                has_companion= true;
                        }
-                       companion.show(state, crc_errors);
+                       companion.show(state, listener_state);
                } else {
                        if (has_companion) {
                                pane.remove(companion);
@@ -144,17 +164,13 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay, A
                                pane.add("Site Map", sitemap);
                                has_map = true;
                        }
-                       sitemap.show(state, crc_errors);
+                       sitemap.show(state, listener_state);
                } else {
                        if (has_map) {
                                pane.remove(sitemap);
                                has_map = false;
                        }
                }
-               } catch (Exception e) {
-                       System.out.print("Show exception " + e + "\n");
-                       e.printStackTrace();
-               }
        }
 
        public void set_exit_on_close() {
@@ -275,6 +291,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);