diff options
| -rw-r--r-- | altoslib/AltosConvert.java | 4 | ||||
| -rw-r--r-- | altoslib/AltosHeight.java | 7 | ||||
| -rw-r--r-- | altosui/AltosConfigUI.java | 48 | 
3 files changed, 53 insertions, 6 deletions
| diff --git a/altoslib/AltosConvert.java b/altoslib/AltosConvert.java index a42b36c4..8cd478e2 100644 --- a/altoslib/AltosConvert.java +++ b/altoslib/AltosConvert.java @@ -242,6 +242,10 @@ public class AltosConvert {  		return meters * (100 / (2.54 * 12));  	} +	public static double feet_to_meters(double feet) { +		return feet * 12 * 2.54 / 100.0; +	} +  	public static double meters_to_miles(double meters) {  		return meters_to_feet(meters) / 5280;  	} diff --git a/altoslib/AltosHeight.java b/altoslib/AltosHeight.java index ed590812..96f5722b 100644 --- a/altoslib/AltosHeight.java +++ b/altoslib/AltosHeight.java @@ -25,6 +25,13 @@ public class AltosHeight extends AltosUnits {  		return v;  	} +	public double parse(String s) throws NumberFormatException { +		double	v = Double.parseDouble(s); +		if (AltosConvert.imperial_units) +			v = AltosConvert.feet_to_meters(v); +		return v; +	} +  	public String show_units() {  		if (AltosConvert.imperial_units)  			return "ft"; diff --git a/altosui/AltosConfigUI.java b/altosui/AltosConfigUI.java index 11f40593..9723e660 100644 --- a/altosui/AltosConfigUI.java +++ b/altosui/AltosConfigUI.java @@ -26,7 +26,7 @@ import org.altusmetrum.altosuilib_1.*;  public class AltosConfigUI  	extends AltosUIDialog -	implements ActionListener, ItemListener, DocumentListener, AltosConfigValues +	implements ActionListener, ItemListener, DocumentListener, AltosConfigValues, AltosUnitsListener  {  	Container	pane; @@ -75,11 +75,16 @@ public class AltosConfigUI  	ActionListener	listener; -	static String[] main_deploy_values = { +	static String[] main_deploy_values_m = {  		"100", "150", "200", "250", "300", "350",  		"400", "450", "500"  	}; +	static String[] main_deploy_values_ft = { +		"250", "500", "750", "1000", "1250", "1500", +		"1750", "2000" +	}; +  	static String[] apogee_delay_values = {  		"0", "1", "2", "3", "4", "5"  	}; @@ -280,7 +285,7 @@ public class AltosConfigUI  		c.anchor = GridBagConstraints.LINE_START;  		c.insets = il;  		c.ipady = 5; -		main_deploy_label = new JLabel("Main Deploy Altitude(m):"); +		main_deploy_label = new JLabel(get_main_deploy_label());  		pane.add(main_deploy_label, c);  		c = new GridBagConstraints(); @@ -291,7 +296,7 @@ public class AltosConfigUI  		c.anchor = GridBagConstraints.LINE_START;  		c.insets = ir;  		c.ipady = 5; -		main_deploy_value = new JComboBox(main_deploy_values); +		main_deploy_value = new JComboBox(main_deploy_values());  		main_deploy_value.setEditable(true);  		main_deploy_value.addItemListener(this);  		pane.add(main_deploy_value, c); @@ -616,6 +621,7 @@ public class AltosConfigUI  		close.setActionCommand("Close");  		addWindowListener(new ConfigListener(this)); +		AltosPreferences.register_units_listener(this);  	}  	/* Once the initial values are set, the config code will show the dialog */ @@ -654,6 +660,10 @@ public class AltosConfigUI  	AltosConfigPyroUI	pyro_ui; +	public void dispose() { +		AltosPreferences.unregister_units_listener(this); +	} +  	/* Listen for events from our buttons */  	public void actionPerformed(ActionEvent e) {  		String	cmd = e.getActionCommand(); @@ -718,12 +728,38 @@ public class AltosConfigUI  	}  	public void set_main_deploy(int new_main_deploy) { -		main_deploy_value.setSelectedItem(Integer.toString(new_main_deploy)); +		main_deploy_value.setSelectedItem(AltosConvert.height.say(new_main_deploy));  		main_deploy_value.setEnabled(new_main_deploy >= 0);  	}  	public int main_deploy() { -		return Integer.parseInt(main_deploy_value.getSelectedItem().toString()); +		return (int) (AltosConvert.height.parse(main_deploy_value.getSelectedItem().toString()) + 0.5); +	} + +	String get_main_deploy_label() { +		return String.format("Main Deploy Altitude(%s):", AltosConvert.height.show_units()); +	} +	 +	String[] main_deploy_values() { +		if (AltosConvert.imperial_units) +			return main_deploy_values_ft; +		else +			return main_deploy_values_m; +	} +			 +	void set_main_deploy_values() { +		String[]	v = main_deploy_values(); +		while (main_deploy_value.getItemCount() > 0) +			main_deploy_value.removeItemAt(0); +		for (int i = 0; i < v.length; i++) +			main_deploy_value.addItem(v[i]); +		main_deploy_value.setMaximumRowCount(v.length); +	} +	 +	public void units_changed(boolean imperial_units) { +		main_deploy_label.setText(get_main_deploy_label()); +		set_main_deploy_values(); +		listener.actionPerformed(new ActionEvent(this, 0, "Reset"));  	}  	public void set_apogee_delay(int new_apogee_delay) { | 
