Skip to content

Commit 27bc1b0

Browse files
committed
Implement WindowEvents
1 parent 8ad2143 commit 27bc1b0

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package rx.javafx.sources;
2+
3+
import javafx.event.EventHandler;
4+
import javafx.event.EventType;
5+
import javafx.stage.Window;
6+
import javafx.stage.WindowEvent;
7+
import rx.Observable;
8+
import rx.Subscriber;
9+
import rx.schedulers.JavaFxScheduler;
10+
import rx.subscriptions.JavaFxSubscriptions;
11+
12+
public final class WindowEventSource {
13+
14+
private WindowEventSource() {}
15+
16+
public static <T extends WindowEvent> Observable<T> fromWindowEvents(final Window source, final EventType<T> eventType) {
17+
18+
return Observable.create(new Observable.OnSubscribe<T>() {
19+
@Override
20+
public void call(final Subscriber<? super T> subscriber) {
21+
final EventHandler<T> handler = subscriber::onNext;
22+
23+
source.addEventHandler(eventType, handler);
24+
25+
subscriber.add(JavaFxSubscriptions.unsubscribeInEventDispatchThread(() -> source.removeEventHandler(eventType, handler)));
26+
}
27+
28+
}).subscribeOn(JavaFxScheduler.getInstance());
29+
}
30+
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,17 @@ public static <T extends Event> Observable<T> fromSceneEvents(final Scene scene,
7777
return SceneEventSource.fromSceneEvents(scene,eventType);
7878
}
7979

80+
/**
81+
* Creates an observable corresponding to javafx Window events.
82+
*
83+
* @param window The target of the UI events.
84+
* @param eventType The type of the observed UI events
85+
* @return An Observable of UI events, appropriately typed
86+
*/
87+
public static <T extends WindowEvent> Observable<T> fromWindowEvents(final Window window, final EventType<T> eventType) {
88+
return WindowEventSource.fromWindowEvents(window,eventType);
89+
}
90+
8091
/**
8192
* Creates an observable corresponding to javafx Node action events.
8293
*

0 commit comments

Comments
 (0)