public class AltosCSVUI
extends JDialog
- implements Runnable, ActionListener
+ implements ActionListener
{
- JFrame frame;
- Thread thread;
- AltosRecordIterable iterable;
- AltosWriter writer;
JFileChooser csv_chooser;
+ JPanel accessory;
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();
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");
- 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));
}
- 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);
- 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) {
- File file = csv_chooser.getSelectedFile();
- String type = (String) combo_box.getSelectedItem();
+ File file = csv_chooser.getSelectedFile();
+ String type = (String) combo_box.getSelectedItem();
try {
- if (type.equals("CSV"))
+ 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(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();
- }
}
--- /dev/null
+/*
+ * 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());
+ }
+}
+++ /dev/null
-/*
- * 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());
- }
-}
}
}
- 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)
{
+++ /dev/null
-/*
- * 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
* Replay a flight from telemetry data
*/
private void Replay() {
- AltosLogfileChooser chooser = new AltosLogfileChooser(
+ AltosDataChooser chooser = new AltosDataChooser(
AltosUI.this);
+
AltosRecordIterable iterable = chooser.runDialog();
if (iterable != null) {
AltosFlightReader reader = new AltosReplayReader(iterable.iterator(),
*/
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() {
- 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() {
AltosLed.java \
AltosLights.java \
AltosLine.java \
- AltosLogfileChooser.java \
AltosLog.java \
AltosPad.java \
AltosParse.java \
AltosGraph.java \
AltosGraphTime.java \
AltosGraphUI.java \
- AltosGraphDataChooser.java \
+ AltosDataChooser.java \
AltosVoice.java
JFREECHART_CLASS= \