/** * Set the page size of the display. * * @param pageSize the new page size * @see #getPageSize() */ protected void setPageSize(int pageSize) { if (display != null) { Range range = display.getVisibleRange(); int pageStart = range.getStart(); if (isRangeLimited && display.isRowCountExact()) { pageStart = Math.min(pageStart, display.getRowCount() - pageSize); } pageStart = Math.max(0, pageStart); display.setVisibleRange(pageStart, pageSize); } }
/** * Let the page know that the table is loading. Call this method to clear all * data from the table and hide the current range when new data is being * loaded into the table. */ public void startLoading() { getDisplay().setRowCount(0, true); label.setHTML(""); }
rangeChangeHandler = display.addRangeChangeHandler(new RangeChangeEvent.Handler() { @Override public void onRangeChange(RangeChangeEvent event) { rowCountChangeHandler = display.addRowCountChangeHandler(new RowCountChangeEvent.Handler() { @Override public void onRowCountChange(RowCountChangeEvent event) {
@Override public void setPageStart(int index) { if (getDisplay() != null) { Range range = getDisplay().getVisibleRange(); int pageSize = range.getLength(); index = Math.max(0, index); if (index != range.getStart()) { getDisplay().setVisibleRange(index, pageSize); } } } };
/** * Returns true if there is enough data such that a call to * {@link #nextPage()} will succeed in moving the starting point of the table * forward. * * @return true if there is a next page */ protected boolean hasNextPage() { if (display == null || display.getRowCount() == 0) { return false; } else if (!display.isRowCountExact()) { return true; } Range range = display.getVisibleRange(); return range.getStart() + range.getLength() < display.getRowCount(); }
@Override protected String createText() { Range range = getDisplay().getVisibleRange(); int currentPage = range.getStart() / (range.getLength() != 0 ? range.getLength() : 1) + 1; return Utils.messages.pagerText(currentPage + ""); }
display.getVisibleRange().getLength() + incrementSize, display.getRowCount()); display.setVisibleRange(0, newPageSize);
/** * Get the number of pages based on the data size. * * @return the page count, or -1 if the display is not set */ protected int getPageCount() { if (display == null) { return -1; } int pageSize = getPageSize(); return (display.getRowCount() + pageSize - 1) / pageSize; }
/** * Returns true if there is enough data to display a given number of * additional pages. * * @param pages the number of pages to query * @return true if there are {@code pages} next pages */ protected boolean hasNextPages(int pages) { if (display == null) { return false; } Range range = display.getVisibleRange(); return range.getStart() + pages * range.getLength() < display.getRowCount(); }
/** * Go to a specific page. * * @param index the page index * @see #getPage() */ protected void setPage(int index) { if (display != null && (!isRangeLimited || !display.isRowCountExact() || hasPage(index))) { // We don't use the local version of setPageStart because it would // constrain the index, but the user probably wants to use absolute page // indexes. int pageSize = getPageSize(); display.setVisibleRange(pageSize * index, pageSize); } }
@Override protected void onRangeOrRowCountChanged() { HasRows display = getDisplay(); label.setText(createText()); // Update the prev and first buttons. setPrevPageButtonsDisabled(!hasPreviousPage()); // Update the next and last buttons. if (isRangeLimited() || !display.isRowCountExact()) { setNextPageButtonsDisabled(!hasNextPage()); setFastForwardDisabled(!hasNextPages(getFastForwardPages())); } }
/** * Fires a {@link RangeChangeEvent} on all registered handlers in the handler * manager. If no such handlers exist, this method will do nothing. * * @param source the source of the handlers * @param range the new range */ public static void fire(HasRows source, Range range) { if (TYPE != null) { RangeChangeEvent event = new RangeChangeEvent(range); source.fireEvent(event); } }
public static Observable<RowCountChangeEvent> rowCountChange(HasRows source) { return Observable.create(s -> register(s, source.addRowCountChangeHandler(s::onNext)), uiBackpressureMode()); }
public static Observable<RangeChangeEvent> rangeChange(HasRows source) { return Observable.create(s -> register(s, source.addRangeChangeHandler(s::onNext)), uiBackpressureMode()); }
@Override protected void onRangeOrRowCountChanged() { // Assumes a page start index of 0. HasRows display = getDisplay(); int pageSize = display.getVisibleRange().getLength(); boolean hasLess = pageSize > increment; boolean hasMore = !display.isRowCountExact() || pageSize < display.getRowCount(); showLessButton.setVisible(hasLess); showMoreButton.setVisible(hasMore); layout.setText(0, 1, (hasLess && hasMore) ? " | " : ""); }
public void onClick(ClickEvent event) { // Display should be non-null, but we check defensively. HasRows display = getDisplay(); if (display != null) { Range range = display.getVisibleRange(); int pageSize = Math.max(range.getLength() - increment, increment); display.setVisibleRange(range.getStart(), pageSize); } } });
/** * Get the page start index. * * @return the page start index, or -1 if the display is not set * @see #setPageStart(int) */ public int getPageStart() { return display == null ? -1 : display.getVisibleRange().getStart(); }
HasRows display = getDisplay(); if (display == null) { return; } boolean loadData = false; // If scrolling up, change newStart int oldScrollPos = lastScrollPos; lastScrollPos = scrollable.getVerticalScrollPosition(); // get the current visible Range Range currentRange = display.getVisibleRange(); if (oldScrollPos >= lastScrollPos) { int newStart = Math.max( currentRange.getStart() - incrementSize,0); loadData = true; } 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()); loadData = true; } if (loadData) { display.setVisibleRange(newStart, newPageSize); }
/** * Returns true if there is enough data such that the specified page is within * range. * * @param index the page index * @return true if the specified page is in range */ protected boolean hasPage(int index) { return display == null ? false : getPageSize() * index < display.getRowCount(); }
/** * Returns true if there is enough data to display a given number of * additional pages. * * @param pages the number of pages to query * @return true if there are {@code pages} next pages */ protected boolean hasNextPages(int pages) { if (display == null) { return false; } Range range = display.getVisibleRange(); return range.getStart() + pages * range.getLength() < display.getRowCount(); }