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;
-public class AltosConfigureUI extends JDialog {
+public class AltosConfigureUI
+ extends JDialog
+ implements DocumentListener
+{
JFrame owner;
AltosVoice voice;
Container pane;
JButton configure_log;
JTextField log_directory;
+ JLabel callsign_label;
+ JTextField callsign_value;
+
+ /* DocumentListener interface methods */
+ public void changedUpdate(DocumentEvent e) {
+ AltosPreferences.set_callsign(callsign_value.getText());
+ }
+
+ public void insertUpdate(DocumentEvent e) {
+ changedUpdate(e);
+ }
+
+ public void removeUpdate(DocumentEvent e) {
+ changedUpdate(e);
+ }
+
public AltosConfigureUI(JFrame in_owner, AltosVoice in_voice) {
super(in_owner, "Configure AltosUI", false);
c = new GridBagConstraints();
c.insets = insets;
c.fill = GridBagConstraints.NONE;
- c.anchor = GridBagConstraints.CENTER;
+ c.anchor = GridBagConstraints.WEST;
- /* Enable Voice */
+ /* Nice label at the top */
c.gridx = 0;
c.gridy = 0;
- enable_voice = new JRadioButton("Enable Voice", AltosPreferences.voice());
+ c.gridwidth = 3;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.CENTER;
+ pane.add(new JLabel ("Configure AltOS UI"), c);
+
+ /* Voice settings */
+ c.gridx = 0;
+ c.gridy = 1;
+ c.gridwidth = 1;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.WEST;
+ pane.add(new JLabel("Voice"), c);
+
+ enable_voice = new JRadioButton("Enable", AltosPreferences.voice());
enable_voice.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JRadioButton item = (JRadioButton) e.getSource();
voice.speak_always("Disable voice.");
}
});
- pane.add(enable_voice, c);
c.gridx = 1;
- c.gridy = 0;
+ c.gridy = 1;
+ c.gridwidth = 1;
+ c.weightx = 1;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.WEST;
+ pane.add(enable_voice, c);
+
+ c.gridx = 2;
+ c.gridy = 1;
+ c.gridwidth = 1;
+ c.weightx = 1;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.EAST;
test_voice = new JButton("Test Voice");
test_voice.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
});
pane.add(test_voice, c);
- close = new JButton("Close");
- close.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- setVisible(false);
- }
- });
+ /* Log directory settings */
c.gridx = 0;
- c.gridy = 3;
- c.gridwidth = 2;
- pane.add(close, c);
+ c.gridy = 2;
+ c.gridwidth = 1;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.WEST;
+ pane.add(new JLabel("Log Directory"), c);
- configure_log = new JButton("Configure Log");
+ configure_log = new JButton(AltosPreferences.logdir().getPath());
configure_log.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
AltosPreferences.ConfigureLog();
- log_directory.setText(AltosPreferences.logdir().getPath());
+ configure_log.setText(AltosPreferences.logdir().getPath());
}
});
- c.gridwidth = 1;
-
- c.gridx = 0;
+ c.gridx = 1;
c.gridy = 2;
+ c.gridwidth = 2;
+ c.fill = GridBagConstraints.BOTH;
+ c.anchor = GridBagConstraints.WEST;
pane.add(configure_log, c);
- log_directory = new JTextField(AltosPreferences.logdir().getPath());
+ /* Callsign setting */
+ c.gridx = 0;
+ c.gridy = 3;
+ c.gridwidth = 1;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.WEST;
+ pane.add(new JLabel("Callsign"), c);
+
+ callsign_value = new JTextField(AltosPreferences.callsign());
+ callsign_value.getDocument().addDocumentListener(this);
c.gridx = 1;
- c.gridy = 2;
+ c.gridy = 3;
+ c.gridwidth = 2;
c.fill = GridBagConstraints.BOTH;
- pane.add(log_directory, c);
+ c.anchor = GridBagConstraints.WEST;
+ pane.add(callsign_value, c);
+
+ /* And a close button at the bottom */
+ close = new JButton("Close");
+ close.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ setVisible(false);
+ }
+ });
+ c.gridx = 0;
+ c.gridy = 4;
+ c.gridwidth = 3;
+ c.fill = GridBagConstraints.NONE;
+ c.anchor = GridBagConstraints.CENTER;
+ pane.add(close, c);
pack();
setLocationRelativeTo(owner);