Я проанализировал HandlerManager и Я не не вижу, как он обрабатывает источник событий.Строка 117:
public void fireEvent(GwtEvent<?> event) {
...
Object oldSource = event.getSource();
event.overrideSource(source);
try {
// May throw an UmbrellaException.
eventBus.fireEvent(event); // <--- LOOK HERE
} catch (com.google.web.bindery.event.shared.UmbrellaException e) {
throw new UmbrellaException(e.getCauses());
} finally {
....
}
}
Но простая шина событий Реализация имеет следующий код, строка 86:
@Override
public void fireEvent(Event<?> event) {
doFire(event, null); // <---- SOURCE IS NULL???
}
@Override
public void fireEventFromSource(Event<?> event, Object source) {
if (source == null) {
throw new NullPointerException("Cannot fire from a null source");
}
doFire(event, source);
}
Итак, HandlerManager не генерировать события с источником, потому что он всегда вызывает doFire (event, null);
Не могли бы вы пояснить, как HandlerManager генерирует событие для источника?Как HandlerManager используется в Widget, как он запускает события только для экземпляра Widget?