diff options
| author | Keith Packard <keithp@keithp.com> | 2013-11-12 14:28:30 +0900 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2013-11-12 14:28:30 +0900 | 
| commit | 45db3076b257adcf2c9f69ed0927f09d94af7a50 (patch) | |
| tree | 475a0ba7758949a5863c7efb8c8ba46b96e802ed | |
| parent | 6aa99c160f0695eb25ccc0598e4c36224c89dab4 (diff) | |
altosui: Make AltosEepromDownload not swing-dependent
Will move to altoslib
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | altoslib/AltosEepromMonitor.java | 8 | ||||
| -rw-r--r-- | altosui/AltosEepromDownload.java | 84 | ||||
| -rw-r--r-- | altosui/AltosEepromManage.java | 6 | ||||
| -rw-r--r-- | altosui/AltosEepromMonitorUI.java | 60 | 
4 files changed, 82 insertions, 76 deletions
| diff --git a/altoslib/AltosEepromMonitor.java b/altoslib/AltosEepromMonitor.java index 77655903..02cbed1e 100644 --- a/altoslib/AltosEepromMonitor.java +++ b/altoslib/AltosEepromMonitor.java @@ -33,9 +33,15 @@ public interface AltosEepromMonitor {  	public void set_thread(Thread eeprom_thread); +	final static int INFO_MESSAGE = 0; +	final static int WARNING_MESSAGE = 1; +	final static int ERROR_MESSAGE = 2; + +	public void show_message(String message, String title, int message_type); +  	public void start(); -	public void done(); +	public void done(boolean success);  	public void reset();  } diff --git a/altosui/AltosEepromDownload.java b/altosui/AltosEepromDownload.java index 27bde799..6ce420d3 100644 --- a/altosui/AltosEepromDownload.java +++ b/altosui/AltosEepromDownload.java @@ -17,8 +17,6 @@  package altosui; -import java.awt.event.*; -import javax.swing.*;  import java.io.*;  import java.util.*;  import java.text.*; @@ -27,7 +25,6 @@ import org.altusmetrum.altoslib_2.*;  public class AltosEepromDownload implements Runnable { -	JFrame			frame;  	AltosSerial		serial_line;  	boolean			remote;  	Thread			eeprom_thread; @@ -38,7 +35,6 @@ public class AltosEepromDownload implements Runnable {  	LinkedList<String>	eeprom_pending;  	AltosEepromList		flights; -	ActionListener		listener;  	boolean			success;  	ParseException		parse_exception;  	AltosState		state; @@ -190,28 +186,6 @@ public class AltosEepromDownload implements Runnable {  		}  	} -	private void show_message_internal(String message, String title, int message_type) { -		JOptionPane.showMessageDialog(frame, -					      message, -					      title, -					      message_type); -	} - -	private void show_message(String in_message, String in_title, int in_message_type) { -		final String message = in_message; -		final String title = in_title; -		final int message_type = in_message_type; -		Runnable r = new Runnable() { -				public void run() { -					try { -						show_message_internal(message, title, message_type); -					} catch (Exception ex) { -					} -				} -			}; -		SwingUtilities.invokeLater(r); -	} -  	public void run () {  		try {  			boolean	failed = false; @@ -230,28 +204,28 @@ public class AltosEepromDownload implements Runnable {  				}  				if (parse_exception != null) {  					failed = true; -					show_message(String.format("Flight %d download error\n%s\nValid log data saved", -								   log.flight, -								   parse_exception.getMessage()), -						     serial_line.device.toShortString(), -						     JOptionPane.WARNING_MESSAGE); +					monitor.show_message(String.format("Flight %d download error\n%s\nValid log data saved", +									   log.flight, +									   parse_exception.getMessage()), +							     serial_line.device.toShortString(), +							     AltosEepromMonitor.WARNING_MESSAGE);  				}  			}  			success = !failed;  		} catch (IOException ee) { -			show_message(ee.getLocalizedMessage(), -				     serial_line.device.toShortString(), -				     JOptionPane.ERROR_MESSAGE); +			monitor.show_message(ee.getLocalizedMessage(), +					     serial_line.device.toShortString(), +					     AltosEepromMonitor.ERROR_MESSAGE);  		} catch (InterruptedException ie) { -			show_message(String.format("Connection to \"%s\" interrupted", -						   serial_line.device.toShortString()), -				     "Connection Interrupted", -				     JOptionPane.ERROR_MESSAGE); +			monitor.show_message(String.format("Connection to \"%s\" interrupted", +							   serial_line.device.toShortString()), +					     "Connection Interrupted", +					     AltosEepromMonitor.ERROR_MESSAGE);  		} catch (TimeoutException te) { -			show_message(String.format("Connection to \"%s\" failed", -						   serial_line.device.toShortString()), -				     "Connection Failed", -				     JOptionPane.ERROR_MESSAGE); +			monitor.show_message(String.format("Connection to \"%s\" failed", +							   serial_line.device.toShortString()), +					     "Connection Failed", +					     AltosEepromMonitor.ERROR_MESSAGE);  		} finally {  			if (remote) {  				try { @@ -261,20 +235,7 @@ public class AltosEepromDownload implements Runnable {  			}  			serial_line.flush_output();  		} -		monitor.done(); -		if (listener != null) { -			Runnable r = new Runnable() { -					public void run() { -						try { -							listener.actionPerformed(new ActionEvent(this, -												 success ? 1 : 0, -												 "download")); -						} catch (Exception ex) { -						} -					} -				}; -			SwingUtilities.invokeLater(r); -		} +		monitor.done(success);  	}  	public void start() { @@ -282,25 +243,20 @@ public class AltosEepromDownload implements Runnable {  		eeprom_thread.start();  	} -	public void addActionListener(ActionListener l) { -		listener = l; -	} - -	public AltosEepromDownload(JFrame given_frame, +	public AltosEepromDownload(AltosEepromMonitor given_monitor,  				   AltosSerial given_serial_line,  				   boolean given_remote,  				   AltosEepromList given_flights) { -		frame = given_frame; +		monitor = given_monitor;  		serial_line = given_serial_line; -		serial_line.set_frame(frame);  		remote = given_remote;  		flights = given_flights;  		success = false; -		monitor = new AltosEepromMonitorUI(given_frame);  		monitor.set_states(Altos.ao_flight_boost, Altos.ao_flight_landed);  		monitor.set_thread(eeprom_thread); +		monitor.start();  	}  } diff --git a/altosui/AltosEepromManage.java b/altosui/AltosEepromManage.java index b2d8a130..da0a9777 100644 --- a/altosui/AltosEepromManage.java +++ b/altosui/AltosEepromManage.java @@ -133,11 +133,13 @@ public class AltosEepromManage implements ActionListener {  					for (AltosEepromLog flight : flights)  						any_selected = any_selected || flight.selected;  					if (any_selected) { -						download = new AltosEepromDownload(frame, +						AltosEepromMonitorUI monitor = new AltosEepromMonitorUI(frame); +						monitor.addActionListener(this); +						serial_line.set_frame(frame); +						download = new AltosEepromDownload(monitor,  										   serial_line,  										   remote,  										   flights); -						download.addActionListener(this);  						/*  						 * Start flight log download  						 */ diff --git a/altosui/AltosEepromMonitorUI.java b/altosui/AltosEepromMonitorUI.java index ddd1a564..6ad4ca5c 100644 --- a/altosui/AltosEepromMonitorUI.java +++ b/altosui/AltosEepromMonitorUI.java @@ -24,7 +24,7 @@ import org.altusmetrum.altosuilib_1.*;  import org.altusmetrum.altoslib_2.*;  public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMonitor { - +	JFrame		owner;  	Container	pane;  	Box		box;  	JLabel		serial_label; @@ -36,10 +36,13 @@ public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMo  	JButton		cancel;  	JProgressBar	pbar;  	int		min_state, max_state; +	ActionListener	listener;  	public AltosEepromMonitorUI(JFrame owner) {  		super (owner, "Download Flight Data", false); +		this.owner = owner; +  		GridBagConstraints c;  		Insets il = new Insets(4,4,4,4);  		Insets ir = new Insets(4,4,4,4); @@ -129,6 +132,10 @@ public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMo  		setLocationRelativeTo(owner);  	} +	public void addActionListener(ActionListener l) { +		listener = l; +	} +  	public void set_states(int min_state, int max_state) {  		this.min_state = min_state;  		this.max_state = max_state; @@ -136,7 +143,7 @@ public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMo  	public void set_thread(Thread in_eeprom_thread) {  		final Thread eeprom_thread = in_eeprom_thread; -		addActionListener(new ActionListener() { +		cancel.addActionListener(new ActionListener() {  				public void actionPerformed(ActionEvent e) {  					if (eeprom_thread != null)  						eeprom_thread.interrupt(); @@ -148,10 +155,6 @@ public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMo  		setVisible(true);  	} -	public void addActionListener (ActionListener l) { -		cancel.addActionListener(l); -	} -  	private void set_value_internal(String state_name, int state, int state_block, int block) {  		if (state_block > 100)  			state_block = 100; @@ -232,16 +235,20 @@ public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMo  		SwingUtilities.invokeLater(r);  	} -	private void done_internal() { +	private void done_internal(boolean success) { +		listener.actionPerformed(new ActionEvent(this, +							 success ? 1 : 0, +							 "download"));  		setVisible(false);  		dispose();  	} -	public void done() { +	public void done(boolean in_success) { +		final boolean success = in_success;  		Runnable r = new Runnable() {  				public void run() {  					try { -						done_internal(); +						done_internal(success);  					} catch (Exception ex) {  					}  				} @@ -266,4 +273,39 @@ public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMo  			};  		SwingUtilities.invokeLater(r);  	} + +	private void show_message_internal(String message, String title, int message_type) { +		int joption_message_type = JOptionPane.ERROR_MESSAGE; + +		switch (message_type) { +		case INFO_MESSAGE: +			joption_message_type = JOptionPane.INFORMATION_MESSAGE; +			break; +		case WARNING_MESSAGE: +			joption_message_type = JOptionPane.WARNING_MESSAGE; +			break; +		case ERROR_MESSAGE: +			joption_message_type = JOptionPane.ERROR_MESSAGE; +			break; +		} +		JOptionPane.showMessageDialog(owner, +					      message, +					      title, +					      joption_message_type); +	} + +	public void show_message(String in_message, String in_title, int in_message_type) { +		final String message = in_message; +		final String title = in_title; +		final int message_type = in_message_type; +		Runnable r = new Runnable() { +				public void run() { +					try { +						show_message_internal(message, title, message_type); +					} catch (Exception ex) { +					} +				} +			}; +		SwingUtilities.invokeLater(r); +	}  } | 
