altosui: Make Windows java test "smarter"
[fw/altos] / altosui / AltosConfigureUI.java
index 0c865d0e350324de418dcf3db5a38090b11f3514..85a3f6c0d455954253486536e4abddf7b37a1f90 100644 (file)
@@ -19,45 +19,21 @@ package altosui;
 
 import java.awt.*;
 import java.awt.event.*;
+import java.beans.*;
 import javax.swing.*;
-import javax.swing.filechooser.FileNameExtensionFilter;
-import javax.swing.table.*;
 import javax.swing.event.*;
-import java.io.*;
-import java.util.*;
-import java.text.*;
-import java.util.prefs.*;
-import java.util.concurrent.LinkedBlockingQueue;
+import org.altusmetrum.altosuilib_3.*;
 
 public class AltosConfigureUI
-       extends JDialog
+       extends AltosUIConfigure
        implements DocumentListener
 {
-       JFrame          owner;
        AltosVoice      voice;
-       Container       pane;
 
-       JRadioButton    enable_voice;
-       JButton         test_voice;
-       JButton         close;
-
-       JButton         configure_log;
-       JTextField      log_directory;
-
-       JLabel          callsign_label;
-       JTextField      callsign_value;
-
-       JRadioButton    serial_debug;
-
-// BLUETOOTH
-//     JButton         manage_bluetooth;
-       JButton         manage_frequencies;
+       public JTextField       callsign_value;
+       public JComboBox<String>        position_value;
 
        /* DocumentListener interface methods */
-       public void changedUpdate(DocumentEvent e) {
-               AltosPreferences.set_callsign(callsign_value.getText());
-       }
-
        public void insertUpdate(DocumentEvent e) {
                changedUpdate(e);
        }
@@ -66,194 +42,115 @@ public class AltosConfigureUI
                changedUpdate(e);
        }
 
-       public AltosConfigureUI(JFrame in_owner, AltosVoice in_voice) {
-               super(in_owner, "Configure AltosUI", false);
-
-               GridBagConstraints      c;
-
-               Insets insets = new Insets(4, 4, 4, 4);
-
-               owner = in_owner;
-               voice = in_voice;
-               pane = getContentPane();
-               pane.setLayout(new GridBagLayout());
-
-               c = new GridBagConstraints();
-               c.insets = insets;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.WEST;
-
-               /* Nice label at the top */
-               c.gridx = 0;
-               c.gridy = 0;
-               c.gridwidth = 3;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.CENTER;
-               pane.add(new JLabel ("Configure AltOS UI"), c);
+       public void changedUpdate(DocumentEvent e) {
+               if (callsign_value != null)
+                       AltosUIPreferences.set_callsign(callsign_value.getText());
+       }
 
-               c.gridx = 0;
-               c.gridy = 1;
-               c.gridwidth = 3;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.CENTER;
-               pane.add(new JLabel (String.format("AltOS version %s", AltosVersion.version)), c);
+       public void add_voice() {
 
                /* Voice settings */
-               c.gridx = 0;
-               c.gridy = 2;
-               c.gridwidth = 1;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.WEST;
-               pane.add(new JLabel("Voice"), c);
+               pane.add(new JLabel("Voice"), constraints(0, 1));
 
-               enable_voice = new JRadioButton("Enable", AltosPreferences.voice());
+               JRadioButton enable_voice = new JRadioButton("Enable", AltosUIPreferences.voice());
                enable_voice.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
                                        JRadioButton item = (JRadioButton) e.getSource();
                                        boolean enabled = item.isSelected();
-                                       AltosPreferences.set_voice(enabled);
+                                       AltosUIPreferences.set_voice(enabled);
                                        if (enabled)
                                                voice.speak_always("Enable voice.");
                                        else
                                                voice.speak_always("Disable voice.");
                                }
                        });
-               c.gridx = 1;
-               c.gridy = 2;
-               c.gridwidth = 1;
-               c.weightx = 1;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.WEST;
-               pane.add(enable_voice, c);
+               pane.add(enable_voice, constraints(1, 1));
                enable_voice.setToolTipText("Enable/Disable all audio in-flight announcements");
 
-               c.gridx = 2;
-               c.gridy = 2;
-               c.gridwidth = 1;
-               c.weightx = 1;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.EAST;
-               test_voice = new JButton("Test Voice");
+               JButton test_voice = new JButton("Test Voice");
                test_voice.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
                                        voice.speak("That's one small step for man; one giant leap for mankind.");
                                }
                        });
-               pane.add(test_voice, c);
+               pane.add(test_voice, constraints(2, 1));
                test_voice.setToolTipText("Play a stock audio clip to check volume");
+               row++;
+       }
 
