I used modifed CwCellList example to display custom Cells in a pager,
I couldn't display and scroll the celllist inside Pager, here is the
code for Pager:
public class PagerPanel extends AbstractPager {
/**
* The default increment size.
*/
private static final int DEFAULT_INCREMENT = 20;
/**
* The increment size.
*/
private int incrementSize = DEFAULT_INCREMENT;
/**
* The last scroll position.
*/
private int lastScrollPos = 0;
/**
* The scrollable panel.
*/
private final ScrollPanel scrollable = new Scrollable();
/**
* Construct a new {@link ShowMorePagerPanel}.
*/
public PagerPanel() {
// Do not let the scrollable take tab focus.
initWidget(scrollable);
scrollable.getElement().setTabIndex(-1);
//setSize("200","200");
// Handle scroll events.
/*scrollable.addScrollHandler(new ScrollHandler() {
public void onScroll(ScrollEvent 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 void onScroll(Widget widget, int start, int end) {
ScrollPanel scrollPanel = (ScrollPanel) widget;
// If scrolling up, ignore the event.
int oldScrollPos = lastScrollPos;
lastScrollPos = scrollPanel.getVerticalScrollPosition();
if (oldScrollPos >= lastScrollPos) {
return;
}
HasRows display = getDisplay();
if (display == null) {
return;
}
int maxScrollTop = scrollPanel.getWidget().getOffsetHeight()
- scrollPanel.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);
}
}*/
/**
* Get the number of rows by which the range is increased when the
scrollbar
* reaches the bottom.
*
* @return the increment size
*/
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);
}
/**
* @param incrementSize the incremental number of rows
*/
public void setIncrementSize(int incrementSize) {
this.incrementSize = incrementSize;
}
@Override
protected void onRangeOrRowCountChanged() {
}
class Scrollable extends ScrollPanel implements ScrollHandler {
public Scrollable() {
sinkEvents(Event.ONSCROLL);
addScrollHandler(this);
setSize("200px","200px");
}
public void onScroll(ScrollEvent event) {
GWT.log("scrolling?");
}
/*public void onBrowserEvent(Event event) {
if (DOM.eventGetType(event) == Event.ONSCROLL) {
GWT.log("on scroll event!");
} else {
super.onBrowserEvent(event);
}
}*/
}
}
--------------------------CwCellList---------------------------------
public class CwCellList extends Composite {
/**
* The UiBinder interface used by this example.
*/
//@ShowcaseSource
// interface Binder extends UiBinder<Widget, CwCellList> {
//}
/**
* The constants used in this Content Widget.
*/
//@ShowcaseSource
/* public static interface CwConstants extends Constants {
String cwCellListName();
String cwCellListDescription();
String cwCellListOther();
}*/
/**
* The images used for this example.
*/
// @ShowcaseSource
static interface Images extends ClientBundle {
//@Source("listImage.png")
ImageResource listImage();
}
/**
* The Cell used to render a {@link Listing Info}.
*/
//@ShowcaseSource
static class AddCell extends AbstractCell<AddTarget> {
/**
* The html of the image used for contacts.
*/
private final String imageHtml;
public AddCell(ImageResource image) {
this.imageHtml =
AbstractImagePrototype.create(image).getHTML();
}
@Override
public void render(Cell.Context key, AddTarget value,
SafeHtmlBuilder sb) {
// Value can be null, so do a null check..
if (value == null) {
return;
}
sb.appendHtmlConstant("<table>");
// Add the contact image.
sb.appendHtmlConstant("<tr><td rowspan='3'>");
sb.appendHtmlConstant(imageHtml);
sb.appendHtmlConstant("</td>");
// Add the name and address.
sb.appendHtmlConstant("<td style='font-size:95%;'>");
sb.appendEscaped(value.getTagLine());//getListingName());
sb.appendHtmlConstant("</td></tr><tr><td>");
sb.appendEscaped(value.getDescription());
sb.appendHtmlConstant("</td></tr></table>");
}
}
/**
* The pager used to change the range of data.
*/
//@ShowcaseData
//@UiField
private PagerPanel pagerPanel;
/**
* The pager used to display the current range.
*/
//@ShowcaseData
//@UiField
private RangeLabelPager rangeLabelPager;
private static List<AddTarget> newTargets;
/**
* The CellList.
*/
// @ShowcaseData
private static CellList<AddTarget> cellList;
private DataProvider dataProvider;
private Panel contentContainer;
/**
* Constructor.
*
* @param constants the constants
*/
public CwCellList(PagerPanel pagerPanel, Panel contentContainer) {
//public CwCellList(CwConstants constants) {
//super(constants.cwCellListName(),
constants.cwCellListDescription(), false,
//"ContactDatabase.java", "CwCellList.ui.xml",
"ContactInfoForm.java",
//"PagerPanel.java", "RangeLabelPager.java");
this.pagerPanel = pagerPanel;
this.contentContainer = contentContainer;
onInitialize();
}
/**
* Initialize this example.
*/
//@ShowcaseSource
//@Override
public void onInitialize() {
Images images = GWT.create(Images.class);
// Create a CellList.
AddCell addCell = new AddCell(images.listImage());
// Set a key provider that provides a unique key for each
contact. If key is
// used to identify contacts when fields (such as the name and
address)
cellList = new CellList<AddTarget>(addCell,
AddTarget.KEY_PROVIDER);
cellList.setPageSize(20);
cellList.setKeyboardPagingPolicy(KeyboardPagingPolicy.INCREASE_RANGE);
cellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION);
// Add a selection model so we can select cells.
final SingleSelectionModel<AddTarget> selectionModel = new
SingleSelectionModel<AddTarget>(
AddTarget.KEY_PROVIDER);
cellList.setSelectionModel(selectionModel);
selectionModel.addSelectionChangeHandler(new
SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
//do stuff
}
});
dataProvider = new DataProvider();
dataProvider.addDataDisplay(cellList);
initWidget(cellList);
//return widget;
}
private static class DataProvider extends
AsyncDataProvider<AddTarget> {
@Override
protected void onRangeChanged(HasData<AddTarget> display) {
// Get the new range.
final Range range = display.getVisibleRange();
int start = range.getStart();
int length = range.getLength();
if (newTargets != null)
//cellList.setRowData(start, newTargets);
updateRowData(start, newTargets);
}
}
//update celllist from server
public void populate(List<AddTarget> addTargets) {
this.newTargets = addTargets;
if (newTargets != null) {
cellList.setRowCount(newTargets.size(), true);
this.cellList.setRowData(0,addTargets);
pagerPanel.setDisplay(cellList);
History.newItem("Search", false);
}
}
}
--
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.