Ignore:
Timestamp:
2006-10-13T21:49:10+02:00 (20 years ago)
Author:
imi
Message:
  • added Incomplete Way Download
  • added search for incomplete ways to selection search (use "incomplete")
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/actions/DownloadIncompleteAction.java

    r153 r160  
    1010import java.util.Collection;
    1111import java.util.HashSet;
    12 import java.util.Iterator;
    1312
    1413import javax.swing.JOptionPane;
    1514
    1615import 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;
    2016import org.openstreetmap.josm.data.osm.Way;
    2117import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    22 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    23 import org.openstreetmap.josm.io.ObjectListDownloader;
     18import org.openstreetmap.josm.io.IncompleteDownloader;
    2419import org.xml.sax.SAXException;
    2520
     
    3934         */
    4035        private final class DownloadTask extends PleaseWaitRunnable {
    41                 private ObjectListDownloader reader;
    42                 private DataSet dataSet;
    43                 private boolean nodesLoaded = false;
     36                private IncompleteDownloader reader;
    4437
    45                 private DownloadTask(Collection<OsmPrimitive> toDownload) {
     38                private DownloadTask(Collection<Way> toDownload) {
    4639                        super(trn("Downloading {0} segment", "Downloading {0} segments", toDownload.size(), toDownload.size()));
    47                         reader = new ObjectListDownloader(toDownload);
     40                        reader = new IncompleteDownloader(toDownload);
    4841                }
    4942
    5043                @Override public void realRun() throws IOException, SAXException {
    51                         dataSet = reader.parse();
     44                        reader.parse();
    5245                }
    5346
    5447                @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();
    7449                }
    7550
     
    8560        public void actionPerformed(ActionEvent e) {
    8661                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)
    9064                                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;
    9268                }
    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))
    10170                        return;
    102                 PleaseWaitRunnable task = new DownloadTask(toDownload);
     71                PleaseWaitRunnable task = new DownloadTask(ways);
    10372                Main.worker.execute(task);
    10473        }
Note: See TracChangeset for help on using the changeset viewer.