// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.actions.relation; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.event.ActionEvent; import java.util.HashSet; import java.util.Set; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.data.osm.Relation; import org.openstreetmap.josm.tools.ImageProvider; /** * Sets the current selection to the list of relations selected in this dialog * @since 5793 */ public class SelectMembersAction extends AbstractRelationAction { private final boolean add; /** * Constructs a new <code>SelectMembersAction</code>. * @param add if <code>true</code>, the members will be added to current selection. * If <code>false</code>, the members will replace the current selection. */ public SelectMembersAction(boolean add) { putValue(SHORT_DESCRIPTION, add ? tr("Add the members of all selected relations to current selection") : tr("Select the members of all selected relations")); putValue(SMALL_ICON, ImageProvider.get("selectall")); putValue(NAME, add ? tr("Select members (add)") : tr("Select members")); this.add = add; } @Override public void actionPerformed(ActionEvent e) { if (!isEnabled() || relations.isEmpty() || !Main.isDisplayingMapView()) return; Set<OsmPrimitive> members = new HashSet<>(); for (Relation r: relations) { members.addAll(r.getMemberPrimitivesList()); } if (add) { Main.getLayerManager().getEditLayer().data.addSelected(members); } else { Main.getLayerManager().getEditLayer().data.setSelected(members); } } }