papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit...

65
p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de papick g. taboada Dienstag, 7. Dezember 2010

Transcript of papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit...

Page 1: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

p.g.taboada | pgt technology scouting GmbH

Google Web Toolkit Einführung

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

papick g. taboadaDienstag, 7. Dezember 2010

Page 2: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

papick g. taboadaDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

papick g. taboadaDienstag, 7. Dezember 2010

Page 3: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

hackerDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

hackerDienstag, 7. Dezember 2010

Page 4: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

dipl. w.-ing. (TH)hacker

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

dipl. w.-ing. (TH)hacker

Dienstag, 7. Dezember 2010

Page 5: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

dipl. w.-ing. (TH)hacker

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

dipl. w.-ing. (TH)hacker

Dienstag, 7. Dezember 2010

Page 6: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

dipl. w.-ing. (TH)hacker

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

dipl. w.-ing. (TH)hacker

Dienstag, 7. Dezember 2010

Page 7: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

dipl. w.-ing. (TH)hacker

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

more magic developerDienstag, 7. Dezember 2010

Page 8: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

more magic developerDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

more magic developerDienstag, 7. Dezember 2010

Page 9: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

technology scoutDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

technology scoutDienstag, 7. Dezember 2010

Page 10: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

technology scoutDienstag, 7. Dezember 2010

Session

Topics

�Why GWT?

�Development Cycle

�Components and events

�Client Bundles

�UIBinder

�Communicating with the server

� I18N

Dienstag, 7. Dezember 2010

Page 11: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Web 2.0 ?!?Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Web 2.0 by apps?Dienstag, 7. Dezember 2010

Page 12: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Web 2.0 by buzzwords?Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Web 2.0 by technologies?Dienstag, 7. Dezember 2010

Page 13: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Web 2.0 by what we seeDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

MashupsDienstag, 7. Dezember 2010

Page 14: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

But how?!?Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Dynamic HTML

JavaScript

DOM/ DOM-Scripting

XMLHttpRequest

HTML

XML

JSON

Dienstag, 7. Dezember 2010

Page 15: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Native DHTML speakers

co

pyrig

ht 2

00

6, L

ela

nd

Sco

tt, M

usin

gs fro

m M

ars

Dienstag, 7. Dezember 2010

The Ajax slippery slope� Try “a little bit of script”

� Every body loves it!

�More!!!

� Errr - Do we know Javascript?

� Does it work with…

�Wait – this is hard!

Dienstag, 7. Dezember 2010

Page 16: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

Fear browsers with all of mind, body and spirit

When in danger, when in doubt, run in circles cry and shout

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

HTML 5 here and now

Vic GundotraGoogle IO Keynote

HTML5 Chrome Firefox Safari Opera

canvas

video

geolocation

appcache

database

workers

Dienstag, 7. Dezember 2010

Page 17: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

The web THENand now

� Browsers where dumb html terminals

� High server side resource consumption

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Browser Server

event

event

event

full html response

full html response

full html response

Dienstag, 7. Dezember 2010

Page 18: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Browser Server

event

event

event

full html response

full html response

full html response

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Browser Server

event

event

event

full html response

full html response

full html response

Dienstag, 7. Dezember 2010

Page 19: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Browser Server

event

event

event

full html response

full html response

full html response

Dienstag, 7. Dezember 2010

something to remember

web performance problems

are

latency problems

Dienstag, 7. Dezember 2010

Page 20: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Ajaxifying Webapps

http://breganzane.com/blog/snfl.php

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Ajaxifying Webapps

http://breganzane.com/blog/snfl.php

Dienstag, 7. Dezember 2010

Page 21: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

The „ajax“ architectural shift

Dienstag, 7. Dezember 2010

The web then and NOW

� Rich user interfaces in the Browser

� Server resource consumption reduced to a minimum

Dienstag, 7. Dezember 2010

Page 22: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Browser Server

event

first request

full html response

data

data request

data

data request

event

event

event

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

honour the A in AJAX

JAX

Dienstag, 7. Dezember 2010

Page 23: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

honour the A in AJAX

JAX

AJAX stands for Asynchronous

JavaScript and XML

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

honour the A in AJAX

JAX

AJAX stands for Asynchronous

JavaScript and XML

Dienstag, 7. Dezember 2010

Page 24: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

honour the A in AJAX

JAX

AJAX stands for Asynchronous

JavaScript and XML

or JSON...

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Google Web Toolkit

Google Web Toolkit (GWT) is an open source Java development framework that lets you escape the matrix of technologies that make writing AJAX applications so difficult and error prone.

