Skip to content

Commit 4e3a508

Browse files
committed
start invalidation factories
1 parent ed54e28 commit 4e3a508

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/main/java/rx/javafx/sources/ObservableValueSource.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@
1515
*/
1616
package rx.javafx.sources;
1717

18+
import javafx.beans.InvalidationListener;
19+
import javafx.beans.property.Property;
1820
import javafx.beans.value.ChangeListener;
1921
import javafx.beans.value.ObservableValue;
2022
import rx.Observable;
21-
import rx.Subscriber;
2223
import rx.subscriptions.JavaFxSubscriptions;
2324

2425
public class ObservableValueSource {
@@ -48,4 +49,19 @@ public static <T> Observable<Change<T>> fromObservableValueChanges(final Observa
4849
});
4950
}
5051

52+
public static <T> Observable<ObservableValue<T>> fromInvalidations(final ObservableValue<T> fxObservable) {
53+
return Observable.create(subscriber -> {
54+
final InvalidationListener listener = s -> subscriber.onNext(fxObservable);
55+
fxObservable.addListener(listener);
56+
subscriber.add(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> fxObservable.removeListener(listener)));
57+
});
58+
}
59+
60+
public static <T> Observable<Property<T>> fromInvalidations(final Property<T> fxProperty) {
61+
return Observable.create(subscriber -> {
62+
final InvalidationListener listener = s -> subscriber.onNext(fxProperty);
63+
fxProperty.addListener(listener);
64+
subscriber.add(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> fxProperty.removeListener(listener)));
65+
});
66+
}
5167
}

src/main/java/rx/observables/JavaFxObservable.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,15 @@ public static <T> Observable<Change<T>> fromObservableValueChanges(final Observa
120120
return changesOf(fxObservable);
121121
}
122122

123+
/**
124+
* Emits a JavaFX Observable
125+
* @param fxObservable
126+
* @return
127+
*/
128+
public static Observable<javafx.beans.Observable> invalidationsOf(final javafx.beans.Observable fxObservable) {
129+
return ObservableValueSource.fromInvalidations(fxObservable);
130+
}
131+
123132
/**
124133
* Creates an observable corresponding to javafx Scene events.
125134
*

0 commit comments

Comments
 (0)