jfxtras.labs.util.HeterogeneousBidirectionalBinder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jfxtras-labs Show documentation
Show all versions of jfxtras-labs Show documentation
Experimental components for JavaFX 2
package jfxtras.labs.util;
import javafx.beans.WeakListener;
import javafx.beans.property.Property;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import java.lang.ref.WeakReference;
import java.util.function.Function;
/**
* A bidirectional object binding between two properties of different types.
* It is a bindER rather than bindING for two reasons:
*
* - We can't extend the original BidirectionalBinding since it has a private constructor
* - It doesn't use static methods and it's a simple object you want to keep a reference around
*
* The bind is effective from the constructor until unbind() is called. It is registered as a weaklistener to both properties.
*
* Much like the oiginal BidirectionalBinding using StringConverter, you can have multiple bidirectional binders active at the same time.
* Because they are glorified listeners multiple binders are activated in order of creation.
* Still, avoid multiple active binders as the transformations of variables concatenate in usually strange fashion.
*
* Created by carrknight on 4/26/14.
*/
public class HeterogeneousBidirectionalBinder implements ChangeListener