altosui: Unify datafile selection to AltosDataChooser
authorKeith Packard <keithp@keithp.com>
Fri, 19 Nov 2010 09:14:17 +0000 (17:14 +0800)
committerKeith Packard <keithp@keithp.com>
Fri, 19 Nov 2010 09:15:35 +0000 (17:15 +0800)
Instead of having several separate intefaces, use a single dialog for
selecting data files for graph/export/replay.

Signed-off-by: Keith Packard <keithp@keithp.com>
ao-tools/altosui/AltosCSVUI.java
ao-tools/altosui/AltosDataChooser.java [new file with mode: 0644]
ao-tools/altosui/AltosGraphDataChooser.java [deleted file]
ao-tools/altosui/AltosGraphUI.java
ao-tools/altosui/AltosLogfileChooser.java [deleted file]
ao-tools/altosui/AltosUI.java
ao-tools/altosui/Makefile.am

index 16f253380419029dfb788823741e18ec550276c5..e1b6002dfa23235d08a1fb5ae4a92a537be5e15e 100644 (file)
@@ -30,16 +30,15 @@ import java.util.concurrent.LinkedBlockingQueue;
 
 public class AltosCSVUI
        extends JDialog
 
 public class AltosCSVUI
        extends JDialog
-       implements Runnable, ActionListener
+       implements ActionListener
 {
 {
-       JFrame                  frame;
-       Thread                  thread;
-       AltosRecordIterable     iterable;
-       AltosWriter             writer;
        JFileChooser            csv_chooser;
        JFileChooser            csv_chooser;
+       JPanel                  accessory;
        JComboBox               combo_box;
        JComboBox               combo_box;
+       AltosRecordIterable     iterable;
+       AltosWriter             writer;
 
 
-       static String[]         combo_box_items = { "CSV", "KML" };
+       static String[]         combo_box_items = { "Comma Separated Values (.CSV)", "Googleearth Data (.KML)" };
 
        void set_default_file() {
                File    current = csv_chooser.getSelectedFile();
 
        void set_default_file() {
                File    current = csv_chooser.getSelectedFile();
@@ -47,57 +46,63 @@ public class AltosCSVUI
                String  new_name = null;
                String  selected = (String) combo_box.getSelectedItem();
 
                String  new_name = null;
                String  selected = (String) combo_box.getSelectedItem();
 
-               if (selected.equals("CSV"))
+               if (selected.contains("CSV"))
                        new_name = Altos.replace_extension(current_name, ".csv");
                        new_name = Altos.replace_extension(current_name, ".csv");
-               else if (selected.equals("KML"))
+               else if (selected.contains("KML"))
                        new_name = Altos.replace_extension(current_name, ".kml");
                if (new_name != null)
                        csv_chooser.setSelectedFile(new File(new_name));
        }
 
                        new_name = Altos.replace_extension(current_name, ".kml");
                if (new_name != null)
                        csv_chooser.setSelectedFile(new File(new_name));
        }
 
-       public void run() {
-               AltosLogfileChooser     chooser;
+       public void actionPerformed(ActionEvent e) {
+               if (e.getActionCommand().equals("comboBoxChanged"))
+                       set_default_file();
+       }
+
+       public AltosCSVUI(JFrame frame, AltosRecordIterable in_iterable, File source_file) {
+               iterable = in_iterable;
+               csv_chooser = new JFileChooser(source_file);
+
+               accessory = new JPanel();
+               accessory.setLayout(new GridBagLayout());
 
 
-               chooser = new AltosLogfileChooser(frame);
-               iterable = chooser.runDialog();
-               if (iterable == null)
-                       return;
+               GridBagConstraints      c = new GridBagConstraints();
+               c.fill = GridBagConstraints.NONE;
+               c.weightx = 1;
+               c.weighty = 0;
+               c.insets = new Insets (4, 4, 4, 4);
+
+               JLabel accessory_label = new JLabel("Export File Type");
+               c.gridx = 0;
+               c.gridy = 0;
+               accessory.add(accessory_label, c);
 
 
-               csv_chooser = new JFileChooser(chooser.file());
                combo_box = new JComboBox(combo_box_items);
                combo_box.addActionListener(this);
                combo_box = new JComboBox(combo_box_items);
                combo_box.addActionListener(this);
-               csv_chooser.setAccessory(combo_box);
-               csv_chooser.setSelectedFile(chooser.file());
+               c.gridx = 0;
+               c.gridy = 1;
+               accessory.add(combo_box, c);
+
+               csv_chooser.setAccessory(accessory);
+               csv_chooser.setSelectedFile(source_file);
                set_default_file();
                int ret = csv_chooser.showSaveDialog(frame);
                if (ret == JFileChooser.APPROVE_OPTION) {
                set_default_file();
                int ret = csv_chooser.showSaveDialog(frame);
                if (ret == JFileChooser.APPROVE_OPTION) {
-                       File    file = csv_chooser.getSelectedFile();
-                       String  type = (String) combo_box.getSelectedItem();
+                       File file = csv_chooser.getSelectedFile();
+                       String type = (String) combo_box.getSelectedItem();
                        try {
                        try {
-                               if (type.equals("CSV"))
+                               if (type.contains("CSV"))
                                        writer = new AltosCSV(file);
                                else
                                        writer = new AltosKML(file);
                                        writer = new AltosCSV(file);
                                else
                                        writer = new AltosKML(file);
+                               writer.write(iterable);
+                               writer.close();
                        } catch (FileNotFoundException ee) {
                                JOptionPane.showMessageDialog(frame,
                                                              file.getName(),
                                                              "Cannot open file",
                                                              JOptionPane.ERROR_MESSAGE);
                        }
                        } catch (FileNotFoundException ee) {
                                JOptionPane.showMessageDialog(frame,
                                                              file.getName(),
                                                              "Cannot open file",
                                                              JOptionPane.ERROR_MESSAGE);
                        }
-                       writer.write(iterable);
-                       writer.close();
                }
        }
                }
        }
-
-       public void actionPerformed(ActionEvent e) {
-               System.out.printf("command %s param %s\n", e.getActionCommand(), e.paramString());
-               if (e.getActionCommand().equals("comboBoxChanged"))
-                       set_default_file();
-       }
-
-       public AltosCSVUI(JFrame in_frame) {
-               frame = in_frame;
-               thread = new Thread(this);
-               thread.start();
-       }
 }
 }
