Changeset 8822 in josm for trunk


Ignore:
Timestamp:
2015-10-04T17:53:14+02:00 (9 years ago)
Author:
simon04
Message:

see #11916 - Search: allow to use multiple MapCSS selectors and child/parent selectors

Location:
trunk/src/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java

    r8812 r8822  
    1111import java.util.Collection;
    1212import java.util.HashMap;
     13import java.util.List;
    1314import java.util.Locale;
    1415import java.util.Map;
     
    2930import org.openstreetmap.josm.data.osm.Way;
    3031import org.openstreetmap.josm.gui.mappaint.Environment;
    31 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
    3232import org.openstreetmap.josm.gui.mappaint.mapcss.Selector;
    3333import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser;
     
    14401440    static Match compileMapCSS(String mapCSS) throws ParseError {
    14411441        try {
    1442             final Selector selector = new MapCSSParser(new StringReader(mapCSS)).selector();
     1442            final List<Selector> selectors = new MapCSSParser(new StringReader(mapCSS)).selectors();
    14431443            return new Match() {
    14441444                @Override
    14451445                public boolean match(OsmPrimitive osm) {
    1446                     return selector.matches(new Environment(osm));
     1446                    for (Selector selector : selectors) {
     1447                        if (selector.matches(new Environment(osm))) {
     1448                            return true;
     1449                        }
     1450                    }
     1451                    return false;
    14471452                }
    14481453            };
  • trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj

    r8791 r8822  
    604604void rule():
    605605{
    606     List<Selector> selectors = new ArrayList<Selector>();
    607     Selector sel;
     606    List<Selector> selectors;
    608607    Declaration decl;
    609608}
    610609{
    611     sel=child_selector() { selectors.add(sel); }
    612     (
    613         <COMMA> w()
    614         sel=child_selector() { selectors.add(sel); }
    615     )*
     610    selectors=selectors()
    616611    decl=declaration()
    617612    {
     
    620615        }
    621616    }
     617}
     618
     619List<Selector> selectors():
     620{
     621    List<Selector> selectors = new ArrayList<Selector>();
     622    Selector sel;
     623}
     624{
     625    sel=child_selector() { selectors.add(sel); }
     626    (
     627        <COMMA> w()
     628        sel=child_selector() { selectors.add(sel); }
     629    )*
     630    { return selectors; }
    622631}
    623632
Note: See TracChangeset for help on using the changeset viewer.