summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--altoslib/AltosConfigData.java2
-rw-r--r--altoslib/AltosConfigValues.java2
-rw-r--r--altoslib/Makefile.am1
-rw-r--r--altosui/AltosConfig.java14
-rw-r--r--altosui/AltosConfigPyroUI.java31
-rw-r--r--altosui/AltosConfigUI.java2
6 files changed, 37 insertions, 15 deletions
diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java
index 83c184cd..2f36e215 100644
--- a/altoslib/AltosConfigData.java
+++ b/altoslib/AltosConfigData.java
@@ -403,7 +403,7 @@ public class AltosConfigData implements Iterable<String> {
return 1024;
}
- public void get_values(AltosConfigValues source) {
+ public void get_values(AltosConfigValues source) throws AltosConfigDataException {
/* HAS_FLIGHT */
if (main_deploy >= 0)
diff --git a/altoslib/AltosConfigValues.java b/altoslib/AltosConfigValues.java
index 37af2ed5..6ca1f5c6 100644
--- a/altoslib/AltosConfigValues.java
+++ b/altoslib/AltosConfigValues.java
@@ -71,7 +71,7 @@ public interface AltosConfigValues {
public abstract void set_pyros(AltosPyro[] new_pyros);
- public abstract AltosPyro[] pyros();
+ public abstract AltosPyro[] pyros() throws AltosConfigDataException;
public abstract int aprs_interval();
diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am
index bff09704..0f1d7a47 100644
--- a/altoslib/Makefile.am
+++ b/altoslib/Makefile.am
@@ -28,6 +28,7 @@ altoslib_JAVA = \
AltosLib.java \
AltosCompanion.java \
AltosConfigData.java \
+ AltosConfigDataException.java \
AltosConfigValues.java \
AltosConvert.java \
AltosCRCException.java \
diff --git a/altosui/AltosConfig.java b/altosui/AltosConfig.java
index 3128114f..2cf69525 100644
--- a/altosui/AltosConfig.java
+++ b/altosui/AltosConfig.java
@@ -242,9 +242,15 @@ public class AltosConfig implements ActionListener {
/* Pull data out of the UI and stuff back into our local data record */
- data.get_values(config_ui);
-
- run_serial_thread(serial_mode_save);
+ try {
+ data.get_values(config_ui);
+ run_serial_thread(serial_mode_save);
+ } catch (AltosConfigDataException ae) {
+ JOptionPane.showMessageDialog(owner,
+ ae.getMessage(),
+ "Configuration Data Error",
+ JOptionPane.ERROR_MESSAGE);
+ }
}
public void actionPerformed(ActionEvent e) {
@@ -298,4 +304,4 @@ public class AltosConfig implements ActionListener {
}
}
}
-} \ No newline at end of file
+}
diff --git a/altosui/AltosConfigPyroUI.java b/altosui/AltosConfigPyroUI.java
index 6cbac316..7a298a3c 100644
--- a/altosui/AltosConfigPyroUI.java
+++ b/altosui/AltosConfigPyroUI.java
@@ -124,12 +124,16 @@ public class AltosConfigPyroUI
return enable.isSelected();
}
- public double value() {
+ public double value() throws AltosConfigDataException {
if (value != null) {
AltosUnits units = AltosPyro.pyro_to_units(flag);
- if (units != null)
- return units.parse(value.getText());
- return Double.parseDouble(value.getText());
+ try {
+ if (units != null)
+ return units.parse(value.getText());
+ return Double.parseDouble(value.getText());
+ } catch (NumberFormatException e) {
+ throw new AltosConfigDataException("\"%s\": %s\n", value.getText(), e.getMessage());
+ }
}
if (combo != null)
return combo.getSelectedIndex() + AltosLib.ao_flight_boost;
@@ -189,15 +193,21 @@ public class AltosConfigPyroUI
}
}
- public AltosPyro get() {
+ public AltosPyro get() throws AltosConfigDataException {
AltosPyro p = new AltosPyro(channel);
int row = 0;
for (int flag = 1; flag < AltosPyro.pyro_all; flag <<= 1) {
if ((AltosPyro.pyro_all & flag) != 0) {
if (items[row].enabled()) {
+ try {
p.flags |= flag;
p.set_value(flag, items[row].value());
+ } catch (AltosConfigDataException ae) {
+ throw new AltosConfigDataException("%s, %s",
+ AltosPyro.pyro_to_name(flag),
+ ae.getMessage());
+ }
}
row++;
}
@@ -256,10 +266,15 @@ public class AltosConfigPyroUI
}
}
- public AltosPyro[] get_pyros() {
+ public AltosPyro[] get_pyros() throws AltosConfigDataException {
AltosPyro[] pyros = new AltosPyro[columns.length];
- for (int c = 0; c < columns.length; c++)
- pyros[c] = columns[c].get();
+ for (int c = 0; c < columns.length; c++) {
+ try {
+ pyros[c] = columns[c].get();
+ } catch (AltosConfigDataException ae) {
+ throw new AltosConfigDataException ("Channel %c, %s", c + 'A', ae.getMessage());
+ }
+ }
return pyros;
}
diff --git a/altosui/AltosConfigUI.java b/altosui/AltosConfigUI.java
index 2a9d727d..bcb3e12c 100644
--- a/altosui/AltosConfigUI.java
+++ b/altosui/AltosConfigUI.java
@@ -1147,7 +1147,7 @@ public class AltosConfigUI
pyro_ui.set_pyros(pyros);
}
- public AltosPyro[] pyros() {
+ public AltosPyro[] pyros() throws AltosConfigDataException {
if (pyro_ui != null)
pyros = pyro_ui.get_pyros();
return pyros;