With GWT, you can develop and debug AJAX applications in the Java language using the Java development tools of your choice. When you deploy your application to production, the GWT compiler translates your Java application to browser-compliant JavaScript and HTML.

Dienstag, 7. Dezember 2010

Page 25: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

GWT

Google Web Toolkit (GWT) is an open source Java development framework that lets you escape the matrix of technologies that make writing AJAX applications so difficult and error prone.

With GWT, you can develop and debug AJAXapplications in the Java language using the Java development tools of your choice. When you deploy your application to production, the GWT compilertranslates your Java application to browser-compliant JavaScript and HTML.

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

google is „dogfooding“Dienstag, 7. Dezember 2010

Page 26: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Standalone JS appsDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

JS app can be anythingDienstag, 7. Dezember 2010

Page 27: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

GWT does more than just

compile.� Much more.

� The sky is the limit?

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Helping where help is neededDienstag, 7. Dezember 2010

Page 28: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Performance twirksDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

compress / obfuscateDienstag, 7. Dezember 2010

Page 29: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

connection bottleneckDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

SpritesDienstag, 7. Dezember 2010

Page 30: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

project layout vs. deployment layout

!=

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Developer guided splitsDienstag, 7. Dezember 2010

Page 31: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Splitting the appDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Generated deferred JSDienstag, 7. Dezember 2010

Page 32: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

GWT is extensible

� Module concept� Extensible GUI model� Code Generator� JSNI

Dienstag, 7. Dezember 2010

Session

Topics

�Why GWT?

�Development Cycle

�Components and events

�Client Bundles

�UIBinder

�Communicating with the server

� I18N

Dienstag, 7. Dezember 2010

Page 33: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

unboxing

SDK

GWT designer Plugin for Eclipse

Speed Tracer

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

GWT SDKDienstag, 7. Dezember 2010

Page 34: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

development cycleDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Develop in JavaDienstag, 7. Dezember 2010

Page 35: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Develop in JavaDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Develop in Java

Checkstyle

Dienstag, 7. Dezember 2010

Page 36: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Develop in Java

Checkstyle

Findbugs, PMD

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Develop in Java

Checkstyle

Findbugs, PMD

Patterns

Dienstag, 7. Dezember 2010

Page 37: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Develop in Java

Checkstyle

Findbugs, PMD

Patterns

Unit testing

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Develop in Java

Refactoring!

Checkstyle

Findbugs, PMD

Patterns

Unit testing

Dienstag, 7. Dezember 2010

Page 38: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

it‘s about engineeringDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

One click startDienstag, 7. Dezember 2010

Page 39: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Use the webappDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Debug in JavaDienstag, 7. Dezember 2010

Page 40: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Cross compile to JSDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

DistributeDienstag, 7. Dezember 2010

Page 41: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

enabling short roundtrips

GWT Can Do What?!?! A Preview of Google Web Toolkit 2.0

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Hello WorldDienstag, 7. Dezember 2010

Page 42: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

Session

Topics

�Why GWT?

�Development Cycle

�Components and events

�Client Bundles

�UIBinder

�Communicating with the server

� I18N

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

GUI component model

UIObject

Widget

FocusWidget Label Panel Tree Composite

ListBox

Button

TextBox/ Area

Checkbox

RadioButton

HTML DecoratorPanel

FlowPanel

DockPanel

VerticalPanel

HorizontalPanel

MenuBar

DatePicker

DateBox

DisclosurePanel

SuggestBox

TabPanel

MenuItem TreeItem

CaptionPanelAbsolutePanel

DeckPanel

StackPanel

HTMLPanel

SimplePanel

FocusPanelFormPanel

PopupPanel

ScrollPanel

InlineLabel

Dienstag, 7. Dezember 2010

Page 43: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

No-Eye-Candy-ShowcaseDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Facing the layout problemDienstag, 7. Dezember 2010

Page 44: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Layout PanelsDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Layout PanelsDienstag, 7. Dezember 2010

Page 45: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Layout PanelsDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Layout PanelsDienstag, 7. Dezember 2010

Page 46: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Layout PanelsDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Layout PanelsDienstag, 7. Dezember 2010

Page 47: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Layout PanelsDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Layout PanelsDienstag, 7. Dezember 2010

Page 48: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Layout PanelsDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Composite component

