import java.util.prefs.*;
import java.util.concurrent.LinkedBlockingQueue;
-import altosui.AltosHexfile;
-import altosui.AltosFlash;
-
public class AltosFlashUI
extends JDialog
implements Runnable, ActionListener
} else {
String cmd = e.getActionCommand();
if (cmd.equals("done"))
- dispose();
- else {
+ ;
+ else if (cmd.equals("start")) {
+ setVisible(true);
+ } else {
pbar.setValue(e.getID());
pbar.setString(cmd);
}
}
public void run() {
- flash = new AltosFlash(file, debug_dongle);
- flash.addActionListener(this);
try {
- flash.open();
- if (!flash.check_rom_config()) {
- AltosRomconfigUI romconfig_ui = new AltosRomconfigUI (frame);
- romconfig_ui.showDialog();
- AltosRomconfig romconfig = romconfig_ui.romconfig();
- if (romconfig == null)
- return;
+ flash = new AltosFlash(file, debug_dongle);
+ flash.addActionListener(this);
+ AltosRomconfigUI romconfig_ui = new AltosRomconfigUI (frame);
+
+ romconfig_ui.set(flash.romconfig());
+ 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;
}
- serial_value.setText(String.format("%d",
- flash.romconfig().serial_number));
- file_value.setText(file.toString());
- setVisible(true);
- flash.flash();
} catch (FileNotFoundException ee) {
JOptionPane.showMessageDialog(frame,
"Cannot open image",
file.toString(),
JOptionPane.ERROR_MESSAGE);
- return;
+ } catch (AltosSerialInUseException si) {
+ JOptionPane.showMessageDialog(frame,
+ String.format("Device \"%s\" already in use",
+ debug_dongle.getPath()),
+ "Device in use",
+ JOptionPane.ERROR_MESSAGE);
} catch (IOException e) {
JOptionPane.showMessageDialog(frame,
e.getMessage(),
file.toString(),
JOptionPane.ERROR_MESSAGE);
- return;
} catch (InterruptedException ie) {
+ } finally {
+ abort();
}
+ dispose();
}
public void abort() {
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();
}