Index: trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java	(revision 12414)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/layer/LayerVisibilityAction.java	(revision 12419)
@@ -17,4 +17,5 @@
 import java.util.HashMap;
 import java.util.List;
+import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
@@ -93,5 +94,5 @@
         addContentEntry(new GammaFilterSlider());
         addContentEntry(new SharpnessSlider());
-        addContentEntry(new ColorSelector());
+        addContentEntry(new ColorSelector(model::getSelectedLayers));
     }
 
@@ -527,11 +528,11 @@
      * @author Michael Zangl
      */
-    private class ColorSelector extends JPanel implements LayerVisibilityMenuEntry {
-
-        private final Border NORMAL_BORDER = BorderFactory.createEmptyBorder(2, 2, 2, 2);
-        private final Border SELECTED_BORDER = BorderFactory.createLineBorder(Color.BLACK, 2);
+    private static class ColorSelector extends JPanel implements LayerVisibilityMenuEntry {
+
+        private static final Border NORMAL_BORDER = BorderFactory.createEmptyBorder(2, 2, 2, 2);
+        private static final Border SELECTED_BORDER = BorderFactory.createLineBorder(Color.BLACK, 2);
 
         // TODO: Nicer color palette
-        private final Color[] COLORS = new Color[] {
+        private static final Color[] COLORS = new Color[] {
                 Color.RED,
                 Color.ORANGE,
@@ -542,8 +543,10 @@
                 Color.GRAY,
         };
+        private final Supplier<List<Layer>> layerSupplier;
         private final HashMap<Color, JPanel> panels = new HashMap<>();
 
-        ColorSelector() {
+        ColorSelector(Supplier<List<Layer>> layerSupplier) {
             super(new GridBagLayout());
+            this.layerSupplier = layerSupplier;
             add(new JLabel(tr("Color")), GBC.eol().insets(24 + 10, 0, 0, 0));
             for (Color color : COLORS) {
@@ -563,5 +566,5 @@
                 @Override
                 public void mouseClicked(MouseEvent e) {
-                    List<Layer> layers = model.getSelectedLayers();
+                    List<Layer> layers = layerSupplier.get();
                     for (Layer l : layers) {
                         if (l instanceof GpxLayer) {
@@ -574,4 +577,9 @@
             add(colorPanel, GBC.std().weight(1, 1).fill().insets(5));
             panels.put(color, colorPanel);
+
+            List<Color> colors = layerSupplier.get().stream().map(l -> l.getColorProperty().get()).distinct().collect(Collectors.toList());
+            if (colors.size() == 1) {
+                highlightColor(colors.get(0));
+            }
         }
 
@@ -585,5 +593,5 @@
                 setVisible(true);
                 highlightColor(colors.get(0));
-            } else if (colors.size() > 0) {
+            } else if (colors.size() > 1) {
                 setVisible(true);
                 highlightColor(null);
