public interface EventDispatcher
EventDispatcher
represents an event dispatching and processing
entity. It is used when an Event
needs to be dispatched to the
associated EventTarget
through the EventDispatchChain
specified by the target. Each EventDispatcher
in the chain can
influence the event path and the event itself. One EventDispatcher
can appear in multiple chains.
The system defines two successive phases of event delivery. The first
phase is called capturing phase and happens when when an event travels from
the first element of the EventDispatchChain
associated with the event
target to its last element. If the event target is part of some hierarchy,
the direction of the event in this phase usually corresponds with the
direction from the root element of the hierarchy to the target. The second
phase is called bubbling phase and happens in the reverse order to the first
phase. So the event is returning back from the last element of the
EventDispatchChain
to its first element in this phase. Usually that
corresponds to the direction from the event target back to the root in the
event target's hierarchy.
Each EventDispatcher
in an EventDispatchChain
is responsible
for forwarding the event to the rest of the chain during event dispatching.
This forwarding happens in the dispatchEvent
method and forms a chain
of nested calls which allows one EventDispatcher
to see the event
during both dispatching phases in a single dispatchEvent
call.
Template for dispatchEvent
implementation.
public Event dispatchEvent(Event event, EventDispatchChain tail) { // capturing phase, can handle / modify / substitute / divert the event if (notHandledYet) { // forward the event to the rest of the chain event = tail.dispatchEvent(event); if (event != null) { // bubbling phase, can handle / modify / substitute / divert // the event } } return notHandledYet ? event : null;}
Modifier and Type | Method and Description |
---|---|
Event |
dispatchEvent(Event event,
EventDispatchChain tail)
Dispatches the specified event by this
EventDispatcher . |
Event dispatchEvent(Event event, EventDispatchChain tail)
EventDispatcher
. Does
any required event processing. Both the event and its further path can
be modified in this method. If the event is not handled / consumed during
the capturing phase, it should be dispatched to the rest of the chain
(event = tail.dispatch(event);
).event
- the event do dispatchtail
- the rest of the chain to dispatch event tonull
if the event has been handled /
consumedCopyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.