13. TextBox t0 = new TextBox();
TextBox t1 = new TextBox();
TextBox t2 = new TextBox();
TextBox t3 = new TextBox();
TextBox t4 = new TextBox();
VerticalPanel...
SplitPanel...
ScrollPanel
RootPanel.get().add(mainPanel);
24. THERE IS NOT A MOMENT TO LOOSETHERE IS NOT A MOMENT TO LOOSE
Jan 2000 Jan 2005
XHTML 1.0
Jan 2000
HTML 4.0.1
Dez 1999
CSS 2
Mai 1998
HTML 4.0 update
April 1998
XHTML 1.1
Mai 2001
HTML 2.0
November 1995
HTML 4.0
Dezember 1997
Java EE 1.2
Dez 1999
JDK 1.1
Feb 1997
Internet Explorer 6
Aug 2001
JDK 1.0
Jan 1996
CSS 2.1
Feb 2004 – Jun 2011
CSS level 2 revision 1, often referred to as "CSS 2.1", fixes
errors in CSS 2, removes poorly supported or not fully
interoperable features and adds already-implemented
browser extensions to the specification. In order to comply
with the W3C Process for standardizing technical
specifications, CSS 2.1 went back and forth between
Working Draft status and Candidate Recommendation
status for many years.
J2SE 1.2
Dez 1998
J2SE 1.3
Mai 2000
CSS 1
Dez 1996
HTML 3.2
Januar 1997
55. Keep It Stupid Simple
• use PLACES framework
for main level navigation
• if you really need to,
nest activities for a
second level.
try not to.
• use dialogs for user
input, showing data.
dialogs are easily reused.
71. Don‘t move your user
away from his „PLACE“
unless you have to.
Search DIALOG
slides in from right
side, stays on TOP
72. Navigation should not hurt
• The application shown uses only 3
levels of navigation,
DOES NOT NEED MORE
• PLACES used for bookmarkable
entry points/ back button
navigation consistency
• Activities should be STATELESS, to
survive page reloads
• Learn from OTHERS, lookout for
hashtags…
73. Once upon a time,
a young good designer did a good looking design...
‣ he will be using photoshop
or dreamweaver
!
‣ he will not use the
software
!
‣ he will not build the
software
!
‣ he will not maintain the
software
74. BEFOREYOU ADD THE LOGO
TO THE TOP
how many pixels do your
USERS have?
the designer or marketing guy using
photoshop is probably sitting in front
of a 27“ apple cinema display
76. GWT-RPC
is a good
solution if
handled
with care
SomeResult someMethodName(SomeParameter spo)
GWT-RPC
binds many
methods
into one
interface
Interface
Versioning is
a monstrous
thing
89. public interface ActionHandler
<A extends Action<R>, R extends Result> {
!
Class<A> getActionType();
!
!
!
!
R execute(
A action,
ExecutionContext context)
throws DispatchException;
!
}
Server side
type safety
again
handler to action
mapping
action execution
declared
exception
hiearchy
Execution context for server side
command execution
90. @ActionHandlerBean
@Transactional
public final class TerminDataLoadHandler
implements ActionHandler<TerminLoadAction, DataResult<TerminData>> {
!
@Autowired
private TerminDAO terminDao;
!
@Override
public DataResult<TerminData> execute(
TerminLoadAction action,
ExecutionContext context) throws DispatchException {
!
TerminBean termin = …
!
TerminData data = …
!
return new DataResult<TerminData>(data);
!
}
!
@Override
public Class<TerminLoadAction> getActionType() {
return TerminLoadAction.class;
}
!
}
Server side
custom annotationspring
access to backend
type safe result
business logic,
etc…
97. solving common
problems•one batch call is better than 10
single calls
•less data
•less roundtrip latency
•avoid connection bottleneck
•ensure server side execution
order
•less roundtrips