diff --git a/ao-tools/altosui/AltosDataChooser.java b/ao-tools/altosui/AltosDataChooser.java
new file mode 100644 (file)
index 0000000..15de05c
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Copyright © 2010 Keith Packard <keithp@keithp.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+package altosui;
+
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import javax.swing.filechooser.FileNameExtensionFilter;
+import javax.swing.table.*;
+import java.io.*;
+import java.util.*;
+import java.text.*;
+import java.util.prefs.*;
+
+public class AltosDataChooser extends JFileChooser {
+       JFrame  frame;
+       String  filename;
+       File    file;
+
+       public String filename() {
+               return filename;
+       }
+
+       public File file() {
+               return file;
+       }
+
+       public AltosRecordIterable runDialog() {
+               int     ret;
+
+               ret = showOpenDialog(frame);
+               if (ret == APPROVE_OPTION) {
+                       file = getSelectedFile();
+                       if (file == null)
+                               return null;
+                       filename = file.getName();
+                       try {
+                               if (filename.endsWith("eeprom")) {
+                                       FileInputStream in = new FileInputStream(file);
+                                       return new AltosEepromIterable(in);
+                               } else if (filename.endsWith("telem")) {
+                                       FileInputStream in = new FileInputStream(file);
+                                       return new AltosTelemetryIterable(in);
+                               } else {
+                                       throw new FileNotFoundException();
+                               }
+                       } catch (FileNotFoundException fe) {
+                               JOptionPane.showMessageDialog(frame,
+                                                             filename,
+                                                             "Cannot open file",
+                                                             JOptionPane.ERROR_MESSAGE);
+                       }
+               }
+               return null;
+       }
+
+       public AltosDataChooser(JFrame in_frame) {
+               frame = in_frame;
+               setDialogTitle("Select Flight Record File");
+               setFileFilter(new FileNameExtensionFilter("Flight data file",
+                                                         "telem", "eeprom"));
+               setCurrentDirectory(AltosPreferences.logdir());
+       }
+}
diff --git a/ao-tools/altosui/AltosGraphDataChooser.java b/ao-tools/altosui/AltosGraphDataChooser.java
deleted file mode 100644 (file)
index d128f4d..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright © 2010 Keith Packard <keithp@keithp.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-
-package altosui;
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-import javax.swing.filechooser.FileNameExtensionFilter;
-import javax.swing.table.*;
-import java.io.*;
-import java.util.*;
-import java.text.*;
-import java.util.prefs.*;
-
-public class AltosGraphDataChooser extends JFileChooser {
-       JFrame  frame;
-       String  filename;
-       File    file;
-
-       public String filename() {
-               return filename;
-       }
-
-       public File file() {
-               return file;
-       }
-
-       public Iterable<AltosDataPoint> runDialog() {
-               int     ret;
-
-               ret = showOpenDialog(frame);
-               if (ret == APPROVE_OPTION) {
-                       file = getSelectedFile();
-                       if (file == null)
-                               return null;
-                       filename = file.getName();
-                       try {
-                if (filename.endsWith("eeprom")) {
-                    FileInputStream in = new FileInputStream(file);
-                    return new AltosDataPointReader(new AltosEepromIterable(in));
-                } else if (filename.endsWith("telem")) {
-                    FileInputStream in = new FileInputStream(file);
-                    return new AltosDataPointReader(new AltosTelemetryIterable(in));
-                } else {
-                    throw new FileNotFoundException();
-                }
-                       } catch (FileNotFoundException fe) {
-                               JOptionPane.showMessageDialog(frame,
-                                                             filename,
-                                                             "Cannot open file",
-                                                             JOptionPane.ERROR_MESSAGE);
-                       }
-               }
-               return null;
-       }
-
-       public AltosGraphDataChooser(JFrame in_frame) {
-               frame = in_frame;
-               setDialogTitle("Select Flight Record File");
-               setFileFilter(new FileNameExtensionFilter("Flight data file",
-                                                         "telem", "eeprom"));
-               setCurrentDirectory(AltosPreferences.logdir());
-       }
-}
index 908aa3b45baeab54a2900a4a7304f239bbc53e26..cd158651402d2634e4763015c1d36214b7899fb4 100644 (file)
@@ -151,18 +151,15 @@ public class AltosGraphUI extends JFrame
         }
     }
 
         }
     }
 
