GWT-Ext 2.0 : impressive
By dgirard on Saturday 9 February 2008, 09:18 - GWT Library - Permalink
Sanjiv Jivan
I am pleased to announce that GWT-Ext 2.0 has finally arrived. This release of GWT-Ext is a new and significantly improved major release that is based on Ext 2.0.
Demo : http://www.gwt-ext.com/demo
Project Site : http://www.gwt-ext.com/
Download: http://code.google.com/p/gwt-ext/downloads/list
Overview of changes
- Performance
The overall perfomance and responsiveness has been significantly improved in this release. All components / widgets support lazy rendering which means that they can be instantiated and managed without any overhead and their rendering is deferred to the point at which they are required to be attached to the DOM.
- Unified Component model
All widgets now follow a consistent hierarchy and are subclasses of a base Component class which manages the creation, rendering and destruction lifecycle operations. Methods common to all Components are now easily accessible in a consistent, intuitive and easy to use manner. Containers, which also extends the Component class, can contain other child components which can be one of the many available widgets or another child Container. Containers only know about the child Components that are added to them, and their layout responsibilities are delegated to the assigned LayoutManager. The Panel class is a subclass of Container and is typically the class users will work with. The Panel class adds a lot of useful features like header, top toolbar, bottom toolbar, and ability to collapse and expand.
- Improved Layout management
Building complex layouts in earlier versions was a little cumbersome but it is now a thing of the past. This version has an architecture that separates the responsibility of Containers, which are only aware of child Components, and the layout of the Components within the Container which is handled by an assigned LayoutManager. There are several powerful yet easy to use layouts available like BorderLayout, AccordionLayout, VerticalLayout, HorizontalLayout, AnchorLayout, TableLayout and others that make building complex layouts quite trivial. The Showcase demo has examples of variouos layouts in action.
- Bean friendly API's and better support for extension
Separate config classes associated with a widget are no longer required. All Components support a default / no-op constructor and getters and setter for various properties. Various Components do have additional relevant convenience constructors that are frequently used during development like assigning a label and an action listener to a Button. In this version users can now extend any Component, add members and methods and it will be passed by reference when accessed through a callback or a lookup. In short, things work as expected in a typical Java environment.
Features
Many features of the library are illustrated in the Showcase demo. The Showcase demo is bundled with the distribution and can also be accessed online from the project page.
- Grid
The performance has been significantly improved in this release and the Grid component can render a large number of rows very fast. The GridPanel now supports Single Level Row Grouping, Grouping of Summary Rows, List box look, drag and drop capabilities, checkbox and row numbered column, context menus and a lot more features. Support for Grid to Tree drag and drop has also been added.
- Tree
The TreePanel component supports Checkbox nodes, Drag n Drop between trees and from a grid to a tree, sorting, filtering multi select and many other features. It also handles display of large number of nodes efficiently.
- Forms
Forms have been improved significantly allowing users ultimate flexibility in adding and arranging Fields and other Components. For example multiple fields on a single row, fields displayed across tabs, Grids or even Images in a form and other configurations that were previously not easy to setup.
- TabPanels
TabPanel's now support scrollable tabs (like Firefox) and context menu's. They support deferred tab rendering so that a tab's content is rendered only when the user selects the tab. Adding IFrames to tabs is also supported.
- DataView
DataView is a powerful class that allows you to specify a template for rendering an given Record. You can then bind the DataView to a Store and it will render the Records using the specified HTML template. It not only renders the content but is also backed by a rich event model which allows you to have full control over user actions like click, context menu, double click etc. The main page of the Showcase demo uses a DataView to display the thumbnail images of the samples.
- Windows
A Window is a specialized Panel that supports floating, dragging, minimize/maximize/restore. Any other Container or Component can be added to a Window as illustrated by various examples in the Showcase demo.New Widgets
- Accordion
An Accordion is simply a Container that is assigned an AccordionLayout. All child Panel's added to it will be laid out in the form of an Accordion. And since any Contaienr can be added to a Window, creating a floatable Accordion is a breeze.
- ProgressBar
Highly configurable ProgressBar and support for custom styling.
- Tooltips
Powerful and easy to use Tooltips that can be applied to any Component. Also supports loading remote tooltip content using Ajax.
- CycleButton
This is a specialized Menu Button that contains a menu of CheckItem's. The button automatically cycles through each menu item when clicked.
- TimeField
A field that has a dropdown with a time picker.
- Hidden Field
Ability to add a hidden input field to a Form.- Several other goodies
GWT-Plus compatibility
- GWT-Plus is fully compatible with GWT-Ext 2.0.
Sanjiv,thanks for your great job !


Comments
I'm using GWT-Ext 0.9 for a while now and I've been very impressed by its efficiency and its ease of use. GWT-Ext 2.0 looks even more promising.
Generally speaking it is quite amazing how dynamic is the activity around GWT with so many upcoming frameworks addressing aspects not covered by GWT itself.
It has some consequences on the design. While using one of these GWT extensions, it has to be loosely coupled with your core GWT code, so that changing from one framework to another is easier.
Amazing, beautiful, and useful. I am sooo grateful to those who contributed to the GWT-Ext 2.0 release.
For those of us unskilled in web design, these components make it possible to create an attractive, professional, and usable GUI.
Again, thanks!
The showcase is amazing. I like the fact that the view source for each example is a complete standalone application.
It makes for very easy learning.
Thanks guys, I'm glad you liked it!
Hi,
Nice work Sanjiv!
But, guys, be aware that the changes from 0.93 to 2.0 are quite big. You may experience some troubles trying to update. I've worked for 2 days to update my code. Not finish yet.
One more thing, it seems that it's not fully compatible with Safari (for sample, my app doesn't display on this browser).
Thanks again!
The Safari issue has been resolved and i'll post a minor patch release today. It was actually a Safari bug but fortunately the workaround was quite simple.
Sanjiv
I just upgraded to 2.0 with no pain. Some construtors and methods to refactor and that's it. And it works like a charm.
Really Sanjiv, great work !
And... where is the GWT-Rialto integration announcement? :-)
OMG, this is fantastic!
Great job!