diff options
| author | Bdale Garbee <bdale@gag.com> | 2014-01-22 20:55:41 -0700 |
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2014-01-22 20:55:41 -0700 |
| commit | 9884ca1449167a06bd2cebc7d28353eeac592493 (patch) | |
| tree | 9fde328b3a5971c67954e669c1ba27042821fd8c /altosui/AltosIdleMonitorUI.java | |
| parent | 8e669694a60d34e2ea0f8f6b189e0bc3605d94d7 (diff) | |
| parent | 0ef0c50536e5eb6ad3455b5828983307edbab828 (diff) | |
Merge branch 'branch-1.3' into debian
Diffstat (limited to 'altosui/AltosIdleMonitorUI.java')
| -rw-r--r-- | altosui/AltosIdleMonitorUI.java | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/altosui/AltosIdleMonitorUI.java b/altosui/AltosIdleMonitorUI.java index 6a79604e..7ca935b6 100644 --- a/altosui/AltosIdleMonitorUI.java +++ b/altosui/AltosIdleMonitorUI.java @@ -24,7 +24,7 @@ import javax.swing.event.*; import java.io.*; import java.util.concurrent.*; import java.util.Arrays; -import org.altusmetrum.altoslib_2.*; +import org.altusmetrum.altoslib_3.*; import org.altusmetrum.altosuilib_1.*; public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDisplay, AltosFontListener, AltosIdleMonitorListener, DocumentListener { @@ -132,8 +132,35 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl return constraints(x, width, GridBagConstraints.NONE); } + void idle_exception(JFrame owner, Exception e) { + if (e instanceof FileNotFoundException) { + JOptionPane.showMessageDialog(owner, + ((FileNotFoundException) e).getMessage(), + "Cannot open target device", + JOptionPane.ERROR_MESSAGE); + } else if (e instanceof AltosSerialInUseException) { + JOptionPane.showMessageDialog(owner, + String.format("Device \"%s\" already in use", + device.toShortString()), + "Device in use", + JOptionPane.ERROR_MESSAGE); + } else if (e instanceof IOException) { + IOException ee = (IOException) e; + JOptionPane.showMessageDialog(owner, + device.toShortString(), + ee.getLocalizedMessage(), + JOptionPane.ERROR_MESSAGE); + } else { + JOptionPane.showMessageDialog(owner, + String.format("Connection to \"%s\" failed", + device.toShortString()), + "Connection Failed", + JOptionPane.ERROR_MESSAGE); + } + } + public AltosIdleMonitorUI(JFrame in_owner) - throws FileNotFoundException, AltosSerialInUseException, TimeoutException, InterruptedException { + throws FileNotFoundException, TimeoutException, InterruptedException { device = AltosDeviceUIDialog.show(in_owner, Altos.product_any); remote = false; @@ -141,6 +168,15 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl remote = true; serial = device.getSerial(); + + AltosLink link; + try { + link = new AltosSerial(device); + } catch (Exception ex) { + idle_exception(in_owner, ex); + return; + } + bag = getContentPane(); bag.setLayout(new GridBagLayout()); @@ -209,7 +245,7 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl pack(); setVisible(true); - thread = new AltosIdleMonitor((AltosIdleMonitorListener) this, (AltosLink) new AltosSerial (device), (boolean) remote); + thread = new AltosIdleMonitor((AltosIdleMonitorListener) this, link, (boolean) remote); status_update = new AltosFlightStatusUpdate(flightStatus); |
