in mapper/src/main/java/jetbrains/jetpad/mapper/ObservableCollectionRoleSynchronizer.java [47:75]
protected void onAttach() {
super.onAttach();
if (!myTarget.isEmpty()) {
throw new IllegalArgumentException("Target Collection Should Be Empty");
}
new MapperUpdater().update(mySource);
List<Mapper<? extends SourceT, ? extends TargetT>> modifiableMappers = getModifiableMappers();
for (Mapper<? extends SourceT, ? extends TargetT> m : modifiableMappers) {
myTarget.add(m.getTarget());
}
myCollectionRegistration = mySource.addListener(new CollectionAdapter<SourceT>() {
@Override
public void onItemAdded(CollectionItemEvent<? extends SourceT> event) {
Mapper<? extends SourceT, ? extends TargetT> mapper = createMapper(event.getNewItem());
getModifiableMappers().add(event.getIndex(), mapper);
myTarget.add(event.getIndex(), mapper.getTarget());
processMapper(mapper);
}
@Override
public void onItemRemoved(CollectionItemEvent<? extends SourceT> event) {
getModifiableMappers().remove(event.getIndex());
myTarget.remove(event.getIndex());
}
});
}