in model/src/main/java/jetbrains/jetpad/model/collections/set/MirrorObservableSet.java [37:62]
public MirrorObservableSet(ObservableCollection<SourceT> baseSet, Function<SourceT, TargetT> targetSupplier, Function<TargetT, SourceT> sourceSupplier) {
myBaseCollection = baseSet;
myTargetSupplier = targetSupplier;
mySourceSupplier = sourceSupplier;
myBaseCollection.addListener(new CollectionAdapter<SourceT>() {
@Override
public void onItemAdded(final CollectionItemEvent<? extends SourceT> event) {
myListeners.fire(new ListenerCaller<CollectionListener<? super TargetT>>() {
@Override
public void call(CollectionListener<? super TargetT> l) {
l.onItemAdded(new CollectionItemEvent<>(null, myTargetSupplier.apply(event.getNewItem()), -1, CollectionItemEvent.EventType.ADD));
}
});
}
@Override
public void onItemRemoved(final CollectionItemEvent<? extends SourceT> event) {
myListeners.fire(new ListenerCaller<CollectionListener<? super TargetT>>() {
@Override
public void call(CollectionListener<? super TargetT> l) {
l.onItemRemoved(new CollectionItemEvent<>(myTargetSupplier.apply(event.getOldItem()), null, -1, CollectionItemEvent.EventType.REMOVE));
}
});
}
});
}