public class HandlerExample extends Composite implements ClickHandler {

private FlowPanel fp = new FlowPanel();

private Button b1 = new Button("Button 1");

private Button b2 = new Button("Button 2");

public HandlerExample() {

� initWidget(fp);

� fp.add(b1);

� fp.add(b2);

� b1.addClickHandler(this);

� b2.addClickHandler(this);

}

public void onClick(ClickEvent event) {

� // note that in general, events can have sources that are not Widgets.

� Widget sender = (Widget) event.getSource();

� if (sender == b1) {

� � // handle b1 being clicked

� } else if (sender == b2) {

� � // handle b2 being clicked

� }

}

}

public void onClick(ClickEvent event) {

// note that in general, events can have sources that are not Widgets.

Widget sender = (Widget) event.getSource();

if (sender == b1) {

// handle b1 being clicked

} else if (sender == b2) {

// handle b2 being clicked

}

}

b1.addClickHandler(this);

b2.addClickHandler(this);

implements ClickHandler

Dienstag, 7. Dezember 2010

Page 49: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Eventhandling

public class HandlerExample extends Composite implements ClickHandler {

private FlowPanel fp = new FlowPanel();

private Button b1 = new Button("Button 1");

private Button b2 = new Button("Button 2");

public HandlerExample() {

� initWidget(fp);

� fp.add(b1);

� fp.add(b2);

� b1.addClickHandler(this);

� b2.addClickHandler(this);

}

public void onClick(ClickEvent event) {

� // note that in general, events can have sources that are not Widgets.

� Widget sender = (Widget) event.getSource();

� if (sender == b1) {

� � // handle b1 being clicked

� } else if (sender == b2) {

� � // handle b2 being clicked

� }

}

}

extends Composite

initWidget(fp);

fp.add(b1);

fp.add(b2);

private FlowPanel fp = new FlowPanel();l l()

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Custom event

public class HelloWorldMessageSentEvent

� � extends com.google.gwt.event.shared.GwtEvent<HelloWorldMessageSentEvent.Handler> {

public static interface Handler extends

� � � com.google.gwt.event.shared.EventHandler {

� � void someHelloMessageDidArrive(HelloWorldMessageSentEvent event);

}

public static final Type<Handler> TYPE = new Type<Handler>();

public final String messageToTheWorld;

public HelloWorldMessageSentEvent(String messageToTheWorld) {

� � this.messageToTheWorld = messageToTheWorld;

}

@Override

protected void dispatch(Handler handler) {

� � handler.someHelloMessageDidArrive(this);

}

@Override

public Type<Handler> getAssociatedType() {

� � return TYPE;

}

}

p g

extends com.google.gwt.event.shared.GwtEvent<HelloWorldMessageSentEvent.Handler>

public static interface Handler extends

com.google.gwt.event.shared.EventHandler {

void someHelloMessageDidArrive(HelloWorldMessageSentEvent event);

}

public static final Type<Handler> TYPE = new Type<Handler>();w

@Override

protected void dispatch(Handler handler) {

handler.someHelloMessageDidArrive(this);

}

@Override

public Type<Handler> getAssociatedType() {

return TYPE;

}

Dienstag, 7. Dezember 2010

Page 50: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Custom handler

public class HelloWorldMessageSentEvent

� � extends com.google.gwt.event.shared.GwtEvent<HelloWorldMessageSentEvent.Handler> {

public static interface Handler extends

� � � com.google.gwt.event.shared.EventHandler {

� � void someHelloMessageDidArrive(HelloWorldMessageSentEvent event);

}

public static final Type<Handler> TYPE = new Type<Handler>();

public final String messageToTheWorld;

public HelloWorldMessageSentEvent(String messageToTheWorld) {

� � this.messageToTheWorld = messageToTheWorld;

}

@Override

protected void dispatch(Handler handler) {

� � handler.someHelloMessageDidArrive(this);

}

@Override

public Type<Handler> getAssociatedType() {

� � return TYPE;

}

}

public static final Type<Handler> TYPE = new Type<Handler>();w

public final String messageToTheWorld;

public HelloWorldMessageSentEvent(String messageToTheWorld) {

this.messageToTheWorld = messageToTheWorld;

}

@Override

protected void dispatch(Handler handler) {

handler.someHelloMessageDidArrive(this);

}

@Override

public Type<Handler> getAssociatedType() {

return TYPE;

}

}

public class HelloWorldMessageSentEvent

