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}