source: josm/trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java@ 7937

Last change on this file since 7937 was 7937, checked in by bastiK, 9 years ago

add subversion property svn:eol=native

  • Property svn:eol-style set to native
File size: 2.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.actions.relation;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.event.ActionEvent;
7import java.util.Collection;
8import java.util.HashSet;
9import java.util.Set;
10
11import org.openstreetmap.josm.Main;
12import org.openstreetmap.josm.data.osm.OsmPrimitive;
13import org.openstreetmap.josm.data.osm.Relation;
14import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
15import org.openstreetmap.josm.io.OnlineResource;
16import org.openstreetmap.josm.tools.ImageProvider;
17import org.openstreetmap.josm.tools.Predicate;
18import org.openstreetmap.josm.tools.Utils;
19
20/**
21 * Action for downloading incomplete members of selected relations
22 * @since 5793
23 */
24public class DownloadSelectedIncompleteMembersAction extends AbstractRelationAction {
25
26 /**
27 * Constructs a new <code>DownloadSelectedIncompleteMembersAction</code>.
28 */
29 public DownloadSelectedIncompleteMembersAction() {
30 putValue(SHORT_DESCRIPTION, tr("Download incomplete members of selected relations"));
31 putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "downloadincompleteselected"));
32 putValue(NAME, tr("Download incomplete members"));
33 }
34
35 /**
36 * Returns the set of incomplete members of the given relations.
37 * @param rels The relations to inspect.
38 * @return The set of incomplete members of the given relations.
39 */
40 public Set<OsmPrimitive> buildSetOfIncompleteMembers(Collection<Relation> rels) {
41 Set<OsmPrimitive> ret = new HashSet<>();
42 for (Relation r : rels) {
43 ret.addAll(r.getIncompleteMembers());
44 }
45 return ret;
46 }
47
48 @Override
49 public void actionPerformed(ActionEvent e) {
50 if (!isEnabled() || relations.isEmpty() || !Main.isDisplayingMapView()) return;
51 Main.worker.submit(new DownloadRelationMemberTask(
52 relations,
53 buildSetOfIncompleteMembers(relations),
54 Main.main.getEditLayer()));
55 }
56
57 @Override
58 public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {
59 // selected relations with incomplete members
60 this.relations = Utils.filter(getRelations(primitives), new Predicate<Relation>(){
61 @Override public boolean evaluate(Relation r) {
62 return !r.isNew() && r.hasIncompleteMembers();
63 }});
64 updateEnabledState();
65 }
66
67 @Override
68 protected void updateEnabledState() {
69 setEnabled(!relations.isEmpty() && !Main.isOffline(OnlineResource.OSM_API));
70 }
71}
Note: See TracBrowser for help on using the repository browser.