Thanks for the response, Joe.
I'm sure the general idea is the same, but the UiBinder stuff is
gibberish to me; translating UiBinder code to traditional code is
making my head hurt.
I *think* I copied all of the relevant pieces out of the sample, but
I'm clearly missing something. I get a page of items, but the
ScrollPanel doesn't appear to be working. Does anything in this jump
out at you as obviously wrong?
package com.sample.client;
import java.util.Arrays;
import java.util.List;
import com.google.gwt.cell.client.TextCell;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.ScrollEvent;
import com.google.gwt.event.dom.client.ScrollHandler;
import com.google.gwt.user.cellview.client.AbstractPager;
import com.google.gwt.user.cellview.client.CellList;
import
com.google.gwt.user.cellview.client.HasKeyboardPagingPolicy.KeyboardPagingPolicy;
import
com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.HasRows;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;
public class Sample implements EntryPoint
{
private static final List<String> LIST = Arrays.asList(getList());
public void onModuleLoad()
{
final Label message = new Label();
CellList<String> cellList = new CellList<String>(new
TextCell());
cellList.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
cellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION);
final SingleSelectionModel<String> selectionModel = new
SingleSelectionModel<String>();
cellList.setSelectionModel(selectionModel);
selectionModel.addSelectionChangeHandler(new
SelectionChangeEvent.Handler()
{
public void onSelectionChange(SelectionChangeEvent
event)
{
String selected =
selectionModel.getSelectedObject();
message.setText(selected == null ? "" :
selected);
}
});
cellList.setPageSize(20);
cellList.setRowCount(LIST.size(), true);
cellList.setRowData(0, LIST);
ScrollingPager pager = new ScrollingPager();
pager.setDisplay(cellList);
RootPanel.get("list").add(pager);
RootPanel.get("message").add(message);
}
/**
* A scrolling pager that automatically increases the range every
time the
* scroll bar reaches the bottom.
*/
public class ScrollingPager extends AbstractPager
{
private int incrementSize = 20;
private int lastScrollPos = 0;
private final ScrollPanel scrollable = new ScrollPanel();
public ScrollingPager()
{
initWidget(scrollable);
scrollable.setPixelSize(250, 350);
scrollable.getElement().getStyle().setBorderWidth(1,
Style.Unit.PX);
scrollable.getElement().getStyle().setBorderColor("red");
scrollable.getElement().setTabIndex(-1);
// Handle scroll events.
scrollable.addScrollHandler(new ScrollHandler()
{
public void onScroll(ScrollEvent p_event)
{
// If scrolling up, ignore the event.
int oldScrollPos = lastScrollPos;
lastScrollPos =
scrollable.getVerticalScrollPosition();
if (oldScrollPos >= lastScrollPos)
{
return;
}
HasRows display = getDisplay();
if (display == null)
{
return;
}
int maxScrollTop =
scrollable.getWidget().getOffsetHeight()
- scrollable.getOffsetHeight();
if (lastScrollPos >= maxScrollTop)
{
// We are near the end, so increase the page
size.
int newPageSize =
Math.min(display.getVisibleRange()
.getLength()
+ incrementSize,
display.getRowCount());
display.setVisibleRange(0, newPageSize);
}
}
});
}
public int getIncrementSize()
{
return incrementSize;
}
@Override
public void setDisplay(HasRows display)
{
assert display instanceof Widget : "display must extend
Widget";
scrollable.setWidget((Widget)display);
super.setDisplay(display);
}
public void setIncrementSize(int incrementSize)
{
this.incrementSize = incrementSize;
}
@Override
protected void onRangeOrRowCountChanged()
{
}
}
private static String[] getList()
{
return new String[] { "ABBOTT", "ACEVEDO", "ACOSTA", "ADAMS",
"ADKINS",
"AGUILAR", "AGUIRRE", "ALEXANDER", "ALI", "ALLEN",
"ALLISON",
"ALVARADO", "ALVAREZ", "ANDERSEN", "ANDERSON",
"ANDRADE",
"ANDREWS", "ANTHONY", "ARCHER", "ARELLANO", "ARIAS",
"ARMSTRONG", "ARNOLD", "ARROYO", "ASHLEY", "ATKINS",
"ATKINSON", "AUSTIN", "AVERY", "AVILA", "AYALA",
"AYERS",
"BAILEY", "BAIRD", "BAKER", "BALDWIN", "BALL",
"BALLARD",
"BANKS", "BARAJAS", "BARBER", "BARKER", "BARNES",
"BARNETT",
"BARR", "BARRERA", "BARRETT", "BARRON", "BARRY",
"BARTLETT",
"BARTON", "BASS", "BATES", "BAUER", "BAUTISTA",
"BAXTER",
"BEAN", "BEARD", "BEASLEY", "BECK", "BECKER", "BELL",
"BELTRAN", "BENDER", "BENITEZ", "BENJAMIN", "BENNETT",
"BENSON", "BENTLEY", "BENTON", "BERG", "BERGER",
"BERNARD",
"BERRY", "BEST", "BIRD", "BISHOP", "BLACK",
"BLACKBURN",
"BLACKWELL", "BLAIR", "BLAKE", "BLANCHARD",
"BLANKENSHIP",
"BLEVINS", "BOLTON", "BOND", "BONILLA", "BOOKER",
"BOONE",
"BOOTH", "BOWEN", "BOWERS", "BOWMAN", "BOYD", "BOYER",
"BOYLE",
"BRADFORD", "BRADLEY", "BRADSHAW", "BRADY", "BRANCH",
"BRANDT",
"BRAUN", "BRAY", "BRENNAN", "BREWER", "BRIDGES",
"BRIGGS",
"BRIGHT", "BROCK", "BROOKS", "BROWN", "BROWNING",
"BRUCE",
"BRYAN", "BRYANT", "BUCHANAN", "BUCK", "BUCKLEY",
"BULLOCK",
"BURCH", "BURGESS", "BURKE", "BURNETT", "BURNS",
"BURTON",
"BUSH", "BUTLER", "BYRD", "CABRERA", "CAIN",
"CALDERON",
"CALDWELL", "CALHOUN", "CALLAHAN", "CAMACHO",
"CAMERON",
"CAMPBELL", "CAMPOS", "CANNON", "CANTRELL", "CANTU",
"CARDENAS", "CAREY", "CARLSON", "CARNEY", "CARPENTER",
"CARR",
"CARRILLO", "CARROLL", "CARSON", "CARTER", "CASE",
"CASEY",
"CASTANEDA", "CASTILLO", "CASTRO", "CERVANTES",
"CHAMBERS",
"CHAN", "CHANDLER", "CHANEY", "CHANG", "CHAPMAN",
"CHARLES",
"CHASE", "CHAVEZ", "CHEN", "CHERRY", "CHOI",
"CHRISTENSEN",
"CHRISTIAN", "CHUNG", "CHURCH", "CISNEROS", "CLARK",
"CLARKE",
"CLAY", "CLAYTON", "CLEMENTS", "CLINE", "COBB",
"COCHRAN",
"COFFEY", "COHEN", "COLE", "COLEMAN", "COLLIER",
"COLLINS",
"COLON", "COMBS", "COMPTON", "CONLEY", "CONNER",
"CONRAD",
"CONTRERAS", "CONWAY", "COOK", "COOKE", "COOLEY",
"COOPER",
"COPELAND", "CORDOVA", "CORTEZ", "COSTA", "COWAN",
"COX",
"CRAIG", "CRANE", "CRAWFORD", "CROSBY", "CROSS",
"CRUZ",
"CUEVAS", "CUMMINGS", "CUNNINGHAM", "CURRY", "CURTIS",
"DALTON", "DANIEL", "DANIELS", "DAUGHERTY",
"DAVENPORT",
"DAVID", "DAVIDSON", "DAVIES", "DAVILA", "DAVIS",
"DAWSON",
"DAY", "DEAN", "DECKER", "DELACRUZ", "DELEON",
"DELGADO",
"DENNIS", "DIAZ", "DICKERSON", "DICKSON", "DILLON",
"DIXON",
"DODSON", "DOMINGUEZ", "DONALDSON", "DONOVAN",
"DORSEY",
"DOUGHERTY", "DOUGLAS", "DOWNS", "DOYLE", "DRAKE",
"DUARTE",
"DUDLEY", "DUFFY", "DUKE", "DUNCAN", "DUNLAP", "DUNN",
"DURAN",
"DURHAM", "DYER", "EATON", "EDWARDS", "ELLIOTT",
"ELLIS",
"ELLISON", "ENGLISH", "ERICKSON", "ESCOBAR",
"ESPARZA",
"ESPINOZA", "ESTES", "ESTRADA", "EVANS", "EVERETT",
"EWING",
"FARLEY", "FARMER", "FARRELL", "FAULKNER", "FERGUSON",
"FERNANDEZ", "FERRELL", "FIELDS", "FIGUEROA",
"FINLEY",
"FISCHER", "FISHER", "FITZGERALD", "FITZPATRICK",
"FLEMING",
"FLETCHER", "FLORES", "FLOWERS", "FLOYD", "FLYNN",
"FOLEY",
"FORBES", "FORD", "FOSTER", "FOWLER", "FOX",
"FRANCIS",
"FRANCO", "FRANK", "FRANKLIN", "FRAZIER", "FREDERICK",
"FREEMAN", "FRENCH", "FREY", "FRIEDMAN", "FRITZ",
"FROST",
"FRY", "FRYE", "FUENTES", "FULLER", "GAINES",
"GALLAGHER",
"GALLEGOS", "GALLOWAY", "GALVAN", "GAMBLE", "GARCIA",
"GARDNER", "GARNER", "GARRETT", "GARRISON", "GARZA",
"GATES",
"GAY", "GENTRY", "GEORGE", "GIBBS", "GIBSON",
"GILBERT",
"GILES", "GILL", "GILLESPIE", "GILMORE", "GLASS",
"GLENN",
"GLOVER", "GOLDEN", "GOMEZ", "GONZALES", "GONZALEZ",
"GOOD",
"GOODMAN", "GOODWIN", "GORDON", "GOULD", "GRAHAM",
"GRANT",
"GRAVES", "GRAY", "GREEN", "GREENE", "GREER",
"GREGORY",
"GRIFFIN", "GRIFFITH", "GRIMES", "GROSS", "GUERRA",
"GUERRERO",
"GUTIERREZ", "GUZMAN", "HAAS", "HAHN", "HALE",
"HALEY", "HALL",
"HAMILTON", "HAMMOND", "HAMPTON", "HANCOCK", "HANEY",
"HANNA",
"HANSEN", "HANSON", "HARDIN", "HARDING", "HARDY",
"HARMON",
"HARPER", "HARRELL", "HARRINGTON", "HARRIS",
"HARRISON",
"HART", "HARTMAN", "HARVEY", "HATFIELD", "HAWKINS",
"HAYDEN",
"HAYES", "HAYNES", "HAYS", "HEATH", "HEBERT",
"HENDERSON",
"HENDRICKS", "HENDRIX", "HENRY", "HENSLEY", "HENSON",
"HERMAN",
"HERNANDEZ", "HERRERA", "HERRING", "HESS", "HESTER",
"HICKMAN",
"HICKS", "HIGGINS", "HILL", "HINES", "HINTON", "HO",
"HOBBS",
"HODGE", "HODGES", "HOFFMAN", "HOGAN", "HOLDEN",
"HOLDER",
"HOLLAND", "HOLLOWAY", "HOLMES", "HOLT", "HOOD",
"HOOPER",
"HOOVER", "HOPKINS", "HORN", "HORNE", "HORTON",
"HOUSE",
"HOUSTON", "HOWARD", "HOWE", "HOWELL", "HUANG",
"HUBBARD",
"HUBER", "HUDSON", "HUERTA", "HUFF", "HUFFMAN",
"HUGHES",
"HULL", "HUMPHREY", "HUNT", "HUNTER", "HURLEY",
"HURST",
"HUTCHINSON", "HUYNH", "IBARRA", "INGRAM", "IRWIN",
"JACKSON",
"JACOBS", "JACOBSON", "JAMES", "JARVIS", "JEFFERSON",
"JENKINS", "JENNINGS", "JENSEN", "JIMENEZ", "JOHNS",
"JOHNSON",
"JOHNSTON", "JONES", "JORDAN", "JOSEPH", "JOYCE",
"JUAREZ",
"KAISER", "KANE", "KAUFMAN", "KEITH", "KELLER",
"KELLEY",
"KELLY", "KEMP", "KENNEDY", "KENT", "KERR", "KEY",
"KHAN",
"KIDD", "KIM", "KING", "KIRBY", "KIRK", "KLEIN",
"KLINE",
"KNAPP", "KNIGHT", "KNOX", "KOCH", "KRAMER", "KRAUSE",
"KRUEGER", "LAM", "LAMB", "LAMBERT", "LANDRY", "LANE",
"LANG",
"LARA", "LARSEN", "LARSON", "LAWRENCE", "LAWSON",
"LE",
"LEACH", "LEBLANC", "LEE", "LEON", "LEONARD",
"LESTER",
"LEVINE", "LEVY", "LEWIS", "LI", "LIN", "LINDSEY",
"LITTLE",
"LIU", "LIVINGSTON", "LLOYD", "LOGAN", "LONG",
"LOPEZ", "LOVE",
"LOWE", "LOWERY", "LOZANO", "LUCAS", "LUCERO", "LUNA",
"LUTZ",
"LYNCH", "LYNN", "LYONS", "MACDONALD", "MACIAS",
"MACK",
"MADDEN", "MADDOX", "MAHONEY", "MALDONADO", "MALONE",
"MANN",
"MANNING", "MARKS", "MARQUEZ", "MARSH", "MARSHALL",
"MARTIN",
"MARTINEZ", "MASON", "MASSEY", "MATA", "MATHEWS",
"MATHIS",
"MATTHEWS", "MAXWELL", "MAY", "MAYER", "MAYNARD",
"MAYO",
"MAYS", "MCBRIDE", "MCCALL", "MCCANN", "MCCARTHY",
"MCCARTY",
"MCCLAIN", "MCCLURE", "MCCONNELL", "MCCORMICK",
"MCCOY",
"MCCULLOUGH", "MCDANIEL", "MCDONALD", "MCDOWELL",
"MCFARLAND",
"MCGEE", "MCGRATH", "MCGUIRE", "MCINTOSH", "MCINTYRE",
"MCKAY",
"MCKEE", "MCKENZIE", "MCKINNEY", "MCKNIGHT",
"MCLAUGHLIN",
"MCLEAN", "MCMAHON", "MCMILLAN", "MCNEIL",
"MCPHERSON",
"MEADOWS", "MEDINA", "MEJIA", "MELENDEZ", "MELTON",
"MENDEZ",
"MENDOZA", "MERCADO", "MERCER", "MERRITT", "MEYER",
"MEYERS",
"MEZA", "MICHAEL", "MIDDLETON", "MILES", "MILLER",
"MILLS",
"MIRANDA", "MITCHELL", "MOLINA", "MONROE", "MONTES",
"MONTGOMERY", "MONTOYA", "MOODY", "MOON", "MOONEY",
"MOORE",
"MORA", "MORALES", "MORAN", "MORENO", "MORGAN",
"MORRIS",
"MORRISON", "MORROW", "MORSE", "MORTON", "MOSES",
"MOSLEY",
"MOSS", "MOYER", "MUELLER", "MULLEN", "MULLINS",
"MUNOZ",
"MURILLO", "MURPHY", "MURRAY", "MYERS", "NASH",
"NAVARRO",
"NEAL", "NELSON", "NEWMAN", "NEWTON", "NGUYEN",
"NICHOLS",
"NICHOLSON", "NIELSEN", "NIXON", "NOBLE", "NOLAN",
"NORMAN",
"NORRIS", "NORTON", "NOVAK", "NUNEZ", "OBRIEN",
"OCHOA",
"OCONNELL", "OCONNOR", "ODOM", "ODONNELL", "OLIVER",
"OLSEN",
"OLSON", "ONEAL", "ONEILL", "OROZCO", "ORR", "ORTEGA",
"ORTIZ",
"OSBORN", "OSBORNE", "OWEN", "OWENS", "PACE",
"PACHECO",
"PADILLA", "PAGE", "PALMER", "PARK", "PARKER",
"PARKS",
"PARRISH", "PARSONS", "PATEL", "PATRICK", "PATTERSON",
"PATTON", "PAUL", "PAYNE", "PEARSON", "PECK", "PENA",
"PENNINGTON", "PEREZ", "PERKINS", "PERRY", "PETERS",
"PETERSEN", "PETERSON", "PETTY", "PHAM", "PHELPS",
"PHILLIPS",
"PIERCE", "PINEDA", "PITTMAN", "PITTS", "POLLARD",
"PONCE",
"POOLE", "POPE", "PORTER", "POTTER", "POTTS",
"POWELL",
"POWERS", "PRATT", "PRESTON", "PRICE", "PRINCE",
"PROCTOR",
"PRUITT", "PUGH", "QUINN", "RAMIREZ", "RAMOS",
"RAMSEY",
"RANDALL", "RANDOLPH", "RANGEL", "RASMUSSEN", "RAY",
"RAYMOND",
"REED", "REESE", "REEVES", "REID", "REILLY", "REYES",
"REYNOLDS", "RHODES", "RICE", "RICH", "RICHARD",
"RICHARDS",
"RICHARDSON", "RICHMOND", "RIDDLE", "RIGGS", "RILEY",
"RIOS",
"RITTER", "RIVAS", "RIVERA", "RIVERS", "ROACH",
"ROBBINS",
"ROBERSON", "ROBERTS", "ROBERTSON", "ROBINSON",
"ROBLES",
"ROCHA", "RODGERS", "RODRIGUEZ", "ROGERS", "ROJAS",
"ROLLINS",
"ROMAN", "ROMERO", "ROSALES", "ROSARIO", "ROSE",
"ROSS",
"ROTH", "ROWE", "ROWLAND", "ROY", "RUBIO", "RUIZ",
"RUSH",
"RUSSELL", "RUSSO", "RYAN", "SALAS", "SALAZAR",
"SALINAS",
"SAMPSON", "SANCHEZ", "SANDERS", "SANDOVAL",
"SANFORD",
"SANTANA", "SANTIAGO", "SANTOS", "SAUNDERS", "SAVAGE",
"SAWYER", "SCHAEFER", "SCHMIDT", "SCHMITT",
"SCHNEIDER",
"SCHROEDER", "SCHULTZ", "SCHWARTZ", "SCOTT",
"SELLERS",
"SERRANO", "SEXTON", "SHAFFER", "SHAH", "SHANNON",
"SHARP",
"SHAW", "SHEA", "SHELTON", "SHEPARD", "SHEPHERD",
"SHEPPARD",
"SHERMAN", "SHIELDS", "SHORT", "SILVA", "SIMMONS",
"SIMON",
"SIMPSON", "SIMS", "SINGH", "SINGLETON", "SKINNER",
"SLOAN",
"SMALL", "SMITH", "SNOW", "SNYDER", "SOLIS",
"SOLOMON", "SOSA",
"SOTO", "SPARKS", "SPEARS", "SPENCE", "SPENCER",
"STAFFORD",
"STANLEY", "STANTON", "STARK", "STEELE", "STEIN",
"STEPHENS",
"STEPHENSON", "STEVENS", "STEVENSON", "STEWART",
"STOKES",
"STONE", "STOUT", "STRICKLAND", "STRONG", "STUART",
"SUAREZ",
"SULLIVAN", "SUMMERS", "SUTTON", "SWANSON", "SWEENEY",
"TANNER", "TAPIA", "TATE", "TAYLOR", "TERRELL",
"TERRY",
"THOMAS", "THOMPSON", "THORNTON", "TODD", "TORRES",
"TOWNSEND",
"TRAN", "TRAVIS", "TREVINO", "TRUJILLO", "TUCKER",
"TURNER",
"TYLER", "UNDERWOOD", "VALDEZ", "VALENCIA",
"VALENTINE",
"VALENZUELA", "VANCE", "VANG", "VARGAS", "VASQUEZ",
"VAUGHAN",
"VAUGHN", "VAZQUEZ", "VEGA", "VELASQUEZ", "VELAZQUEZ",
"VELEZ",
"VILLA", "VILLANUEVA", "VILLARREAL", "VILLEGAS",
"VINCENT",
"WADE", "WAGNER", "WALKER", "WALL", "WALLACE",
"WALLER",
"WALLS", "WALSH", "WALTER", "WALTERS", "WALTON",
"WANG",
"WARD", "WARE", "WARNER", "WARREN", "WASHINGTON",
"WATERS",
"WATKINS", "WATSON", "WATTS", "WEAVER", "WEBB",
"WEBER",
"WEBSTER", "WEEKS", "WEISS", "WELCH", "WELLS",
"WERNER",
"WEST", "WHEELER", "WHITAKER", "WHITE", "WHITEHEAD",
"WHITNEY",
"WIGGINS", "WILCOX", "WILEY", "WILKERSON", "WILKINS",
"WILKINSON", "WILLIAMS", "WILLIAMSON", "WILLIS",
"WILSON",
"WINTERS", "WISE", "WOLF", "WOLFE", "WONG", "WOOD",
"WOODARD",
"WOODS", "WOODWARD", "WRIGHT", "WU", "WYATT", "YANG",
"YATES",
"YODER", "YORK", "YOUNG", "YU", "ZAMORA", "ZAVALA",
"ZHANG",
"ZIMMERMAN", "ZUNIGA" };
}
}
On Jun 10, 5:26 pm, Qian Qiao <
qian.q...@gmail.com> wrote: