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.Collections;
010
011import org.openstreetmap.josm.Main;
012import org.openstreetmap.josm.gui.layer.Layer;
013import org.openstreetmap.josm.tools.Shortcut;
014
015/**
016 * Deletes the active layer.
017 */
018public final class DeleteLayerAction extends JosmAction {
019
020    /**
021     * Constructs a {@link DeleteLayerAction} which will delete the active layer.
022     */
023    public DeleteLayerAction() {
024        super(tr("Delete Layer"), "dialogs/delete", tr("Delete the active layer. Does not delete the associated file."),
025                Shortcut.registerShortcut("system:deletelayer", tr("File: {0}", tr("Delete Layer")), KeyEvent.VK_F4, Shortcut.CTRL),
026                true, "delete-layer", true);
027        putValue("help", ht("/Action/DeleteLayer"));
028    }
029
030    @Override
031    public void actionPerformed(ActionEvent e) {
032        Layer activeLayer = Main.main.getActiveLayer();
033        if (activeLayer == null) {
034            return;
035        }
036        if (!Main.saveUnsavedModifications(Collections.singletonList(activeLayer), false)) {
037            return;
038        }
039        Main.main.removeLayer(activeLayer);
040    }
041
042    @Override
043    protected void updateEnabledState() {
044        setEnabled(Main.getLayerManager().getActiveLayer() != null);
045    }
046}