Is Vaadin right for me?

A few months back I attempted to create a business app with a given set of requirements using SmartGWT (and before that straight GWT) and wasn’t completely successful.
The main screen of the app is similar to a web mail message table (page-able) except editable - utilizing the following cell editor types:

  • Calendar
  • List
  • Text
  • Upload
  • Download (link)
  • Tree Picker
  • Buttons with icons

And here’s where it gets tricky - sometimes the editors are cell dependent.
For example, following an upload in a given table row, that cell would change to a download link.
In another case, a list value in one column dictates one of several editors in another column.

Also required is support for validation (missing values, incorrect values, two field comparison), and adding/removing rows dynamically.

For some of these, I can go through the samplers and see some support.
I also know that, unlike SmartGWT, a non-expert can extend the toolkit.
But it’s hard to know if everything can be done without spending a week creating a prototype.

Could someone with thorough knowledge what’s possible tell me if Vaadin is a viable option,


attempting the prototype?


The features you describe are simplistic. Vaadin can easily do that.

Have a look at this full demo to have a real idea of what Vaadin can do :
Vaadin demo

You can easily do most of the stuff using Vaadin Table.addGeneratedColumn or Table Field Factory support.

Thanks for the replies.

I’ve gone through these samples, but I’ve not (yet) seen these particular features.
I can easily believe that “per cell” editing is available.
However, for the “table row upload” feature, I’d really hoped for a better answer.
Neither SmartGWT not Ext GWT can (easily) do this, as the upload widget needs to reside on a form.

I hope this is what you’re looking for :

myTable.setTableFieldFactory(new TableFieldFactory()
            public Field createField(Container container, Object itemId, Object propertyId, Component uiContext)

Thus, you can return the component you want for a given editable cell.

Does this work dynamically?
Typically, for “per cell” editing, row and column are input arguments.

Issue #2: Are there any examples anywhere of upload widgets on a table?

There isn’t really any difference between a Field in a Layout and a Field in a Table. As long as that createField returns an Upload -component, you should be set to go.

The three examples on a upload component can be found here:

Hit the “view source” button to get the code.
An example with a table genereated column, which is an other option to the field factory, can be found here: