Ext

Ext GWT 2.0 Released

July 9, 2009 by Darrell Meyer

The Ext Team is happy to announce the availability of Ext GWT 2.0 available for immediate download. Ext GWT 2.0 is packed full of new components and features, expanding on the Ext GWT 1.0 feature set. Most notably, Ext GWT has closed the feature gap that once existed between its sister project Ext JS. Developers looking to use Ext GWT can now rest easy knowing that they are not missing out on any cool features.

Thanks to community for testing and reporting bugs with our 2.0 preview releases. With this help, we are able to ensure a stable and robust release.

New Components & Features

With 2.0 comes several new components and features including the following:

  • TreePanel
  • TreeGrid
  • Charting
  • HtmlEditor (with ColorPalette)
  • RowEditor
  • Widget Renderer Grid
  • ButtonGroup
  • Status
  • HBoxLayout & VBoxLayout

Tree Panel & Tree Grid

2.0 introduces the TreePanel and TreeGrid component. TreePanel and TreeGrid bind directly to a TreeStore and replaces Tree and TreeTable. Since these two components bind directly to a TreeStore, the TreeBinder and TreeTableBinder binders are no longer needed. TreeGrid is Grid subclass which means it gives you all the benefits and features of Grid – fast rendering, widget support, and inline and row based editing.

The following screenshot is of the new TreeGrid using a RowEditor:

TreeGrid

Live Charting

The chart package will allow you to visualize your data with flash based charting. Each chart binds directly to a ListStore. The new FlashComponent class, which extends BoxComponent, allows you to easily create custom Flash Components. By binding the charts directly to a ListStore, you don’t have to worry about updating your chart, they will update automatically. Included is a full Java object model for configuring and constructing the charts, no need to mess with JSON or XML.

Charting

HTML Editor – Rich Text Editor

The often requested components is now available. HtmlEditor is a lightweight WYSIWYG editor that integrates well with the other Ext components. The HtmlEditor component is easy to customize with other features you may need.

HtmlEditor

RowEditor

Editing a row in a grid just got a lot easier. The RowEditor is another great new UI component allowing you to rapidly edit full rows in a grid. You can even enable a validation mode which uses the new AnchorTips to notify the user of all validation errors at once.

Row Editor

Widget Renderer

It is now possible to add widgets to cells in Grid. To use widgets, simply use a GridCellRenderer and return a widget, rather than a HTML fragment.

Widget Grid

ButtonGroup

ButtonGroup is a new component that will allow you to group together Buttons of different sizes to create complex toolbars enabling your users to find the most common actions first.

Button Group

Status

The new Status component can be used with a ToolBar to replicate the status area of an application.

Status

HBoxLayout & VBoxLayout

Two new and extremely flexible layouts for layout out children in a single row or column. Box layouts allow precise control of the size and position of the children in a container.

BoxLayout

Enhanced Components & Features

  • Grid
  • Buttons
  • Toolbar Overflow
  • Menu Overflow
  • AnchorTips
  • Buffered GridView
  • ImageBundle

Grid Enhancements

We have added two new features we hope you will enjoy. First is column grouping, which allows multi-row headers with colspan and rowspan support. In addition, widgets can be added to the headers.

Column Grouping

The follow code creates the two rows of column groups:

    cm.addHeaderGroup(0, 0, new HeaderGroupConfig("Header Grouping Example", 1, 5));
    cm.addHeaderGroup(1, 2, new HeaderGroupConfig("Stock Performance", 1, 2)); 
    cm.addHeaderGroup(1, 0, new HeaderGroupConfig(yourWidget, 1, 2));

The second enhancement is aggregation rows. One to many rows can be added to the bottom of a Grid. You can specify one of the predefined aggregations types, such as max, min, and avg, or use renderers to display any data.

Aggregation Rows

The following code creates a single aggregation row:

AggregationRowConfig<Stock> averages = new AggregationRowConfig<Stock>();
averages.setHtml("name", "Average");
 
// with summary type and format
averages.setSummaryType("last", SummaryType.AVG);
averages.setSummaryFormat("last", NumberFormat.getCurrencyFormat());
 
// with renderer
averages.setSummaryType("change", SummaryType.AVG);
averages.setRenderer("change", new AggregationRenderer<Stock>() {
  public Object render(Number value, int colIndex, Grid<Stock> grid, ListStore<Stock> store) {
    // you can return html here
    return number.format(value.doubleValue());
  }
});
cm.addAggregationRow(averages);

Buttons

Buttons in Ext GWT 2.0 have been refactored to be a valid BoxComponent which enables them to partake in layout management. Buttons can now scale to any height or width and have advanced text positioning.

Toolbar overflow

Toolbar Overflow

Toolbars can now create a menu for items that don’t fit the visible toolbar area. The items in the menu still react with the same handlers as the toolbar items. This new behavior is turned on by default and can be disabled with the configuration option enableOverflow.

Toolbar overflow

Menu Overflow

Menus now also handle overflowing in a more gracious manner. Whenever a menu gets so long that the items won’t fit the viewable area, it provides the user with an easy UI to scroll the menu. This feature is turned on by default and can be disabled by the configuration option enableScrolling.

Menu overflow

ToolTips

Tooltips now support an anchor configuration which will allow you to bring attention to a particular element or component with a small callout arrow.

ToolTip

Buffered GridView

Buffered GridView enhances performance by waiting to render rows until they are visible. As your user scrolls away from content which is no longer visible, the BufferedGridView will clean up the old DOM markup to minimize the DOM structure. As a result of the smaller markup, the performance of resizing, forceFit, autoExpandColumn and other layout and DOM manipulation features in a large grid will improve substantially. Buffer GridView is limited to working on fixed height rows.

