From: Keith Packard Date: Tue, 17 Jun 2014 05:48:25 +0000 (-0700) Subject: altosui: Fix ground station configure frequency list X-Git-Tag: 1.4.9.1~32^2~27 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=75766b0e7ee30fb3bfbf90ecb68f7758bac6eeba altosui: Fix ground station configure frequency list Fix the API to match the switch to a menu, wrap in a menu bar to make it work. Signed-off-by: Keith Packard --- diff --git a/altosui/AltosConfigTDUI.java b/altosui/AltosConfigTDUI.java index 22b3384d..955c7dab 100644 --- a/altosui/AltosConfigTDUI.java +++ b/altosui/AltosConfigTDUI.java @@ -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() { diff --git a/altosuilib/AltosFreqList.java b/altosuilib/AltosFreqList.java index b985d472..a4c3e36a 100644 --- a/altosuilib/AltosFreqList.java +++ b/altosuilib/AltosFreqList.java @@ -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); } }