docs: Document altosui "Graph Data" button
[fw/altos] / ao-tools / altosui / AltosCSVUI.java
index 2d81236162c1b6d370a3ca6f9c82eceb773852e8..e1b6002dfa23235d08a1fb5ae4a92a537be5e15e 100644 (file)
@@ -28,56 +28,81 @@ import java.text.*;
 import java.util.prefs.*;
 import java.util.concurrent.LinkedBlockingQueue;
 
-import altosui.AltosLogfileChooser;
-import altosui.AltosCSV;
-
 public class AltosCSVUI
        extends JDialog
-       implements Runnable, ActionListener
+       implements ActionListener
 {
-       JFrame          frame;
-       Thread          thread;
-       AltosReader     reader;
-       AltosCSV        writer;
+       JFileChooser            csv_chooser;
+       JPanel                  accessory;
+       JComboBox               combo_box;
+       AltosRecordIterable     iterable;
+       AltosWriter             writer;
+
+       static String[]         combo_box_items = { "Comma Separated Values (.CSV)", "Googleearth Data (.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.contains("CSV"))
+                       new_name = Altos.replace_extension(current_name, ".csv");
+               else if (selected.contains("KML"))
+                       new_name = Altos.replace_extension(current_name, ".kml");
+               if (new_name != null)
+                       csv_chooser.setSelectedFile(new File(new_name));
+       }
+
+       public void actionPerformed(ActionEvent e) {
+               if (e.getActionCommand().equals("comboBoxChanged"))
+                       set_default_file();
+       }
 
-       public void run() {
-               AltosLogfileChooser     chooser;
+       public AltosCSVUI(JFrame frame, AltosRecordIterable in_iterable, File source_file) {
+               iterable = in_iterable;
+               csv_chooser = new JFileChooser(source_file);
 
-               chooser = new AltosLogfileChooser(frame);
-               reader = chooser.runDialog();
-               if (reader == null)
-                       return;
-               JFileChooser    csv_chooser;
+               accessory = new JPanel();
+               accessory.setLayout(new GridBagLayout());
 
-               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);
+               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);
+
+               combo_box = new JComboBox(combo_box_items);
+               combo_box.addActionListener(this);
+               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) {
+                       File file = csv_chooser.getSelectedFile();
+                       String type = (String) combo_box.getSelectedItem();
                        try {
-                               writer = new AltosCSV(csv_chooser.getSelectedFile());
+                               if (type.contains("CSV"))
+                                       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);
                        }
-                       writer.write(reader);
-                       reader.close();
-                       writer.close();
                }
        }
-
-       public void actionPerformed(ActionEvent e) {
-       }
-
-       public AltosCSVUI(JFrame in_frame) {
-               frame = in_frame;
-               thread = new Thread(this);
-               thread.start();
-       }
 }