altosui: Try to get dialogs to look a little better
[fw/altos] / altosui / AltosFlightUI.java
index 9536c4bbdf1fef7ad6ae52146822c4cf6f832be4..abe08a182a04d4e6cae8deaf6b1bdad6779cfeea 100644 (file)
@@ -26,7 +26,7 @@ import java.io.*;
 import java.util.*;
 import java.text.*;
 import java.util.prefs.*;
-import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.*;
 
 public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
        AltosVoice              voice;
@@ -39,8 +39,10 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
        AltosAscent     ascent;
        AltosDescent    descent;
        AltosLanded     landed;
+       AltosCompanionInfo      companion;
        AltosSiteMap    sitemap;
        boolean         has_map;
+       boolean         has_companion;
 
        private AltosFlightStatus flightStatus;
        private AltosInfoTable flightInfo;
@@ -96,7 +98,20 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
                }
                flightStatus.show(state, crc_errors);
                flightInfo.show(state, crc_errors);
-               if (state.gps != null) {
+
+               if (state.data.companion != null) {
+                       if (!has_companion) {
+                               pane.add("Companion", companion);
+                               has_companion= true;
+                       }
+                       companion.show(state, crc_errors);
+               } else {
+                       if (has_companion) {
+                               pane.remove(companion);
+                               has_companion = false;
+                       }
+               }
+               if (state.gps != null && state.gps.connected) {
                        if (!has_map) {
                                pane.add("Site Map", sitemap);
                                has_map = true;
@@ -118,7 +133,7 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
        }
 
        Container       bag;
-       JComboBox       channels;
+       AltosFreqList   frequencies;
        JComboBox       telemetries;
 
        public AltosFlightUI(AltosVoice in_voice, AltosFlightReader in_reader, final int serial) {
@@ -141,37 +156,52 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
                /* Stick channel selector at top of table for telemetry monitoring */
                if (serial >= 0) {
                        // Channel menu
-                       channels = new AltosChannelMenu(AltosPreferences.channel(serial));
-                       channels.addActionListener(new ActionListener() {
-                               public void actionPerformed(ActionEvent e) {
-                                       int channel = channels.getSelectedIndex();
-                                       reader.set_channel(channel);
-                               }
+                       frequencies = new AltosFreqList(AltosPreferences.frequency(serial));
+                       frequencies.set_product("Monitor");
+                       frequencies.set_serial(serial);
+                       frequencies.addActionListener(new ActionListener() {
+                                       public void actionPerformed(ActionEvent e) {
+                                               double frequency = frequencies.frequency();
+                                               try {
+                                                       reader.set_frequency(frequency);
+                                               } catch (TimeoutException te) {
+                                               } catch (InterruptedException ie) {
+                                               }
+                                               reader.save_frequency();
+                                       }
                        });
                        c.gridx = 0;
                        c.gridy = 0;
+                       c.weightx = 0;
+                       c.weighty = 0;
                        c.insets = new Insets(3, 3, 3, 3);
+                       c.fill = GridBagConstraints.NONE;
                        c.anchor = GridBagConstraints.WEST;
-                       bag.add (channels, c);
+                       bag.add (frequencies, c);
 
                        // Telemetry format menu
                        telemetries = new JComboBox();
-                       telemetries.addItem("Original TeleMetrum Telemetry");
-                       telemetries.addItem("Standard AltOS Telemetry");
-                       int telemetry = 1;
-                       telemetry = AltosPreferences.telemetry(serial);
-                       if (telemetry > Altos.ao_telemetry_split)
-                               telemetry = Altos.ao_telemetry_split;
+                       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 ||
+                           telemetry > Altos.ao_telemetry_max)
+                               telemetry = Altos.ao_telemetry_standard;
                        telemetries.setSelectedIndex(telemetry - 1);
-                       telemetries.setMaximumRowCount(2);
+                       telemetries.setMaximumRowCount(Altos.ao_telemetry_max);
+                       telemetries.setPreferredSize(null);
+                       telemetries.revalidate();
                        telemetries.addActionListener(new ActionListener() {
                                        public void actionPerformed(ActionEvent e) {
                                                int telemetry = telemetries.getSelectedIndex() + 1;
                                                reader.set_telemetry(telemetry);
+                                               reader.save_telemetry();
                                        }
                                });
                        c.gridx = 1;
                        c.gridy = 0;
+                       c.weightx = 0;
+                       c.weighty = 0;
                        c.fill = GridBagConstraints.NONE;
                        c.anchor = GridBagConstraints.WEST;
                        bag.add (telemetries, c);
@@ -202,12 +232,15 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
                descent = new AltosDescent();
                pane.add("Descent", descent);
 
-               landed = new AltosLanded();
+               landed = new AltosLanded(reader);
                pane.add("Landed", landed);
 
                flightInfo = new AltosInfoTable();
                pane.add("Table", new JScrollPane(flightInfo));
 
+               companion = new AltosCompanionInfo();
+               has_companion = false;
+
                sitemap = new AltosSiteMap();
                has_map = false;