package org.ovirt.engine.ui.common.widget.editor;
import com.google.gwt.editor.client.adapters.TakesValueEditor;
import com.google.gwt.event.logical.shared.HasValueChangeHandlers;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.TakesValue;
/**
* Adapts {@link TakesValueEditor} to {@link HasValueChangeHandlers} interface.
*
* @param <T>
* The type being edited.
*/
public class TakesValueWithChangeHandlersEditor<T> extends TakesValueEditor<T> implements HasValueChangeHandlers<T> {
public static <T> TakesValueWithChangeHandlersEditor<T> of(TakesValue<T> peer,
HasValueChangeHandlers<T> peerWithValueChangeHandlers) {
return new TakesValueWithChangeHandlersEditor<>(peer, peerWithValueChangeHandlers);
}
private final HasValueChangeHandlers<T> peerWithValueChangeHandlers;
protected TakesValueWithChangeHandlersEditor(TakesValue<T> peer,
HasValueChangeHandlers<T> peerWithValueChangeHandlers) {
super(peer);
this.peerWithValueChangeHandlers = peerWithValueChangeHandlers;
}
@Override
public void fireEvent(GwtEvent<?> event) {
peerWithValueChangeHandlers.fireEvent(event);
}
@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<T> handler) {
return peerWithValueChangeHandlers.addValueChangeHandler(handler);
}
}