extends com.google.gwt.event.shared.GwtEvent<HelloWorldMessageSentEvent.Handler> {

p

com.google.gwt.event.shared.EventHandler

r extendsstatic

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Putting it together

public class HelloWorldMessageSentEvent

� � extends com.google.gwt.event.shared.GwtEvent<HelloWorldMessageSentEvent.Handler> {

public static interface Handler extends

� � � com.google.gwt.event.shared.EventHandler {

� � void someHelloMessageDidArrive(HelloWorldMessageSentEvent event);

}

public static final Type<Handler> TYPE = new Type<Handler>();

public final String messageToTheWorld;

public HelloWorldMessageSentEvent(String messageToTheWorld) {

� � this.messageToTheWorld = messageToTheWorld;

}

@Override

protected void dispatch(Handler handler) {

� � handler.someHelloMessageDidArrive(this);

}

@Override

public Type<Handler> getAssociatedType() {

� � return TYPE;

}

}

Dienstag, 7. Dezember 2010

Page 51: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

Session

Topics

�Why GWT?

�Development Cycle

�Components and events

�Client Bundles

�UIBinder

�Communicating with the server

� I18N

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Client bundlesImage,Text,Data,CSS

Resources

Dienstag, 7. Dezember 2010

Page 52: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Resources in the classpath!

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Defining the interface

public interface MyAppResources extends ClientBundle {

@Source("style.css")

MyCss myStyle();

@Source("despair.json")

TextResource despairQuotes();

@Source("BestPracticesForArchitectingYourGWTApp.pdf")

DataResource bestPracticesForArchitectingYourGWTApp();

@Source("GWTCanDoWhat.pdf")

DataResource gwtCanDoWhat();

@Source("European_Union_32.png")

ImageResource European_Union_32();

Dienstag, 7. Dezember 2010

Page 53: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Using the resources

public class ImageBundlePanel extends SimplePanel {

� public static final ImageBundlePanel INSTANCE = new ImageBundlePanel();

� private final MyAppResources BUNDLE = GWT.create(MyAppResources.class);

� private final FlexTable table = new FlexTable();

� public ImageBundlePanel() {

� � table.setCellSpacing(5);

� � table.setCellPadding(5);

� � int row = 0;

� � ImageResource europeanUnion_64 = BUNDLE.European_Union_64();

� � addRow(row++, new Image(europeanUnion_64), new Label("European Union"));

� � addRow(row++, new Image(BUNDLE.Portugal_64()), new Label("Portugal"));

� � addRow(row++, new Image(BUNDLE.Germany_64()), new Label(

� � � � "European Union"));

� � this.setWidget(table);

� }

� private void addRow(int row, Image image, Label label) {

� � table.setWidget(row, 0, label);

� � table.setWidget(row, 1, image);

� }

}

public static final ImageBundlePanel INSTANCE = new ImageBundlePanel();w

private final FlexTable table = new FlexTable();w

table.setCellSpacing(5);

table.setCellPadding(5);

int row = 0;

ImageResource europeanUnion_64 = BUNDLE.European_Union_64();

addRow(row++, new Image(europeanUnion_64),w new Label(w "European Union"));

addRow(row++, new Image(w BUNDLE.Germany_64()), new Label(w

"European Union"));

this.setWidget(table);

addRow(row++,

(

ddR ( ++

, new Label(w "Portugal"));

( p

" "

L b l(

private void addRow(int row, Image image, Label label) {

table.setWidget(row, 0, label);

table.setWidget(row, 1, image);

}

Dienstag, 7. Dezember 2010

Session

Topics

�Why GWT?

�Development Cycle

�Components and events

�Client Bundles

�UIBinder

�Communicating with the server

� I18N

Dienstag, 7. Dezember 2010

Page 54: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Declarative user interfacesDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

UI BindingDienstag, 7. Dezember 2010

Page 55: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

CSS with conditionalsDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

CSS with conditionalsDienstag, 7. Dezember 2010

Page 56: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

CSS with conditionalsDienstag, 7. Dezember 2010

Session

Topics

�Why GWT?

�Development Cycle

�Components and events

�Client Bundles

�UIBinder

�Communicating with the server

� I18N

Dienstag, 7. Dezember 2010

Page 57: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

One RequestBuilder to call them all

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Load data from server

String url = "/data/colors.json";

RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);

RequestCallback callback = new RequestCallback() {

public void onError(Request request, Throwable exception) {// ...

}

public void onResponseReceived(Request request, Response response) {if (200 == response.getStatusCode()) {

String payload = response.getText();}

}};

try {

Request request = builder.sendRequest(null, callback);

} catch (RequestException e) {

// ...}

Dienstag, 7. Dezember 2010

Page 58: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Connecting to the enterpriseDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

RPC Plumbing DiagramDienstag, 7. Dezember 2010

Page 59: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

sync interface

@RemoteServiceRelativePath("echo")

public interface EchoService extends RemoteService {

String echo(String name);

}

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

async interface

public interface EchoServiceAsync {

void echo(String name, AsyncCallback<String> callback);

}

Dienstag, 7. Dezember 2010

Page 60: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

implementation

public class EchoServiceImpl extends RemoteServiceServlet implements EchoService {

@Override

public void init(ServletConfig config) throws ServletException {super.init(config);

// Eigene Initialisierung hier einbinden

}

public String echo(String name) {

System.out.println("Got message from: " + name);

return name.toUpperCase();}

}

@Override

public void init(ServletConfig config) throws ServletException {super.init(config);

// Eigene Initialisierung hier einbinden

}

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

it‘s a servlet!

public class EchoServiceImpl extends RemoteServiceServlet implements EchoService {

@Override

public void init(ServletConfig config) throws ServletException {super.init(config);

}

public String echo(String name) {

System.out.println("Got message from: " + name);

return name.toUpperCase();}

}

Dienstag, 7. Dezember 2010

Page 61: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

using the service

EchoServiceAsync echoService = GWT.create(EchoService.class);

// (...)

echoService.echo("Hello!", new AsyncCallback<String>() {

public void onFailure(Throwable caught) {

� � GWT.log("echo service failed", caught);

}

public void onSuccess(String result) {

� � GWT.log("Got echo: " + result);

� � �

}

});

Dienstag, 7. Dezember 2010

Session

Topics

�Why GWT?

�Development Cycle

�Components and events

�Client Bundles

�UIBinder

�Communicating with the server

� I18N

Dienstag, 7. Dezember 2010

Page 62: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

permutationsDienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

using i18n messages

public class HelloI18N implements EntryPoint {

private AppConstants appConstants = GWT.create(AppConstants.class);private ErrorMessages errorMessages = GWT.create(ErrorMessages.class);

/**

* This is the entry point method. */

public void onModuleLoad() {VerticalPanel panel = new VerticalPanel();

panel.add(new Label("" + appConstants.hello()));

panel.add(new Label(appConstants.goodbye()));

panel.add(new Label(errorMessages.serverFailed("hello", 13)));

RootPanel.get().add(panel);

GWT.log(Dictionary.getDictionary("runtimeSettings").get("version"));

}

}

Dienstag, 7. Dezember 2010

Page 63: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

defining the interface

@DefaultLocale("us")

@Generate(format = "com.google.gwt.i18n.rebind.format.PropertiesFormat")

public interface AppConstants extends Constants /* ...WithLookup */{

@Description("Hello message.")

@Meaning("Funny simple hello message needed on the hello i18n sample.")

@DefaultStringValue("Hello i18n World-xxxxxxxxx")

String hello();

@DefaultStringValue("Goodbye!")

String goodbye();

@DefaultIntValue(42)

int errorCode();

@DefaultIntValue(42)

int warningCode();

@Description("Error 13. Real bad thing.")

@Meaning("Shut down the server. Now. And run.")

@DefaultStringValue("13. Rums.")

String error_13();

}

Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

generated property file

# Generated from de.oio.gwt.i18n.client.messages.AppConstants

# for locale us

errorCode=12

# Description: Error 13. Reald bad thing.

# Meaning: Shut down the server. Now.

error_13=13. Rums.

goodbye=Goodbye\!

# Description: Hello message.

# Meaning: Funny simple hello message needed on the hello i18n

sample.

hello=Hello i18n World-xxxxxxxxx

warningCode=42

Dienstag, 7. Dezember 2010

Page 64: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

there is one more thing...Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

... one more sessionbest practices

what‘s in GWT 2.1

tomorrow!

Dienstag, 7. Dezember 2010

Page 65: papick g. taboada - OIO€¦ · p.g.taboada | pgt technology scouting GmbH Google Web Toolkit Einführung Dienstag, 7. Dezember 2010 © 2010 P. G. Taboada | pgt technology scouting

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

Thanks!Dienstag, 7. Dezember 2010

© 2010 P. G. Taboada | pgt technology scouting GmbH | http://pgt.de

mehr von OIO zum Thema

Schulung: Einführung in GWThttp://www.oio.de/google-web-toolkit-schulung.htm

Artikel: Google Web Toolkit: Webanwendungen mit GWT entwickelnhttp://www.oio.de/public/opensource/gwt/google-web-toolkit.pdf

Schulung: Design Patterns mit Javahttp://www.oio.de/seminar/methodik-prozess-management-soft-skills/training-

java-kurs-design-patterns-schulung.htm

Dienstag, 7. Dezember 2010