File tree Expand file tree Collapse file tree 2 files changed +41
-1
lines changed
Expand file tree Collapse file tree 2 files changed +41
-1
lines changed Original file line number Diff line number Diff line change 1+ package rx .javafx .sources ;
2+
3+ import javafx .event .Event ;
4+ import javafx .event .EventHandler ;
5+ import javafx .event .EventType ;
6+ import javafx .scene .Scene ;
7+ import rx .Observable ;
8+ import rx .Subscriber ;
9+ import rx .schedulers .JavaFxScheduler ;
10+ import rx .subscriptions .JavaFxSubscriptions ;
11+
12+ public final class SceneEventSource {
13+
14+ public static <T extends Event > Observable <T > fromSceneEvents (final Scene source , final EventType <T > eventType ) {
15+
16+ return Observable .create (new Observable .OnSubscribe <T >() {
17+ @ Override
18+ public void call (final Subscriber <? super T > subscriber ) {
19+ final EventHandler <T > handler = subscriber ::onNext ;
20+
21+ source .addEventHandler (eventType , handler );
22+
23+ subscriber .add (JavaFxSubscriptions .unsubscribeInEventDispatchThread (() -> source .removeEventHandler (eventType , handler )));
24+ }
25+
26+ }).subscribeOn (JavaFxScheduler .getInstance ());
27+ }
28+ }
Original file line number Diff line number Diff line change 2020import javafx .event .Event ;
2121import javafx .event .EventType ;
2222import javafx .scene .Node ;
23+ import javafx .scene .Scene ;
2324import rx .Observable ;
2425import rx .javafx .sources .Change ;
2526import rx .javafx .sources .NodeEventSource ;
2627import rx .javafx .sources .ObservableValueSource ;
28+ import rx .javafx .sources .SceneEventSource ;
2729
2830
2931public enum JavaFxObservable {
3032 ; // no instances
3133
3234
3335 /**
34- * Creates an observable corresponding to javafx ui events.
36+ * Creates an observable corresponding to javafx Node events.
3537 *
3638 * @param node The target of the UI events.
3739 * @param eventType The type of the observed UI events
@@ -62,4 +64,14 @@ public static <T> Observable<T> fromObservableValue(final ObservableValue<T> fxO
6264 public static <T > Observable <Change <T >> fromObservableValueChanges (final ObservableValue <T > fxObservable ) {
6365 return ObservableValueSource .fromObservableValueChanges (fxObservable );
6466 }
67+ /**
68+ * Creates an observable corresponding to javafx Scene events.
69+ *
70+ * @param scene The target of the UI events.
71+ * @param eventType The type of the observed UI events
72+ * @return An Observable of UI events, appropriately typed
73+ */
74+ public static <T extends Event > Observable <T > fromSceneEvents (final Scene scene , final EventType <T > eventType ) {
75+ return SceneEventSource .fromSceneEvents (scene ,eventType );
76+ }
6577}
You can’t perform that action at this time.
0 commit comments