import java.util.concurrent.*;
import java.util.*;
import org.altusmetrum.AltosLib.*;
+import org.altusmetrum.altosuilib.*;
-public class MicroPeak extends JFrame implements ActionListener, ItemListener {
+public class MicroPeak extends MicroFrame implements ActionListener, ItemListener {
File filename;
MicroGraph graph;
+ MicroStatsTable stats;
+ MicroRaw raw;
MicroData data;
- Container pane;
+ Container container;
+ JTabbedPane pane;
+ static int number_of_windows;
+
+ MicroPeak SetData(MicroData data) {
+ MicroPeak mp = this;
+ if (this.data != null) {
+ mp = new MicroPeak();
+ return mp.SetData(data);
+ }
+ this.data = data;
+ graph.setData(data);
+ stats.setData(data);
+ raw.setData(data);
+ setTitle(data.name);
+ return this;
+ }
+
+ void SetName(String name) {
+ graph.setName(name);
+ setTitle(name);
+ }
- private void RunFile(InputStream input) {
+ private void RunFile(InputStream input, String name) {
try {
- data = new MicroData(input);
- graph.setData(data);
+ MicroData data = new MicroData(input, name);
+ SetData(data);
} catch (IOException ioe) {
+ JOptionPane.showMessageDialog(this,
+ ioe.getMessage(),
+ "File Read Error",
+ JOptionPane.ERROR_MESSAGE);
+ } catch (InterruptedException ie) {
}
try {
input.close();
private void OpenFile(File filename) {
try {
- RunFile (new FileInputStream(filename));
+ RunFile (new FileInputStream(filename), filename.getName());
} catch (FileNotFoundException fne) {
+ JOptionPane.showMessageDialog(this,
+ fne.getMessage(),
+ "Cannot open file",
+ JOptionPane.ERROR_MESSAGE);
}
}
InputStream input = chooser.runDialog();
if (input != null)
- RunFile(input);
+ RunFile(input, chooser.filename);
+ }
+
+ private void Preferences() {
+ new AltosUIConfigure(this);
}
private void DownloadData() {
- java.util.List<MicroUSB> devices = MicroUSB.list();
- for (MicroUSB device : devices)
- System.out.printf("device %s\n", device.toString());
+ AltosDevice device = MicroDeviceDialog.show(this);
+
+ if (device != null)
+ new MicroDownload(this, device);
+ }
+
+ 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);
+ if (save.runDialog())
+ SetName(data.name);
+ }
+
+ private void Export() {
+ if (data == null) {
+ no_data();
+ return;
+ }
+ MicroExport export = new MicroExport (this, data);
+ export.runDialog();
+ }
+
+ private void Close() {
+ setVisible(false);
+ dispose();
+ --number_of_windows;
+ if (number_of_windows == 0)
+ System.exit(0);
}
public void actionPerformed(ActionEvent ev) {
- System.out.printf("action %s %s\n", ev.getActionCommand(), ev.paramString());
if ("Exit".equals(ev.getActionCommand()))
System.exit(0);
+ else if ("Close".equals(ev.getActionCommand()))
+ Close();
else if ("Open".equals(ev.getActionCommand()))
SelectFile();
- else if ("New".equals(ev.getActionCommand()))
- new MicroPeak();
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()))
+ Save();
}
public void itemStateChanged(ItemEvent e) {
public MicroPeak() {
- this.filename = filename;
+ ++number_of_windows;
- pane = getContentPane();
+ AltosUIPreferences.set_component(this);
+
+ container = getContentPane();
+ pane = new JTabbedPane();
setTitle("MicroPeak");
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
- JMenuItem newAction = new JMenuItem("New");
- fileMenu.add(newAction);
- newAction.addActionListener(this);
-
JMenuItem openAction = new JMenuItem("Open");
fileMenu.add(openAction);
openAction.addActionListener(this);
fileMenu.add(downloadAction);
downloadAction.addActionListener(this);
+ JMenuItem saveAction = new JMenuItem("Save a Copy");
+ 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);
+
+ JMenuItem closeAction = new JMenuItem("Close");
+ fileMenu.add(closeAction);
+ closeAction.addActionListener(this);
+
JMenuItem exitAction = new JMenuItem("Exit");
fileMenu.add(exitAction);
exitAction.addActionListener(this);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
- System.exit(0);
+ Close();
}
});
- graph = new MicroGraph(data);
- pane.add(graph.panel);
+ graph = new MicroGraph();
+ stats = new MicroStatsTable();
+ raw = new MicroRaw();
+ pane.add(graph.panel, "Graph");
+ pane.add(stats, "Statistics");
+ JScrollPane scroll = new JScrollPane(raw);
+ pane.add(scroll, "Raw Data");
pane.doLayout();
pane.validate();
+ container.add(pane);
+ container.doLayout();
+ container.validate();
doLayout();
validate();
Insets i = getInsets();
Dimension ps = pane.getPreferredSize();
ps.width += i.left + i.right;
ps.height += i.top + i.bottom;
- setPreferredSize(ps);
+// setPreferredSize(ps);
setSize(ps);
+ setLocationByPlatform(true);
setVisible(true);
}
public static void main(final String[] args) {
boolean opened = false;
+ try {
+ UIManager.setLookAndFeel(AltosUIPreferences.look_and_feel());
+ } catch (Exception e) {
+ }
+
for (int i = 0; i < args.length; i++) {
MicroPeak m = new MicroPeak();
m.OpenFile(new File(args[i]));