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