001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.actions;
003
004import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
005import static org.openstreetmap.josm.tools.I18n.tr;
006
007import java.awt.event.ActionEvent;
008import java.awt.event.KeyEvent;
009import java.util.Collection;
010
011import org.openstreetmap.josm.Main;
012import org.openstreetmap.josm.data.osm.OsmPrimitive;
013import org.openstreetmap.josm.tools.Shortcut;
014
015/**
016 * Action that deletes selected objects.
017 * @since 770
018 */
019public final class DeleteAction extends JosmAction {
020
021    /**
022     * Constructs a new {@code DeleteAction}.
023     */
024    public DeleteAction() {
025        super(tr("Delete"), "dialogs/delete", tr("Delete selected objects."),
026                Shortcut.registerShortcut("system:delete", tr("Edit: {0}", tr("Delete")), KeyEvent.VK_DELETE, Shortcut.DIRECT), true);
027        putValue("help", ht("/Action/Delete"));
028    }
029
030    @Override
031    public void actionPerformed(ActionEvent e) {
032        if (!isEnabled() || !Main.map.mapView.isActiveLayerVisible())
033            return;
034        org.openstreetmap.josm.actions.mapmode.DeleteAction.doActionPerformed(e);
035    }
036
037    @Override
038    protected void updateEnabledState() {
039        updateEnabledStateOnCurrentSelection();
040    }
041
042    @Override
043    protected void updateEnabledState(Collection<? extends OsmPrimitive> selection) {
044        setEnabled(selection != null && !selection.isEmpty());
045    }
046}