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 -~----------~----~----~----~------~----~------~--~---