AltosTelemetryReader: actually open serial port
[fw/altos] / ao-tools / altosui / AltosCSVUI.java
index 2d81236162c1b6d370a3ca6f9c82eceb773852e8..eb620ba82a7ab69176a266e89fadab2cd5d1e96c 100644 (file)
@@ -35,44 +35,67 @@ public class AltosCSVUI
        extends JDialog
        implements Runnable, ActionListener
 {
-       JFrame          frame;
-       Thread          thread;
-       AltosReader     reader;
-       AltosCSV        writer;
+       JFrame                  frame;
+       Thread                  thread;
+       AltosRecordIterable     iterable;
+       AltosWriter             writer;
+       JFileChooser            csv_chooser;
+       JComboBox               combo_box;
+
+       static String[]         combo_box_items = { "CSV", "KML" };
+
+       void set_default_file() {
+               File    current = csv_chooser.getSelectedFile();
+               String  current_name = current.getName();
+               String  new_name = null;
+               String  selected = (String) combo_box.getSelectedItem();
+
+               if (selected.equals("CSV"))
+                       new_name = Altos.replace_extension(current_name, ".csv");
+               else if (selected.equals("KML"))
+                       new_name = Altos.replace_extension(current_name, ".kml");
+               if (new_name != null)
+                       csv_chooser.setSelectedFile(new File(new_name));
+       }
 
        public void run() {
                AltosLogfileChooser     chooser;
 
                chooser = new AltosLogfileChooser(frame);
-               reader = chooser.runDialog();
-               if (reader == null)
+               iterable = chooser.runDialog();
+               if (iterable == null)
                        return;
-               JFileChooser    csv_chooser;
 
-               File file = chooser.file();
-               String path = file.getPath();
-               int dot = path.lastIndexOf(".");
-               if (dot >= 0)
-                       path = path.substring(0,dot);
-               path = path.concat(".csv");
-               csv_chooser = new JFileChooser(path);
+               csv_chooser = new JFileChooser(chooser.file());
+               combo_box = new JComboBox(combo_box_items);
+               combo_box.addActionListener(this);
+               csv_chooser.setAccessory(combo_box);
+               csv_chooser.setSelectedFile(chooser.file());
+               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();
                        try {
-                               writer = new AltosCSV(csv_chooser.getSelectedFile());
+                               if (type.equals("CSV"))
+                                       writer = new AltosCSV(file);
+                               else
+                                       writer = new AltosKML(file);
                        } catch (FileNotFoundException ee) {
                                JOptionPane.showMessageDialog(frame,
                                                              file.getName(),
                                                              "Cannot open file",
                                                              JOptionPane.ERROR_MESSAGE);
                        }
-                       writer.write(reader);
-                       reader.close();
+                       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) {