diff options
| -rw-r--r-- | altoslib/AltosConfigData.java | 2 | ||||
| -rw-r--r-- | altoslib/AltosConfigValues.java | 2 | ||||
| -rw-r--r-- | altoslib/Makefile.am | 1 | ||||
| -rw-r--r-- | altosui/AltosConfig.java | 14 | ||||
| -rw-r--r-- | altosui/AltosConfigPyroUI.java | 31 | ||||
| -rw-r--r-- | altosui/AltosConfigUI.java | 2 | 
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;  | 
