package com.dragome.forms.bindings.client.function.builder;
import com.dragome.forms.bindings.client.function.Function;
import com.dragome.forms.bindings.client.value.ComputedValueModel;
import com.dragome.forms.bindings.client.value.Converter;
import com.dragome.forms.bindings.client.value.ConvertingValueModel;
import com.dragome.forms.bindings.client.value.ValueModel;
/**
* Created by IntelliJ IDEA.
* User: andrew
* Date: Jul 16, 2010
* Time: 12:52:58 PM
* To change this template use File | Settings | File Templates.
*/
public class ConverterBuilder<S>
{
private ValueModel<S> source;
public ConverterBuilder(ValueModel<S> source)
{
this.source= source;
}
public <T> ValueModel<T> using(Function<T, ? super S> function)
{
return new ComputedValueModel<T, S>(source, function);
}
public <T> ValueModel<T> using(Converter<T, S> converter)
{
return new ConvertingValueModel<T, S>(source, converter);
}
}