RxGWT :: Core

RxGWT core utilities.

License

License

Categories

Categories

GWT (Google Web Toolkit) User Interface Web Frameworks
GroupId

GroupId

com.intendia.gwt.rxgwt
ArtifactId

ArtifactId

rxgwt
Last Version

Last Version

0.4
Release Date

Release Date

Type

Type

gwt-lib
Description

Description

RxGWT :: Core
RxGWT core utilities.

Download rxgwt

Dependencies

compile (5)

Group / Artifact Type Version
com.intendia.gwt : rxjava-gwt jar 1.3.4-gwt1
com.google.gwt : gwt-elemental Optional jar
com.google.elemental2 : elemental2-dom Optional jar 1.0.0-RC1
org.jboss.gwt.elemento : elemento-core Optional jar 0.7.0
com.google.code.findbugs : jsr305 Optional jar 3.0.0

provided (1)

Group / Artifact Type Version
com.google.gwt : gwt-user jar

Project Modules

There are no modules declared in this project.

RxGWT: Reactive Extensions for GWT

Maven Central Build Status Join the chat at https://gitter.im/intendia-oss/rxgwt

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

Download

Releases are deployed to the Central Repository.

Snapshots of the development version are available in Sonatype's snapshots repository.

Example

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.

com.intendia.gwt.rxgwt

Intendia OSS

Intendia open source software

Versions

Version
0.4
0.3
0.2
0.1