summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ao-tools/altosui/AltosChannelMenu.java24
-rw-r--r--ao-tools/altosui/AltosConfig.java8
-rw-r--r--ao-tools/altosui/AltosDebug.java2
-rw-r--r--ao-tools/altosui/AltosDevice.java9
-rw-r--r--ao-tools/altosui/AltosEepromDownload.java10
-rw-r--r--ao-tools/altosui/AltosFlashUI.java2
-rw-r--r--ao-tools/altosui/AltosFlightUI.java62
-rw-r--r--ao-tools/altosui/AltosIgniteUI.java8
-rw-r--r--ao-tools/altosui/AltosSerial.java6
-rw-r--r--ao-tools/altosui/AltosTelemetryReader.java2
-rw-r--r--ao-tools/altosui/AltosUI.java6
11 files changed, 74 insertions, 65 deletions
diff --git a/ao-tools/altosui/AltosChannelMenu.java b/ao-tools/altosui/AltosChannelMenu.java
index 504c13c6..8069c853 100644
--- a/ao-tools/altosui/AltosChannelMenu.java
+++ b/ao-tools/altosui/AltosChannelMenu.java
@@ -28,8 +28,7 @@ import java.text.*;
import java.util.prefs.*;
import java.util.concurrent.LinkedBlockingQueue;
-public class AltosChannelMenu extends JMenu implements ActionListener {
- ButtonGroup group;
+public class AltosChannelMenu extends JComboBox implements ActionListener {
int channel;
LinkedList<ActionListener> listeners;
@@ -38,33 +37,28 @@ public class AltosChannelMenu extends JMenu implements ActionListener {
}
public void actionPerformed(ActionEvent e) {
- channel = Integer.parseInt(e.getActionCommand());
+ channel = getSelectedIndex();
+
+ ActionEvent newe = new ActionEvent(this, channel, e.getActionCommand());
ListIterator<ActionListener> i = listeners.listIterator();
- ActionEvent newe = new ActionEvent(this, channel, e.getActionCommand());
while (i.hasNext()) {
ActionListener listener = i.next();
listener.actionPerformed(newe);
}
+ setMaximumSize(getPreferredSize());
}
public AltosChannelMenu(int current_channel) {
- super("Channel", true);
- group = new ButtonGroup();
channel = current_channel;
listeners = new LinkedList<ActionListener>();
- for (int c = 0; c <= 9; c++) {
- JRadioButtonMenuItem radioitem = new JRadioButtonMenuItem(String.format("Channel %1d (%7.3fMHz)", c,
- 434.550 + c * 0.1),
- c == channel);
- radioitem.setActionCommand(String.format("%d", c));
- radioitem.addActionListener(this);
- add(radioitem);
- group.add(radioitem);
- }
+ for (int c = 0; c <= 9; c++)
+ addItem(String.format("Channel %1d (%7.3fMHz)", c, 434.550 + c * 0.1));
+ setSelectedIndex(channel);
+ setMaximumRowCount(10);
}
}
diff --git a/ao-tools/altosui/AltosConfig.java b/ao-tools/altosui/AltosConfig.java
index 19503dcb..6bda20d8 100644
--- a/ao-tools/altosui/AltosConfig.java
+++ b/ao-tools/altosui/AltosConfig.java
@@ -158,7 +158,7 @@ public class AltosConfig implements Runnable, ActionListener {
void abort() {
JOptionPane.showMessageDialog(owner,
String.format("Connection to \"%s\" failed",
- device.toString()),
+ device.toShortString()),
"Connection Failed",
JOptionPane.ERROR_MESSAGE);
serial_line.close();
@@ -266,18 +266,18 @@ public class AltosConfig implements Runnable, ActionListener {
} catch (FileNotFoundException ee) {
JOptionPane.showMessageDialog(owner,
String.format("Cannot open device \"%s\"",
- device.toString()),
+ device.toShortString()),
"Cannot open target device",
JOptionPane.ERROR_MESSAGE);
} catch (AltosSerialInUseException si) {
JOptionPane.showMessageDialog(owner,
String.format("Device \"%s\" already in use",
- device.toString()),
+ device.toShortString()),
"Device in use",
JOptionPane.ERROR_MESSAGE);
} catch (IOException ee) {
JOptionPane.showMessageDialog(owner,
- device.toString(),
+ device.toShortString(),
ee.getLocalizedMessage(),
JOptionPane.ERROR_MESSAGE);
}
diff --git a/ao-tools/altosui/AltosDebug.java b/ao-tools/altosui/AltosDebug.java
index 9aa35d3f..8d435b66 100644
--- a/ao-tools/altosui/AltosDebug.java
+++ b/ao-tools/altosui/AltosDebug.java
@@ -261,7 +261,7 @@ public class AltosDebug extends AltosSerial {
printf ("R\n");
}
- public AltosDebug (altos_device in_device) throws FileNotFoundException, AltosSerialInUseException {
+ public AltosDebug (AltosDevice in_device) throws FileNotFoundException, AltosSerialInUseException {
super(in_device);
}
} \ No newline at end of file
diff --git a/ao-tools/altosui/AltosDevice.java b/ao-tools/altosui/AltosDevice.java
index f646305b..f0fda57b 100644
--- a/ao-tools/altosui/AltosDevice.java
+++ b/ao-tools/altosui/AltosDevice.java
@@ -101,6 +101,15 @@ public class AltosDevice extends altos_device {
getName(), getSerial(), getPath());
}
+ public String toShortString() {
+ String name = getName();
+ if (name == null)
+ name = "Altus Metrum";
+ return String.format("%s %d %s",
+ name, getSerial(), getPath());
+
+ }
+
public boolean isAltusMetrum() {
if (getVendor() != vendor_altusmetrum)
return false;
diff --git a/ao-tools/altosui/AltosEepromDownload.java b/ao-tools/altosui/AltosEepromDownload.java
index 912ff476..fb5dcfc0 100644
--- a/ao-tools/altosui/AltosEepromDownload.java
+++ b/ao-tools/altosui/AltosEepromDownload.java
@@ -232,14 +232,14 @@ public class AltosEepromDownload implements Runnable {
CaptureLog();
} catch (IOException ee) {
JOptionPane.showMessageDialog(frame,
- device.toString(),
+ device.toShortString(),
ee.getLocalizedMessage(),
JOptionPane.ERROR_MESSAGE);
} catch (InterruptedException ie) {
} catch (TimeoutException te) {
JOptionPane.showMessageDialog(frame,
String.format("Connection to \"%s\" failed",
- device.toString()),
+ device.toShortString()),
"Connection Failed",
JOptionPane.ERROR_MESSAGE);
}
@@ -266,18 +266,18 @@ public class AltosEepromDownload implements Runnable {
} catch (FileNotFoundException ee) {
JOptionPane.showMessageDialog(frame,
String.format("Cannot open device \"%s\"",
- device.toString()),
+ device.toShortString()),
"Cannot open target device",
JOptionPane.ERROR_MESSAGE);
} catch (AltosSerialInUseException si) {
JOptionPane.showMessageDialog(frame,
String.format("Device \"%s\" already in use",
- device.toString()),
+ device.toShortString()),
"Device in use",
JOptionPane.ERROR_MESSAGE);
} catch (IOException ee) {
JOptionPane.showMessageDialog(frame,
- device.toString(),
+ device.toShortString(),
ee.getLocalizedMessage(),
JOptionPane.ERROR_MESSAGE);
}
diff --git a/ao-tools/altosui/AltosFlashUI.java b/ao-tools/altosui/AltosFlashUI.java
index d3b72c67..f63097ac 100644
--- a/ao-tools/altosui/AltosFlashUI.java
+++ b/ao-tools/altosui/AltosFlashUI.java
@@ -90,7 +90,7 @@ public class AltosFlashUI
} catch (AltosSerialInUseException si) {
JOptionPane.showMessageDialog(frame,
String.format("Device \"%s\" already in use",
- debug_dongle.toString()),
+ debug_dongle.toShortString()),
"Device in use",
JOptionPane.ERROR_MESSAGE);
} catch (IOException e) {
diff --git a/ao-tools/altosui/AltosFlightUI.java b/ao-tools/altosui/AltosFlightUI.java
index 78b005c0..56ab7ebc 100644
--- a/ao-tools/altosui/AltosFlightUI.java
+++ b/ao-tools/altosui/AltosFlightUI.java
@@ -36,8 +36,6 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
AltosFlightReader reader;
AltosDisplayThread thread;
- private Box vbox;
-
JTabbedPane pane;
AltosPad pad;
@@ -128,22 +126,47 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
exit_on_close = true;
}
+ Container bag;
+
public AltosFlightUI(AltosVoice in_voice, AltosFlightReader in_reader, final int serial) {
AltosPreferences.init(this);
voice = in_voice;
reader = in_reader;
+ bag = getContentPane();
+ bag.setLayout(new GridBagLayout());
+
+ GridBagConstraints c = new GridBagConstraints();
+
java.net.URL imgURL = AltosUI.class.getResource("/altus-metrum-16x16.jpg");
if (imgURL != null)
setIconImage(new ImageIcon(imgURL).getImage());
setTitle(String.format("AltOS %s", reader.name));
- flightStatus = new AltosFlightStatus();
+ if (serial >= 0) {
+ // Channel menu
+ JComboBox channels = new AltosChannelMenu(AltosPreferences.channel(serial));
+ channels.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ int channel = Integer.parseInt(e.getActionCommand());
+ reader.set_channel(channel);
+ AltosPreferences.set_channel(serial, channel);
+ }
+ });
+ c.gridx = 0;
+ c.gridy = 0;
+ c.anchor = GridBagConstraints.WEST;
+ bag.add (channels, c);
+ }
- vbox = new Box (BoxLayout.Y_AXIS);
- vbox.add(flightStatus);
+ flightStatus = new AltosFlightStatus();
+ c.gridx = 0;
+ c.gridy = 1;
+ c.fill = GridBagConstraints.HORIZONTAL;
+ c.weightx = 1;
+ bag.add(flightStatus, c);
pane = new JTabbedPane();
@@ -163,29 +186,12 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
flightInfoPane = new JScrollPane(flightInfo.box());
pane.add("Table", flightInfoPane);
- vbox.add(pane);
-
- this.add(vbox);
-
- if (serial >= 0) {
- JMenuBar menubar = new JMenuBar();
-
- // Channel menu
- {
- JMenu menu = new AltosChannelMenu(AltosPreferences.channel(serial));
- menu.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- int channel = Integer.parseInt(e.getActionCommand());
- reader.set_channel(channel);
- AltosPreferences.set_channel(serial, channel);
- }
- });
- menu.setMnemonic(KeyEvent.VK_C);
- menubar.add(menu);
- }
-
- this.setJMenuBar(menubar);
- }
+ c.gridx = 0;
+ c.gridy = 2;
+ c.fill = GridBagConstraints.BOTH;
+ c.weightx = 1;
+ c.weighty = 1;
+ bag.add(pane, c);
this.setSize(this.getPreferredSize());
this.validate();
diff --git a/ao-tools/altosui/AltosIgniteUI.java b/ao-tools/altosui/AltosIgniteUI.java
index caecc3ef..0207e39f 100644
--- a/ao-tools/altosui/AltosIgniteUI.java
+++ b/ao-tools/altosui/AltosIgniteUI.java
@@ -103,7 +103,7 @@ public class AltosIgniteUI
close();
JOptionPane.showMessageDialog(owner,
String.format("Connection to \"%s\" failed",
- device.toString()),
+ device.toShortString()),
"Connection Failed",
JOptionPane.ERROR_MESSAGE);
}
@@ -194,18 +194,18 @@ public class AltosIgniteUI
} catch (FileNotFoundException ee) {
JOptionPane.showMessageDialog(owner,
String.format("Cannot open device \"%s\"",
- device.toString()),
+ device.toShortString()),
"Cannot open target device",
JOptionPane.ERROR_MESSAGE);
} catch (AltosSerialInUseException si) {
JOptionPane.showMessageDialog(owner,
String.format("Device \"%s\" already in use",
- device.toString()),
+ device.toShortString()),
"Device in use",
JOptionPane.ERROR_MESSAGE);
} catch (IOException ee) {
JOptionPane.showMessageDialog(owner,
- device.toString(),
+ device.toShortString(),
ee.getLocalizedMessage(),
JOptionPane.ERROR_MESSAGE);
}
diff --git a/ao-tools/altosui/AltosSerial.java b/ao-tools/altosui/AltosSerial.java
index 0d32a5ae..ab74486b 100644
--- a/ao-tools/altosui/AltosSerial.java
+++ b/ao-tools/altosui/AltosSerial.java
@@ -38,7 +38,7 @@ public class AltosSerial implements Runnable {
static List<String> devices_opened = Collections.synchronizedList(new LinkedList<String>());
- altos_device device;
+ AltosDevice device;
SWIGTYPE_p_altos_file altos;
LinkedList<LinkedBlockingQueue<AltosLine>> monitors;
LinkedBlockingQueue<AltosLine> reply_queue;
@@ -195,7 +195,7 @@ public class AltosSerial implements Runnable {
}
altos = libaltos.altos_open(device);
if (altos == null)
- throw new FileNotFoundException(device.toString());
+ throw new FileNotFoundException(device.toShortString());
input_thread = new Thread(this);
input_thread.start();
print("~\nE 0\n");
@@ -233,7 +233,7 @@ public class AltosSerial implements Runnable {
}
}
- public AltosSerial(altos_device in_device) throws FileNotFoundException, AltosSerialInUseException {
+ public AltosSerial(AltosDevice in_device) throws FileNotFoundException, AltosSerialInUseException {
device = in_device;
line = "";
monitor_mode = false;
diff --git a/ao-tools/altosui/AltosTelemetryReader.java b/ao-tools/altosui/AltosTelemetryReader.java
index 379e0e67..de5f50e9 100644
--- a/ao-tools/altosui/AltosTelemetryReader.java
+++ b/ao-tools/altosui/AltosTelemetryReader.java
@@ -55,7 +55,7 @@ class AltosTelemetryReader extends AltosFlightReader {
device = in_device;
serial = new AltosSerial(device);
log = new AltosLog(serial);
- name = device.toString();
+ name = device.toShortString();
telem = new LinkedBlockingQueue<AltosLine>();
serial.add_monitor(telem);
diff --git a/ao-tools/altosui/AltosUI.java b/ao-tools/altosui/AltosUI.java
index b573ef7f..6bfde014 100644
--- a/ao-tools/altosui/AltosUI.java
+++ b/ao-tools/altosui/AltosUI.java
@@ -53,18 +53,18 @@ public class AltosUI extends JFrame {
} catch (FileNotFoundException ee) {
JOptionPane.showMessageDialog(AltosUI.this,
String.format("Cannot open device \"%s\"",
- device.toString()),
+ device.toShortString()),
"Cannot open target device",
JOptionPane.ERROR_MESSAGE);
} catch (AltosSerialInUseException si) {
JOptionPane.showMessageDialog(AltosUI.this,
String.format("Device \"%s\" already in use",
- device.toString()),
+ device.toShortString()),
"Device in use",
JOptionPane.ERROR_MESSAGE);
} catch (IOException ee) {
JOptionPane.showMessageDialog(AltosUI.this,
- device.toString(),
+ device.toShortString(),
"Unkonwn I/O error",
JOptionPane.ERROR_MESSAGE);
}