Table of Contents
In part four of this tutorial, we compose a list of users derived from the list of
issues. Each issue has a user, so we extract all users from all issues to form a new
list. The derived list is also a EventList
so we can apply
filtering and sorting to it in turn. In part five we use our derived users list to
filter for issues belonging to a selected user.
Earlier in the tutorial we discussed how Glazed Lists uses events to propagate
changes to TransformedLists
and widgets. Although this had
been significant in understanding how EventList
s work, it
was not necessary to interact with the event and listener code directly. In this
stage we create a custom transformation and require some of the event and listener
code in the process.
ListEvent
s are sophisticated event objects. Each event
notification may contain information on hundreds of inserts, updates and deletes
within a list. To simplify the process, the ListEventAssembler
class assembles and manages ListEvent
s and their listeners.
The ListEventAssembler
has methods addInsert(index)
,
addUpdate(index)
and addDelete(index)
to
be called with each list add()
, set()
and
remove()
, respectively. Finally it has a pair of methods
beginEvent()
and commitEvent()
that prepare
for and fire the event to listeners. To fire an event that is identical to
the event received, the forwardEvent()
method may be used.