public MirrorObservableSet()

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));
          }
        });
      }
    });
  }