001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.actions.relation; 003 004import static org.openstreetmap.josm.gui.help.HelpUtil.ht; 005import static org.openstreetmap.josm.tools.I18n.tr; 006 007import java.awt.event.ActionEvent; 008import java.util.Collection; 009 010import org.openstreetmap.josm.Main; 011import org.openstreetmap.josm.data.osm.OsmPrimitive; 012import org.openstreetmap.josm.data.osm.Relation; 013import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask; 014import org.openstreetmap.josm.tools.ImageProvider; 015import org.openstreetmap.josm.tools.Predicate; 016import org.openstreetmap.josm.tools.Utils; 017 018/** 019 * The action for downloading members of relations 020 * @since 5793 021 */ 022public class DownloadMembersAction extends AbstractRelationAction { 023 024 /** 025 * Constructs a new <code>DownloadMembersAction</code>. 026 */ 027 public DownloadMembersAction() { 028 putValue(SHORT_DESCRIPTION, tr("Download all members of the selected relations")); 029 putValue(NAME, tr("Download members")); 030 putValue(SMALL_ICON, ImageProvider.get("dialogs", "downloadincomplete")); 031 putValue("help", ht("/Dialog/RelationList#DownloadMembers")); 032 } 033 034 @Override 035 public void actionPerformed(ActionEvent e) { 036 if (!isEnabled() || relations.isEmpty() || !Main.isDisplayingMapView()) return; 037 Main.worker.submit(new DownloadRelationTask(relations, Main.main.getEditLayer())); 038 } 039 040 @Override 041 public void setPrimitives(Collection<? extends OsmPrimitive> primitives) { 042 // selected non-new relations 043 this.relations = Utils.filter(getRelations(primitives), new Predicate<Relation>(){ 044 @Override public boolean evaluate(Relation r) { 045 return !r.isNew(); 046 }}); 047 updateEnabledState(); 048 } 049}