diff --git a/src/org/openstreetmap/josm/actions/DeleteLayerAction.java b/src/org/openstreetmap/josm/actions/DeleteLayerAction.java
new file mode 100644
index 0000000..84301c4
--- /dev/null
+++ b/src/org/openstreetmap/josm/actions/DeleteLayerAction.java
@@ -0,0 +1,43 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
+
+import java.util.Arrays;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.gui.layer.Layer;
+
+public final class DeleteLayerAction extends JosmAction {
+
+    /**
+     * Creates a {@link DeleteLayerAction} which will delete
+     * the active layer.
+     */
+    public DeleteLayerAction() {
+        super(tr("Delete Layer"), "dialogs/delete", tr("Delete the active layer. Does not delete the associated file."),
+                Shortcut.registerShortcut("system:deletelayer", tr("File: {0}", tr("Delete Layer")), KeyEvent.VK_F4, Shortcut.CTRL), true);
+        putValue("help", ht("/Action/DeleteLayer"));
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        Layer activeLayer = Main.main.getActiveLayer();
+        if (activeLayer == null) return;
+        if (!Main.saveUnsavedModifications(Arrays.asList(activeLayer), false))
+            return;
+        Main.main.removeLayer(activeLayer);
+    }
+
+    @Override
+    protected void updateEnabledState() {
+        setEnabled(
+            Main.isDisplayingMapView()
+            && Main.map.mapView.getActiveLayer() != null
+        );
+    }
+}
diff --git a/src/org/openstreetmap/josm/gui/MainMenu.java b/src/org/openstreetmap/josm/gui/MainMenu.java
index 40ec6d0..6018fe0 100644
--- a/src/org/openstreetmap/josm/gui/MainMenu.java
+++ b/src/org/openstreetmap/josm/gui/MainMenu.java
@@ -32,6 +32,7 @@ import org.openstreetmap.josm.actions.AlignInLineAction;
 import org.openstreetmap.josm.actions.AutoScaleAction;
 import org.openstreetmap.josm.actions.ChangesetManagerToggleAction;
 import org.openstreetmap.josm.actions.CloseChangesetAction;
+import org.openstreetmap.josm.actions.DeleteLayerAction;
 import org.openstreetmap.josm.actions.CombineWayAction;
 import org.openstreetmap.josm.actions.CopyAction;
 import org.openstreetmap.josm.actions.CopyCoordinatesAction;
@@ -148,6 +149,8 @@ public class MainMenu extends JMenuBar {
     public final SaveAction save = SaveAction.getInstance();
     /** File / Save As... **/
     public final SaveAsAction saveAs = SaveAsAction.getInstance();
+    /** File / Close Layer **/
+    public final DeleteLayerAction deleteLayerAction = new DeleteLayerAction();
     /** File / Session &gt; Save Session As... **/
     public SessionSaveAsAction sessionSaveAs;
     /** File / Export to GPX... **/
@@ -639,6 +642,7 @@ public class MainMenu extends JMenuBar {
         fileMenu.addSeparator();
         add(fileMenu, save);
         add(fileMenu, saveAs);
+        add(fileMenu, deleteLayerAction);
         sessionSaveAs = new SessionSaveAsAction();
         ExpertToggleAction.addVisibilitySwitcher(fileMenu.add(sessionSaveAs));
         add(fileMenu, gpxExport, true);
