This session will provide an overview of Ext GWT 3.0. There are many new features and lots of new functionality in this major release including Cell-based data widgets, Cell-based fields, a new data API, new charts, and theming.
6. Primary Goals
Leverage the power of GWT and its compiler
Use GWT API’s where applicable for better interoperability
Integrate and support best practices of GWT
Build and release through Maven
Thursday, November 3, 2011
7. Syncing with GWT
GXT 2.0 GXT 3.0
Events & Listeners Custom GWT
Rendering Deferred Direct
Interface Based No Yes
Models Custom POJO
UiBinder Support No Yes
SafeHtml Support No Yes
GWT Based Charts Flash Yes
Theming Custom ClientBundle
Thursday, November 3, 2011
11. Model Support
2.0
Forced users to work with GXT Models
Models kept internal map for data
Not strongly typed
3.0
Full support for any POJO
Supports RPC, RequestFactory, AutoBeans
Data Stores take any object type
Thursday, November 3, 2011
12. Server Communications
Transport Data Type
RPC POJOs
RequestFactory EntityProxy / AutoBean
RequestBuilder (XML / JSON) Interface / AutoBean
Thursday, November 3, 2011
13. ValueProvider
Allows access to an object’s property
Supports string based path
Supports nested properties
Can be created directly
Can be created by generator
Thursday, November 3, 2011
14. ValueProvider
Allows access to an object’s property
Supports string based path
Supports nested properties
Can be created directly
Can be created by generator
Thursday, November 3, 2011
15. ValueProvider
interface PostProperties extends PropertyAccess<Post> {
ValueProvider<Post, String> username();
ValueProvider<Post, String> forum();
ValueProvider<Post, Date> date();
}
// create properties instance via deferred binding
PostProperties props = GWT.create(PostProperties.class);
// use value providers
new ColumnConfig<Post, String>(props.forum(), 150, "Forum");
Thursday, November 3, 2011
17. Stores
Stores are client-side collections of data
Filtering and sorting
Change events
Accept any object type
Data widgets are bound to stores
Store
ListStore TreeStore
Thursday, November 3, 2011
18. Loaders
Loader: Builds requests, sends to DataProxy
DataProxy: Makes request to server
DataReader: Translates wire-format to objects
DataWriter: Translates objects to wire-format
Loader
DataProxy DataReader
Thursday, November 3, 2011
25. Loader Interaction
Loader DataProxy Server
DataReader
Thursday, November 3, 2011
26. DataProxy Example
HttpProxy works with GWT RequestBuilder
The type parameters defines the input and return type
String path = "data/data.xml";
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path);
HttpProxy<ListLoadConfig> proxy = new HttpProxy<ListLoadConfig>(builder);
Thursday, November 3, 2011
27. DataReader Example
Reader “transforms” data
Most String readers use AutoBeans
reader = new XmlReader<ListLoadResult<Email>, EmailCollection>(factory,
EmailCollection.class) {
protected ListLoadResult<Email> createReturnData(Object loadConfig,
EmailCollection records) {
return new BaseListLoadResult<Email>(records.getValues());
};
};
Thursday, November 3, 2011
28. DataLoader Example
loader = new ListLoader<ListLoadConfig, ListLoadResult<Email>>(
proxy, reader);
loader.addLoadHandler(new LoadResultListStoreBinding<ListLoadConfig,
Email, ListLoadResult<Email>>(store));
loader.load();
Thursday, November 3, 2011
29. DataWriter
Turns logical data into format to be sent back to server
Reverse behavior of DataReaders
Example use with LoadConfig object sent to server
DataWriter
AutoBeanWriter
JsonWriter UrlEncodingWriter XmlWriter
Thursday, November 3, 2011
31. XTemplates
Provides compile time templating
Retrieves data from any Java Bean
Produces SafeHtml
Thursday, November 3, 2011
32. XTemplates Example Pt. 1
<p><b>Name:</b> {data.name}</p>
<p><b>Salary</b>: {data.income:currency}</p>
<p><b>Kids:</b></p>
<tpl for="data.kids">
<tpl if="age < 100"><p>{#}. {parent.name}'s kid - {name} -
{bday:date("M/d/yyyy")}</p></tpl>
</tpl>
Thursday, November 3, 2011
33. XTemplates Example Pt. 2
public interface DataRenderer extends XTemplates {
@XTemplate(source = "template.html")
public SafeHtml renderTemplate(Person data);
}
DataRenderer renderer = GWT.create(DataRenderer.class);
HTML text = new HTML(renderer.renderTemplate(person));
Thursday, November 3, 2011
34. XTemplates Example Pt. 3
interface ExampleStyle extends CssResource {
String searchItem();
}
interface ExampleTemplate extends XTemplates {
@XTemplate("<div class='{style.searchItem}'>{post}</div>")
SafeHtml render(Forum post, ExampleStyle style);
}
Thursday, November 3, 2011
36. Fields
Most fields are now cell based
Allows to be used standalone and in data widgets
Fields now work with the GWT Editing framework
Thursday, November 3, 2011
37. State Management
Sate code moved out of Components themselves
Supports asynchronous retrieval of data
HTML Local Storage
Thursday, November 3, 2011
41. Cell Widgets
Cell support in all data widgets
Tree, ListView, Grid,TreeGrid
Replaces Widget support in data widgets from 2.0
High performance, interactive behavior
Thursday, November 3, 2011
45. GWT UiBinder
Declarative user interfaces via Xml
Separations of duties Java developers and designers
Supports both widgets and HTML markup
Supports CSS
Thursday, November 3, 2011
46. UiBinder
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder' ...>
<container:CenterLayoutContainer>
<gxt:ContentPanel bodyStyle="padding: 6px" headingText="CenterLayout"
width="200">
<g:Label text="I should be centered" />
</gxt:ContentPanel>
</container:CenterLayoutContainer>
</ui:UiBinder>
Thursday, November 3, 2011
48. Layouts
New optimized layout engine
UiBinder support including layout data
Fully typed containers
Easier to use and understand API
Thursday, November 3, 2011
51. Draw
Cross platform drawing API
SVG / VML / Canvas
Normalizes differences between engine API syntax
DrawComponent base component for drawing
DrawComponent works with GXT layouts
Thursday, November 3, 2011
52. Charts
Integrated with GXT Models & Stores
Full event support for series and legends
Custom tooltip for series
All charts support animations via GXT Fx
Customize appearance of series, axis, legend
Thursday, November 3, 2011
55. 2.0 Theming
Single monolithic gxt-all.css
Contains CSS for all browsers
Manual image spriting
Hard to determine what CSS is applied to a Widget
No compile time checks
Thursday, November 3, 2011
56. Appearance Pattern
Renders the “view” via a SafeHtml string
Responsible for HTML structure and styles
Responds to state changes
Appearance pattern applied to both widgets and cells
ClientBundle
Widget Appearance CssResource
XTemplate
Thursday, November 3, 2011