From: Keith Packard Date: Tue, 12 Nov 2013 05:28:30 +0000 (+0900) Subject: altosui: Make AltosEepromDownload not swing-dependent X-Git-Tag: 1.2.9.4~15 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=45db3076b257adcf2c9f69ed0927f09d94af7a50 altosui: Make AltosEepromDownload not swing-dependent Will move to altoslib Signed-off-by: Keith Packard --- 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 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); + } }