diff options
| author | Keith Packard <keithp@keithp.com> | 2014-05-30 17:17:42 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2014-05-30 17:32:52 -0700 | 
| commit | 2d9842ee011139f5783a102ceb2b7f4c88b1a10f (patch) | |
| tree | dffd6fda2aa961b23641a5171f2f35e69f4e8687 /telegps/TeleGPSConfigUI.java | |
| parent | 29d325f418b401f61580288b5947b0df8ac5b717 (diff) | |
telegps: Add config for tracker starting distances
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'telegps/TeleGPSConfigUI.java')
| -rw-r--r-- | telegps/TeleGPSConfigUI.java | 199 | 
1 files changed, 176 insertions, 23 deletions
diff --git a/telegps/TeleGPSConfigUI.java b/telegps/TeleGPSConfigUI.java index d1f66eef..863d61bb 100644 --- a/telegps/TeleGPSConfigUI.java +++ b/telegps/TeleGPSConfigUI.java @@ -26,7 +26,7 @@ import org.altusmetrum.altosuilib_2.*;  public class TeleGPSConfigUI  	extends AltosUIDialog -	implements ActionListener, ItemListener, DocumentListener, AltosConfigValues +	implements ActionListener, ItemListener, DocumentListener, AltosConfigValues, AltosUnitsListener  {  	Container		pane; @@ -40,6 +40,8 @@ public class TeleGPSConfigUI  	JLabel			aprs_interval_label;  	JLabel			flight_log_max_label;  	JLabel			callsign_label; +	JLabel			tracker_horiz_label; +	JLabel			tracker_vert_label;  	public boolean		dirty; @@ -53,6 +55,8 @@ public class TeleGPSConfigUI  	JComboBox<String>	aprs_interval_value;  	JComboBox<String>	flight_log_max_value;  	JTextField		callsign_value; +	JComboBox<String>	tracker_horiz_value; +	JComboBox<String>	tracker_vert_value;  	JButton			save;  	JButton			reset; @@ -74,6 +78,34 @@ public class TeleGPSConfigUI  		"10"  	}; +	static String[]		tracker_horiz_values_m = { +		"250", +		"500", +		"1000", +		"2000" +	}; + +	static String[]		tracker_horiz_values_ft = { +		"500", +		"1000", +		"2500", +		"5000" +	}; + +	static String[]		tracker_vert_values_m = { +		"25", +		"50", +		"100", +		"200" +	}; + +	static String[]		tracker_vert_values_ft = { +		"50", +		"100", +		"250", +		"500" +	}; +  	/* A window listener to catch closing events and tell the config code */  	class ConfigListener extends WindowAdapter {  		TeleGPSConfigUI	ui; @@ -362,6 +394,57 @@ public class TeleGPSConfigUI  		set_flight_log_max_tool_tip();  		row++; +		/* Tracker triger horiz distances */ +		c = new GridBagConstraints(); +		c.gridx = 0; c.gridy = row; +		c.gridwidth = 4; +		c.fill = GridBagConstraints.NONE; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = il; +		c.ipady = 5; +		tracker_horiz_label = new JLabel(get_tracker_horiz_label()); +		pane.add(tracker_horiz_label, c); + +		c = new GridBagConstraints(); +		c.gridx = 4; c.gridy = row; +		c.gridwidth = 4; +		c.fill = GridBagConstraints.HORIZONTAL; +		c.weightx = 1; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = ir; +		c.ipady = 5; +		tracker_horiz_value = new JComboBox<String>(tracker_horiz_values()); +		tracker_horiz_value.setEditable(true); +		tracker_horiz_value.addItemListener(this); +		pane.add(tracker_horiz_value, c); +		row++; + +		/* Tracker triger vert distances */ +		c = new GridBagConstraints(); +		c.gridx = 0; c.gridy = row; +		c.gridwidth = 4; +		c.fill = GridBagConstraints.NONE; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = il; +		c.ipady = 5; +		tracker_vert_label = new JLabel(get_tracker_vert_label()); +		pane.add(tracker_vert_label, c); + +		c = new GridBagConstraints(); +		c.gridx = 4; c.gridy = row; +		c.gridwidth = 4; +		c.fill = GridBagConstraints.HORIZONTAL; +		c.weightx = 1; +		c.anchor = GridBagConstraints.LINE_START; +		c.insets = ir; +		c.ipady = 5; +		tracker_vert_value = new JComboBox<String>(tracker_vert_values()); +		tracker_vert_value.setEditable(true); +		tracker_vert_value.addItemListener(this); +		pane.add(tracker_vert_value, c); +		set_tracker_tool_tip(); +		row++; +  		/* Buttons */  		c = new GridBagConstraints();  		c.gridx = 0; c.gridy = row; @@ -408,6 +491,7 @@ public class TeleGPSConfigUI  		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 */ @@ -445,6 +529,7 @@ public class TeleGPSConfigUI  	}  	public void dispose() { +		AltosPreferences.unregister_units_listener(this);  		super.dispose();  	} @@ -486,6 +571,22 @@ public class TeleGPSConfigUI  		listener = l;  	} +	public void units_changed(boolean imperial_units) { +		if (tracker_horiz_value.isEnabled() && tracker_vert_value.isEnabled()) { +			String th = tracker_horiz_value.getSelectedItem().toString(); +			String tv = tracker_vert_value.getSelectedItem().toString(); +			tracker_horiz_label.setText(get_tracker_horiz_label()); +			tracker_vert_label.setText(get_tracker_vert_label()); +			set_tracker_horiz_values(); +			set_tracker_vert_values(); +			int[] t = { +				(int) (AltosConvert.height.parse(th, !imperial_units) + 0.5), +				(int) (AltosConvert.height.parse(tv, !imperial_units) + 0.5) +			}; +			set_tracker_distances(t); +		} +	} +  	/* set and get all of the dialog values */  	public void set_product(String product) {  		radio_frequency_value.set_product(product); @@ -509,28 +610,6 @@ public class TeleGPSConfigUI  		return -1;  	} -/* -	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 set_apogee_delay(int new_apogee_delay) { }  	public int apogee_delay() { @@ -626,6 +705,80 @@ public class TeleGPSConfigUI  	public int beep() { return -1; } +	String[] tracker_horiz_values() { +		if (AltosConvert.imperial_units) +			return tracker_horiz_values_ft; +		else +			return tracker_horiz_values_m; +	} + +	void set_tracker_horiz_values() { +		String[]	v = tracker_horiz_values(); +		while (tracker_horiz_value.getItemCount() > 0) +			tracker_horiz_value.removeItemAt(0); +		for (int i = 0; i < v.length; i++) +			tracker_horiz_value.addItem(v[i]); +		tracker_horiz_value.setMaximumRowCount(v.length); +	} + +	String get_tracker_horiz_label() { +		return String.format("Logging Trigger Horizontal (%s):", AltosConvert.height.show_units()); +	} + +	String[] tracker_vert_values() { +		if (AltosConvert.imperial_units) +			return tracker_vert_values_ft; +		else +			return tracker_vert_values_m; +	} + +	void set_tracker_vert_values() { +		String[]	v = tracker_vert_values(); +		while (tracker_vert_value.getItemCount() > 0) +			tracker_vert_value.removeItemAt(0); +		for (int i = 0; i < v.length; i++) +			tracker_vert_value.addItem(v[i]); +		tracker_vert_value.setMaximumRowCount(v.length); +	} + +	void set_tracker_tool_tip() { +		if (tracker_horiz_value.isEnabled()) +			tracker_horiz_value.setToolTipText("How far the device must move before logging is enabled"); +		else +			tracker_horiz_value.setToolTipText("This device doesn't disable logging before motion"); +		if (tracker_vert_value.isEnabled()) +			tracker_vert_value.setToolTipText("How far the device must move before logging is enabled"); +		else +			tracker_vert_value.setToolTipText("This device doesn't disable logging before motion"); +	} + +	String get_tracker_vert_label() { +		return String.format("Logging Trigger Vertical (%s):", AltosConvert.height.show_units()); +	} + +	public void set_tracker_distances(int[] tracker_distances) { +		if (tracker_distances != null) { +			tracker_horiz_value.setSelectedItem(AltosConvert.height.say(tracker_distances[0])); +			tracker_vert_value.setSelectedItem(AltosConvert.height.say(tracker_distances[1])); +			tracker_horiz_value.setEnabled(true); +			tracker_vert_value.setEnabled(true); +		} else { +			tracker_horiz_value.setEnabled(false); +			tracker_vert_value.setEnabled(false); +		} +	} + +	public int[] tracker_distances() { +		if (tracker_horiz_value.isEnabled() && tracker_vert_value.isEnabled()) { +			int[] t = { +				(int) (AltosConvert.height.parse(tracker_horiz_value.getSelectedItem().toString()) + 0.5), +				(int) (AltosConvert.height.parse(tracker_vert_value.getSelectedItem().toString()) + 0.5), +			}; +			return t; +		} +		return null; +	} +  	public void set_aprs_interval(int new_aprs_interval) {  		String	s;  | 
