Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 15456)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 15457)
@@ -39,8 +39,11 @@
 import javax.swing.table.TableModel;
 
+import org.openstreetmap.josm.actions.ExpertToggleAction;
 import org.openstreetmap.josm.actions.MergeLayerAction;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.imagery.OffsetBookmark;
 import org.openstreetmap.josm.data.preferences.AbstractProperty;
+import org.openstreetmap.josm.data.preferences.AbstractProperty.ValueChangeListener;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.MainApplication;
 import org.openstreetmap.josm.gui.MapFrame;
@@ -97,4 +100,6 @@
     private static volatile LayerListDialog instance;
 
+    private static final BooleanProperty DISPLAY_NUMBERS = new BooleanProperty("layerlist.display.numbers", true);
+
     /**
      * Creates the instance of the dialog. It's connected to the layer manager
@@ -127,4 +132,5 @@
     /** the list of layers (technically its a JTable, but appears like a list) */
     private final LayerList layerList;
+    private final ValueChangeListener<? super Boolean> displayNumbersPrefListener;
 
     private final ActivateLayerAction activateLayerAction;
@@ -219,8 +225,9 @@
         layerList.getColumnModel().getColumn(2).setResizable(false);
 
+        int width = getLayerNumberWidth();
         layerList.getColumnModel().getColumn(3).setCellRenderer(new LayerVisibleCellRenderer());
         layerList.getColumnModel().getColumn(3).setCellEditor(new LayerVisibleCellEditor(new LayerVisibleCheckBox()));
-        layerList.getColumnModel().getColumn(3).setMaxWidth(48);
-        layerList.getColumnModel().getColumn(3).setPreferredWidth(48);
+        layerList.getColumnModel().getColumn(3).setMaxWidth(width);
+        layerList.getColumnModel().getColumn(3).setPreferredWidth(width);
         layerList.getColumnModel().getColumn(3).setResizable(false);
 
@@ -247,4 +254,12 @@
         }
 
+        displayNumbersPrefListener = change -> {
+            int numberWidth = getLayerNumberWidth();
+            layerList.getColumnModel().getColumn(3).setMaxWidth(numberWidth);
+            layerList.getColumnModel().getColumn(3).setPreferredWidth(numberWidth);
+            repaint();
+        };
+        DISPLAY_NUMBERS.addListener(displayNumbersPrefListener);
+
         // init the model
         //
@@ -326,4 +341,12 @@
     }
 
+    private static boolean displayLayerNumbers() {
+        return ExpertToggleAction.isExpert() && DISPLAY_NUMBERS.get();
+    }
+
+    private static int getLayerNumberWidth() {
+        return displayLayerNumbers() ? 48 : 16;
+    }
+
     /**
      * Gets the layer manager this dialog is for.
@@ -367,4 +390,5 @@
         JumpToMarkerActions.unregisterActions();
         layerList.setTransferHandler(null);
+        DISPLAY_NUMBERS.removeListener(displayNumbersPrefListener);
         super.destroy();
         instance = null;
@@ -419,7 +443,11 @@
             boolean visible = layer.isVisible();
             setSelected(visible);
-            List<Layer> layers = MainApplication.getLayerManager().getLayers();
-            int num = layers.size() - layers.indexOf(layer);
-            setText(String.format("%s[%d]", num < 10 ? " " : "", num));
+            if (displayLayerNumbers()) {
+                List<Layer> layers = MainApplication.getLayerManager().getLayers();
+                int num = layers.size() - layers.indexOf(layer);
+                setText(String.format("%s[%d]", num < 10 ? " " : "", num));
+            } else {
+                setText(null);
+            }
             setTranslucent(layer.getOpacity() < 1.0);
             setToolTipText(visible ?
