// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.dialogs.relation.actions;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.openstreetmap.josm.actions.mapmode.DeleteAction;
import org.openstreetmap.josm.data.osm.Relation;
import org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor;
import org.openstreetmap.josm.gui.dialogs.relation.IRelationEditor;
import org.openstreetmap.josm.gui.layer.OsmDataLayer;
import org.openstreetmap.josm.tools.ImageProvider;
/**
* Delete the currently edited relation.
* @since 9496
*/
public class DeleteCurrentRelationAction extends AbstractRelationEditorAction implements PropertyChangeListener {
/**
* Constructs a new {@code DeleteCurrentRelationAction}.
* @param layer OSM data layer
* @param editor relation editor
*/
public DeleteCurrentRelationAction(OsmDataLayer layer, IRelationEditor editor) {
super(null, null, null, layer, editor);
putValue(SHORT_DESCRIPTION, tr("Delete the currently edited relation"));
putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
putValue(NAME, tr("Delete"));
updateEnabledState();
}
@Override
public void actionPerformed(ActionEvent e) {
Relation toDelete = editor.getRelation();
if (toDelete == null)
return;
DeleteAction.deleteRelation(layer, toDelete);
}
@Override
protected void updateEnabledState() {
setEnabled(editor.getRelationSnapshot() != null);
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (GenericRelationEditor.RELATION_SNAPSHOT_PROP.equals(evt.getPropertyName())) {
updateEnabledState();
}
}
}