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_9.*;
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);
}
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);
-
- enable_voice = new JRadioButton("Enable", AltosPreferences.voice());
+ pane.add(new JLabel("Voice"), constraints(0, 1));
+
+ 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);
-
- 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");
+ pane.add(enable_voice, constraints(1, 1));
+ enable_voice.setToolTipText("Enable/Disable all audio in-flight announcements");
+
+ 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);
-
- /* 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);
+ pane.add(test_voice, constraints(2, 1));
+ test_voice.setToolTipText("Play a stock audio clip to check volume");
+ row++;
+ }
+ 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);
-
- callsign_value = new JTextField(AltosPreferences.callsign());
+ pane.add(new JLabel("Callsign"), constraints(0, 1));
+
+ 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);
-
- /* 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);
-
- serial_debug = new JRadioButton("Enable", AltosPreferences.serial_debug());
- serial_debug.addActionListener(new ActionListener() {
+ callsign_value.setToolTipText("Callsign sent in packet mode");
+ pane.add(callsign_value, constraints(1, 2, GridBagConstraints.BOTH));
+ row++;
+ }
+
+ boolean has_bluetooth;
+
+ 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());
}
});
+ pane.add(manage_bluetooth, constraints(0, 2));
+ /* in the same row as add_frequencies, so don't bump row */
+ has_bluetooth = true;
+ }
- 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);
-
- 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);
}
});
-// 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);
-
- /* And a close button at the bottom */
- close = new JButton("Close");
- close.addActionListener(new ActionListener() {
+ manage_frequencies.setToolTipText("Configure which values are shown in frequency menus");
+ if (has_bluetooth)
+ pane.add(manage_frequencies, constraints(2, 1));
+ else
+ pane.add(manage_frequencies, constraints(0, 3));
+ row++;
+ }
+
+ 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);
-
- pack();
- setLocationRelativeTo(owner);
- setVisible(true);
+ 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);
+
+ this.voice = voice;
}
}