Index: /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 11032)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 11033)
@@ -31,4 +31,5 @@
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.regex.Pattern;
 
@@ -98,4 +99,5 @@
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.io.OsmImporter;
+import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.GBC;
@@ -198,5 +200,5 @@
 
     /** the global counter for created data layers */
-    private static int dataLayerCounter;
+    private static final AtomicInteger dataLayerCounter = new AtomicInteger();
 
     /**
@@ -206,6 +208,9 @@
      */
     public static String createNewName() {
-        dataLayerCounter++;
-        return tr("Data Layer {0}", dataLayerCounter);
+        return createLayerName(dataLayerCounter.incrementAndGet());
+    }
+
+    static String createLayerName(Object arg) {
+        return tr("Data Layer {0}", arg);
     }
 
@@ -352,4 +357,9 @@
         data.addDataSetListener(MultipolygonCache.getInstance());
         DataSet.addSelectionListener(this);
+        if (name != null && name.startsWith(createLayerName(""))) {
+            while (AlphanumComparator.getInstance().compare(createLayerName(dataLayerCounter), name) < 0) {
+                dataLayerCounter.incrementAndGet();
+            }
+        }
     }
 
Index: /trunk/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java	(revision 11032)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/layer/OsmDataLayerTest.java	(revision 11033)
@@ -10,4 +10,5 @@
 import java.io.File;
 
+import org.fest.assertions.Assertions;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -254,3 +255,11 @@
         assertTrue(layer.checkSaveConditions());
     }
+
+    @Test
+    public void testLayerNameIncreases() throws Exception {
+        final OsmDataLayer layer1 = new OsmDataLayer(new DataSet(), OsmDataLayer.createLayerName(147), null);
+        final OsmDataLayer layer2 = new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null);
+        assertEquals("Data Layer 147", layer1.getName());
+        assertEquals("Data Layer 148", layer2.getName());
+    }
 }
