altoslib/altosuilib: Get new Map display code running in altosui and telegps
[fw/altos] / telegps / TeleGPS.java
index d4b7bacf47b0575829a6d9f5ca93125dbe405e43..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
@@ -32,12 +33,12 @@ public class TeleGPS
 {
 
        static String[] telegps_icon_names = {
-               "/telegps-16.png",
-               "/telegps-32.png",
-               "/telegps-48.png",
-               "/telegps-64.png",
-               "/telegps-128.png",
-               "/telegps-256.png"
+               "/altusmetrum-telegps-16.png",
+               "/altusmetrum-telegps-32.png",
+               "/altusmetrum-telegps-48.png",
+               "/altusmetrum-telegps-64.png",
+               "/altusmetrum-telegps-128.png",
+               "/altusmetrum-telegps-256.png"
        };
 
        static { set_icon_names(telegps_icon_names); }
@@ -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"))