telegps: Add status tab
[fw/altos] / telegps / TeleGPS.java
index 2503d53e4d92b47d658868976c6fbb27f6156196..307b56103091254848b3696dca027ab31adc657a 100644 (file)
@@ -69,6 +69,7 @@ public class TeleGPS
 
        AltosUIMap              map;
        TeleGPSInfo             gps_info;
+       TeleGPSState            gps_state;
        AltosInfoTable          info_table;
 
        LinkedList<AltosFlightDisplay>  displays;
@@ -323,6 +324,9 @@ public class TeleGPS
 
        void add_frequency_menu(int serial, final AltosFlightReader reader) {
                // Channel menu
+               if (frequencies != null)
+                       return;
+
                frequencies = new AltosFreqList(AltosUIPreferences.frequency(serial));
                frequencies.set_product("Monitor");
                frequencies.set_serial(serial);
@@ -343,6 +347,7 @@ public class TeleGPS
        void remove_frequency_menu() {
                if (frequencies != null) {
                        menu_bar.remove(frequencies);
+                       menu_bar.repaint();
                        frequencies = null;
                }
        }
@@ -366,6 +371,7 @@ public class TeleGPS
        }
 
        private void close() {
+               disconnect();
                AltosUIPreferences.unregister_font_listener(this);
                AltosPreferences.unregister_units_listener(this);
                setVisible(false);
@@ -439,13 +445,17 @@ public class TeleGPS
                bag.add(pane, c);
 
                map = new AltosUIMap();
-               pane.add("Map", map);
+               pane.add(map.getName(), map);
                displays.add(map);
 
                gps_info = new TeleGPSInfo();
-               pane.add("Info", gps_info);
+               pane.add(gps_info.getName(), gps_info);
                displays.add(gps_info);
 
+               gps_state = new TeleGPSState();
+               pane.add(gps_state.getName(), gps_state);
+               displays.add(gps_state);
+
                info_table = new AltosInfoTable();
                pane.add("Table", info_table);
                displays.add(info_table);