Changeset 5494 in josm for trunk/src/org/openstreetmap/josm/actions/downloadtasks
- Timestamp:
- 2012-09-01T22:42:19+02:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
r5486 r5494 16 16 import org.openstreetmap.josm.gui.layer.GpxLayer; 17 17 import org.openstreetmap.josm.gui.layer.Layer; 18 import org.openstreetmap.josm.gui.layer.markerlayer.MarkerLayer; 18 19 import org.openstreetmap.josm.gui.progress.ProgressMonitor; 19 20 import org.openstreetmap.josm.gui.progress.ProgressTaskId; 20 21 import org.openstreetmap.josm.gui.progress.ProgressTaskIds; 21 22 import org.openstreetmap.josm.io.BoundingBoxDownloader; 23 import org.openstreetmap.josm.io.GpxImporter; 24 import org.openstreetmap.josm.io.GpxImporter.GpxImporterData; 22 25 import org.openstreetmap.josm.io.OsmServerLocationReader; 23 26 import org.openstreetmap.josm.io.OsmServerReader; … … 25 28 import org.xml.sax.SAXException; 26 29 30 /** 31 * Task allowing to download GPS data. 32 */ 27 33 public class DownloadGpsTask extends AbstractDownloadTask { 28 34 … … 115 121 return; 116 122 String name = newLayerName != null ? newLayerName : tr("Downloaded GPX Data"); 117 GpxLayer layer = new GpxLayer(rawData, name); 118 Layer x = findMergeLayer(); 119 if (newLayer || x == null) { 123 124 GpxImporterData layers = GpxImporter.loadLayers(rawData, reader.isGpxParsedProperly(), name, tr("Markers from {0}", name)); 125 126 GpxLayer gpxLayer = addOrMergeLayer(layers.gpxLayer, findGpxMergeLayer()); 127 addOrMergeLayer(layers.markerLayer, findMarkerMergeLayer(gpxLayer)); 128 129 layers.postLayerTask.run(); 130 } 131 132 private <L extends Layer> L addOrMergeLayer(L layer, L mergeLayer) { 133 if (layer == null) return null; 134 if (newLayer || mergeLayer == null) { 120 135 Main.main.addLayer(layer); 136 return layer; 121 137 } else { 122 x.mergeFrom(layer);138 mergeLayer.mergeFrom(layer); 123 139 Main.map.repaint(); 140 return mergeLayer; 124 141 } 125 142 } 126 143 127 private Layer findMergeLayer() { 128 boolean merge = Main.pref.getBoolean("download.gps.mergeWithLocal", false); 144 private GpxLayer findGpxMergeLayer() { 129 145 if (!Main.isDisplayingMapView()) 130 146 return null; 147 boolean merge = Main.pref.getBoolean("download.gps.mergeWithLocal", false); 131 148 Layer active = Main.map.mapView.getActiveLayer(); 132 149 if (active != null && active instanceof GpxLayer && (merge || ((GpxLayer)active).data.fromServer)) 133 return active; 134 for (Layer l : Main.map.mapView.getAllLayers()) { 135 if (l instanceof GpxLayer && (merge || ((GpxLayer)l).data.fromServer)) 150 return (GpxLayer) active; 151 for (GpxLayer l : Main.map.mapView.getLayersOfType(GpxLayer.class)) { 152 if (merge || l.data.fromServer) 153 return l; 154 } 155 return null; 156 } 157 158 private MarkerLayer findMarkerMergeLayer(GpxLayer fromLayer) { 159 if (!Main.isDisplayingMapView()) 160 return null; 161 for (MarkerLayer l : Main.map.mapView.getLayersOfType(MarkerLayer.class)) { 162 if (fromLayer != null && l.fromLayer == fromLayer) 136 163 return l; 137 164 }
Note:
See TracChangeset
for help on using the changeset viewer.