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();
+            }
+        }
     }
 
