Ticket #20091: 20091-download.patch

File 20091-download.patch, 2.1 KB (added by GerdP, 4 years ago)
  • src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java

     
    66
    77import java.awt.event.ActionEvent;
    88import java.util.Collection;
     9import java.util.List;
     10import java.util.stream.Collectors;
    911
    1012import org.openstreetmap.josm.data.osm.IPrimitive;
    11 import org.openstreetmap.josm.data.osm.Relation;
     13import org.openstreetmap.josm.data.osm.PrimitiveId;
    1214import org.openstreetmap.josm.gui.MainApplication;
    13 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
     15import org.openstreetmap.josm.gui.io.DownloadPrimitivesTask;
    1416import org.openstreetmap.josm.tools.ImageProvider;
    15 import org.openstreetmap.josm.tools.SubclassFilteredCollection;
    16 import org.openstreetmap.josm.tools.Utils;
    1717
    1818/**
    1919 * The action for downloading members of relations
     
    3434    @Override
    3535    public void actionPerformed(ActionEvent e) {
    3636        if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
    37         MainApplication.worker.submit(new DownloadRelationTask(
    38                 Utils.filteredCollection(relations, Relation.class), MainApplication.getLayerManager().getEditLayer()));
     37        List<PrimitiveId> members = relations.stream()
     38                .flatMap(r -> r.getMemberPrimitivesList().stream().filter(osm -> !osm.isNew()).map(IPrimitive::getOsmPrimitiveId))
     39                .distinct()
     40                .collect(Collectors.toList());
     41
     42        MainApplication.worker.submit(new DownloadPrimitivesTask(MainApplication.getLayerManager().getEditLayer(), members, false));
    3943    }
    4044
    4145    @Override
    4246    public void setPrimitives(Collection<? extends IPrimitive> primitives) {
    43         // selected non-new relations
    44         this.relations = SubclassFilteredCollection.filter(getRelations(primitives), r -> !r.isNew());
     47        this.relations = getRelations(primitives);
    4548        updateEnabledState();
    4649    }
    4750