package org.opendolphin.demo.sevenguis.crud;
import javafx.beans.Observable;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.collections.transformation.FilteredList;
import javafx.util.Callback;
import org.opendolphin.core.PresentationModel;
import org.opendolphin.core.client.ClientAttribute;
import java.util.function.Predicate;
public class Context { // !! concept
ObservableList<PresentationModel> allItems = FXCollections.observableArrayList(extractor());
FilteredList<PresentationModel> filteredItems;
public Context() {
filteredItems = new FilteredList<>(allItems, null);
}
public static Predicate<PresentationModel> predicate(String aPrefix) {
return pm -> {
return aPrefix.isEmpty() || SharedDolphinFunctions.stringValue(pm, PersonApi.ATT_LAST_NAME).startsWith(aPrefix);
};
}
/** see Properties Extractor: Best way to get the ListView instantly updating its elements http://www.jensd.de/wordpress/?p=1650 */
public static Callback<PresentationModel, Observable[]> extractor() {
return (PresentationModel pm) -> {
return new Observable[]{
new ClientAttributeStringWrapper((ClientAttribute) pm.getAt(PersonApi.ATT_FIRST_NAME)),
new ClientAttributeStringWrapper((ClientAttribute) pm.getAt(PersonApi.ATT_LAST_NAME))
};
};
}
}