diff options
Diffstat (limited to 'micropeak')
| -rw-r--r-- | micropeak/Makefile.am | 1 | ||||
| -rw-r--r-- | micropeak/MicroFileChooser.java | 65 | ||||
| -rw-r--r-- | micropeak/MicroGraph.java | 19 | ||||
| -rw-r--r-- | micropeak/MicroPeak.java | 57 | 
4 files changed, 111 insertions, 31 deletions
| diff --git a/micropeak/Makefile.am b/micropeak/Makefile.am index a3ecac72..32be9070 100644 --- a/micropeak/Makefile.am +++ b/micropeak/Makefile.am @@ -12,6 +12,7 @@ micropeak_JAVA= \  	MicroData.java \  	MicroGraph.java \  	MicroSerial.java \ +	MicroFileChooser.java \  	MicroUSB.java  JFREECHART_CLASS= \ diff --git a/micropeak/MicroFileChooser.java b/micropeak/MicroFileChooser.java new file mode 100644 index 00000000..0fd63a27 --- /dev/null +++ b/micropeak/MicroFileChooser.java @@ -0,0 +1,65 @@ +/* + * Copyright © 2012 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 org.altusmetrum.micropeak; + +import javax.swing.*; +import javax.swing.filechooser.FileNameExtensionFilter; +import java.io.*; +import org.altusmetrum.AltosLib.*; + +public class MicroFileChooser extends JFileChooser { +	JFrame	frame; +	String	filename; +	File	file; + +	public String filename() { +		return filename; +	} + +	public File file() { +		return file; +	} + +	public InputStream runDialog() { +		int	ret; + +		ret = showOpenDialog(frame); +		if (ret == APPROVE_OPTION) { +			file = getSelectedFile(); +			if (file == null) +				return null; +			filename = file.getName(); +			try { +				return new FileInputStream(file); +			} catch (FileNotFoundException fe) { +				JOptionPane.showMessageDialog(frame, +							      fe.getMessage(), +							      "Cannot open file", +							      JOptionPane.ERROR_MESSAGE); +			} +		} +		return null; +	} + +	public MicroFileChooser(JFrame in_frame) { +		frame = in_frame; +		setDialogTitle("Select MicroPeak Data File"); +		setFileFilter(new FileNameExtensionFilter("MicroPeak data file", +							  "mpd")); +	} +} diff --git a/micropeak/MicroGraph.java b/micropeak/MicroGraph.java index aac14b9a..9192cad9 100644 --- a/micropeak/MicroGraph.java +++ b/micropeak/MicroGraph.java @@ -65,6 +65,18 @@ public class MicroGraph {  		plot.mapDatasetToRangeAxis(index, index);  	} +	public void setData (MicroData data) { +		heightSeries.clear(); +		speedSeries.clear(); +		accelSeries.clear(); +		for (int i = 0; i < data.pressures.length; i++) { +			double x = data.time(i); +			heightSeries.add(x, data.height(i)); +			speedSeries.add(x, data.speed(i)); +			accelSeries.add(x, data.acceleration(i)); +		} +	} +  	public MicroGraph(MicroData data) {  		this.data = data; @@ -73,13 +85,6 @@ public class MicroGraph {  		speedSeries = new XYSeries("Speed");  		accelSeries = new XYSeries("Acceleration"); -		for (int i = 0; i < data.pressures.length; i++) { -			double x = data.time(i); -			heightSeries.add(x, data.height(i)); -			speedSeries.add(x, data.speed(i)); -			accelSeries.add(x, data.acceleration(i)); -		} -  		xAxis = new NumberAxis("Time (s)");  		xAxis.setAutoRangeIncludesZero(true); diff --git a/micropeak/MicroPeak.java b/micropeak/MicroPeak.java index 82d926fb..cd09c475 100644 --- a/micropeak/MicroPeak.java +++ b/micropeak/MicroPeak.java @@ -32,24 +32,31 @@ public class MicroPeak extends JFrame implements ActionListener, ItemListener {  	MicroData	data;  	Container	pane; +	private void RunFile(InputStream input) { +		try { +			data = new MicroData(input); +			graph.setData(data); +		} catch (IOException ioe) { +		} +		try { +			input.close(); +		} catch (IOException ioe) { +		} +	} +  	private void OpenFile(File filename) {  		try { -			FileInputStream	input = new FileInputStream(filename); -			try { -				data = new MicroData(input); -				graph = new MicroGraph(data); -				pane.add(graph.panel); -			} catch (IOException ioe) { -			} -			try { -				input.close(); -			} catch (IOException ioe) { -			} +			RunFile (new FileInputStream(filename));  		} catch (FileNotFoundException fne) {  		}  	}  	private void SelectFile() { +		MicroFileChooser	chooser = new MicroFileChooser(this); +		InputStream		input = chooser.runDialog(); + +		if (input != null) +			RunFile(input);  	}  	private void DownloadData() { @@ -73,17 +80,12 @@ public class MicroPeak extends JFrame implements ActionListener, ItemListener {  	public void itemStateChanged(ItemEvent e) {  	} -	public MicroPeak(File filename) { +	public MicroPeak() {  		this.filename = filename;  		pane = getContentPane(); -//		JLabel label = new JLabel ("Hello, World"); -//		pane.add(label); - -		setSize(800, 500); -  		setTitle("MicroPeak");  		JMenuBar menuBar = new JMenuBar(); @@ -116,20 +118,27 @@ public class MicroPeak extends JFrame implements ActionListener, ItemListener {  			}  		}); -		if (filename != null) -			this.OpenFile(filename); +		graph = new MicroGraph(data); +		pane.add(graph.panel); +		pane.doLayout(); +		pane.validate(); +		doLayout(); +		validate(); +		Insets i = getInsets(); +		Dimension ps = pane.getPreferredSize(); +		ps.width += i.left + i.right; +		ps.height += i.top + i.bottom; +		setPreferredSize(ps); +		setSize(ps);  		setVisible(true);  	} -	public MicroPeak() { -		this(null); -	} -  	public static void main(final String[] args) {  		boolean	opened = false;  		for (int i = 0; i < args.length; i++) { -			new MicroPeak(new File(args[i])); +			MicroPeak m = new MicroPeak(); +			m.OpenFile(new File(args[i]));  			opened = true;  		}  		if (!opened) | 
