package org.tessell.model.dsl; import com.google.gwt.event.logical.shared.HasAttachHandlers; import com.google.gwt.event.shared.HandlerRegistration; public class AttachBinder extends EventBinder { private final HasAttachHandlers attachable; private final boolean onAttach; AttachBinder(final Binder b, final HasAttachHandlers attachable, final boolean onAttach) { super(b); this.attachable = attachable; this.onAttach = onAttach; } @Override protected HandlerRegistration hookUpRunnable(final Runnable runnable) { return attachable.addAttachHandler(e -> { if (e.isAttached() == onAttach) { runnable.run(); } }); } @Override protected HandlerRegistration hookUpEventRunnable(final DomEventRunnable runnable) { return attachable.addAttachHandler(e -> { if (e.isAttached() == onAttach) { runnable.run(null); // AttachEvent is a GwtEvent, not DomEvent } }); } }