// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.fixAddresses.gui.actions; import static org.openstreetmap.josm.tools.I18n.tr; import org.openstreetmap.josm.plugins.fixAddresses.AddressEditContainer; import org.openstreetmap.josm.plugins.fixAddresses.OSMStreet; import org.openstreetmap.josm.plugins.fixAddresses.gui.AddressEditSelectionEvent; @SuppressWarnings("serial") public class ConvertAllToRelationAction extends ConvertToRelationAction { public ConvertAllToRelationAction() { super(tr("Convert ALL streets."), "convert2rel_24", tr("Create relation between street and related addresses for ALL streets in the current layer."), "fixaddresses/convertalltorelation"); } @Override public void addressEditActionPerformed(AddressEditSelectionEvent ev) { // nothing to do } @Override public void addressEditActionPerformed(AddressEditContainer container) { if (container != null) { for (OSMStreet street : container.getStreetList()) { createRelationForStreet(street); } } } @Override protected void updateEnabledState(AddressEditContainer container) { setEnabled(hasStreetsToConvert()); } @Override protected void updateEnabledState(AddressEditSelectionEvent event) { setEnabled(hasStreetsToConvert()); } /** * Checks for streets to convert to a relation. * * @return true, if successful */ private boolean hasStreetsToConvert() { if (container != null) { for (OSMStreet street : container.getStreetList()) { if (street.hasAddresses() && !street.hasAssociatedStreetRelation()) { return true; } } } return false; } }