GWT specific bindings for RxJava (requires RxJava GWT).
This module adds the minimum classes to RxJava that make writing reactive components in GWT applications easy and hassle-free. More specifically, it provides adapters for all available events and various operators like bufferedFinally, debounceFinally, etc.
GWT module system requires all classes used by a module to be included as dependant modules. So to not to force to load all optional modules various independent small modules are exposed by RxGWT.
- RxGWT.gwt.xml - includes common utils, usually not included explicit as it is included by all other modules
- RxUser.gwt.xml - includes GWT user dependant utils like RxHandlers and RxEvents
- RxElemental.gwt.xml - legacy GWT elemental utils
- RxElemental2.gwt.xml - new generation GWT elemental2 utils
- RxElemento.gwt.xml - elemento typed events on top of new generation GWT elemental2 utils
Releases are deployed to the Central Repository.
Snapshots of the development version are available in Sonatype's snapshots
repository.
Observable<List<double[]>> mouseDiff$ = mouseMove(canvas)
.map(e -> canvasPosition(canvas, e))
.buffer(3, 1);
Observable<List<double[]>> mouseDrag$ = mouseDown(canvas).compose(log("mouse down"))
.flatMap(e -> mouseDiff$.takeUntil(mouseUp(canvas).compose(log("mouse up"))));
Observable<List<double[]>> touchDiff$ = touchMove(canvas)
.map(e -> e.getTouches().get(0))
.map(e -> canvasPosition(canvas, e))
.buffer(2, 1);
Observable<List<double[]>> touchDrag$ = touchStart(canvas).compose(log("touch down"))
.flatMap(e -> touchDiff$.takeUntil(touchEnd(canvas).compose(log("touch up"))));
Observable<Object> down$ = merge(mouseDown(canvas), touchStart(canvas));
Observable<List<double[]>> drag$ = merge(mouseDrag$, touchDrag$);
Observable<String> paint$ = keyPress(canvas, '1').map(e -> "paint").startWith("default");
Observable<String> erase$ = keyPress(canvas, '2').map(e -> "erase");
All the mouseMove
, mouseDown
, touchMove
, touchStart
, touchEnd
and keyPress
static methods are exposed by the
RxGWT API. To find all of them just explore RxGwt,
or RxHandlers and RxEvents.
RxEvents and RxHandlers are auto-generated
using all classes in gwt-user
extending from Events
and HasValue respectively.
You can see this complete code example here RxCanvas, or other interesting one in RxSnake.