altosui: Fix channel changing in flight UI to actually work
authorKeith Packard <keithp@keithp.com>
Sat, 20 Nov 2010 08:13:58 +0000 (00:13 -0800)
committerKeith Packard <keithp@keithp.com>
Sat, 20 Nov 2010 08:13:58 +0000 (00:13 -0800)
Replacing the menu with a combo box required reworking the way events
are delivered from that widget back to the channel changing
function. Just delete the old magic and use the JComboBox action
listener directly.

Signed-off-by: Keith Packard <keithp@keithp.com>
ao-tools/altosui/AltosChannelMenu.java
ao-tools/altosui/AltosFlightUI.java

index 8069c8531b1c71f9a5802be9c1e3a94d23a4c352..abbb86f43c31ea56e75b6cd6e5a48b11e18a5a24 100644 (file)
@@ -30,31 +30,11 @@ import java.util.concurrent.LinkedBlockingQueue;
 
 public class AltosChannelMenu extends JComboBox implements ActionListener {
        int                             channel;
-       LinkedList<ActionListener>      listeners;
-
-       public void addActionListener(ActionListener l) {
-               listeners.add(l);
-       }
-
-       public void actionPerformed(ActionEvent e) {
-               channel = getSelectedIndex();
-
-               ActionEvent newe = new ActionEvent(this, channel, e.getActionCommand());
-
-               ListIterator<ActionListener>    i = listeners.listIterator();
-
-               while (i.hasNext()) {
-                       ActionListener  listener = i.next();
-                       listener.actionPerformed(newe);
-               }
-               setMaximumSize(getPreferredSize());
-       }
 
        public AltosChannelMenu(int current_channel) {
 
                channel = current_channel;
 
-               listeners = new LinkedList<ActionListener>();
                for (int c = 0; c <= 9; c++)
                        addItem(String.format("Channel %1d (%7.3fMHz)", c, 434.550 + c * 0.1));
                setSelectedIndex(channel);
index 56ab7ebc4ac01546d210b8446cb7c010d5816f9b..ac88aa152ba661467e4dac8447e71953d0ce259f 100644 (file)
@@ -127,6 +127,7 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
        }
 
        Container       bag;
+       JComboBox       channels;
 
        public AltosFlightUI(AltosVoice in_voice, AltosFlightReader in_reader, final int serial) {
                AltosPreferences.init(this);
@@ -147,10 +148,10 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
 
                if (serial >= 0) {
                        // Channel menu
-                       JComboBox channels = new AltosChannelMenu(AltosPreferences.channel(serial));
+                       channels = new AltosChannelMenu(AltosPreferences.channel(serial));
                        channels.addActionListener(new ActionListener() {
                                        public void actionPerformed(ActionEvent e) {
-                                               int channel = Integer.parseInt(e.getActionCommand());
+                                               int channel = channels.getSelectedIndex();
                                                reader.set_channel(channel);
                                                AltosPreferences.set_channel(serial, channel);
                                        }