source: osm/applications/editors/josm/plugins/reltoolbox/src/relcontext/actions/DownloadChosenRelationAction.java

Last change on this file was 36102, checked in by taylor.smock, 2 years ago

reltoolbox: Clean up a bunch of lint warnings

File size: 2.8 KB
RevLine 
[32395]1// License: GPL. For details, see LICENSE file.
[25667]2package relcontext.actions;
3
[25682]4import static org.openstreetmap.josm.tools.I18n.tr;
[32395]5
[25667]6import java.awt.event.ActionEvent;
7import java.util.Collections;
8import java.util.HashSet;
9import java.util.Set;
[32395]10
[25667]11import javax.swing.AbstractAction;
[32395]12
[25667]13import org.openstreetmap.josm.data.osm.OsmPrimitive;
14import org.openstreetmap.josm.data.osm.Relation;
[25669]15import org.openstreetmap.josm.data.osm.RelationMember;
[33530]16import org.openstreetmap.josm.gui.MainApplication;
[25667]17import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
18import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
[25682]19import org.openstreetmap.josm.tools.ImageProvider;
[32395]20
[25667]21import relcontext.ChosenRelation;
22import relcontext.ChosenRelationListener;
23
24/**
25 * Downloads or updates chosen relation members, depending on completeness.
[32395]26 *
[25667]27 * @author Zverik
28 */
29public class DownloadChosenRelationAction extends AbstractAction implements ChosenRelationListener {
[36102]30 private final ChosenRelation rel;
[25667]31
[32395]32 public DownloadChosenRelationAction(ChosenRelation rel) {
[25682]33 putValue(SMALL_ICON, ImageProvider.get("relcontext", "download"));
[25695]34 putValue(SHORT_DESCRIPTION, tr("Download incomplete members for the chosen relation"));
[25667]35 this.rel = rel;
36 rel.addChosenRelationListener(this);
37 setEnabled(false);
38 }
39
[32395]40 @Override
41 public void actionPerformed(ActionEvent e) {
[25667]42 Relation relation = rel.get();
[32398]43 if (relation == null || relation.isNew()) return;
[25667]44 int total = relation.getMembersCount();
45 int incomplete = relation.getIncompleteMembers().size();
[32398]46 if (incomplete <= 10 && incomplete * 3 < total) {
[25667]47 downloadIncomplete(relation);
[32395]48 } else {
[25667]49 downloadMembers(relation);
[32395]50 }
[25667]51 }
52
[32395]53 @Override
54 public void chosenRelationChanged(Relation oldRelation, Relation newRelation) {
[25669]55 boolean incomplete = false;
[32395]56 if (newRelation != null) {
57 for (RelationMember m : newRelation.getMembers()) {
58 if (m.getMember().isIncomplete()) {
[25669]59 incomplete = true;
60 break;
61 }
62 }
63 }
64 setEnabled(newRelation != null && incomplete);
[25667]65 }
66
[32395]67 protected void downloadMembers(Relation rel) {
68 if (!rel.isNew()) {
[33530]69 MainApplication.worker.submit(
70 new DownloadRelationTask(Collections.singletonList(rel), MainApplication.getLayerManager().getEditLayer()));
[25667]71 }
72 }
73
[32395]74 protected void downloadIncomplete(Relation rel) {
[32398]75 if (rel.isNew()) return;
[36102]76 Set<OsmPrimitive> ret = new HashSet<>(rel.getIncompleteMembers());
[32398]77 if (ret.isEmpty()) return;
[33530]78 MainApplication.worker.submit(
79 new DownloadRelationMemberTask(Collections.singletonList(rel), ret, MainApplication.getLayerManager().getEditLayer()));
[25667]80 }
81}
Note: See TracBrowser for help on using the repository browser.