altoslib/altosuilib: Get new Map display code running in altosui and telegps
[fw/altos] / telegps / TeleGPS.java
index a4b221e814b5444df1630fb46cd82fb15273b580..1e1349009fd260120231ed2248d65d1424cb21cd 100644 (file)
@@ -23,8 +23,9 @@ import javax.swing.*;
 import java.io.*;
 import java.util.concurrent.*;
 import java.util.*;
-import org.altusmetrum.altoslib_5.*;
-import org.altusmetrum.altosuilib_3.*;
+import java.text.*;
+import org.altusmetrum.altoslib_7.*;
+import org.altusmetrum.altosuilib_7.*;
 
 public class TeleGPS
        extends AltosUIFrame
@@ -67,11 +68,10 @@ public class TeleGPS
 
        TeleGPSStatus           telegps_status;
        TeleGPSStatusUpdate     status_update;
-       javax.swing.Timer       status_timer;
 
        JTabbedPane             pane;
 
-       AltosUIMap              map;
+       AltosUIMapNew           map;
        TeleGPSInfo             gps_info;
        TeleGPSState            gps_state;
        AltosInfoTable          info_table;
@@ -147,6 +147,7 @@ public class TeleGPS
        public void show(AltosState state, AltosListenerState listener_state) {
                try {
                        status_update.saved_state = state;
+                       status_update.saved_listener_state = listener_state;
 
                        if (state == null)
                                state = new AltosState();
@@ -178,11 +179,7 @@ public class TeleGPS
        void disconnect() {
                setTitle("TeleGPS");
                stop_display();
-               if (status_timer != null) {
-                       status_timer.stop();
-                       status_timer = null;
-                       status_update = null;
-               }
+               telegps_status.stop();
 
                telegps_status.disable_receive();
                disable_frequency_menu();
@@ -404,8 +401,7 @@ public class TeleGPS
        public void set_reader(AltosFlightReader reader, AltosDevice device) {
                status_update = new TeleGPSStatusUpdate(telegps_status);
 
-               status_timer = new javax.swing.Timer(100, status_update);
-               status_timer.start();
+               telegps_status.start(status_update);
 
                setTitle(String.format("TeleGPS %s", reader.name));
                thread = new TeleGPSDisplayThread(this, voice(), this, reader);
@@ -546,7 +542,7 @@ public class TeleGPS
                c.gridwidth = 2;
                bag.add(pane, c);
 
-               map = new AltosUIMap();
+               map = new AltosUIMapNew();
                pane.add(map.getName(), map);
                displays.add(map);
 
@@ -684,9 +680,13 @@ public class TeleGPS
                                if (args.length < i + 3) {
                                        help(1);
                                } else {
-                                       double lat = Double.parseDouble(args[i+1]);
-                                       double lon = Double.parseDouble(args[i+2]);
+                                       try {
+                                       double lat = AltosParse.parse_double_locale(args[i+1]);
+                                       double lon = AltosParse.parse_double_locale(args[i+2]);
                                        AltosUIMap.prefetch_maps(lat, lon);
+                                       } catch (ParseException e) {
+                                               System.out.printf("Can't parse number %s\n", e.toString());
+                                       }
                                        i += 2;
                                }
                        } else if (args[i].equals("--replay"))