What is the Advanced GWT Components library?

Advanced GWT Components library is a set of GWT widgets designed to simplify Web 2.0 UI development in Java. Components architecture is based on MVP pattern typical for Swing applications. The main entities of the library are Data Model, Advanced Widget and Event Listener.

Wrapping JavaScript functionality in Java code GWT simplifies working with rich web interfaces even for those developers who are not familiar with DHTML. Advanced GWT Components extends the standard set of GWT widgets and allows creating complicated UI even faster than the tools available by default.

Advanced GWT Components might be useful in those specializations where non-trivial data representations required, for instance, banking, science, accounting, etc.

[top]


Is the library free?

Yes and distributed under Apache License 2.0.

And you can download the latest version on the SourceForge download page right now.

[top]


How does it work?

Here is a simpliest sample illustrating how to use the library widgets..

//create a new model containing employees
Editable model = new EditableGridDataModel(
       new Object[][] {
           new String[]{"John","Doe"},
           new String[]{"Piter","Walkman"},
           new String[]{"Rupert","Brown"}
        }
    );

// create a new grid of employees
GridPanel panel = new GridPanel();
panel.createEditableGrid(
   new String[]{"First Name","Surname"},
   new Class[]{LabelCell.class, LabelCell.class},
    null
).setModel(model);

RootPanel.get().add(panel);

The sample underlines four main steps:

  • Grid widgets creation
  • Data Model creation
  • Data Model and Grid relationship setting
  • Grid widget displaying

All the steps are mandatory. Order of two first steps is not important. Additional customization requires other actions. Note that this sample demonstrates basic features only.

If you need more advanced functionality please read other FAQ sections.

[top]


What is the Data Model?

Data Model is a part of MVC pattern. In the libarary it's any class that implements the org.gwt.advanced.client.datamodel.GridDataModel interface. This interface (and all implementations as well) defines what rows must be shown by a grid, in what order they must be sorted, by which column and provides some methods for data getting. Data models are used by grids to obtain data before visualization.

There are several common interfaces which extend this one:

  • org.gwt.advanced.client.datamodel.Editable This interface is used by the Editable Grid. It contains methods for data manipulations required on edit events.
  • org.gwt.advanced.client.datamodel.Hierarchical This interface extends Editable and provides a couple of methods for submodels manipulations.
Every time you decide what grid you'd prefer in a particular situation you should also choose a data model.

[top]


What is the Advanced Widget?

Advanced Widget is a basic abstraction of all library widgets. The AdvancedWidget interface contains just one method - display(). If you want to see a widget on the screen you have to invoke this method. But do it only if you prepared the widget to be displayed, i.e. all widget fileds initialized properly.

[top]


Where can I find library API documents?

Automactacally generated and up-to-date JavaDocs can be found here.

[top]


What is MVP? Why do I need it?

MVP (Model-View-Presenter) is a user interface design pattern engineered to facilitate automated unit testing and improve the separation of concerns in presentation logic. The Model is an interface defining the data to be displayed or otherwise acted upon in the user interface. The View is an interface that displays data (the Model) and routes user commands to the Presenter to act upon that data. The Presenter acts upon the Model and the View. It retrieves data from repositories, persists it, manipulates it, and determines how it will be displayed in the View.

Advanced GWT Components framework extends the standard GWT widgets and defines structures which can be identified as the "Model". The library also uses "renderers" which are the "View". And finally it provides component classes which can be interpreted as the "Presenter".

[top]