Ignore:
Timestamp:
2020-01-26T20:10:39+01:00 (4 years ago)
Author:
simon04
Message:

fix #14197 - Advanced Preferences: support search keywords "modified", "default", "changed"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AdvancedPreference.java

    r15589 r15779  
    2020import java.util.Map.Entry;
    2121import java.util.Objects;
     22import java.util.regex.Pattern;
    2223
    2324import javax.swing.AbstractAction;
     
    476477            String prefValue = valueSetting.getValue() == null ? "" : valueSetting.getValue().toString();
    477478
    478             String[] input = txtFilter.getText().split("\\s+");
    479             boolean canHas = true;
    480479
    481480            // Make 'wmsplugin cache' search for e.g. 'cache.wmsplugin'
    482481            final String prefKeyLower = prefKey.toLowerCase(Locale.ENGLISH);
    483482            final String prefValueLower = prefValue.toLowerCase(Locale.ENGLISH);
    484             for (String bit : input) {
    485                 bit = bit.toLowerCase(Locale.ENGLISH);
    486                 if (!prefKeyLower.contains(bit) && !prefValueLower.contains(bit)) {
    487                     canHas = false;
    488                     break;
    489                 }
    490             }
     483            final boolean canHas = Pattern.compile("\\s+").splitAsStream(txtFilter.getText())
     484                    .map(bit -> bit.toLowerCase(Locale.ENGLISH))
     485                    .anyMatch(bit -> {
     486                        switch (bit) {
     487                            // syntax inspired by SearchCompiler
     488                            case "changed":
     489                                return e.isChanged();
     490                            case "modified":
     491                            case "-default":
     492                                return !e.isDefault();
     493                            case "-modified":
     494                            case "default":
     495                                return e.isDefault();
     496                            default:
     497                                return prefKeyLower.contains(bit) || prefValueLower.contains(bit);
     498                        }
     499                    });
    491500            if (canHas) {
    492501                displayData.add(e);
Note: See TracChangeset for help on using the changeset viewer.