Just as you've seen
      TextComponentMatcherEditor filter issues with a
      JTextField, you can create a custom
      MatcherEditor to filter with the users
      JList. The first step is to create a simple
      Matcher for static
      filtering. Then we'll create MatcherEditor to
      implement dynamic filtering using our static
      Matcher.
Implementing the Matcher will require you
      to write a single method, matches() to test whether
      a given element should be filtered out. You'll need to create a
      Matcher that accepts issues for a list of
      users.
It's unfortunate that Glazed Lists'
        Matcher uses the same class name as
        java.util.regex.Matcher. If you find yourself
        implementing a Glazed Lists Matcher that
        requires regular expressions, you'll need to fully qualify classnames
        throughout your code, and we apologize. We considered 'Predicate' for
        the interface name but decided it was too presumptuous. Naming is very
        important to us at Glazed Lists!
import java.util.*;
// glazed lists
import ca.odell.glazedlists.*;
import ca.odell.glazedlists.matchers.*;
// a simple issues library
import ca.odell.issuezilla.*;
/**
 * This {@link Matcher} only matches users in a predefined set.
 * 
 * @author <a href="mailto:jesse@odel.on.ca">Jesse Wilson</a>
 */
public class IssuesForUsersMatcher implements Matcher {
    
    /** the users to match */
    private Set users = new HashSet();
    
    /**
     * Create a new {@link IssuesForUsersMatcher} that matches only 
     * {@link Issue}s that have one or more user in the specified list.
     */
    public IssuesForUsersMatcher(Collection users) {
        // make a defensive copy of the users
        this.users.addAll(users);
    }
    
    /**
     * Test whether to include or not include the specified issue based
     * on whether or not their user is selected.
     */
    public boolean matches(Object o) {
        if(o == null) return false;
        if(users.isEmpty()) return true;
        
        Issue issue = (Issue)o;
        String user = issue.getReporter();
        return users.contains(user);
    }
}With this IssuesForUsersMatcher in place,
      create an EventList that contains the issues that
      match only the specified users:
        List users = new ArrayList();
        users.add("jessewilson");
        users.add("kevinmaltby");
        users.add("tmao");
        Matcher usersMatcher = new IssuesForUsersMatcher(users);
        
        EventList issues = ...
        FilterList IssuesForUsers = new FilterList(issues, usersMatcher);To avoid concurrency problems, make your
      Matchers immutable. This
      enables your matches() method to be used from
      multiple threads without synchronization.