I have a requirement that our users should be able to dynamically create groups of rows inside a celltable.
For example, lets say a user was searching for books, and wanted to group by Author. The Author column should be hidden (this isn't a problem), but there should be a new row with a colspan="numColumns" and eventually the ability to show/hide the Books written by the author. The tricky part is adding a new row basically breaks a lot of assumptions inside HasDataPresenter. From what I can gather, and through my testing, it assumes row x = list.get(x) which is true under the current model of CellTable, but that becomes false when I start dynamcially adding rows. So now in order to get rows/columns to work properly, i've got a ton of copy/paste coding to do. HasDataPresenter, AbstractHasData and CellTable are the 3 that I've narrowed down so far that I need to copy/paste and then modify in order to get access to the correct items. The only reason I need to extend AbstractHasData is because I need to plug in my own version of HasDataPresenter. So my first question is, what would you think about changing AbstractHasData to allow for a pluggable HasDataPresenter and changing HasDataPresenter to be a protected instead of package private class and then refactoring some of the methods in there to be overrideable and refactor some of them to be smaller, HasDataPresenter#resolvePendingState() for example. If I'm missing something and there is an easy way to do what I've described above, I would love to hear how to do it, but currently I'm doing the ugly/error prone/non-updateable process of copy/pasting those classes and making my own CellTable etc. -- http://groups.google.com/group/Google-Web-Toolkit-Contributors