altosui: Convert from channels to frequencies
[fw/altos] / altosui / AltosFlightUI.java
index 286b2a4eeb3519e19a8fdfecfdb167b8e3cc5b80..8c3f821e6c96db559153196a5bcb1e5bcb8bf813 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;
@@ -118,11 +118,11 @@ 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) {
-               AltosPreferences.init(this);
+               AltosPreferences.set_component(this);
 
                voice = in_voice;
                reader = in_reader;
@@ -141,29 +141,41 @@ 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();
+                                               reader.save_frequency();
+                                               try {
+                                                       reader.set_frequency(frequency);
+                                               } catch (TimeoutException te) {
+                                               } catch (InterruptedException ie) {
+                                               }
+                                       }
                        });
                        c.gridx = 0;
                        c.gridy = 0;
                        c.insets = new Insets(3, 3, 3, 3);
                        c.anchor = GridBagConstraints.WEST;
-                       bag.add (channels, c);
+                       bag.add (frequencies, c);
 
                        // Telemetry format menu
                        telemetries = new JComboBox();
-                       telemetries.addItem("TeleMetrum");
-                       telemetries.addItem("TeleMini/TeleNano");
-                       telemetries.setSelectedIndex(AltosPreferences.telemetry(serial) - 1);
-                       telemetries.setMaximumRowCount(2);
+                       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(Altos.ao_telemetry_max);
                        telemetries.addActionListener(new ActionListener() {
                                        public void actionPerformed(ActionEvent e) {
-                                               int telemetry = telemetries.getSelectedIndex();
+                                               int telemetry = telemetries.getSelectedIndex() + 1;
                                                reader.set_telemetry(telemetry);
+                                               reader.save_telemetry();
                                        }
                                });
                        c.gridx = 1;