in model/src/main/java/jetbrains/jetpad/model/property/Properties.java [539:580]
public static <ItemT, T> ReadableProperty<T> simplePropertyWithCollection(
final ObservableCollection<ItemT> collection,
final ReadableProperty<ItemT> item,
final Supplier<T> supplier) {
return new BaseDerivedProperty<T>(supplier.get()) {
private Registration myRegistration;
private Registration myCollectionRegistration;
@Override
protected T doGet() {
return supplier.get();
}
@Override
protected void doAddListeners() {
myRegistration = item.addHandler(new EventHandler<PropertyChangeEvent<ItemT>>() {
@Override
public void onEvent(PropertyChangeEvent<ItemT> event) {
somethingChanged();
}
});
myCollectionRegistration = collection.addListener(Properties.simpleAdapter(new Runnable() {
@Override
public void run() {
somethingChanged();
}
}));
}
@Override
protected void doRemoveListeners() {
myRegistration.remove();
myCollectionRegistration.remove();
}
@Override
public String getPropExpr() {
return "fromCollection(" + collection + ", " + item + ", " + supplier + ")";
}
};
}