Ignore:
Timestamp:
2021-03-25T00:28:04+01:00 (3 years ago)
Author:
simon04
Message:

fix #19012 - Tagging presets: additional matching criteria via <item match_expression="...">

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java

    r17651 r17662  
    4848import org.openstreetmap.josm.data.osm.RelationMember;
    4949import org.openstreetmap.josm.data.osm.Tag;
     50import org.openstreetmap.josm.data.osm.Tagged;
    5051import org.openstreetmap.josm.data.osm.Way;
    5152import org.openstreetmap.josm.data.osm.search.SearchCompiler;
     
    135136    public transient TemplateEntry nameTemplate;
    136137    public transient Match nameTemplateFilter;
     138    public transient Match matchExpression;
    137139
    138140    /**
     
    288290    }
    289291
     292    public void setMatch_expression(String filter) throws SAXException {
     293        try {
     294            this.matchExpression = SearchCompiler.compile(filter);
     295        } catch (SearchParseError e) {
     296            Logging.error("Error while parsing" + filter + ": " + e.getMessage());
     297            throw new SAXException(e);
     298        }
     299    }
     300
    290301    private static class PresetPanel extends JPanel {
    291302        private boolean hasElements;
     
    646657        if ((onlyShowable && !isShowable()) || !typeMatches(t)) {
    647658            return false;
     659        } else if (matchExpression != null && !matchExpression.match(Tagged.ofMap(tags))) {
     660            return false;
    648661        } else {
    649662            return TaggingPresetItem.matches(data, tags);
Note: See TracChangeset for help on using the changeset viewer.