package bluej.utility.javafx.binding;
import java.util.stream.Stream;
import javafx.collections.ObservableList;
| Binds a destination list to the concatenation of an observable list of observable lists.
|
public class ConcatListBinding<T> extends DeepListBinding<T>{
private final ObservableList<ObservableList<? extends T>> src;
public static void bind(ObservableList<T> dest, ObservableList<ObservableList<? extends T>> src)
{
new ConcatListBinding<>(dest, src).startListening();
}
private ConcatListBinding(ObservableList<T> dest, ObservableList<ObservableList<? extends T>> src)
{
super(dest);
this.src = src;
}
@Override
protected Stream> getListenTargets()
{
return Stream.concat(Stream.of((ObservableList<?>)src), src.stream());
}
@Override
protected Stream calculateValues()
{
return src.stream().flatMap(ObservableList::stream);
}
}
. bind
. ConcatListBinding
. getListenTargets
. calculateValues
38 neLoCode
+ 1 LoComm