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