import java.util.prefs.*;
import java.util.concurrent.LinkedBlockingQueue;
-import altosui.AltosHexfile;
-import altosui.AltosFlash;
-
public class AltosFlashUI
extends JDialog
implements Runnable, ActionListener
}
public void run() {
- flash = new AltosFlash(file, debug_dongle);
- flash.addActionListener(this);
try {
- flash.open();
+ flash = new AltosFlash(file, debug_dongle);
+ flash.addActionListener(this);
AltosRomconfigUI romconfig_ui = new AltosRomconfigUI (frame);
romconfig_ui.set(flash.romconfig());
- romconfig_ui.showDialog();
-
- AltosRomconfig romconfig = romconfig_ui.romconfig();
- if (romconfig == null || !romconfig.valid())
- return;
- flash.set_romconfig(romconfig);
- serial_value.setText(String.format("%d",
- flash.romconfig().serial_number));
- file_value.setText(file.toString());
- setVisible(true);
- flash.flash();
+ AltosRomconfig romconfig = romconfig_ui.showDialog();
+
+ if (romconfig != null && romconfig.valid()) {
+ flash.set_romconfig(romconfig);
+ serial_value.setText(String.format("%d",
+ flash.romconfig().serial_number));
+ file_value.setText(file.toString());
+ setVisible(true);
+ flash.flash();
+ flash = null;
+ }
} catch (FileNotFoundException ee) {
JOptionPane.showMessageDialog(frame,
"Cannot open image",
file.toString(),
JOptionPane.ERROR_MESSAGE);
+ } catch (AltosSerialInUseException si) {
+ JOptionPane.showMessageDialog(frame,
+ String.format("Device \"%s\" already in use",
+ debug_dongle.toShortString()),
+ "Device in use",
+ JOptionPane.ERROR_MESSAGE);
} catch (IOException e) {
JOptionPane.showMessageDialog(frame,
e.getMessage(),
file.toString(),
JOptionPane.ERROR_MESSAGE);
} catch (InterruptedException ie) {
+ } finally {
+ abort();
}
dispose();
}
build_dialog();
- debug_dongle = AltosDeviceDialog.show(frame, AltosDevice.Any);
+ debug_dongle = AltosDeviceDialog.show(frame, AltosDevice.product_any);
if (debug_dongle == null)
return;
JFileChooser hexfile_chooser = new JFileChooser();
+ File firmwaredir = AltosPreferences.firmwaredir();
+ if (firmwaredir != null)
+ hexfile_chooser.setCurrentDirectory(firmwaredir);
+
hexfile_chooser.setDialogTitle("Select Flash Image");
hexfile_chooser.setFileFilter(new FileNameExtensionFilter("Flash Image", "ihx"));
int returnVal = hexfile_chooser.showOpenDialog(frame);
file = hexfile_chooser.getSelectedFile();
+ if (file != null)
+ AltosPreferences.set_firmwaredir(file.getParentFile());
+
thread = new Thread(this);
thread.start();
}