import java.util.prefs.*;
import altosui.AltosPreferences;
+import altosui.AltosReader;
+import altosui.AltosEepromReader;
+import altosui.AltosTelemetryReader;
public class AltosLogfileChooser extends JFileChooser {
JFrame frame;
+ String filename;
- public File runDialog() {
+ public String filename() {
+ return filename;
+ }
+
+ public AltosReader runDialog() {
int ret;
ret = showOpenDialog(frame);
- if (ret == APPROVE_OPTION)
- return getSelectedFile();
+ if (ret == APPROVE_OPTION) {
+ File file = getSelectedFile();
+ if (file == null)
+ return null;
+ filename = file.getName();
+ try {
+ FileInputStream in;
+
+ in = new FileInputStream(file);
+ if (filename.endsWith("eeprom"))
+ return new AltosEepromReader(in);
+ else
+ return new AltosTelemetryReader(in);
+ } catch (FileNotFoundException fe) {
+ JOptionPane.showMessageDialog(frame,
+ filename,
+ "Cannot open file",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ }
return null;
}
private void Replay() {
AltosLogfileChooser chooser = new AltosLogfileChooser(
AltosUI.this);
-
- File file = chooser.runDialog();
-
- if (file != null) {
- String filename = file.getName();
- try {
- FileInputStream replay = new FileInputStream(file);
- DisplayThread thread;
- if (filename.endsWith("eeprom"))
- thread = new ReplayEepromThread(replay, filename);
- else
- thread = new ReplayTelemetryThread(replay, filename);
- run_display(thread);
- } catch (FileNotFoundException ee) {
- JOptionPane.showMessageDialog(AltosUI.this,
- filename,
- "Cannot open telemetry file",
- JOptionPane.ERROR_MESSAGE);
- }
- }
+ AltosReader reader = chooser.runDialog();
+ if (reader != null)
+ run_display(new ReplayThread(reader,
+ chooser.filename()));
}
/* Connect to TeleMetrum, either directly or through