better error behaviour if no map
authorAnthony Towns <aj@erisian.com.au>
Fri, 12 Nov 2010 13:42:42 +0000 (23:42 +1000)
committerAnthony Towns <aj@erisian.com.au>
Fri, 12 Nov 2010 13:42:42 +0000 (23:42 +1000)
ao-tools/altosui/AltosSiteMap.java

index 420bfc813ac8eae9d41dfd3033b8c9701cbdb800..1fb70b3590575fee8eb06344e887212982ab80c0 100644 (file)
@@ -40,7 +40,7 @@ public class AltosSiteMap extends JComponent implements AltosFlightDisplay {
 
     Graphics2D g2d;
 
-    private void setLocation(double new_lat, double new_lng) {
+    private boolean setLocation(double new_lat, double new_lng) {
         int new_zoom = 15;
         lat = new_lat;
         lng = new_lng;
@@ -60,8 +60,10 @@ public class AltosSiteMap extends JComponent implements AltosFlightDisplay {
             picLabel.setIcon(new ImageIcon( myPicture ));
             g2d = myPicture.createGraphics();
         } catch (Exception e) { 
-            throw new RuntimeException(e);
-        };
+            // throw new RuntimeException(e);
+            return false;
+        }
+        return true;
     }
 
     private static double limit(double v, double lo, double hi) {
@@ -116,14 +118,20 @@ public class AltosSiteMap extends JComponent implements AltosFlightDisplay {
         Color.BLACK   // landed
     };
 
+    boolean nomaps = false;
     public void show(AltosState state, int crc_errors) {
+        if (nomaps)
+            return;
         if (!state.gps_ready && state.pad_lat == 0 && state.pad_lon == 0)
             return;
         double plat = (int)(state.pad_lat*200)/200.0;
         double plon = (int)(state.pad_lon*200)/200.0;
 
         if (last_pt == null) {
-            setLocation(plat, plon);
+            if (!setLocation(plat, plon)) {
+                nomaps = true;
+                return;
+            }
         }
 
         Point2D.Double pt = pt(state.gps.lat, state.gps.lon);