public static ReadableProperty simplePropertyWithCollection()

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