Index: /trunk/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java	(revision 5352)
+++ /trunk/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java	(revision 5353)
@@ -2,5 +2,4 @@
 package org.openstreetmap.josm.data.validation.util;
 
-import static org.openstreetmap.josm.tools.I18n.tr;
 import static org.openstreetmap.josm.tools.I18n.trn;
 
@@ -20,10 +19,12 @@
 public class MultipleNameVisitor extends NameVisitor
 {
+    public static final int MULTIPLE_NAME_MAX_LENGTH = 80;
+    
     /** The class name of the combined primitives */
-    String multipleClassname;
+    private String multipleClassname;
     /* name to be displayed */
-    String displayName;
+    private String displayName;
     /** Size of the collection */
-    int size;
+    private int size;
 
     /**
@@ -32,8 +33,6 @@
      */
     public void visit(Collection<? extends OsmPrimitive> data) {
-        String multipleName = null;
+        String multipleName = "";
         String multiplePluralClassname = null;
-        String firstName = null;
-        boolean initializedname = false;
         size = data.size();
 
@@ -44,13 +43,11 @@
                 name = osm.get("ref");
             }
-            if (!initializedname) {
-                multipleName = name; initializedname = true;
-            } else if (multipleName != null && (name == null  || !name.equals(multipleName))) {
-                multipleName = null;
+            if (name != null && !name.isEmpty() && multipleName.length() <= MULTIPLE_NAME_MAX_LENGTH) {
+                if (!multipleName.isEmpty()) {
+                    multipleName += ", ";
+                }
+                multipleName += name;
             }
 
-            if (firstName == null && name != null) {
-                firstName = name;
-            }
             osm.visit(this);
             if (multipleClassname == null) {
@@ -65,10 +62,13 @@
         if (size == 1) {
             displayName = name;
-        } else if (multipleName != null) {
-            displayName = size + " " + trn(multipleClassname, multiplePluralClassname, size) + ": " + multipleName;
-        } else if (firstName != null) {
-            displayName = size + " " + trn(multipleClassname, multiplePluralClassname, size) + ": " + tr("{0}, ...", firstName);
         } else {
             displayName = size + " " + trn(multipleClassname, multiplePluralClassname, size);
+            if (!multipleName.isEmpty()) {
+                if (multipleName.length() <= MULTIPLE_NAME_MAX_LENGTH) {
+                    displayName += ": " + multipleName;
+                } else {
+                    displayName += ": " + multipleName.substring(0, MULTIPLE_NAME_MAX_LENGTH) + "...";
+                }
+            }
         }
     }
@@ -97,3 +97,8 @@
             return ImageProvider.get("data", multipleClassname);
     }
+
+    @Override
+    public String toString() {
+        return getText();
+    }
 }