-    public AltosGraphUI(JFrame frame)
-    {
-        super("Altos Graph");
+       public AltosGraphUI(AltosRecordIterable records) {
+               super("Altos Graph");
 
 
-        AltosGraphDataChooser chooser;
-        chooser = new AltosGraphDataChooser(frame);
-        Iterable<AltosDataPoint> reader = chooser.runDialog();
-        if (reader == null)
-            return;
+               Iterable<AltosDataPoint> reader = new AltosDataPointReader (records);
+               if (reader == null)
+                       return;
         
         
-        init(reader, 0);
-    }
+               init(reader, 0);
+       }
 
     public AltosGraphUI(Iterable<AltosDataPoint> data, int which) 
     {
 
     public AltosGraphUI(Iterable<AltosDataPoint> data, int which) 
     {
diff --git a/ao-tools/altosui/AltosLogfileChooser.java b/ao-tools/altosui/AltosLogfileChooser.java
deleted file mode 100644 (file)
index 8b9d77d..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright © 2010 Keith Packard <keithp@keithp.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-
-package altosui;
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-import javax.swing.filechooser.FileNameExtensionFilter;
-import javax.swing.table.*;
-import java.io.*;
-import java.util.*;
-import java.text.*;
-import java.util.prefs.*;
-
-public class AltosLogfileChooser extends JFileChooser {
-       JFrame  frame;
-       String  filename;
-       File    file;
-
-       public String filename() {
-               return filename;
-       }
-
-       public File file() {
-               return file;
-       }
-
-       public AltosRecordIterable runDialog() {
-               int     ret;
-
-               ret = showOpenDialog(frame);
-               if (ret == APPROVE_OPTION) {
-                       file = getSelectedFile();
-                       if (file == null)
-                               return null;
-                       filename = file.getName();
-                       try {
-                               FileInputStream in;
-
-                               in = new FileInputStream(file);
-                               if (filename.endsWith("eeprom"))
-                                       return new AltosEepromIterable(in);
-                               else
-                                       return new AltosTelemetryIterable(in);
-                       } catch (FileNotFoundException fe) {
-                               JOptionPane.showMessageDialog(frame,
-                                                             filename,
-                                                             "Cannot open file",
-                                                             JOptionPane.ERROR_MESSAGE);
-                       }
-               }
-               return null;
-       }
-
-       public AltosLogfileChooser(JFrame in_frame) {
-               frame = in_frame;
-               setDialogTitle("Select Flight Record File");
-               setFileFilter(new FileNameExtensionFilter("Flight data file",
-                                                         "eeprom",
-                                                         "telem"));
-               setCurrentDirectory(AltosPreferences.logdir());
-       }
-}
\ No newline at end of file
index 5e9566f076ab6e994cf581ae00007be8f3a1185a..c82c8e8a08b2dcacc42512ff61e2ba79e8cf7199 100644 (file)
@@ -230,8 +230,9 @@ public class AltosUI extends JFrame {
         * Replay a flight from telemetry data
         */
        private void Replay() {
         * Replay a flight from telemetry data
         */
        private void Replay() {
-               AltosLogfileChooser chooser = new AltosLogfileChooser(
+               AltosDataChooser chooser = new AltosDataChooser(
                        AltosUI.this);
                        AltosUI.this);
+
                AltosRecordIterable iterable = chooser.runDialog();
                if (iterable != null) {
                        AltosFlightReader reader = new AltosReplayReader(iterable.iterator(),
                AltosRecordIterable iterable = chooser.runDialog();
                if (iterable != null) {
                        AltosFlightReader reader = new AltosReplayReader(iterable.iterator(),
@@ -252,14 +253,24 @@ public class AltosUI extends JFrame {
         */
 
        private void ExportData() {
         */
 
        private void ExportData() {
-               new AltosCSVUI(AltosUI.this);
+               AltosDataChooser chooser;
+               chooser = new AltosDataChooser(this);
+               AltosRecordIterable record_reader = chooser.runDialog();
+               if (record_reader == null)
+                       return;
+               new AltosCSVUI(AltosUI.this, record_reader, chooser.file());
        }
 
        /* Load a flight log CSV file and display a pretty graph.
         */
 
        private void GraphData() {
        }
 
        /* Load a flight log CSV file and display a pretty graph.
         */
 
        private void GraphData() {
-               new AltosGraphUI(AltosUI.this);
+               AltosDataChooser chooser;
+               chooser = new AltosDataChooser(this);
+               AltosRecordIterable record_reader = chooser.runDialog();
+               if (record_reader == null)
+                       return;
+               new AltosGraphUI(record_reader);
        }
 
        private void ConfigureAltosUI() {
        }
 
        private void ConfigureAltosUI() {
index 25977b12e338717ca6b34325ba36c8d899fd60b4..a603ca8a225a96b87a6f6d96ea5800d991707dae 100644 (file)
@@ -48,7 +48,6 @@ altosui_JAVA = \
        AltosLed.java \
        AltosLights.java \
        AltosLine.java \
        AltosLed.java \
        AltosLights.java \
        AltosLine.java \
-       AltosLogfileChooser.java \
        AltosLog.java \
        AltosPad.java \
        AltosParse.java \
        AltosLog.java \
        AltosPad.java \
        AltosParse.java \
@@ -73,7 +72,7 @@ altosui_JAVA = \
        AltosGraph.java \
        AltosGraphTime.java \
        AltosGraphUI.java \
        AltosGraph.java \
        AltosGraphTime.java \
        AltosGraphUI.java \
-       AltosGraphDataChooser.java \
+       AltosDataChooser.java \
        AltosVoice.java
 
 JFREECHART_CLASS= \
        AltosVoice.java
 
 JFREECHART_CLASS= \