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;
007import java.util.Collection;
008
009import org.openstreetmap.josm.Main;
010import org.openstreetmap.josm.actions.mapmode.DeleteAction;
011import org.openstreetmap.josm.data.osm.Relation;
012import org.openstreetmap.josm.gui.layer.OsmDataLayer;
013import org.openstreetmap.josm.tools.ImageProvider;
014
015/**
016 * Action that delete relations
017 * @since 5799
018 */
019public class DeleteRelationsAction extends AbstractRelationAction {
020
021    /**
022     * Constructs a new <code>DeleteRelationsAction</code>.
023     */
024    public DeleteRelationsAction() {
025        putValue(SHORT_DESCRIPTION, tr("Delete the selected relation"));
026        putValue(NAME, tr("Delete"));
027        new ImageProvider("dialogs", "delete").getResource().attachImageIcon(this, true);
028    }
029
030    protected void deleteRelation(Collection<Relation> toDelete) {
031        OsmDataLayer layer = Main.getLayerManager().getEditLayer();
032        if (toDelete == null || layer == null)
033            return;
034
035        DeleteAction.deleteRelations(layer, toDelete);
036        // clear selection after deletion
037        if (Main.map.relationListDialog != null)
038                Main.map.relationListDialog.selectRelations(null);
039    }
040
041    @Override
042    public void actionPerformed(ActionEvent e) {
043        if (!isEnabled())
044            return;
045        deleteRelation(relations);
046    }
047}