for user and application data Simplified REST call GWT Widgets that let the developer ignore the underlying HTML5/CSS This was done gluing together some carefully chosen available frameworks.
of code using ProductiveGWT @MenuEntry(text = "Catalogue") //Integration with GUI... @RestrictedAccess(roles = SecurityRoles.RESPONSABILE) ///...and Security @Page // Navigation integrated with browser history public class CataloguePage extends AbstractRicercaView<Catalogue> { // Declarative and type-safe UI-Binder interface Binder extends UiBinder<VerticalPanel, CataloguePage> { Binder INSTANCE = GWT.create(Binder.class); } @Inject // Service call interface Caller<CatalogueService> catalogueServiceCaller; // My Business code
ASP. Now Facebook has invented JSX, so that we can mix JavaScript and HTML: But Flux is very interesting !!! class App extends React.Component { render() { var i = 1; return ( <div> <h1>{i == 1 ? 'True!' : 'False'}</h1> </div> ); } }
now No Google's Material Design Light, we want GWT Widgets and few CSS3/HTML5 (distraction free coding) We are interested observers of gwt-polymer project... ...and the brand new GXT5
like Errai CDI does, but... ...with Errai CDI we use the same programming model on client code and server code We also used a lot "Errai Navigation", "Errai Security" and "Errai JAX-RS"
Annotation over the classes @Page(role = DefaultPage.class, path = "/home") public class Home extends HTML {...} navigate between pages @Inject TransitionTo<Samples> transition; ... transition.go();
data through DI @Inject BootstrapData bootstrapData; ... Window.alert(bootstrapData.getUserInfo().getUsername()); ... Window.alert(bootstrapData.getApplicationName()); Window.alert(bootstrapData.getServerName());
through an instance of AppView @Inject AppView appView; ... appView.getSplashScreen().setText("Splash … "); customize the SplashPage creating an alternative for SplashScreen and activating it into ErraiApp.properties @Alternative public class CustomSplashScreen implements SplashScreen {...} errai.ioc.enabled.alternatives= com.gwtcon.productivegwt.client.ui.CustomSplashScreen
over REST resources @GET @Path("/{id}") @Produces(MediaType.APPLICATION_JSON) @InterceptedCall(RequestInterceptor.class) public Customer find(@PathParam("id") long id);
{"*"}) process, cache and emit @Override public boolean process(Set< ? extends TypeElement> elements, RoundEnvironment env) { if (env.processingOver()) { //last round, we can write //generate the 'menu' with the inforations from the pages-database } else { //.... enlist in the pages-database the current page }