Skip to content

Instantly share code, notes, and snippets.

@epb-644
Last active August 29, 2015 14:01
Show Gist options
  • Save epb-644/b7dd5e26b47f1524b0c7 to your computer and use it in GitHub Desktop.
Save epb-644/b7dd5e26b47f1524b0c7 to your computer and use it in GitHub Desktop.
worldwind reactive api w/ disposeObservable
public static <T> Observable<SelectEvent> fromWorldWindSelectEvents(final WorldWindow wwd, final Observable<T> disposeObservable){
return Observable.create(new OnSubscribe<SelectEvent>() {
@Override
public void call(final Subscriber<? super SelectEvent> subscriber) {
final SelectListener listener = new SelectListener() {
@Override
public void selected(SelectEvent event) {
subscriber.onNext(event);
}
};
wwd.addSelectListener(listener);
subscriber.add(SwingSubscriptions.unsubscribeInEventDispatchThread(new Action0() {
@Override
public void call() {
wwd.removeSelectListener(listener);
}
}));
disposeObservable
.take(1)
.subscribe(new Observer<T>() {
@Override
public void onCompleted() {
subscriber.unsubscribe();
}
@Override
public void onError(Throwable e) {
subscriber.unsubscribe();
throw new RuntimeException(e);
}
@Override
public void onNext(T e) {
subscriber.unsubscribe();
}
});
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment