diff options
| -rw-r--r-- | altosui/AltosIdleMonitorUI.java | 40 | 
1 files changed, 38 insertions, 2 deletions
| diff --git a/altosui/AltosIdleMonitorUI.java b/altosui/AltosIdleMonitorUI.java index 88779c93..7ca935b6 100644 --- a/altosui/AltosIdleMonitorUI.java +++ b/altosui/AltosIdleMonitorUI.java @@ -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); | 
