diff options
| author | Keith Packard <keithp@keithp.com> | 2010-11-19 17:14:17 +0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2010-11-19 17:15:35 +0800 | 
| commit | 8f72f08839346fb225238420324f0edcd070e531 (patch) | |
| tree | b6460e8d11ef9b8c7ed0586110d43d059b0ceeae | |
| parent | 24ffcf86c43290ce0f70fb4ee0984b3debdb8a5f (diff) | |
altosui: Unify datafile selection to AltosDataChooser
Instead of having several separate intefaces, use a single dialog for
selecting data files for graph/export/replay.
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | ao-tools/altosui/AltosCSVUI.java | 73 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosDataChooser.java (renamed from ao-tools/altosui/AltosLogfileChooser.java) | 21 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosGraphDataChooser.java | 79 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosGraphUI.java | 17 | ||||
| -rw-r--r-- | ao-tools/altosui/AltosUI.java | 17 | ||||
| -rw-r--r-- | ao-tools/altosui/Makefile.am | 3 | 
6 files changed, 72 insertions, 138 deletions
diff --git a/ao-tools/altosui/AltosCSVUI.java b/ao-tools/altosui/AltosCSVUI.java index 16f25338..e1b6002d 100644 --- a/ao-tools/altosui/AltosCSVUI.java +++ b/ao-tools/altosui/AltosCSVUI.java @@ -30,16 +30,15 @@ import java.util.concurrent.LinkedBlockingQueue;  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(); @@ -47,57 +46,63 @@ public class AltosCSVUI  		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(); -	}  } diff --git a/ao-tools/altosui/AltosLogfileChooser.java b/ao-tools/altosui/AltosDataChooser.java index 8b9d77d6..15de05c2 100644 --- a/ao-tools/altosui/AltosLogfileChooser.java +++ b/ao-tools/altosui/AltosDataChooser.java @@ -27,7 +27,7 @@ import java.util.*;  import java.text.*;  import java.util.prefs.*; -public class AltosLogfileChooser extends JFileChooser { +public class AltosDataChooser extends JFileChooser {  	JFrame	frame;  	String	filename;  	File	file; @@ -50,13 +50,15 @@ public class AltosLogfileChooser extends JFileChooser {  				return null;  			filename = file.getName();  			try { -				FileInputStream in; - -				in = new FileInputStream(file); -				if (filename.endsWith("eeprom")) +				if (filename.endsWith("eeprom")) { +					FileInputStream in = new FileInputStream(file);  					return new AltosEepromIterable(in); -				else +				} 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, @@ -67,12 +69,11 @@ public class AltosLogfileChooser extends JFileChooser {  		return null;  	} -	public AltosLogfileChooser(JFrame in_frame) { +	public AltosDataChooser(JFrame in_frame) {  		frame = in_frame;  		setDialogTitle("Select Flight Record File");  		setFileFilter(new FileNameExtensionFilter("Flight data file", -							  "eeprom", -							  "telem")); +							  "telem", "eeprom"));  		setCurrentDirectory(AltosPreferences.logdir());  	} -}
\ No newline at end of file +} diff --git a/ao-tools/altosui/AltosGraphDataChooser.java b/ao-tools/altosui/AltosGraphDataChooser.java deleted file mode 100644 index d128f4d5..00000000 --- a/ao-tools/altosui/AltosGraphDataChooser.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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()); -	} -} diff --git a/ao-tools/altosui/AltosGraphUI.java b/ao-tools/altosui/AltosGraphUI.java index 908aa3b4..cd158651 100644 --- a/ao-tools/altosui/AltosGraphUI.java +++ b/ao-tools/altosui/AltosGraphUI.java @@ -151,18 +151,15 @@ public class AltosGraphUI extends JFrame          }      } -    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)       { diff --git a/ao-tools/altosui/AltosUI.java b/ao-tools/altosui/AltosUI.java index 5e9566f0..c82c8e8a 100644 --- a/ao-tools/altosui/AltosUI.java +++ b/ao-tools/altosui/AltosUI.java @@ -230,8 +230,9 @@ public class AltosUI extends JFrame {  	 * 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(), @@ -252,14 +253,24 @@ public class AltosUI extends JFrame {  	 */  	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() { diff --git a/ao-tools/altosui/Makefile.am b/ao-tools/altosui/Makefile.am index 25977b12..a603ca8a 100644 --- a/ao-tools/altosui/Makefile.am +++ b/ao-tools/altosui/Makefile.am @@ -48,7 +48,6 @@ altosui_JAVA = \  	AltosLed.java \  	AltosLights.java \  	AltosLine.java \ -	AltosLogfileChooser.java \  	AltosLog.java \  	AltosPad.java \  	AltosParse.java \ @@ -73,7 +72,7 @@ altosui_JAVA = \  	AltosGraph.java \  	AltosGraphTime.java \  	AltosGraphUI.java \ -	AltosGraphDataChooser.java \ +	AltosDataChooser.java \  	AltosVoice.java  JFREECHART_CLASS= \  | 
