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 @ 2130

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.io.FilenameUtils;
5
import org.apache.commons.lang3.StringUtils;
6
import org.gvsig.tools.swing.api.FilteredTreeModel.TreeModelFilter;
7

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

    
14
  private final String filter;
15

    
16
  public TreeModelRecursiveWildcarMatchFilter(String filter) {
17
    if (StringUtils.isBlank(filter)) {
18
        this.filter = null;
19
    } else {
20
        if (StringUtils.containsAny(filter, "*?")) {
21
            this.filter = filter.toUpperCase();
22
        } else {
23
            this.filter = "*" + filter.toUpperCase() + "*";
24
        }
25
    }    
26
  }
27
  
28
  @Override
29
  public boolean test(TreeModel treeModel, Object node) {
30
        if ( this.filter==null ) {
31
            return true;
32
        }
33
        if ( node==null ) {
34
            return true;
35
        }
36
        String nodeString = node.toString().toUpperCase();
37
        boolean matches = FilenameUtils.wildcardMatch(nodeString, filter);
38

    
39
        int childCount = treeModel.getChildCount(node);
40
        for (int i = 0; i < childCount; i++) {
41
            Object child = treeModel.getChild(node, i);
42
            matches |= test(treeModel, child);
43
        }
44
        return matches;
45
  }
46
  
47
}