package org.tessell.widgets;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.event.shared.SimplerEventBus;
import com.google.gwt.user.client.ui.HasValue;
public class StubHasValue<T> implements HasValue<T> {
private final EventBus handlers = new SimplerEventBus();
private T value;
public StubHasValue() {
}
public StubHasValue(T initialValue) {
this.value = initialValue;
}
// By default we should fire events, so encourage tests to call this one
public void set(final T value) {
this.setValue(value, true);
}
@Override
public T getValue() {
return value;
}
@Override
public void setValue(final T value) {
this.value = value;
}
@Override
public void setValue(final T value, final boolean fireEvents) {
this.value = value;
if (fireEvents) {
ValueChangeEvent.fire(this, value);
}
}
@Override
public HandlerRegistration addValueChangeHandler(final ValueChangeHandler<T> handler) {
return handlers.addHandler(ValueChangeEvent.getType(), handler);
}
@Override
public void fireEvent(final GwtEvent<?> event) {
handlers.fireEvent(event);
}
}