private static Supplier<Map<Class<? extends GwtEvent>, HandlerRegistration>> mergeNativeKeyUpEventListener( final Object component, final Optional<Supplier<Object>> uiGetter, final Consumer<Object> modelUpdater, Supplier<Map<Class<? extends GwtEvent>, HandlerRegistration>> registrar) { registrar = mergeToLeft(registrar, () -> { final JavaScriptObject listener = wrap(() -> { logger.debug("keyup listener invoked for {}", component); uiGetter.ifPresent(getter -> { final Object value = getter.get(); logger.debug("keyup listener invoked with UI value {}", value); modelUpdater.accept(value); }); }); logger.debug("Adding native keyup listener to {}...", component); addKeyUpEventListener(component, listener); logger.debug("Added native keyup listener to {}", component); final HandlerRegistration hr = () -> removeKeyUpEventListener(component, listener); return Collections.singletonMap(ValueChangeEvent.class, hr); }); return registrar; }
private static Supplier<Map<Class<? extends GwtEvent>, HandlerRegistration>> mergeNativeKeyUpEventListener( final Object component, final Optional<Supplier<Object>> uiGetter, final Consumer<Object> modelUpdater, Supplier<Map<Class<? extends GwtEvent>, HandlerRegistration>> registrar) { registrar = mergeToLeft(registrar, () -> { final JavaScriptObject listener = wrap(() -> { logger.debug("keyup listener invoked for {}", component); uiGetter.ifPresent(getter -> { final Object value = getter.get(); logger.debug("keyup listener invoked with UI value {}", value); modelUpdater.accept(value); }); }); logger.debug("Adding native keyup listener to {}...", component); addKeyUpEventListener(component, listener); logger.debug("Added native keyup listener to {}", component); final HandlerRegistration hr = () -> removeKeyUpEventListener(component, listener); return Collections.singletonMap(ValueChangeEvent.class, hr); }); return registrar; }