altosui: remove un-used import
[fw/altos] / altosui / AltosConfigureUI.java
index bcb9636bd3e176be858479e2d753fde299435c70..c576b052f71f2db15e9360ba253fbfc9762ad2fa 100644 (file)
@@ -19,18 +19,53 @@ 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;
+
+class DelegatingRenderer implements ListCellRenderer {
+
+       // ...
+       public static void install(JComboBox comboBox) {
+               DelegatingRenderer renderer = new DelegatingRenderer(comboBox);
+               renderer.initialise();
+               comboBox.setRenderer(renderer);
+       }
+
+       // ...
+       private final JComboBox comboBox;
+
+       // ...
+       private ListCellRenderer delegate;
+
+       // ...
+       private DelegatingRenderer(JComboBox comboBox) {
+               this.comboBox = comboBox;
+       }
+
+       // ...
+       private void initialise() {
+               delegate = new JComboBox().getRenderer();
+               comboBox.addPropertyChangeListener("UI", new PropertyChangeListener() {
+
+                               public void propertyChange(PropertyChangeEvent evt) {
+                                       delegate = new JComboBox().getRenderer();
+                               }
+                       });
+       }
+
+       // ...
+       public Component getListCellRendererComponent(JList list,
+                                                     Object value, int index, boolean isSelected, boolean cellHasFocus) {
+
+               return delegate.getListCellRendererComponent(list,
+                                                            ((UIManager.LookAndFeelInfo) value).getName(),
+                                                            index, isSelected, cellHasFocus);
+       }
+}
 
 public class AltosConfigureUI
-       extends JDialog
+       extends AltosDialog
        implements DocumentListener
 {
        JFrame          owner;
@@ -47,20 +82,24 @@ public class AltosConfigureUI
        JLabel          callsign_label;
        JTextField      callsign_value;
 
+       JRadioButton    imperial_units;
+
        JLabel          font_size_label;
        JComboBox       font_size_value;
 
+       JLabel          look_and_feel_label;
+       JComboBox       look_and_feel_value;
+
        JRadioButton    serial_debug;
 
-// BLUETOOTH
-//     JButton         manage_bluetooth;
+       JButton         manage_bluetooth;
        JButton         manage_frequencies;
 
        final static String[] font_size_names = { "Small", "Medium", "Large" };
 
        /* DocumentListener interface methods */
        public void changedUpdate(DocumentEvent e) {
-               AltosPreferences.set_callsign(callsign_value.getText());
+               AltosUIPreferences.set_callsign(callsign_value.getText());
        }
 
        public void insertUpdate(DocumentEvent e) {
@@ -113,12 +152,12 @@ public class AltosConfigureUI
                c.anchor = GridBagConstraints.WEST;
                pane.add(new JLabel("Voice"), c);
 
-               enable_voice = new JRadioButton("Enable", AltosPreferences.voice());
+               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
@@ -157,11 +196,11 @@ public class AltosConfigureUI
                c.anchor = GridBagConstraints.WEST;
                pane.add(new JLabel("Log Directory"), c);
 
-               configure_log = new JButton(AltosPreferences.logdir().getPath());
+               configure_log = new JButton(AltosUIPreferences.logdir().getPath());
                configure_log.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
-                                       AltosPreferences.ConfigureLog();
-                                       configure_log.setText(AltosPreferences.logdir().getPath());
+                                       AltosUIPreferences.ConfigureLog();
+                                       configure_log.setText(AltosUIPreferences.logdir().getPath());
                                }
                        });
                c.gridx = 1;
@@ -180,7 +219,7 @@ public class AltosConfigureUI
                c.anchor = GridBagConstraints.WEST;
                pane.add(new JLabel("Callsign"), c);
 
-               callsign_value = new JTextField(AltosPreferences.callsign());
+               callsign_value = new JTextField(AltosUIPreferences.callsign());
                callsign_value.getDocument().addDocumentListener(this);
                c.gridx = 1;
                c.gridy = row++;
@@ -190,6 +229,31 @@ public class AltosConfigureUI
                pane.add(callsign_value, c);
                callsign_value.setToolTipText("Callsign sent in packet mode");
 
+               /* Imperial units setting */
+               c.gridx = 0;
+               c.gridy = row;
+               c.gridwidth = 1;
+               c.fill = GridBagConstraints.NONE;
+               c.anchor = GridBagConstraints.WEST;
+               pane.add(new JLabel("Imperial Units"), c);
+
+               imperial_units = new JRadioButton("Enable", AltosUIPreferences.imperial_units());
+               imperial_units.addActionListener(new ActionListener() {
+                               public void actionPerformed(ActionEvent e) {
+                                       JRadioButton item = (JRadioButton) e.getSource();
+                                       boolean enabled = item.isSelected();
+                                       AltosUIPreferences.set_imperial_units(enabled);
+                               }
+                       });
+               imperial_units.setToolTipText("Use Imperial units instead of metric");
+
+               c.gridx = 1;
+               c.gridy = row++;
+               c.gridwidth = 3;
+               c.fill = GridBagConstraints.NONE;
+               c.anchor = GridBagConstraints.WEST;
+               pane.add(imperial_units, c);
+
                /* Font size setting */
                c.gridx = 0;
                c.gridy = row;
