Skip to content

Instantly share code, notes, and snippets.

@TomasMikula
Created January 22, 2014 12:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TomasMikula/8557825 to your computer and use it in GitHub Desktop.
Save TomasMikula/8557825 to your computer and use it in GitHub Desktop.
Helper classes for JavaFX to repeatedly register and unregister the same listener, while avoiding duplicate registration of the listener.
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
public final class ChangeSubscriber<T> {
private final ObservableValue<T> observable;
private final ChangeListener<T> listener;
private boolean isSubscribed;
public ChangeSubscriber(ObservableValue<T> observable, ChangeListener<T> listener) {
this.observable = observable;
this.listener = listener;
this.isSubscribed = false;
}
public void subscribe() {
if(!isSubscribed) {
isSubscribed = true;
observable.addListener(listener);
}
}
public void unsubscribe() {
if(isSubscribed) {
isSubscribed = false;
observable.removeListener(listener);
}
}
public boolean isSubscribed() {
return isSubscribed;
}
}
import javafx.beans.InvalidationListener;
import javafx.beans.Observable;
public final class InvalidationSubscriber {
private final Observable observable;
private final InvalidationListener listener;
private boolean isSubscribed;
public InvalidationSubscriber(Observable observable, InvalidationListener listener) {
this.observable = observable;
this.listener = listener;
this.isSubscribed = false;
}
public void subscribe() {
if(!isSubscribed) {
isSubscribed = true;
observable.addListener(listener);
}
}
public void unsubscribe() {
if(isSubscribed) {
isSubscribed = false;
observable.removeListener(listener);
}
}
public boolean isSubscribed() {
return isSubscribed;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment