Cell widgets were a great step forward for GWT - enabling efficient client display of very large amounts of server data by means of RangeChangeEvents processed by AsyncDataProviders.
However there is a serious problem with keyboard navigation as defined by KeyboardPagingPolicy.INCREASE_RANGE. Suppose you are viewing an underlying dataset (eg a database on the server) which has a million rows. This is normally perfectly practical using the new cell widget architecture. However, if you are currently displaying the first page of the data using KeyboardPagingPolicy.INCREASE_RANGE and your user presses the End key, the generated RangeChangeEvent that is fired will have a visible range of 0 to one million! In other words it will request the loading of the entire data set. Clearly, only the last page or screen full of data is all that is required to satisfy the user's request. This makes KeyboardPagingPolicy.INCREASE_RANGE completely unscalable in its current form. KeyboardPagingPolicy.CHANGE_PAGE does not have this problem. However the problem with KeyboardPagingPolicy.CHANGE_PAGE is that it always changes the visible range by a complete page when you press the up or down arrow at the edge of the current visible range. Often you just want the visible range to scroll forward a single row. INCREASE_RANGE does this but, as described above, is unusable for large datasets because of its Home/End handling. I suggest one of the following to make keyboard scrolling more usable: 1. Redefine INCREASE_RANGE behaviour for Home/End keys, so that generated RangeChangeEvent is limited to what the user actually wants to see 2. Add a new enum - maybe called SLIDING_RANGE - which processes up/ down arrow by changing the start of the visible range by just 1 when needed. 3. Allow for pluggable KeyboardPagingPolicy logic I suggest either redefining, creating a new enum, or allowing pluggable policies -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
