The AppEvent library provides the anonym sending and receiving of events.
The event sender doesn't know the receiver of a event, and vice versa.
The only shared knowledge between sender and receiver are the type
(class) of the event.
The process of binding the receiver to a sender also works via the AppEvent concept:
With posting a {@link net.sf.cuf.appevent.BindEvent}
object the receiver (an object of any class) can bind one of its methods
to an {@link net.sf.cuf.appevent.AppEvent} type.
There can be any number of receivers for a given event class, the all
get notified in a undefined (but deterministic) order.
In most GUI applications, certain parts (e.g. the various dialogs) are
connected in some hierarchical way. When this parts implement the
{@link net.sf.cuf.appevent.AppEventSupport} interface,
their relation can serve as an "chain of responsibility" for the
AppEvent's.
At the end of such a chain is typically a {@link
net.sf.cuf.appevent.AppEventManager} object, that does the
dispatching of all events that were not consumed on the way through
the chain.