Ticket #20467: 20467-presets.patch

File 20467-presets.patch, 2.8 KB (added by simon04, 4 years ago)
  • src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java

    diff --git a/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java b/src/org/openstreetmap/josm/data/osm/DefaultNameFormatter.java
    index 84640adca..99a07119f 100644
    a b import org.openstreetmap.josm.data.osm.history.HistoryRelation;  
    3030import org.openstreetmap.josm.data.osm.history.HistoryWay;
    3131import org.openstreetmap.josm.gui.tagging.presets.TaggingPreset;
    3232import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetNameTemplateList;
     33import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
    3334import org.openstreetmap.josm.spi.preferences.Config;
    3435import org.openstreetmap.josm.tools.AlphanumComparator;
    3536import org.openstreetmap.josm.tools.I18n;
    public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter  
    174175                if (n == null) {
    175176                    n = formatAddress(node);
    176177                }
     178                if (n == null) {
     179                    n = formatMatchingPreset(node);
     180                }
    177181
    178182                if (n == null) {
    179183                    n = node.isNew() ? tr("node") : Long.toString(node.getId());
    public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter  
    230234                if (n == null) {
    231235                    n = way.get("ref");
    232236                }
    233                 if (n == null) {
    234                     n = way.hasKey("highway") ? tr("highway") :
    235                         way.hasKey("railway") ? tr("railway") :
    236                         way.hasKey("waterway") ? tr("waterway") :
    237                         way.hasKey("landuse") ? tr("landuse") : null;
    238                 }
    239237                if (n == null) {
    240238                    n = formatAddress(way);
    241239                }
    242                 if (n == null && way.hasKey("building")) {
    243                     n = tr("building");
     240                if (n == null) {
     241                    n = formatMatchingPreset(way);
    244242                }
    245243                if (n == null || n.isEmpty()) {
    246244                    n = String.valueOf(way.getId());
    public class DefaultNameFormatter implements NameFormatter, HistoryNameFormatter  
    305303        return n;
    306304    }
    307305
     306    private String formatMatchingPreset(IPrimitive osm) {
     307        Collection<TaggingPreset> presets = TaggingPresets.getMatchingPresets(osm);
     308        if (!presets.isEmpty()) {
     309            TaggingPreset taggingPreset = presets.iterator().next();
     310            return taggingPreset.group != null
     311                    ? taggingPreset.group.getLocaleName() + "/" + taggingPreset.getLocaleName()
     312                    : taggingPreset.getLocaleName();
     313        }
     314        return null;
     315    }
     316
    308317    private final Comparator<IWay<?>> wayComparator = Comparator.comparing(this::format);
    309318
    310319    @Override