Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.swing / org.gvsig.tools.swing.api / src / main / java / org / gvsig / tools / swing / api / TreeModelRecursiveWildcarMatchFilter.java @ 2350

History | View | Annotate | Download (1.28 KB)

1
package org.gvsig.tools.swing.api;
2

    
3
import javax.swing.tree.TreeModel;
4
import org.apache.commons.lang3.StringUtils;
5
import org.gvsig.tools.swing.api.FilteredModel.FilterFunction;
6
import org.gvsig.tools.util.CompareUtils;
7

    
8
/**
9
 *
10
 * @author jjdelcerro
11
 */
12
public class TreeModelRecursiveWildcarMatchFilter implements FilterFunction {
13

    
14
  FilteredTreeModel  filteredTreeModel; 
15
  public TreeModelRecursiveWildcarMatchFilter (FilteredTreeModel filteredTreeModel) {
16
      this.filteredTreeModel = filteredTreeModel;
17
  }
18

    
19
  @Override
20
  public boolean test(Object model, Object node, String filter) {
21
        if ( node==null ) {
22
            return true;
23
        }
24
        if ( StringUtils.isBlank(filter) ) {
25
            return true;
26
        }
27
        boolean matches;
28
        String nodeString = node.toString();
29
        if (this.filteredTreeModel.isCaseSensitive()) {
30
            matches = CompareUtils.matchCaseAndAccentsSensitive(nodeString, filter);
31
        } else {
32
            matches = CompareUtils.match(nodeString, filter);
33
        }
34
        int childCount = ((TreeModel)model).getChildCount(node);
35
        for (int i = 0; i < childCount; i++) {
36
            Object child = ((TreeModel)model).getChild(node, i);
37
            matches |= test(model, child, filter);
38
        }
39
        return matches;
40
  }
41

    
42
}