/** Handling GWT events. * *

Using a collection as an event source (CAES)

* *

When a HashMap or AbstractList itself is the event source, then events are not * dispatched (GWT 2.4 devmode, production mode not tested). Traced (at least in the * case of the HashMap) to SimpleEventBus getHandlerList(), where sourceMap.get(source) * returns a null list of handlers. This is strange because sourceMap.toString shows the * list is there (first entry in sourceMap) and the equivalent line in * ensureHandlerList() returns a non-null list earlier when handlers are registered. * Maybe a collection works as a key when it's the only key, but fails later when other * keys are added?

* *

The user manual says adding a DOCTYPE will enable named * entities, but do not add it. Firefox and Chrome will still complain that the template * is unreadable owing to undefined entities (not sure why). Instead use numeric * entities.

* *

Event class hierarchy

* *

Here is an outline of the most important classes:

    * {@linkplain com.google.web.bindery.event.shared.Event Event}
  *         * {@linkplain com.google.gwt.event.shared.GWTEvent GWTEvent}
  *             - these (excepting DomEvent) are synthetic ("logical")
  *               and have no native counterparts
  *             * {@linkplain com.google.gwt.event.dom.client.DomEvent DomEvent}
  *                 - wraps a NativeEvent
  *     * {@linkplain com.google.gwt.dom.client.NativeEvent NativeEvent}
  *         * {@linkplain com.google.gwt.user.client.Event Event}
* *

Scheduler execution order

* * {@linkplain votorola.g.web.gwt.event.CoalescingScheduler.Tester Testing indicates} * that (A) Scheduler executes commands in two groups based on scheduling mode: 1) * "finally" commands and then 2) "deferred" and "entry" commands. Further (B) the * commands within each of the two groups are executed in the order requested. The * grouping together of "deferred" and "entry" (A2), and the ordering behaviour within * groups (B) are undocumented in the API. Consider using this warning wherever your * code depends on them:
    "scheduling order assumption" (quoted, without a line break)
* * @see Using the GWT scheduler */ package votorola.g.web.gwt.event; // Note: it now appears that (B) may be an artifact of the testing procedure. The // "entry" commands, unlike the "deferred" commands, are witheld until a native browser // event fires. If there is no input from the user for instance, then execution may be // delayed indefinitely (2.4). //// not sure, but witholding may have been artifact of coalescer bug fixed here: //// http://reluk.ca/var/db/repo/votorola/rev/00156ed947fc