import java.io.*;
import java.util.concurrent.*;
import java.util.*;
-import org.altusmetrum.AltosLib.*;
-import org.altusmetrum.altosuilib.*;
+import org.altusmetrum.altoslib_1.*;
+import org.altusmetrum.altosuilib_1.*;
public class MicroPeak extends MicroFrame implements ActionListener, ItemListener {
File filename;
MicroGraph graph;
- MicroStatsTable stats;
+ AltosUIEnable enable;
+ MicroStatsTable statsTable;
+ MicroRaw raw;
MicroData data;
+ MicroStats stats;
Container container;
JTabbedPane pane;
static int number_of_windows;
return mp.SetData(data);
}
this.data = data;
- graph.setData(data);
- stats.setData(data);
+ stats = new MicroStats(data);
+ graph.setDataSet(data);
+ statsTable.setStats(stats);
+ raw.setData(data);
setTitle(data.name);
return this;
}
setTitle(name);
}
- private void RunFile(InputStream input, String name) {
+ private static MicroData ReadFile(File filename) throws IOException, FileNotFoundException {
+ MicroData data = null;
+ FileInputStream fis = new FileInputStream(filename);
try {
- MicroData data = new MicroData(input, name);
- SetData(data);
- } catch (IOException ioe) {
- JOptionPane.showMessageDialog(this,
- ioe.getMessage(),
- "File Read Error",
- JOptionPane.ERROR_MESSAGE);
+ data = new MicroData((InputStream) fis, filename.getName());
} catch (InterruptedException ie) {
+ data = null;
+ } finally {
+ fis.close();
}
- try {
- input.close();
- } catch (IOException ioe) {
- }
+ return data;
}
private void OpenFile(File filename) {
try {
- RunFile (new FileInputStream(filename), filename.getName());
+ SetData(ReadFile(filename));
} catch (FileNotFoundException fne) {
JOptionPane.showMessageDialog(this,
fne.getMessage(),
"Cannot open file",
JOptionPane.ERROR_MESSAGE);
+ } catch (IOException ioe) {
+ JOptionPane.showMessageDialog(this,
+ ioe.getMessage(),
+ "File Read Error",
+ JOptionPane.ERROR_MESSAGE);
}
}
private void SelectFile() {
MicroFileChooser chooser = new MicroFileChooser(this);
- InputStream input = chooser.runDialog();
+ File file = chooser.runDialog();
- if (input != null)
- RunFile(input, chooser.filename);
+ if (file != null)
+ OpenFile(file);
}
private void Preferences() {
new MicroDownload(this, device);
}
- private void Save() {
- if (data == null) {
+ private void no_data() {
JOptionPane.showMessageDialog(this,
"No data available",
"No data",
JOptionPane.INFORMATION_MESSAGE);
+ }
+
+ private void Save() {
+ if (data == null) {
+ no_data();
return;
}
MicroSave save = new MicroSave (this, data);
SetName(data.name);
}
+ private void Export() {
+ if (data == null) {
+ no_data();
+ return;
+ }
+ MicroExport export = new MicroExport (this, data);
+ export.runDialog();
+ }
+
+ private static void CommandGraph(File file) {
+ MicroPeak m = new MicroPeak();
+ m.OpenFile(file);
+ }
+
+ private static void CommandExport(File file) {
+ try {
+ MicroData d = ReadFile(file);
+ if (d != null) {
+ File csv = new File(AltosLib.replace_extension(file.getPath(), ".csv"));
+ try {
+ System.out.printf ("Export \"%s\" to \"%s\"\n", file.getPath(), csv.getPath());
+ MicroExport.export(csv, d);
+ } catch (FileNotFoundException fe) {
+ System.err.printf("Cannot create file \"%s\" (%s)\n", csv.getName(), fe.getMessage());
+ } catch (IOException ie) {
+ System.err.printf("Cannot write file \"%s\" (%s)\n", csv.getName(), ie.getMessage());
+ }
+ }
+ } catch (IOException ie) {
+ System.err.printf("Cannot read file \"%s\" (%s)\n", file.getName(), ie.getMessage());
+ }
+ }
+
private void Close() {
setVisible(false);
dispose();
SelectFile();
else if ("Download".equals(ev.getActionCommand()))
DownloadData();
+ else if ("Export".equals(ev.getActionCommand()))
+ Export();
else if ("Preferences".equals(ev.getActionCommand()))
Preferences();
else if ("Save a Copy".equals(ev.getActionCommand()))
fileMenu.add(saveAction);
saveAction.addActionListener(this);
+ JMenuItem exportAction = new JMenuItem("Export");
+ fileMenu.add(exportAction);
+ exportAction.addActionListener(this);
+
JMenuItem preferencesAction = new JMenuItem("Preferences");
fileMenu.add(preferencesAction);
preferencesAction.addActionListener(this);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
+ statsTable.tell_closing();
Close();
}
});
- graph = new MicroGraph();
- stats = new MicroStatsTable();
+ enable = new AltosUIEnable();
+ graph = new MicroGraph(enable);
+ statsTable = new MicroStatsTable();
+ raw = new MicroRaw();
pane.add(graph.panel, "Graph");
- pane.add(stats, "Statistics");
+ pane.add(enable, "Configure Graph");
+ pane.add(statsTable, "Statistics");
+ JScrollPane scroll = new JScrollPane(raw);
+ pane.add(scroll, "Raw Data");
pane.doLayout();
pane.validate();
container.add(pane);
ps.height += i.top + i.bottom;
// setPreferredSize(ps);
setSize(ps);
- setLocationByPlatform(true);
setVisible(true);
}
+ public static void help(int code) {
+ System.out.printf("Usage: micropeak [OPTION] ... [FILE]...\n");
+ System.out.printf(" Options:\n");
+ System.out.printf(" --csv\tgenerate comma separated output for spreadsheets, etc\n");
+ System.out.printf(" --graph\tgraph a flight\n");
+ System.exit(code);
+ }
+
public static void main(final String[] args) {
boolean opened = false;
+ boolean graphing = true;
try {
UIManager.setLookAndFeel(AltosUIPreferences.look_and_feel());
}
for (int i = 0; i < args.length; i++) {
- MicroPeak m = new MicroPeak();
- m.OpenFile(new File(args[i]));
- opened = true;
+ if (args[i].equals("--help"))
+ help(0);
+ else if (args[i].equals("--export"))
+ graphing = false;
+ else if (args[i].equals("--graph"))
+ graphing = true;
+ else if (args[i].startsWith("--"))
+ help(1);
+ else {
+ File file = new File(args[i]);
+ try {
+ if (graphing)
+ CommandGraph(file);
+ else
+ CommandExport(file);
+ opened = true;
+ } catch (Exception e) {
+ System.err.printf("Error processing \"%s\": %s\n",
+ file.getName(), e.getMessage());
+ }
+ }
}
if (!opened)
new MicroPeak();
}
-}
\ No newline at end of file
+}