Ticket #6239: case-ins_and_search_PrefJPanel.java.patch

File case-ins_and_search_PrefJPanel.java.patch, 1.5 KB (added by joshdoe, 14 years ago)
  • src/org/openstreetmap/josm/gui/preferences/PrefJPanel.java

     
    88import static org.openstreetmap.josm.tools.I18n.tr;
    99
    1010import java.awt.event.KeyEvent;
     11import java.util.ArrayList;
    1112import java.util.LinkedHashMap;
    1213import java.util.HashMap;
    1314import java.util.Map;
     
    596597            try {
    597598                final TableRowSorter<TableModel> sorter =
    598599                    ((TableRowSorter<TableModel> )shortcutTable.getRowSorter());
    599                 if (expr==null) sorter.setRowFilter(null);
    600                     else  sorter.setRowFilter(  RowFilter.regexFilter(expr) );
     600                if (expr == null) {
     601                    sorter.setRowFilter(null);
     602                } else {
     603                    // split search string on whitespace, do case-insensitive AND search
     604                    ArrayList<RowFilter<Object, Object>> andFilters = new ArrayList<RowFilter<Object, Object>>();
     605                    for (String word : expr.split("\\s+")) {
     606                        andFilters.add(RowFilter.regexFilter("(?i)" + word));
     607                    }
     608                    sorter.setRowFilter(RowFilter.andFilter(andFilters));
     609                }
    601610            }
    602611            catch (PatternSyntaxException ex) { }
    603612            catch (ClassCastException ex2) { /* eliminate warning */  }