/*
* Pager.java
*
* Copyright (C) 2009-12 by RStudio, Inc.
*
* Unless you have received this program directly from RStudio pursuant
* to the terms of a commercial license agreement with RStudio, then
* this program is licensed to you under the terms of version 3 of the
* GNU Affero General Public License. This program is distributed WITHOUT
* ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
* AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
*
*/
package org.rstudio.studio.client.workbench.views.vcs.common;
import com.google.gwt.core.client.GWT;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.view.client.HasRows;
import com.google.gwt.view.client.Range;
public class Pager extends SimplePager
{
interface SimplePagerResources extends SimplePager.Resources
{
@Override
@Source("images/PageForwardButton_2x.png")
ImageResource simplePagerFastForward();
@Override
@Source("images/PageForwardButtonDisabled_2x.png")
ImageResource simplePagerFastForwardDisabled();
@Override
@Source("images/PageFirstButton_2x.png")
ImageResource simplePagerFirstPage();
@Override
@Source("images/PageFirstButtonDisabled_2x.png")
ImageResource simplePagerFirstPageDisabled();
@Override
@Source("images/PageLastButton_2x.png")
ImageResource simplePagerLastPage();
@Override
@Source("images/PageLastButtonDisabled_2x.png")
ImageResource simplePagerLastPageDisabled();
@Override
@Source("images/PageNextButton_2x.png")
ImageResource simplePagerNextPage();
@Override
@Source("images/PageNextButtonDisabled_2x.png")
ImageResource simplePagerNextPageDisabled();
@Override
@Source("images/PagePreviousButton_2x.png")
ImageResource simplePagerPreviousPage();
@Override
@Source("images/PagePreviousButtonDisabled_2x.png")
ImageResource simplePagerPreviousPageDisabled();
@Override
@Source({"com/google/gwt/user/cellview/client/SimplePager.css",
"SimplePagerStyle.css"})
SimplePagerStyle simplePagerStyle();
}
interface SimplePagerStyle extends SimplePager.Style
{
}
public Pager(int pageSize,
int fastForwardRows)
{
super(TextLocation.CENTER,
GWT.<SimplePagerResources>create(SimplePagerResources.class),
fastForwardRows > 0, fastForwardRows, fastForwardRows > 0);
getElement().setAttribute("align", "center");
setPageSize(pageSize);
}
@Override
protected String createText()
{
final HasRows display = getDisplay();
if (display.getVisibleRange().getStart() == display.getRowCount())
return "";
String text = super.createText();
if (display.isRowCountExact())
return "Commits " + text;
else
{
int pos = text.indexOf(" of ");
return "Commits " + (pos >= 0 ? text.substring(0, pos) : text);
}
}
@Override
public void setPageStart(int index) {
HasRows display = getDisplay();
if (display != null) {
Range range = display.getVisibleRange();
int pageSize = range.getLength();
index = Math.max(0, index);
if (index != range.getStart()) {
display.setVisibleRange(index, pageSize);
}
}
}
}