altosui: refactor logfile chooser dialog to share more code
[fw/altos] / ao-tools / altosui / AltosUI.java
index 565866ea1f61a582065d2326cefa20e4d577580f..8a4c753fefd6a04f021edd5f9014ee40b36866d7 100644 (file)
@@ -41,7 +41,8 @@ import altosui.AltosVoice;
 import altosui.AltosFlightStatusTableModel;
 import altosui.AltosFlightInfoTableModel;
 import altosui.AltosChannelMenu;
-import altosui.AltosFlash;
+import altosui.AltosFlashUI;
+import altosui.AltosLogfileChooser;
 
 import libaltosJNI.*;
 
@@ -460,7 +461,7 @@ public class AltosUI extends JFrame {
        }
 
        void FlashImage() {
-               new AltosFlash(AltosUI.this);
+               new AltosFlashUI(AltosUI.this);
        }
 
        /*
@@ -529,33 +530,12 @@ public class AltosUI extends JFrame {
         * Replay a flight from telemetry data
         */
        private void Replay() {
-               JFileChooser    logfile_chooser = new JFileChooser();
-
-               logfile_chooser.setDialogTitle("Select Flight Record File");
-               logfile_chooser.setFileFilter(new FileNameExtensionFilter("Flight data file", "eeprom", "telem"));
-               logfile_chooser.setCurrentDirectory(AltosPreferences.logdir());
-               int returnVal = logfile_chooser.showOpenDialog(AltosUI.this);
-
-               if (returnVal == JFileChooser.APPROVE_OPTION) {
-                       File file = logfile_chooser.getSelectedFile();
-                       if (file == null)
-                               System.out.println("No file selected?");
-                       String  filename = file.getName();
-                       try {
-                               FileInputStream replay = new FileInputStream(file);
-                               DisplayThread   thread;
-                               if (filename.endsWith("eeprom"))
-                                   thread = new ReplayEepromThread(replay, filename);
-                               else
-                                   thread = new ReplayTelemetryThread(replay, filename);
-                               run_display(thread);
-                       } catch (FileNotFoundException ee) {
-                               JOptionPane.showMessageDialog(AltosUI.this,
-                                                             filename,
-                                                             "Cannot open telemetry file",
-                                                             JOptionPane.ERROR_MESSAGE);
-                       }
-               }
+               AltosLogfileChooser chooser = new AltosLogfileChooser(
+                       AltosUI.this);
+               AltosReader reader = chooser.runDialog();
+               if (reader != null)
+                       run_display(new ReplayThread(reader,
+                                                    chooser.filename()));
        }
 
        /* Connect to TeleMetrum, either directly or through