From a03aaaca60ccb4b44595e5e1c1047d07d8b6d60f Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 16 Apr 2013 17:33:42 -0700 Subject: altosui: Handle broken network in map tile loading Handle missing pngfiles in AltosSetMapCache by checking ImageIO.read for null return. Do incremental map tile downloading asynchronously so that the UI doesn't lock up when the network is slow Signed-off-by: Keith Packard --- altosui/AltosSiteMap.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'altosui/AltosSiteMap.java') diff --git a/altosui/AltosSiteMap.java b/altosui/AltosSiteMap.java index 5bf02e54..23085f3e 100644 --- a/altosui/AltosSiteMap.java +++ b/altosui/AltosSiteMap.java @@ -220,6 +220,16 @@ public class AltosSiteMap extends JScrollPane implements AltosFlightDisplay { return pngfile.toString(); } + public void initAndFinishMapAsync (final AltosSiteMapTile tile, final Point offset) { + Thread thread = new Thread() { + public void run() { + initMap(offset); + finishTileLater(tile, offset); + } + }; + thread.start(); + } + public void setBaseLocation(double lat, double lng) { for (Point k : mapTiles.keySet()) { AltosSiteMapTile tile = mapTiles.get(k); @@ -308,8 +318,7 @@ public class AltosSiteMap extends JScrollPane implements AltosFlightDisplay { AltosSiteMapTile tile = createTile(offset); tile.show(state, listener_state, lref, ref); - initMap(offset); - finishTileLater(tile, offset); + initAndFinishMapAsync(tile, offset); } scrollRocketToVisible(pt); @@ -370,8 +379,7 @@ public class AltosSiteMap extends JScrollPane implements AltosFlightDisplay { if (mapTiles.containsKey(offset)) continue; AltosSiteMapTile tile = createTile(offset); - initMap(offset); - finishTileLater(tile, offset); + initAndFinishMapAsync(tile, offset); } } } -- cgit v1.2.3