@@ -199,13 +263,13 @@ public class AltosConfigureUI
                pane.add(new JLabel("Font size"), c);
 
                font_size_value = new JComboBox(font_size_names);
-               int font_size = AltosPreferences.font_size();
+               int font_size = AltosUIPreferences.font_size();
                font_size_value.setSelectedIndex(font_size - Altos.font_size_small);
                font_size_value.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
                                        int     size = font_size_value.getSelectedIndex() + Altos.font_size_small;
 
-                                       AltosPreferences.set_font_size(size);
+                                       AltosUIPreferences.set_font_size(size);
                                }
                        });
                c.gridx = 1;
@@ -216,6 +280,61 @@ public class AltosConfigureUI
                pane.add(font_size_value, c);
                font_size_value.setToolTipText("Font size used in telemetry window");
 
+               /* Look & Feel setting */
+               c.gridx = 0;
+               c.gridy = row;
+               c.gridwidth = 1;
+               c.fill = GridBagConstraints.NONE;
+               c.anchor = GridBagConstraints.WEST;
+               pane.add(new JLabel("Look & feel"), c);
+
+               /*
+               class LookAndFeelRenderer extends BasicComboBoxRenderer implements ListCellRenderer {
+
+                       public LookAndFeelRenderer() {
+                               super();
+                       }
+
+                       public Component getListCellRendererComponent(
+                               JList list,
+                               Object value,
+                               int index,
+                               boolean isSelected,
+                               boolean cellHasFocus)
+                       {
+                               super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+                               setText(((UIManager.LookAndFeelInfo) value).getName());
+                               return this;
+                       }
+               }
+               */
+
+               final UIManager.LookAndFeelInfo[] look_and_feels = UIManager.getInstalledLookAndFeels();
+
+               look_and_feel_value = new JComboBox(look_and_feels);
+
+               DelegatingRenderer.install(look_and_feel_value);
+
+               String look_and_feel  = AltosUIPreferences.look_and_feel();
+               for (int i = 0; i < look_and_feels.length; i++)
+                       if (look_and_feel.equals(look_and_feels[i].getClassName()))
+                               look_and_feel_value.setSelectedIndex(i);
+
+               look_and_feel_value.addActionListener(new ActionListener() {
+                               public void actionPerformed(ActionEvent e) {
+                                       int     id = look_and_feel_value.getSelectedIndex();
+
+                                       AltosUIPreferences.set_look_and_feel(look_and_feels[id].getClassName());
+                               }
+                       });
+               c.gridx = 1;
+               c.gridy = row++;
+               c.gridwidth = 2;
+               c.fill = GridBagConstraints.BOTH;
+               c.anchor = GridBagConstraints.WEST;
+               pane.add(look_and_feel_value, c);
+               look_and_feel_value.setToolTipText("Look&feel used for new windows");
+
                /* Serial debug setting */
                c.gridx = 0;
                c.gridy = row;
@@ -224,12 +343,12 @@ public class AltosConfigureUI
                c.anchor = GridBagConstraints.WEST;
                pane.add(new JLabel("Serial Debug"), c);
 
-               serial_debug = new JRadioButton("Enable", AltosPreferences.serial_debug());
+               serial_debug = new JRadioButton("Enable", AltosUIPreferences.serial_debug());
                serial_debug.addActionListener(new ActionListener() {
                                public void actionPerformed(ActionEvent e) {
                                        JRadioButton item = (JRadioButton) e.getSource();
                                        boolean enabled = item.isSelected();
-                                       AltosPreferences.set_serial_debug(enabled);
+                                       AltosUIPreferences.set_serial_debug(enabled);
                                }
                        });
                serial_debug.setToolTipText("Enable/Disable USB I/O getting sent to the console");
@@ -241,19 +360,18 @@ public class AltosConfigureUI
                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 = row++;
-//             c.gridwidth = 2;
-//             c.fill = GridBagConstraints.NONE;
-//             c.anchor = GridBagConstraints.WEST;
-//             pane.add(manage_bluetooth, c);
+               manage_bluetooth = new JButton("Manage Bluetooth");
+               manage_bluetooth.addActionListener(new ActionListener() {
+                               public void actionPerformed(ActionEvent e) {
+                                       AltosBTManage.show(owner, AltosBTKnown.bt_known());
+                               }
+                       });
+               c.gridx = 0;
+               c.gridy = row;
+               c.gridwidth = 2;
+               c.fill = GridBagConstraints.NONE;
+               c.anchor = GridBagConstraints.WEST;
+               pane.add(manage_bluetooth, c);
 
                manage_frequencies = new JButton("Manage Frequencies");
                manage_frequencies.addActionListener(new ActionListener() {
@@ -262,9 +380,8 @@ public class AltosConfigureUI
                                }
                        });
                manage_frequencies.setToolTipText("Configure which values are shown in frequency menus");
-// BLUETOOTH
-//             c.gridx = 2;
-               c.gridx = 1;
+               c.gridx = 2;
+               c.gridx = 2;
                c.gridy = row++;
                c.gridwidth = 2;
                c.fill = GridBagConstraints.NONE;