Chapter 5. EventSelectionModel and Custom Filter Lists

Table of Contents

EventSelectionModel
Custom filtering using Matchers
Dynamic filtering using MatcherEditors
So What?

Now that you've got the JList displaying issue users, it's just a few steps to make that filter the main issues table.

EventSelectionModel

Along with ListModel, and TableModel, Glazed Lists provides a ListSelectionModel that eliminates all of the index manipulation related to selection handling. EventSelectionModel brings you two advantages over Swing's standard DefaultListSelectionModel:

  • It publishes an EventList containing a live view of the current selection. Access the selected elements like they're in an ArrayList.

  • It fixes a problem with the standard ListSelectionModel's MULTIPLE_INTERVAL_SELECTION mode. In that mode, rows inserted within the selected range become selected. This is quite annoying when removing a filter because restored elements become selected. The fix is in EventSelectionModel's default selection mode, MULTIPLE_INTERVAL_SELECTION_DEFENSIVE. In this mode, rows must be explicitly selected by your user.

You'll enjoy accessing selection from an EventList. For example, you can use the familiar methods List.isEmpty() and List.contains() in new ways:

      if(usersSelectedList.isEmpty()) return true;
      ...
      String user = issue.getAssignedTo();
      return usersSelectedList.contains(user);