// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.fixAddresses.gui.actions; import static org.openstreetmap.josm.tools.I18n.tr; import java.util.ArrayList; import java.util.List; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.plugins.fixAddresses.AddressEditContainer; import org.openstreetmap.josm.plugins.fixAddresses.FixAddressesPlugin; import org.openstreetmap.josm.plugins.fixAddresses.OSMAddress; import org.openstreetmap.josm.plugins.fixAddresses.gui.AddressEditSelectionEvent; /** * * @author Oliver Wieland <oliver.wieland@online.de> * */ @SuppressWarnings("serial") public class SelectAddressesInMapAction extends AbstractAddressEditAction { /** * Instantiates a new "select addresses in map" action. */ public SelectAddressesInMapAction() { super(tr("Select"), "selectall", tr("Marks selected addresses in the map"), "fixaddresses/selectaddressesinmap"); } @Override public void addressEditActionPerformed(AddressEditSelectionEvent ev) { if (ev == null) return; if (ev.hasUnresolvedAddresses()) { internalSelectAddresses(ev.getSelectedUnresolvedAddresses()); } else if (ev.hasIncompleteAddresses()) { internalSelectAddresses(ev.getSelectedIncompleteAddresses()); } } @Override public void addressEditActionPerformed(AddressEditContainer container) { // do nothing } @Override protected void updateEnabledState(AddressEditContainer container) { setEnabled(false); } @Override protected void updateEnabledState(AddressEditSelectionEvent event) { setEnabled(event != null && event.hasAddresses()); } /** * Internal helper to select the given addresses in the map. * @param addrToSel addresses */ private void internalSelectAddresses(List<OSMAddress> addrToSel) { if (addrToSel == null) return; List<OsmPrimitive> sel = new ArrayList<>(); getLayerManager().getEditDataSet().clearSelection(); for (OSMAddress aNode : addrToSel) { sel.add(aNode.getOsmObject()); // Select also guessed objects, if wished if (FixAddressesPlugin.getPreferences().isSelectGuessedObjects()) { for (OsmPrimitive osmPrimitive : aNode.getGuessedObjects()) { sel.add(osmPrimitive); } } } getLayerManager().getEditDataSet().setSelected(sel); } }