Buffer Grid

ImageBundle Support

ImageBundle support has been an often requested feature. With M3, we have added ImageBundle support. Icons can be specified in three different methods:

  • AbstractImagePrototype (typically from an ImageBundle)
  • CSS style name (existing method)
  • Image path (String)

All components that support icons now implement the new IconSupport interface:

/**
 * Interface for objects that support icons.
 */
public interface IconSupport {
  /**
   * Returns the icon.
   * 
   * @return the icon
   */
  public AbstractImagePrototype getIcon();
 
  /**
   * Sets the icon.
   * 
   * @param icon the icon
   */
  public void setIcon(AbstractImagePrototype icon);
 
  /**
   * Sets the icon style.
   * 
   * @param icon a CSS style name
   */
  public void setIconStyle(String icon);
}

In addition, there is a helper class, IconHelper, that can be used to create image prototypes from CSS style names, and image paths. Here is an example setting an icon 3 different ways:

    // from bundle
    item.setIcon(GXT.IMAGES.editor_bold());
    // CSS style name
    item.setIconStyle("my-icon");
    // image path
    item.setIcon(IconHelper.createPath("/my/url/foo.gif"));

Upgrading

Ext GWT 2.0 is a major upgrade from 1.0. There are a number of breaking changes to consider when moving from 1.X. There is a migration guide in the Ext GWT download which documents the API changes. Make sure to take a look at this before you begin upgrading to 2.0.

Ext GWT 2.0 is available on our download page. We have updated our roadmap to show the new features we are targeting for release 2.1.

25 Responses to “Ext GWT 2.0 Released”

  1. Mike

    We want the rails RJS version too like this http://lipsiadmin.com !!!

  2. Ext GWT 2.0 już jest! | omeck's devBlog - moje potyczki z Internetem

    [...] informacji znajduje się pod adresem: http://extjs.com/blog/2009/07/09/ext-gwt-20-released/ Dodaj [...]

  3. Mark Macumber

    Excellent job guys, I cant wait to get my hands real dirty using these new features. Although, I would like, perhaps instead of slabs of example code, some full documentation on the widgets, sometimes it takes a while to piece together the code examples…

  4. Rob

    The demo for Tree Grid is broken.
    Rob

  5. Darrell Meyer

    Rob – I do not see any issue with the TreeGrid examples. Can you give more information about the problem you are seeing (which demo, browser, etc)?

  6. Jacob

    For the TreeGrid examples, if you expand nodes and then click on a column header to sort by, it collapses the Tree. If you sort by clicking on the down/more arrow, then they are left open. I believe this is happening in IE7, Chrome, etc.

  7. jv

    Amazing work guys, thank you!

    Not as popular as Ext for JS, but I can’t imagine managing my current project in JavaScript, without static typing and the code “self-awareness” that Java/Eclipse provides. It would be possible, but much more time consuming and error prone.

  8. Mike Chaliy

    Hate to ask you, but do you guys plan to publish this release to Maven?

  9. extjs

    업그레이드 됬나보넹..

    extjs도 언능 전용 개발툴좀 나왔으면 좋으련만. –ㅋ

  10. Oz

    Is there gonna be a Facebook style tag input UI element soon ?

  11. sağlık personeli

    Thanks to community for testing and reporting bugs with our 2.0 preview release

  12. aksaray üniversitesi

    thank but do you guys plan to publish this release to Maven?

  13. Matt Raible

    For those that’ve asked about Maven, the 2.0.1 release is now in the central repository.

    http://repo2.maven.org/maven2/com/extjs/gxt/2.0.1/

  14. Bird Toys

    Great work.

  15. replica jersey

    You have done a great job,guys!Cheers

  16. Billy Bones

    Thank you Darrell for your job.

    Let me ask you as a guru :)

    What do you recommend as general approach in showing data in your “binding” widgets from “lookup” objects? Invoice Payer and Buyer names for example in model with associations: Invoice object to 2 objects of Customer and getName() method?

    Tnx

  17. nigel

    just look at the demos, the charts don’t seem to be working.

  18. Ben

    Very keen to use GXT for a commercial project – do you have an estimated timescale for implementation of column reordering in GXT grids? This is the one piece of missing functionality for us.

  19. Forex

    Looking forward to test out the demo.. Looks GREAT!

  20. Abhishek

    Want to know about creating a custom widget on top of GXT widgets and not able to find any doc for that. Any help/doc on this will be of great use.

  21. santa luzia

    For the TreeGrid examples, if you expand nodes and then click on a column header to sort by, it collapses the Tree. If you sort by clicking on the down/more arrow, then they are left open. I believe this is happening in IE7, Chrome, etc.

  22. Bernadette

    Great job guys! Thanks for the tutorial as well, was a great help for me.

  23. Andrey

    Buttons can no longer be added to ButtonBar? In all examples I see
    # ButtonBar buttonBar = new ButtonBar();
    # buttonBar.add(new Button(”Click Me”, listener));
    but there seems to be no add(Button) method in ButtonBar (due to API documentation).

    I am new to GXT, so am I doing anything wrong, or when are examples going to become up-to-date?

  24. Pascal Barbier

    Hello,

    What are your plans with respect to close release of GWT 2.0 ? I’m primarily thinking in the support of the UIBinder interface.

    Thanks in advance.

  25. krzysztof

    Awesome work. Thanks for that.

Leave a Reply

To prove that you're not a bot, please answer this question:



© 2006-2009 Ext, LLC