summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-05-29 10:16:15 -0700
committerKeith Packard <keithp@keithp.com>2014-05-29 10:16:15 -0700
commit71715337eb532a1fbe1a753240e7417d5223489f (patch)
tree2042488d19584b89b661e48fe0dadbe555d4f174
parent13f84be8d1568a3fc2ed5eef5dcc2093c149285e (diff)
telegps: Add info table
Move a couple of files from altosui to altosuilib, hook up the info table after changing it to implement the AltosFlightDisplay interface Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--altoslib/AltosState.java4
-rw-r--r--altosui/AltosCompanionInfo.java7
-rw-r--r--altosui/AltosIdleMonitorUI.java4
-rw-r--r--altosui/Makefile.am2
-rw-r--r--altosuilib/AltosFlightInfoTableModel.java (renamed from altosui/AltosFlightInfoTableModel.java)2
-rw-r--r--altosuilib/AltosInfoTable.java (renamed from altosui/AltosInfoTable.java)16
-rw-r--r--altosuilib/Makefile.am2
-rw-r--r--telegps/TeleGPS.java72
-rw-r--r--telegps/TeleGPSInfo.java4
9 files changed, 69 insertions, 44 deletions
diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java
index 1162e522..ddda82b9 100644
--- a/altoslib/AltosState.java
+++ b/altoslib/AltosState.java
@@ -713,6 +713,7 @@ public class AltosState implements Cloneable {
gps_ground_altitude = new AltosGpsGroundAltitude();
gps_ground_speed = new AltosValue();
gps_ascent_rate = new AltosValue();
+ gps_course = new AltosValue();
speak_tick = AltosLib.MISSING;
speak_altitude = AltosLib.MISSING;
@@ -842,6 +843,9 @@ public class AltosState implements Cloneable {
gps_altitude.copy(old.gps_altitude);
gps_ground_altitude.copy(old.gps_ground_altitude);
+ gps_ground_speed.copy(old.gps_ground_speed);
+ gps_ascent_rate.copy(old.gps_ascent_rate);
+ gps_course.copy(old.gps_course);
pad_lat = old.pad_lat;
pad_lon = old.pad_lon;
diff --git a/altosui/AltosCompanionInfo.java b/altosui/AltosCompanionInfo.java
index 42413a57..f8d033a8 100644
--- a/altosui/AltosCompanionInfo.java
+++ b/altosui/AltosCompanionInfo.java
@@ -20,8 +20,9 @@ package altosui;
import java.awt.*;
import javax.swing.*;
import org.altusmetrum.altoslib_4.*;
+import org.altusmetrum.altosuilib_2.*;
-public class AltosCompanionInfo extends JTable {
+public class AltosCompanionInfo extends JTable implements AltosFlightDisplay {
private AltosFlightInfoTableModel model;
static final int info_columns = 2;
@@ -50,7 +51,7 @@ public class AltosCompanionInfo extends JTable {
return getPreferredSize();
}
- void info_reset() {
+ public void reset() {
model.reset();
}
@@ -88,7 +89,7 @@ public class AltosCompanionInfo extends JTable {
return;
if (state.companion != null)
companion = state.companion;
- info_reset();
+ reset();
info_add_row(0, "Companion board", "%s", board_name());
if (companion != null) {
info_add_row(0, "Last Data", "%5d", companion.tick);
diff --git a/altosui/AltosIdleMonitorUI.java b/altosui/AltosIdleMonitorUI.java
index 62b50568..b5652df3 100644
--- a/altosui/AltosIdleMonitorUI.java
+++ b/altosui/AltosIdleMonitorUI.java
@@ -234,7 +234,9 @@ public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDispl
try {
disconnect();
} catch (Exception ex) {
- System.out.println(Arrays.toString(ex.getStackTrace()));
+ System.out.printf("Exception %s\n", ex.toString());
+ for (StackTraceElement e : ex.getStackTrace())
+ System.out.printf("%s\n", e.toString());
}
setVisible(false);
dispose();
diff --git a/altosui/Makefile.am b/altosui/Makefile.am
index 686b5967..add46825 100644
--- a/altosui/Makefile.am
+++ b/altosui/Makefile.am
@@ -21,7 +21,6 @@ altosui_JAVA = \
AltosConfigTD.java \
AltosConfigTDUI.java \
AltosDescent.java \
- AltosFlightInfoTableModel.java \
AltosFlightStatsTable.java \
AltosFlightStatus.java \
AltosFlightStatusUpdate.java \
@@ -32,7 +31,6 @@ altosui_JAVA = \
AltosIgnitor.java \
AltosLaunch.java \
AltosLaunchUI.java \
- AltosInfoTable.java \
AltosLanded.java \
AltosPad.java \
AltosUIPreferencesBackend.java \
diff --git a/altosui/AltosFlightInfoTableModel.java b/altosuilib/AltosFlightInfoTableModel.java
index 249f6497..3995efb3 100644
--- a/altosui/AltosFlightInfoTableModel.java
+++ b/altosuilib/AltosFlightInfoTableModel.java
@@ -15,7 +15,7 @@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package altosui;
+package org.altusmetrum.altosuilib_2;
import javax.swing.table.*;
diff --git a/altosui/AltosInfoTable.java b/altosuilib/AltosInfoTable.java
index 125fa94c..0d8779d1 100644
--- a/altosui/AltosInfoTable.java
+++ b/altosuilib/AltosInfoTable.java
@@ -15,26 +15,26 @@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package altosui;
+package org.altusmetrum.altosuilib_2;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import org.altusmetrum.altoslib_4.*;
-public class AltosInfoTable extends JTable {
+public class AltosInfoTable extends JTable implements AltosFlightDisplay {
private AltosFlightInfoTableModel model;
static final int info_columns = 3;
static final int info_rows = 17;
int desired_row_height() {
- FontMetrics infoValueMetrics = getFontMetrics(Altos.table_value_font);
+ FontMetrics infoValueMetrics = getFontMetrics(AltosUILib.table_value_font);
return (infoValueMetrics.getHeight() + infoValueMetrics.getLeading()) * 18 / 10;
}
int text_width(String t) {
- FontMetrics infoValueMetrics = getFontMetrics(Altos.table_value_font);
+ FontMetrics infoValueMetrics = getFontMetrics(AltosUILib.table_value_font);
return infoValueMetrics.stringWidth(t);
}
@@ -55,7 +55,7 @@ public class AltosInfoTable extends JTable {
public AltosInfoTable() {
super(new AltosFlightInfoTableModel(info_rows, info_columns));
model = (AltosFlightInfoTableModel) getModel();
- setFont(Altos.table_value_font);
+ setFont(AltosUILib.table_value_font);
setAutoResizeMode(AUTO_RESIZE_ALL_COLUMNS);
setShowGrid(true);
set_layout();
@@ -63,7 +63,7 @@ public class AltosInfoTable extends JTable {
}
public void set_font() {
- setFont(Altos.table_value_font);
+ setFont(AltosUILib.table_value_font);
set_layout();
doLayout();
}
@@ -72,7 +72,7 @@ public class AltosInfoTable extends JTable {
return getPreferredSize();
}
- void info_reset() {
+ public void reset() {
model.reset();
}
@@ -105,7 +105,7 @@ public class AltosInfoTable extends JTable {
}
public void show(AltosState state, AltosListenerState listener_state) {
- info_reset();
+ reset();
if (state != null) {
if (state.device_type != AltosLib.MISSING)
info_add_row(0, "Device", "%s", AltosLib.product_name(state.device_type));
diff --git a/altosuilib/Makefile.am b/altosuilib/Makefile.am
index e697b17c..65a8228a 100644
--- a/altosuilib/Makefile.am
+++ b/altosuilib/Makefile.am
@@ -56,6 +56,8 @@ altosuilib_JAVA = \
AltosLed.java \
AltosFlashUI.java \
AltosRomconfigUI.java \
+ AltosInfoTable.java \
+ AltosFlightInfoTableModel.java \
AltosBTDevice.java \
AltosBTDeviceIterator.java \
AltosBTManage.java \
diff --git a/telegps/TeleGPS.java b/telegps/TeleGPS.java
index 7f34c763..d30d8dc5 100644
--- a/telegps/TeleGPS.java
+++ b/telegps/TeleGPS.java
@@ -50,16 +50,25 @@ public class TeleGPS extends AltosUIFrame implements AltosFlightDisplay, AltosFo
AltosFlightReader reader;
AltosDisplayThread thread;
- JTabbedPane pane;
+ JMenuBar menu_bar;
- AltosSiteMap sitemap;
- TeleGPSInfo gps_info;
- boolean has_map;
+ JMenu file_menu;
+ JMenu monitor_menu;
+ JMenu device_menu;
+ AltosFreqList frequencies;
+
+ Container bag;
+
+ TeleGPSStatus telegps_status;
+ TeleGPSStatusUpdate status_update;
+
+ JTabbedPane pane;
+
+ AltosSiteMap sitemap;
+ TeleGPSInfo gps_info;
+ AltosInfoTable info_table;
- JMenuBar menu_bar;
- JMenu file_menu;
- JMenu monitor_menu;
- JMenu device_menu;
+ LinkedList<AltosFlightDisplay> displays;
/* File menu */
final static String new_command = "new";
@@ -113,41 +122,38 @@ public class TeleGPS extends AltosUIFrame implements AltosFlightDisplay, AltosFo
}
public void reset() {
- sitemap.reset();
- gps_info.reset();
+ for (AltosFlightDisplay display : displays)
+ display.reset();
}
public void set_font() {
- sitemap.set_font();
- gps_info.set_font();
+ for (AltosFlightDisplay display : displays)
+ display.set_font();
}
public void font_size_changed(int font_size) {
set_font();
}
-
-// AltosFlightStatusUpdate status_update;
-
public void show(AltosState state, AltosListenerState listener_state) {
-// status_update.saved_state = state;
+ try {
+ status_update.saved_state = state;
- if (state == null)
- state = new AltosState();
+ if (state == null)
+ state = new AltosState();
- sitemap.show(state, listener_state);
- gps_info.show(state, listener_state);
- telegps_status.show(state, listener_state);
+ int i = 0;
+ for (AltosFlightDisplay display : displays) {
+ display.show(state, listener_state);
+ i++;
+ }
+ } catch (Exception ex) {
+ System.out.printf("Exception %s\n", ex.toString());
+ for (StackTraceElement e : ex.getStackTrace())
+ System.out.printf("%s\n", e.toString());
+ }
}
- Container bag;
- AltosFreqList frequencies;
- JLabel telemetry;
- TeleGPSStatus telegps_status;
- TeleGPSStatusUpdate status_update;
-
- ActionListener show_timer;
-
void new_window() {
new TeleGPS();
}
@@ -379,6 +385,7 @@ public class TeleGPS extends AltosUIFrame implements AltosFlightDisplay, AltosFo
file_menu = make_menu("File", file_menu_entries);
monitor_menu = make_menu("Monitor", monitor_menu_entries);
device_menu = make_menu("Device", device_menu_entries);
+ displays = new LinkedList<AltosFlightDisplay>();
int serial = -1;
@@ -391,6 +398,7 @@ public class TeleGPS extends AltosUIFrame implements AltosFlightDisplay, AltosFo
c.gridwidth = 2;
bag.add(telegps_status, c);
c.gridwidth = 1;
+ displays.add(telegps_status);
/* The rest of the window uses a tabbed pane to
@@ -409,9 +417,15 @@ public class TeleGPS extends AltosUIFrame implements AltosFlightDisplay, AltosFo
sitemap = new AltosSiteMap();
pane.add("Site Map", sitemap);
+ displays.add(sitemap);
gps_info = new TeleGPSInfo();
pane.add("Info", gps_info);
+ displays.add(gps_info);
+
+ info_table = new AltosInfoTable();
+ pane.add("Table", info_table);
+ displays.add(info_table);
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
diff --git a/telegps/TeleGPSInfo.java b/telegps/TeleGPSInfo.java
index 0fba77d5..da3df44e 100644
--- a/telegps/TeleGPSInfo.java
+++ b/telegps/TeleGPSInfo.java
@@ -58,6 +58,10 @@ public class TeleGPSInfo extends JComponent implements AltosFlightDisplay {
show(String.format(format, v));
}
+ void show(String format, int v) {
+ show(String.format(format, v));
+ }
+
void reset() {
lights.set(false);
value.setText("");