altosui: Fix ground station configure frequency list
authorKeith Packard <keithp@keithp.com>
Tue, 17 Jun 2014 05:48:25 +0000 (22:48 -0700)
committerKeith Packard <keithp@keithp.com>
Tue, 17 Jun 2014 05:48:25 +0000 (22:48 -0700)
Fix the API to match the switch to a menu, wrap in a menu bar to make
it work.

Signed-off-by: Keith Packard <keithp@keithp.com>
altosui/AltosConfigTDUI.java
altosuilib/AltosFreqList.java

index 22b3384d6a995e7a341c6eac16a1f6c4c8f17121..955c7dab0a76287902a984816859d019d3b41a6e 100644 (file)
@@ -44,6 +44,7 @@ public class AltosConfigTDUI
        JLabel          product_value;
        JLabel          version_value;
        JLabel          serial_value;
+       JMenuBar        radio_frequency_menu_bar;
        AltosFreqList   radio_frequency_value;
        JLabel          radio_calibration_value;
 
@@ -166,9 +167,11 @@ public class AltosConfigTDUI
                c.anchor = GridBagConstraints.LINE_START;
                c.insets = ir;
                c.ipady = 5;
-               radio_frequency_value = new AltosFreqList();
+               radio_frequency_value = new AltosFreqList(false);
                radio_frequency_value.addItemListener(this);
-               pane.add(radio_frequency_value, c);
+               radio_frequency_menu_bar = new JMenuBar();
+               radio_frequency_menu_bar.add(radio_frequency_value);
+               pane.add(radio_frequency_menu_bar, c);
                radio_frequency_value.setToolTipText("Telemetry, RDF and packet frequency");
 
                /* Radio Calibration */
@@ -308,28 +311,7 @@ public class AltosConfigTDUI
        }
 
        public void set_radio_frequency(double new_radio_frequency) {
-               int i;
-               for (i = 0; i < radio_frequency_value.getItemCount(); i++) {
-                       AltosFrequency  f = (AltosFrequency) radio_frequency_value.getItemAt(i);
-
-                       if (f.close(new_radio_frequency)) {
-                               radio_frequency_value.setSelectedIndex(i);
-                               return;
-                       }
-               }
-               for (i = 0; i < radio_frequency_value.getItemCount(); i++) {
-                       AltosFrequency  f = (AltosFrequency) radio_frequency_value.getItemAt(i);
-
-                       if (new_radio_frequency < f.frequency)
-                               break;
-               }
-               String  description = String.format("%s serial %s",
-                                                   product_value.getText(),
-                                                   serial_value.getText());
-               AltosFrequency  new_frequency = new AltosFrequency(new_radio_frequency, description);
-               AltosPreferences.add_common_frequency(new_frequency);
-               radio_frequency_value.insertItemAt(new_frequency, i);
-               radio_frequency_value.setSelectedIndex(i);
+               radio_frequency_value.set_frequency(new_radio_frequency);
        }
 
        public double radio_frequency() {
index b985d4721ee338b9e92054fcab440527aa60c0b2..a4c3e36ab72a00bae6360b3e4e31222a01ab8b89 100644 (file)
@@ -59,14 +59,30 @@ public class AltosFreqList extends JMenu implements ActionListener {
                        l.actionPerformed(event);
        }
 
+       boolean label = true;
+
+       public void set_label(boolean label) {
+               this.label = label;
+               set_label();
+       }
+
+       private void set_label() {
+               String  new_text = "";
+               if (0 <= selected && selected < frequencies.length) {
+                       AltosFrequency  frequency = frequencies[selected];
+                       new_text = String.format("%s%7.3f MHz (%s) ▾",
+                                                label ? "Frequency: " : "",
+                                                frequency.frequency,
+                                                frequency.description);
+               }
+               setText(new_text);
+       }
+
        private void set_selected(AltosFrequency frequency) {
                for (int i = 0; i < frequencies.length; i++) {
                        if (frequencies[i].frequency == frequency.frequency) {
                                selected = i;
-                               String  new_text = String.format("Frequency: %7.3f MHz (%s) ▾",
-                                                                frequency.frequency,
-                                                                frequency.description);
-                               setText(new_text);
+                               set_label();
                        }
                }
        }
@@ -164,16 +180,27 @@ public class AltosFreqList extends JMenu implements ActionListener {
                return 434.550;
        }
 
-       public AltosFreqList () {
+       public AltosFreqList(double in_frequency, boolean label) {
                super();
+               this.label = label;
+
                for (AltosFrequency frequency: AltosUIPreferences.common_frequencies())
                        add(frequency);
                product = "Unknown";
                serial = 0;
-       }
 
+               if (in_frequency != 0)
+                       set_frequency(in_frequency);
+       }
        public AltosFreqList(double in_frequency) {
-               this();
-               set_frequency(in_frequency);
+               this(in_frequency, true);
+       }
+
+       public AltosFreqList (boolean label) {
+               this(0, label);
+       }
+
+       public AltosFreqList () {
+               this(0, true);
        }
 }