Changeset 5353 in josm


Ignore:
Timestamp:
2012-07-19T23:04:38+02:00 (7 years ago)
Author:
Don-vip
Message:

fix #7229 - Render all names (up to 80 chars) in validator tree, instead of just the first one followed by "..."

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/validation/util/MultipleNameVisitor.java

    r3671 r5353  
    22package org.openstreetmap.josm.data.validation.util;
    33
    4 import static org.openstreetmap.josm.tools.I18n.tr;
    54import static org.openstreetmap.josm.tools.I18n.trn;
    65
     
    2019public class MultipleNameVisitor extends NameVisitor
    2120{
     21    public static final int MULTIPLE_NAME_MAX_LENGTH = 80;
     22   
    2223    /** The class name of the combined primitives */
    23     String multipleClassname;
     24    private String multipleClassname;
    2425    /* name to be displayed */
    25     String displayName;
     26    private String displayName;
    2627    /** Size of the collection */
    27     int size;
     28    private int size;
    2829
    2930    /**
     
    3233     */
    3334    public void visit(Collection<? extends OsmPrimitive> data) {
    34         String multipleName = null;
     35        String multipleName = "";
    3536        String multiplePluralClassname = null;
    36         String firstName = null;
    37         boolean initializedname = false;
    3837        size = data.size();
    3938
     
    4443                name = osm.get("ref");
    4544            }
    46             if (!initializedname) {
    47                 multipleName = name; initializedname = true;
    48             } else if (multipleName != null && (name == null  || !name.equals(multipleName))) {
    49                 multipleName = null;
     45            if (name != null && !name.isEmpty() && multipleName.length() <= MULTIPLE_NAME_MAX_LENGTH) {
     46                if (!multipleName.isEmpty()) {
     47                    multipleName += ", ";
     48                }
     49                multipleName += name;
    5050            }
    5151
    52             if (firstName == null && name != null) {
    53                 firstName = name;
    54             }
    5552            osm.visit(this);
    5653            if (multipleClassname == null) {
     
    6562        if (size == 1) {
    6663            displayName = name;
    67         } else if (multipleName != null) {
    68             displayName = size + " " + trn(multipleClassname, multiplePluralClassname, size) + ": " + multipleName;
    69         } else if (firstName != null) {
    70             displayName = size + " " + trn(multipleClassname, multiplePluralClassname, size) + ": " + tr("{0}, ...", firstName);
    7164        } else {
    7265            displayName = size + " " + trn(multipleClassname, multiplePluralClassname, size);
     66            if (!multipleName.isEmpty()) {
     67                if (multipleName.length() <= MULTIPLE_NAME_MAX_LENGTH) {
     68                    displayName += ": " + multipleName;
     69                } else {
     70                    displayName += ": " + multipleName.substring(0, MULTIPLE_NAME_MAX_LENGTH) + "...";
     71                }
     72            }
    7373        }
    7474    }
     
    9797            return ImageProvider.get("data", multipleClassname);
    9898    }
     99
     100    @Override
     101    public String toString() {
     102        return getText();
     103    }
    99104}
Note: See TracChangeset for help on using the changeset viewer.