I'd definitely like to see the paging ability as an extension (read
that as you will: interface implementation, derived class, plug-in
behavior, whatever) to the scrolling behavior. I don't really like how
the incubator has two totally separate, unrelated classes.

I wonder if some performance enhancements could be made by having a
TableModel interface which is just read-only, and then only if you
need editing would you use a MutableTableModel. I'm just wondering
here...I really don't know. Though I'm sure it would have other
implications, like a change to the ColumnDefinition (e.g., making it
read-only, and having a MutableColumnDefinition?)

jay


On Jun 10, 9:55 am, Isaac Truett <itru...@gmail.com> wrote:
> Re: Bruce's point about expectations and features vs. performance.
>
> Has there been (or should we start) discussion for the public record
> of different facets/features of tables, their impact on performance,
> and their possible class structure? What I'm thinking of specifically
> is bulk rendering vs. dynamic model-backed tables, scrolling, paging,
> and all the combinatorial permutations thereof. Will supported
> features be part of a single class hierarchy as they are in Incubator
> (i.e., PagingScrollTable extends ScrollTable; paging code is bound to
> scrolling code, although scrolling can be disabled it would still add
> code to the compiled app)? Or will they be pluggable features into a
> base Table class (like MonthSelectors for DatePickers)? Or separate
> implementations of a common Table interface?
>
> - Isaac
>
> On Wed, Jun 10, 2009 at 11:27 AM, Bruce Johnson <br...@google.com> wrote:
> > I'll be the bad guy and try to lower expectations: whatever we end up doing,
> > it has to be fast. We've seen some *horrible* usability problems with fancy
> > tables -- even at a small number of rows -- and so don't be surprised if we
> > have to pare back features and reduce API flexibility to ensure that a few
> > key use cases are sufficiently high performance.
>
> > -- Bruce
>
> > On Tue, Jun 9, 2009 at 10:12 AM, John LaBanca <jlaba...@google.com> wrote:
>
> >> We'll definitely keep these things in mind when moving stuff over to GWT
> >> trunk.  We've also found a lot of general usability problems, such as the
> >> fact the the table doesn't layout naturally, which means apps require 
> >> active
> >> layout.  During the transfer, we'll refactor quite a few things to make 
> >> them
> >> more usable.  Specifically, we'd like to provide a version that allows you
> >> to bulk renderer the header and footer into the same table element,
> >> eliminated the three separate tables and fixed layout.  You would lose the
> >> scrolling feature, but you would not have to use active layout.
>
> >> When we start moving stuff into trunk or while its in my branch (as in
> >> right now), thats a good time to point out specific problems or requests.
> >> Its much harder to change the API after we make an official release.
>
> >> Thanks,
> >> John LaBanca
> >> jlaba...@google.com
>
> >> On Tue, Jun 9, 2009 at 5:01 AM, David <david.no...@gmail.com> wrote:
>
> >>> Jay,
>
> >>> We are experiencing the same ideas here. We store column ordering and
> >>> widths on the server but we have no way of getting events in the UI to
> >>> know when changes have been complete.
>
> >>> wouldn't it be nice that the dnd was included as well, I could really
> >>> use the DND of columns! Was it hard to implement ? We did not yet
> >>> bother to investigate since we have to focus on getting functionality
> >>> complete first.
>
> >>> David
>
> >>> On Tue, Jun 9, 2009 at 10:00 AM, jay<jay.gin...@gmail.com> wrote:
>
> >>> > As I see that this has begun (yeah!!!!), I'd like to throw out a few
> >>> > requests:
>
> >>> >  * Please, please, please -- ensure that this is as extensible as
> >>> > possible. Here's just one example--I've integrated the gwt-dnd library
> >>> > to allow drag-n-drop re-ordering of columns. There are a couple of
> >>> > funny corner cases, though, because I have no way of knowing when a
> >>> > column resize has completed. Obviously, if you're resizing the column,
> >>> > you're not interested in dragging it to a new location. I strongly
> >>> > encourage you to think three, four, five times about making a method
> >>> > private or package protected. Liberal use of JavaDoc with strongly
> >>> > worded warnings to those of us who need to customize the widgets. I
> >>> > know this cuts down on your ability to make under-the-cover changes
> >>> > from release to release, but it makes it so that folks like me don't
> >>> > have to resort to things like JSNI trickery or copying the entire
> >>> > class or set of classes into our own code base.
>
> >>> >  * As a direct follow up to #1, fire some more events. For example,
> >>> > fire an event when a column resize starts and when it ends.
>
> >>> >  * Flexibility is great, but often I'm just interested in the simple
> >>> > cases...simple. My example here is the multiple-row header stuff. It's
> >>> > GREAT! I LOVE it! (And better yet, our customers have been screaming
> >>> > for this!) But, I don't always need/want it. And, it can make things
> >>> > more complex. One idea would be to overload methods like getHeader()
> >>> > on AbstractColumnDefinition...add a version that doesn't take a 'row'
> >>> > parameter, and so just assumes there's only 1 row.
>
> >>> >  * More use of generics, less casting (for me). Some examples:
> >>> >    o AbstractColumnDefinition returns Object for the getHeader()
> >>> > method. Why not declare this as class
> >>> > AbstractColumnDefinition<RowType, ColType, HeaderType>?
> >>> >    o Rather than: "public TableDefinition<RowType> getTableDefinition
> >>> > ()", how about adding a TABLE_DEFINITION type to the class (e.g.,
> >>> > "class PagingScrollTable<TABLE_DEFINITION extends
> >>> > TableDefinition<RowType>>, so that the method could be declared as
> >>> > "public TABLE_DEFINITION getTableDefinition()"?
>
> >>> > I apologize if I'm being overly simplistic or if I'm asking too much.
> >>> > I definitely apologize for not following up my suggestions with
> >>> > proposed patches. And I sincerely hope that my suggestions are taken
> >>> > only as the most positive form of feedback possible. I LOVE GWT. We've
> >>> > bet our company on the fact that GWT is *the* best way for writing the
> >>> > kind of interactive and rich apps our users are demanding. I want to
> >>> > do whatever I can (with my limited time outside of my job) to help
> >>> > make this toolkit even better.
>
> >>> > Thanks!
>
> >>> > jay
>
>
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to