package org.vaadin.viritin.fluency.ui;
import com.vaadin.shared.ui.ValueChangeMode;
import com.vaadin.ui.HasValueChangeMode;
import com.vaadin.data.HasValue.ValueChangeEvent;
public interface FluentHasValueChangeMode<S extends FluentHasValueChangeMode<S>>
extends HasValueChangeMode, FluentComponent<S> {
/**
* Sets the mode how the TextField triggers {@link ValueChangeEvent}s.
*
* @param valueChangeMode
* the new mode
*
* @see ValueChangeMode
* @return this (for method chaining)
*/
public default S withValueChangeMode(ValueChangeMode valueChangeMode) {
((HasValueChangeMode) this).setValueChangeMode(valueChangeMode);
return (S) this;
}
/**
* Sets how often {@link ValueChangeEvent}s are triggered when the
* {@link ValueChangeMode} is set to either {@link ValueChangeMode#LAZY} or
* {@link ValueChangeMode#TIMEOUT}.
*
* @param valueChangeTimeout
* timeout in milliseconds, must be greater or equal to 0
* @throws IllegalArgumentException
* if given timeout is smaller than 0
*
* @see ValueChangeMode
* @return this (for method chaining)
*/
public default S withValueChangeTimeout(int valueChangeTimeout) {
((HasValueChangeMode) this).setValueChangeTimeout(valueChangeTimeout);
return (S) this;
}
}