-               /* Log directory settings */
-               c.gridx = 0;
-               c.gridy = 3;
-               c.gridwidth = 1;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.WEST;
-               pane.add(new JLabel("Log Directory"), c);
-
-               configure_log = new JButton(AltosPreferences.logdir().getPath());
-               configure_log.addActionListener(new ActionListener() {
-                               public void actionPerformed(ActionEvent e) {
-                                       AltosPreferences.ConfigureLog();
-                                       configure_log.setText(AltosPreferences.logdir().getPath());
-                               }
-                       });
-               c.gridx = 1;
-               c.gridy = 3;
-               c.gridwidth = 2;
-               c.fill = GridBagConstraints.BOTH;
-               c.anchor = GridBagConstraints.WEST;
-               pane.add(configure_log, c);
-               configure_log.setToolTipText("Which directory flight logs are stored in");
-
+       public void add_callsign() {
                /* Callsign setting */
-               c.gridx = 0;
-               c.gridy = 4;
-               c.gridwidth = 1;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.WEST;
-               pane.add(new JLabel("Callsign"), c);
+               pane.add(new JLabel("Callsign"), constraints(0, 1));
 
-               callsign_value = new JTextField(AltosPreferences.callsign());
+               callsign_value = new JTextField(AltosUIPreferences.callsign());
                callsign_value.getDocument().addDocumentListener(this);
-               c.gridx = 1;
-               c.gridy = 4;
-               c.gridwidth = 2;
-               c.fill = GridBagConstraints.BOTH;
-               c.anchor = GridBagConstraints.WEST;
-               pane.add(callsign_value, c);
                callsign_value.setToolTipText("Callsign sent in packet mode");
+               pane.add(callsign_value, constraints(1, 2, GridBagConstraints.BOTH));
+               row++;
+       }
 
-               /* Serial debug setting */
-               c.gridx = 0;
-               c.gridy = 5;
-               c.gridwidth = 1;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.WEST;
-               pane.add(new JLabel("Serial Debug"), c);
+       boolean has_bluetooth;
 
-               serial_debug = new JRadioButton("Enable", AltosPreferences.serial_debug());
-               serial_debug.addActionListener(new ActionListener() {
+       public void add_bluetooth() {
+               JButton manage_bluetooth = new JButton("Manage Bluetooth");
+               manage_bluetooth.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
-                                       JRadioButton item = (JRadioButton) e.getSource();
-                                       boolean enabled = item.isSelected();
-                                       AltosPreferences.set_serial_debug(enabled);
+                                       AltosBTManage.show(owner, AltosBTKnown.bt_known());
                                }
                        });
-               serial_debug.setToolTipText("Enable/Disable USB I/O getting sent to the console");
-
-               c.gridx = 1;
-               c.gridy = 5;
-               c.gridwidth = 3;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.WEST;
-               pane.add(serial_debug, c);
-
-// BLUETOOTH
-//             manage_bluetooth = new JButton("Manage Bluetooth");
-//             manage_bluetooth.addActionListener(new ActionListener() {
-//                             public void actionPerformed(ActionEvent e) {
-//                                     AltosBTManage.show(owner, Altos.bt_known);
-//                             }
-//                     });
-//             c.gridx = 0;
-//             c.gridy = 6;
-//             c.gridwidth = 2;
-//             c.fill = GridBagConstraints.NONE;
-//             c.anchor = GridBagConstraints.WEST;
-//             pane.add(manage_bluetooth, c);
+               pane.add(manage_bluetooth, constraints(0, 2));
+               /* in the same row as add_frequencies, so don't bump row */
+               has_bluetooth = true;
+       }
 
-               manage_frequencies = new JButton("Manage Frequencies");
+       public void add_frequencies() {
+               JButton manage_frequencies = new JButton("Manage Frequencies");
                manage_frequencies.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
                                        AltosConfigFreqUI.show(owner);
                                }
                        });
                manage_frequencies.setToolTipText("Configure which values are shown in frequency menus");
-// BLUETOOTH
-//             c.gridx = 2;
-               c.gridx = 1;
-               c.gridy = 6;
-               c.gridwidth = 2;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.WEST;
-               pane.add(manage_frequencies, c);
+               if (has_bluetooth)
+                       pane.add(manage_frequencies, constraints(2, 1));
+               else
+                       pane.add(manage_frequencies, constraints(0, 3));
+               row++;
+       }
 
-               /* And a close button at the bottom */
-               close = new JButton("Close");
-               close.addActionListener(new ActionListener() {
+       final static String[] position_names = {
+               "Top left",
+               "Top",
+               "Top right",
+               "Left",
+               "Center",
+               "Right",
+               "Bottom left",
+               "Bottom",
+               "Bottom right",
+       };
+
+       public void add_position() {
+               pane.add(new JLabel ("Menu position"), constraints(0, 1));
+
+               position_value = new JComboBox<String>(position_names);
+               position_value.setMaximumRowCount(position_names.length);
+               int position = AltosUIPreferences.position();
+               position_value.setSelectedIndex(position);
+               position_value.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
-                                       setVisible(false);
+                                       int     position = position_value.getSelectedIndex();
+                                       AltosUIPreferences.set_position(position);
                                }
                        });
-               c.gridx = 0;
-               c.gridy = 7;
-               c.gridwidth = 3;
-               c.fill = GridBagConstraints.NONE;
-               c.anchor = GridBagConstraints.CENTER;
-               pane.add(close, c);
+               pane.add(position_value, constraints(1, 2, GridBagConstraints.BOTH));
+               position_value.setToolTipText("Position of main AltosUI window");
+               row++;
+       }
+
+       public AltosConfigureUI(JFrame owner, AltosVoice voice) {
+               super(owner);
 
-               pack();
-               setLocationRelativeTo(owner);
-               setVisible(true);
+               this.voice = voice;
        }
 }