package org.fxmisc.easybind.select;
import java.util.function.Function;
import javafx.beans.value.ObservableValue;
import org.fxmisc.easybind.monadic.MonadicBinding;
class IntermediateSelectedBuilder<T, U> implements ParentSelectedBuilder<U> {
private final ParentSelectedBuilder<T> parent;
private final Function<? super T, ObservableValue<U>> selector;
public IntermediateSelectedBuilder(
ParentSelectedBuilder<T> parent,
Function<? super T, ObservableValue<U>> selector) {
this.parent = parent;
this.selector = selector;
}
@Override
public <V> MonadicBinding<V> create(
NestedSelectionElementFactory<U, V> nestedSelectionFactory) {
NestedSelectionElementFactory<T, V> intermediateSelectionFactory = onInvalidation -> {
return new IntermediateSelectionElement<T, U, V>(onInvalidation, selector, nestedSelectionFactory);
};
return parent.create(intermediateSelectionFactory);
}
}