Changeset 160 in josm for src/org/openstreetmap/josm/actions/DownloadIncompleteAction.java
- Timestamp:
- 2006-10-13T21:49:10+02:00 (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/org/openstreetmap/josm/actions/DownloadIncompleteAction.java
r153 r160 10 10 import java.util.Collection; 11 11 import java.util.HashSet; 12 import java.util.Iterator;13 12 14 13 import javax.swing.JOptionPane; 15 14 16 15 import org.openstreetmap.josm.Main; 17 import org.openstreetmap.josm.data.osm.DataSet;18 import org.openstreetmap.josm.data.osm.OsmPrimitive;19 import org.openstreetmap.josm.data.osm.Segment;20 16 import org.openstreetmap.josm.data.osm.Way; 21 17 import org.openstreetmap.josm.gui.PleaseWaitRunnable; 22 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 23 import org.openstreetmap.josm.io.ObjectListDownloader; 18 import org.openstreetmap.josm.io.IncompleteDownloader; 24 19 import org.xml.sax.SAXException; 25 20 … … 39 34 */ 40 35 private final class DownloadTask extends PleaseWaitRunnable { 41 private ObjectListDownloader reader; 42 private DataSet dataSet; 43 private boolean nodesLoaded = false; 36 private IncompleteDownloader reader; 44 37 45 private DownloadTask(Collection< OsmPrimitive> toDownload) {38 private DownloadTask(Collection<Way> toDownload) { 46 39 super(trn("Downloading {0} segment", "Downloading {0} segments", toDownload.size(), toDownload.size())); 47 reader = new ObjectListDownloader(toDownload);40 reader = new IncompleteDownloader(toDownload); 48 41 } 49 42 50 43 @Override public void realRun() throws IOException, SAXException { 51 dataSet =reader.parse();44 reader.parse(); 52 45 } 53 46 54 47 @Override protected void finish() { 55 if (dataSet == null) 56 return; // user cancelled download or error occoured 57 if (dataSet.allPrimitives().isEmpty()) 58 errorMessage = tr("No data imported."); 59 if (errorMessage == null && nodesLoaded == false) 60 startDownloadNodes(); 61 else if (errorMessage == null) 62 Main.main.addLayer(new OsmDataLayer(dataSet, tr("Data Layer"), null)); 63 } 64 65 private void startDownloadNodes() { 66 Collection<OsmPrimitive> nodes = new HashSet<OsmPrimitive>(); 67 for (Segment s : dataSet.segments) { 68 nodes.add(s.from); 69 nodes.add(s.to); 70 } 71 reader = new ObjectListDownloader(nodes); 72 nodesLoaded = true; 73 Main.worker.execute(this); 48 Main.parent.repaint(); 74 49 } 75 50 … … 85 60 public void actionPerformed(ActionEvent e) { 86 61 Collection<Way> ways = new HashSet<Way>(); 87 boolean sel = false; 88 for (Way w : Main.ds.ways) { 89 if (w.isIncomplete()) 62 for (Way w : Main.ds.ways) 63 if (w.isIncomplete() && w.selected) 90 64 ways.add(w); 91 sel = sel || w.selected; 65 if (ways.isEmpty()) { 66 JOptionPane.showMessageDialog(Main.parent, tr("Please select an incomplete way.")); 67 return; 92 68 } 93 if (sel) 94 for (Iterator<Way> it = ways.iterator(); it.hasNext();) 95 if (!it.next().selected) 96 it.remove(); 97 Collection<OsmPrimitive> toDownload = new HashSet<OsmPrimitive>(); 98 for (Way w : ways) 99 toDownload.addAll(w.segments); 100 if (JOptionPane.YES_OPTION != JOptionPane.showConfirmDialog(Main.parent, tr("Download {0} ways containing a total of {1} segments?", ways.size(), toDownload.size()), tr("Download?"), JOptionPane.YES_NO_OPTION)) 69 if (JOptionPane.YES_OPTION != JOptionPane.showConfirmDialog(Main.parent, tr("Download {0} incomplete ways?", ways.size()), tr("Download?"), JOptionPane.YES_NO_OPTION)) 101 70 return; 102 PleaseWaitRunnable task = new DownloadTask( toDownload);71 PleaseWaitRunnable task = new DownloadTask(ways); 103 72 Main.worker.execute(task); 104 73 }
Note:
See TracChangeset
for help on using the changeset viewer.
