docs: Document altosui "Graph Data" button
[fw/altos] / ao-tools / altosui / AltosRomconfigUI.java
index 21c34ef442546bd2bea560c593e87c55ce1d1a62..e1dc974e67ac4e520b0a0cf89594bf4ac926a243 100644 (file)
@@ -28,8 +28,6 @@ import java.util.*;
 import java.text.*;
 import java.util.prefs.*;
 
-import altosui.AltosRomconfig;
-
 public class AltosRomconfigUI
        extends JDialog
        implements ActionListener
@@ -134,8 +132,17 @@ public class AltosRomconfigUI
        public void actionPerformed(ActionEvent e) {
                String  cmd = e.getActionCommand();
 
-               if (cmd.equals("ok"))
+               if (cmd.equals("ok")) {
+                       AltosRomconfig  romconfig = romconfig();
+                       if (romconfig == null || !romconfig.valid()) {
+                               JOptionPane.showMessageDialog(this,
+                                                             "Invalid serial number or radio calibration value",
+                                                             "Invalid rom configuration",
+                                                             JOptionPane.ERROR_MESSAGE);
+                               return;
+                       }
                        selected = true;
+               }
                setVisible(false);
        }
 
@@ -143,12 +150,31 @@ public class AltosRomconfigUI
                return Integer.parseInt(serial_value.getText());
        }
 
+       void set_serial(int serial) {
+               serial_value.setText(String.format("%d", serial));
+       }
+
        int radio_calibration() {
                return Integer.parseInt(radio_calibration_value.getText());
        }
 
-       public AltosRomconfig romconfig() {
-               return new AltosRomconfig(serial(), radio_calibration());
+       void set_radio_calibration(int calibration) {
+               radio_calibration_value.setText(String.format("%d", calibration));
+       }
+
+       public void set(AltosRomconfig config) {
+               if (config != null && config.valid()) {
+                       set_serial(config.serial_number);
+                       set_radio_calibration(config.radio_calibration);
+               }
+       }
+
+       AltosRomconfig romconfig() {
+               try {
+                       return new AltosRomconfig(serial(), radio_calibration());
+               } catch (NumberFormatException ne) {
+                       return null;
+               }
        }
 
        public AltosRomconfig showDialog() {