summaryrefslogtreecommitdiff
path: root/telegps/TeleGPSConfigUI.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-05-30 17:17:42 -0700
committerKeith Packard <keithp@keithp.com>2014-05-30 17:32:52 -0700
commit2d9842ee011139f5783a102ceb2b7f4c88b1a10f (patch)
treedffd6fda2aa961b23641a5171f2f35e69f4e8687 /telegps/TeleGPSConfigUI.java
parent29d325f418b401f61580288b5947b0df8ac5b717 (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.java199
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;