org.reactfx.inhibeans.binding.StringBinding Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of richtextfx Show documentation
Show all versions of richtextfx Show documentation
FX-Text-Area for formatted text and other special effects.
package org.reactfx.inhibeans.binding;
import javafx.beans.InvalidationListener;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableStringValue;
import org.reactfx.Guard;
import org.reactfx.value.Val;
import com.sun.javafx.binding.ExpressionHelper;
/**
* Inhibitory version of {@link javafx.beans.binding.StringBinding}.
*/
@Deprecated
public abstract class StringBinding
extends javafx.beans.binding.StringBinding
implements Binding {
/**
* @deprecated Use {@link Val#suspendable(javafx.beans.value.ObservableValue)}.
*/
@Deprecated
public static StringBinding wrap(ObservableStringValue source) {
return new StringBinding() {
{ bind(source); }
@Override
protected String computeValue() { return source.get(); }
};
}
private ExpressionHelper helper = null;
private boolean blocked = false;
private boolean fireOnRelease = false;
@Override
public Guard block() {
if(blocked) {
return Guard.EMPTY_GUARD;
} else {
blocked = true;
return this::release;
}
}
private void release() {
blocked = false;
if(fireOnRelease) {
fireOnRelease = false;
ExpressionHelper.fireValueChangedEvent(helper);
}
}
@Override
protected final void onInvalidating() {
if(blocked)
fireOnRelease = true;
else
ExpressionHelper.fireValueChangedEvent(helper);
}
/*******************************************
*** Override adding/removing listeners. ***
*******************************************/
@Override
public void addListener(InvalidationListener listener) {
helper = ExpressionHelper.addListener(helper, this, listener);
}
@Override
public void removeListener(InvalidationListener listener) {
helper = ExpressionHelper.removeListener(helper, listener);
}
@Override
public void addListener(ChangeListener super String> listener) {
helper = ExpressionHelper.addListener(helper, this, listener);
}
@Override
public void removeListener(ChangeListener super String> listener) {
helper = ExpressionHelper.removeListener(helper, listener);
}
}