001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.actions.relation;
003
004import static org.openstreetmap.josm.tools.I18n.tr;
005
006import java.awt.event.ActionEvent;
007
008import org.openstreetmap.josm.Main;
009import org.openstreetmap.josm.data.osm.Relation;
010import org.openstreetmap.josm.tools.ImageProvider;
011
012/**
013 * Action that delete relations
014 * @since 5799
015 */
016public class DeleteRelationsAction extends AbstractRelationAction {
017    static class AbortException extends Exception {}
018
019    /**
020     * Constructs a new <code>DeleteRelationsAction</code>.
021     */
022    public DeleteRelationsAction() {
023        putValue(SHORT_DESCRIPTION,tr("Delete the selected relation"));
024        putValue(NAME, tr("Delete"));
025        putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
026    }
027
028    protected void deleteRelation(Relation toDelete) {
029        if (toDelete == null)
030            return;
031        org.openstreetmap.josm.actions.mapmode.DeleteAction
032                .deleteRelation( Main.main.getEditLayer(), toDelete );
033        // clear selection after deletion
034        if (Main.map.relationListDialog!=null)
035                Main.map.relationListDialog.selectRelations(null);
036    }
037
038    @Override
039    public void actionPerformed(ActionEvent e) {
040        if (!isEnabled() || !Main.main.hasEditLayer())
041            return;
042        for (Relation r : relations) {
043            deleteRelation(r);
044        }
045    }
046}
047