All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.icesoft.faces.component.datapaginator.DataPaginator Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2004-2013 ICEsoft Technologies Canada Corp.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the
 * License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an "AS
 * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language
 * governing permissions and limitations under the License.
 */


package com.icesoft.faces.component.datapaginator;

import com.icesoft.faces.component.CSS_DEFAULT;
import com.icesoft.faces.component.ext.taglib.Util;
import com.icesoft.util.CoreComponentUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import javax.faces.component.ActionSource;
import javax.faces.component.UIComponent;
import javax.faces.component.UIData;
import javax.faces.component.html.HtmlPanelGroup;
import javax.faces.context.FacesContext;
import javax.faces.el.EvaluationException;
import javax.faces.el.MethodBinding;
import javax.faces.el.ValueBinding;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;
import javax.faces.event.FacesEvent;
import javax.faces.event.PhaseId;
import java.sql.ResultSet;
import java.io.Serializable;


/**
 * 
 */
public class DataPaginator extends HtmlPanelGroup implements ActionSource, Serializable {
    private final Log log = LogFactory.getLog(DataPaginator.class);

    private static final String FIRST_FACET_NAME = "first";
    private static final String LAST_FACET_NAME = "last";
    private static final String NEXT_FACET_NAME = "next";
    private static final String PREVIOUS_FACET_NAME = "previous";
    private static final String FAST_FORWARD_FACET_NAME = "fastforward";
    private static final String FAST_REWIND_FACET_NAME = "fastrewind";
    private int oldRow = -1;
    private int pageIndex;
    // just for caching the associated uidata
    private transient UIData _UIData;
    private Boolean keyboardNavigationEnabled;    
    private MethodBinding _actionListener;
    private Boolean disabled = null;

    /**
     * @return COMPONENT_TYPE
     */
    public String getComponentType() {
        return COMPONENT_TYPE;
    }

    /**
     * @return DEFAULT_RENDERER_TYPE
     * @see javax.faces.component.UIComponent#getRendererType()
     */
    public String getRendererType() {
        return DEFAULT_RENDERER_TYPE;
    }

    /**
     * 

Set the value of the disabled property.

*/ public void setDisabled(boolean disabled) { this.disabled = new Boolean(disabled); ValueBinding vb = getValueBinding("disabled"); if (vb != null) { vb.setValue(getFacesContext(), this.disabled); this.disabled = null; } } /** *

Return the value of the disabled property.

*/ public boolean isDisabled() { if (!Util.isEnabledOnUserRole(this)) { return true; } if (disabled != null) { return disabled.booleanValue(); } ValueBinding vb = getValueBinding("disabled"); Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null; return v != null ? v.booleanValue() : false; } /** * @see javax.faces.component.UIComponentBase#queueEvent(javax.faces.event.FacesEvent) */ public void queueEvent(FacesEvent event) { if (event != null && event instanceof ActionEvent) { if (isImmediate()) { event.setPhaseId(PhaseId.APPLY_REQUEST_VALUES); } else { event.setPhaseId(PhaseId.INVOKE_APPLICATION); } } super.queueEvent(event); } /** * @see javax.faces.component.UIComponentBase#broadcast(javax.faces.event.FacesEvent) */ public void broadcast(FacesEvent event) throws AbortProcessingException { super.broadcast(event); if (event instanceof PaginatorActionEvent) { PaginatorActionEvent scrollerEvent = (PaginatorActionEvent) event; UIData uiData = getUIData(); if (uiData == null) { return; } int pageindex = scrollerEvent.getPageIndex(); if (pageindex == -1) { String facet = scrollerEvent.getScrollerfacet(); if (FACET_FIRST.equals(facet)) { gotoFirstPage(); } else if (FACET_PREVIOUS.equals(facet)) { gotoPreviousPage(); } else if (FACET_NEXT.equals(facet)) { gotoNextPage(); } else if (FACET_FAST_FORWARD.equals(facet)) { gotoFastForward(); } else if (FACET_FAST_REWIND.equals(facet)) { gotoFastRewind(); } else if (FACET_LAST.equals(facet)) { gotoLastPage(); } scrollerEvent.setPageIndex(getPageIndex()); } else { int pageCount = getPageCount(); if (pageindex > pageCount) { pageindex = pageCount; } if (pageindex <= 0) { pageindex = 1; } uiData.setFirst(uiData.getRows() * (pageindex - 1)); } if (isImmediate()) { //page links are not a UICommand. They are just elements, so //by now the pageindex has been changed, now this component //itself needs to call the renderResponse. getFacesContext().renderResponse(); } broadcastToActionListener(scrollerEvent); } } protected void broadcastToActionListener(PaginatorActionEvent event) { FacesContext context = getFacesContext(); try { MethodBinding actionListenerBinding = getActionListener(); if (actionListenerBinding != null) { actionListenerBinding.invoke(context, new Object[]{event}); } // super.broadcast(event) does this itself //ActionListener[] actionListeners = getActionListeners(); //if(actionListeners != null) { // for(int i = 0; i < actionListeners.length; i++) { // actionListeners[i].processAction(event); // } //} } catch (EvaluationException e) { Throwable cause = e.getCause(); if (cause != null && cause instanceof AbortProcessingException) { throw(AbortProcessingException) cause; } throw e; } } /** *

Return the instance of the UIData associated to this * component.

*/ public UIData getUIData() { if (_UIData == null) { _UIData = findUIData(); } return _UIData; } public void setUIData(UIData uiData) { _UIData = uiData; } /** *

Return the value of the pageIndex property.

*/ public int getPageIndex() { UIData uiData = getUIData(); int rows = uiData.getRows(); int pageCount = getPageCount(); int first = uiData.getFirst(); //respect if the dataTable.rows gets changed by some other component. if (oldRow != -1 && oldRow != rows) { first = rows * (pageIndex-1); } int tempPageIndex = pageIndex; if (rows > 0) { pageIndex =first / rows + 1; // if the page index > pageCount then some rows may have been removed // so we need to show the last page which may be a partial or full page // worth of data if (pageIndex > pageCount) { pageIndex = pageCount; // Code redone in HtmlDataTable.ensureFirstRowInRange() for ICE-2783 } } else { log.warn("DataTable " + uiData.getClientId(FacesContext.getCurrentInstance()) + " has invalid rows attribute."); pageIndex = 0; } //the first was not in range, so recalculate if (tempPageIndex != pageIndex) { first = (rows * pageIndex)-rows; } //apply the calculated first for current page if (oldRow != -1 && oldRow != rows) { uiData.setFirst(first < 0 ? 0 : first); } oldRow = rows; if (rows == 0) { pageIndex = 1; } else if (uiData.getFirst() % rows > 0) { pageIndex++; } return pageIndex; } private void setPageIndex(int pageIndex) { this.pageIndex = pageIndex; } /** *

Return the value of the pageCount property.

*/ public int getPageCount() { UIData uiData = getUIData(); int rows = uiData.getRows(); int pageCount; if (rows > 0) { pageCount = rows <= 0 ? 1 : uiData.getRowCount() / rows; if (uiData.getRowCount() % rows > 0) { pageCount++; } } else { rows = 1; pageCount = 1; } return pageCount; } /** *

Return the value of the rowCount property.

*/ public int getRowCount() { return getUIData().getRowCount(); } /** *

Return the value of the rows property.

*/ public int getRows() { return getUIData().getRows(); } /** *

Return the value of the first property.

*/ public int getFirstRow() { return getUIData().getFirst(); } /** *

Return the instance of UIData associated to this * component.

*/ protected UIData findUIData() { String forStr = getFor(); UIComponent forComp; if (forStr == null) { // DataPaginator may be a child of uiData forComp = getParent(); } else { forComp = CoreComponentUtils.findComponent(forStr, this); } if (forComp == null) { throw new IllegalArgumentException( "could not find UIData referenced by attribute dataScroller@for = '" + forStr + "'"); } else if (!(forComp instanceof UIData)) { throw new IllegalArgumentException( "uiComponent referenced by attribute dataScroller@for = '" + forStr + "' must be of type " + UIData.class.getName() + ", not type " + forComp.getClass().getName()); } return (UIData) forComp; } /** *

Set the value of the first facet for this component.

*/ public void setFirst(UIComponent first) { getFacets().put(FIRST_FACET_NAME, first); } /** *

Return the value of the first facet of this * component.

*/ public UIComponent getFirst() { return (UIComponent) getFacet(FIRST_FACET_NAME); } /** *

Set the value of the last facet for this component.

*/ public void setLast(UIComponent last) { getFacets().put(LAST_FACET_NAME, last); } /** *

Return the value of the last facet of this * component.

*/ public UIComponent getLast() { return (UIComponent) getFacet(LAST_FACET_NAME); } /** *

Set the value of the next facet for this component.

*/ public void setNext(UIComponent next) { getFacets().put(NEXT_FACET_NAME, next); } /** *

Return the value of the next facet of this * component.

*/ public UIComponent getNext() { return (UIComponent) getFacet(NEXT_FACET_NAME); } /** *

Set the value of the fast forward facet for this * component.

*/ public void setFastForward(UIComponent previous) { getFacets().put(FAST_FORWARD_FACET_NAME, previous); } /** *

Return the value of the fast forward facet of this * component.

*/ public UIComponent getFastForward() { return (UIComponent) getFacet(FAST_FORWARD_FACET_NAME); } /** *

Set the value of the fast rewind facet for this * component.

*/ public void setFastRewind(UIComponent previous) { getFacets().put(FAST_REWIND_FACET_NAME, previous); } /** *

Return the value of the fast rewind facet of this * component.

*/ public UIComponent getFastRewind() { return (UIComponent) getFacet(FAST_REWIND_FACET_NAME); } /** *

Set the value of the previous facet for this * component.

*/ public void setPrevious(UIComponent previous) { getFacets().put(PREVIOUS_FACET_NAME, previous); } /** *

Return the value of the previous facet of this * component.

*/ public UIComponent getPrevious() { return (UIComponent) getFacet(PREVIOUS_FACET_NAME); } /** *

Return a flag indicating whether this component is responsible for * rendering its child components.

*/ public boolean getRendersChildren() { return true; } /** * @see javax.faces.component.ActionSource#getAction() */ public MethodBinding getAction() { // not used return null; } /** * @see javax.faces.component.ActionSource#setAction(javax.faces.el.MethodBinding) */ public void setAction(MethodBinding action) { throw new UnsupportedOperationException( "Defining an action is not supported. Use an actionListener"); } /** * @see javax.faces.component.ActionSource#setActionListener(javax.faces.el.MethodBinding) */ public void setActionListener(MethodBinding actionListener) { _actionListener = actionListener; } /** * @see javax.faces.component.ActionSource#getActionListener() */ public MethodBinding getActionListener() { return _actionListener; } /** * @see javax.faces.component.ActionSource#addActionListener(javax.faces.event.ActionListener) */ public void addActionListener(ActionListener listener) { addFacesListener(listener); } /** * @see javax.faces.component.ActionSource#getActionListeners() */ public ActionListener[] getActionListeners() { return (ActionListener[]) getFacesListeners(ActionListener.class); } /** * @see javax.faces.component.ActionSource#removeActionListener(javax.faces.event.ActionListener) */ public void removeActionListener(ActionListener listener) { removeFacesListener(listener); } public static final String COMPONENT_TYPE = "com.icesoft.faces.DataScroller"; public static final String COMPONENT_FAMILY = "javax.faces.Panel"; private static final String DEFAULT_RENDERER_TYPE = "com.icesoft.faces.DataScroller"; private static final boolean DEFAULT_IMMEDIATE = false; private static final boolean DEFAULT_VERTICAL = false; private String _for = null; private Integer _fastStep = null; private String _pageIndexVar = null; private String _pageCountVar = null; private String _rowsCountVar = null; private String _displayedRowsCountVar = null; private String _firstRowIndexVar = null; private String _lastRowIndexVar = null; private String _style = null; private String _styleClass = null; private String _columnClasses = null; private Boolean _paginator = null; private Integer _paginatorMaxPages = null; private Boolean _renderFacetsIfSinglePage = null; private Boolean _immediate; private Boolean _vertical; public static final String FACET_FIRST = "first".intern(); public static final String FACET_PREVIOUS = "previous".intern(); public static final String FACET_NEXT = "next".intern(); public static final String FACET_LAST = "last".intern(); public static final String FACET_FAST_FORWARD = "fastf".intern(); public static final String FACET_FAST_REWIND = "fastr".intern(); private Integer tabindex = null; public DataPaginator() { setRendererType(DEFAULT_RENDERER_TYPE); } /* (non-Javadoc) * @see javax.faces.component.UIComponent#getFamily() */ public String getFamily() { return COMPONENT_FAMILY; } /** *

Set the value of the for property.

*/ public void setFor(String forValue) { _for = forValue; } /** *

Return the value of the for property.

*/ public String getFor() { if (_for != null) { return _for; } ValueBinding vb = getValueBinding("for"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } /** *

Set the value of the fastStep property.

*/ public void setFastStep(int fastStep) { _fastStep = new Integer(fastStep); } /** *

Return the value of the fastStep property.

*/ public int getFastStep() { if (_fastStep != null) { return _fastStep.intValue(); } ValueBinding vb = getValueBinding("fastStep"); Integer v = vb != null ? (Integer) vb.getValue(getFacesContext()) : null; return v != null ? v.intValue() : Integer.MIN_VALUE; } /** *

Set the value of the pageIndexVar property.

*/ public void setPageIndexVar(String pageIndexVar) { _pageIndexVar = pageIndexVar; } /** *

Return the value of the pageIndexVar property.

*/ public String getPageIndexVar() { if (_pageIndexVar != null) { return _pageIndexVar; } ValueBinding vb = getValueBinding("pageIndexVar"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } /** *

Set the value of the pageCountVar property.

*/ public void setPageCountVar(String pageCountVar) { _pageCountVar = pageCountVar; } /** *

Return the value of the pageCountVar property.

*/ public String getPageCountVar() { if (_pageCountVar != null) { return _pageCountVar; } ValueBinding vb = getValueBinding("pageCountVar"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } /** *

Set the value of the rowsCountVar property.

*/ public void setRowsCountVar(String rowsCountVar) { _rowsCountVar = rowsCountVar; } /** *

Return the value of the rowsCountVar property.

*/ public String getRowsCountVar() { if (_rowsCountVar != null) { return _rowsCountVar; } ValueBinding vb = getValueBinding("rowsCountVar"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } /** *

Set the value of the displayedRowsCountVar property.

*/ public void setDisplayedRowsCountVar(String displayedRowsCountVar) { _displayedRowsCountVar = displayedRowsCountVar; } /** *

Return the value of the displayedRowsCountVar * property.

*/ public String getDisplayedRowsCountVar() { if (_displayedRowsCountVar != null) { return _displayedRowsCountVar; } ValueBinding vb = getValueBinding("displayedRowsCountVar"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } /** *

Set the value of the firstRowIndexVar property.

*/ public void setFirstRowIndexVar(String firstRowIndexVar) { _firstRowIndexVar = firstRowIndexVar; } /** *

Return the value of the firstRowIndexVar property.

*/ public String getFirstRowIndexVar() { if (_firstRowIndexVar != null) { return _firstRowIndexVar; } ValueBinding vb = getValueBinding("firstRowIndexVar"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } /** *

Set the value of the lastRowIndexVar property.

*/ public void setLastRowIndexVar(String lastRowIndexVar) { _lastRowIndexVar = lastRowIndexVar; } /** *

Return the value of the lastRowIndexVar property.

*/ public String getLastRowIndexVar() { if (_lastRowIndexVar != null) { return _lastRowIndexVar; } ValueBinding vb = getValueBinding("lastRowIndexVar"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } /** *

Set the value of the style property.

*/ public void setStyle(String style) { _style = style; } /** *

Return the value of the style property.

*/ public String getStyle() { if (_style != null) { return _style; } ValueBinding vb = getValueBinding("style"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } /** *

Set the value of the styleClass property.

*/ public void setStyleClass(String styleClass) { _styleClass = styleClass; } /** *

Return the value of the styleClass property.

*/ public String getStyleClass() { return Util.getQualifiedStyleClass(this, _styleClass, CSS_DEFAULT.DATA_PAGINATOR_BASE, "styleClass", isDisabled()); } public String getBaseStyleClass() { return CSS_DEFAULT.DATA_PAGINATOR_BASE; } /** *

Set the value of the paginator property.

*/ public void setPaginator(boolean paginator) { _paginator = Boolean.valueOf(paginator); } /** *

Return the value of the paginator property.

*/ public boolean isPaginator() { if (_paginator != null) { return _paginator.booleanValue(); } ValueBinding vb = getValueBinding("paginator"); Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null; return v != null ? v.booleanValue() : false; } /** *

Set the value of the paginatorMaxPages property.

*/ public void setPaginatorMaxPages(int paginatorMaxPages) { _paginatorMaxPages = new Integer(paginatorMaxPages); } /** *

Return the value of the paginatorMaxPages property.

*/ public int getPaginatorMaxPages() { if (_paginatorMaxPages != null) { return _paginatorMaxPages.intValue(); } ValueBinding vb = getValueBinding("paginatorMaxPages"); Integer v = vb != null ? (Integer) vb.getValue(getFacesContext()) : null; return v != null ? v.intValue() : Integer.MIN_VALUE; } /** *

Return the value of the paginatorTableClass * property.

*/ public String getPaginatorTableClass() { return Util.getQualifiedStyleClass(this,CSS_DEFAULT.PAGINATOR_TABLE_CLASS, isDisabled()); } /** *

Return the value of the paginatorColumnClass * property.

*/ public String getPaginatorColumnClass() { return Util.getQualifiedStyleClass(this,CSS_DEFAULT.PAGINATOR_COLUMN_CLASS, isDisabled()); } /** *

Return the value of the scrollButtonCellClass * property.

*/ public String getscrollButtonCellClass() { return Util.getQualifiedStyleClass(this,CSS_DEFAULT.DATA_PAGINATOR_SCROLL_BUTTON_CELL_CLASS, isDisabled()); } /** *

Return the value of the paginatorActiveColumnClass * property.

*/ public String getPaginatorActiveColumnClass() { return Util.getQualifiedStyleClass(this, CSS_DEFAULT.PAGINATOR_ACTIVE_COLUMN_CLASS, isDisabled()); } /** *

Set the value of the renderFacetsIfSinglePage * property.

*/ public void setRenderFacetsIfSinglePage(boolean renderFacetsIfSinglePage) { _renderFacetsIfSinglePage = Boolean.valueOf(renderFacetsIfSinglePage); } /** *

Return the value of the renderFacetsIfSinglePage * property.

*/ public boolean isRenderFacetsIfSinglePage() { if (_renderFacetsIfSinglePage != null) { return _renderFacetsIfSinglePage.booleanValue(); } ValueBinding vb = getValueBinding("renderFacetsIfSinglePage"); Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null; return v != null ? v.booleanValue() : true; } /** *

Set the value of the immediate property.

*/ public void setImmediate(boolean immediate) { _immediate = Boolean.valueOf(immediate); } /** *

Return the value of the immediate property.

*/ public boolean isImmediate() { if (_immediate != null) { return _immediate.booleanValue(); } ValueBinding vb = getValueBinding("immediate"); Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null; return v != null ? v.booleanValue() : DEFAULT_IMMEDIATE; } /** *

Set the value of the vertical property.

*/ public void setVertical(boolean vertical) { _vertical = Boolean.valueOf(vertical); } /** *

Return the value of the vertical property.

*/ public boolean isVertical() { if (_vertical != null) { return _vertical.booleanValue(); } ValueBinding vb = getValueBinding("vertical"); Boolean v = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null; return v != null ? v.booleanValue() : DEFAULT_VERTICAL; } /** *

Return the value of the rendered property.

*/ public boolean isRendered() { if (!Util.isRenderedOnUserRole(this)) { return false; } return super.isRendered(); } /** *

Gets the state of the instance as a Serializable * Object.

*/ public Object saveState(FacesContext context) { Object values[] = new Object[25]; values[0] = super.saveState(context); values[1] = _for; values[2] = _fastStep; values[3] = _pageIndexVar; values[4] = _pageCountVar; values[5] = _rowsCountVar; values[6] = _displayedRowsCountVar; values[7] = _firstRowIndexVar; values[8] = _lastRowIndexVar; values[9] = _style; values[10] = _styleClass; values[11] = _columnClasses; values[12] = _paginator; values[13] = _paginatorMaxPages; values[14] = _renderFacetsIfSinglePage; values[15] = _immediate; values[16] = saveAttachedState(context, _actionListener); values[17] = _vertical; values[18] = renderedOnUserRole; values[19] = enabledOnUserRole; values[20] = disabled; values[21] = new Integer(oldRow); values[22] = new Integer(pageIndex); values[23] = keyboardNavigationEnabled; values[24] = tabindex; return values; } /** *

Perform any processing required to restore the state from the entries * in the state Object.

*/ public void restoreState(FacesContext context, Object state) { Object values[] = (Object[]) state; super.restoreState(context, values[0]); _for = (String) values[1]; _fastStep = (Integer) values[2]; _pageIndexVar = (String) values[3]; _pageCountVar = (String) values[4]; _rowsCountVar = (String) values[5]; _displayedRowsCountVar = (String) values[6]; _firstRowIndexVar = (String) values[7]; _lastRowIndexVar = (String) values[8]; _style = (String) values[9]; _styleClass = (String) values[10]; _columnClasses = (String) values[11]; _paginator = (Boolean) values[12]; _paginatorMaxPages = (Integer) values[13]; _renderFacetsIfSinglePage = (Boolean) values[14]; _immediate = (Boolean) values[15]; _actionListener = (MethodBinding) restoreAttachedState(context, values[16]); _vertical = (Boolean) values[17]; renderedOnUserRole = (String)values[18]; enabledOnUserRole = (String)values[19]; disabled = (Boolean)values[20]; oldRow = ((Integer) values[21]).intValue(); pageIndex = ((Integer) values[22]).intValue(); keyboardNavigationEnabled = (Boolean) values[23]; tabindex = (Integer) values[24]; } /** * Sets the dataPaginator to the first page */ public void gotoFirstPage() { getUIData().setFirst(0); UIData uiData = getUIData(); DataPaginatorGroup.execute(uiData, new DataPaginatorGroup.Invoker() { public void invoke(DataPaginator dataPaginator) { dataPaginator.setPageIndex(1); } }); } /** * Sets the dataPaginator to the previous page */ public void gotoPreviousPage() { if (isModelResultSet()) { int first = getUIData().getFirst() - getUIData().getRows(); if (first < 0) { first = 0; } getUIData().setFirst(first); } else { int previous = getUIData().getFirst() - getUIData().getRows(); int rowCount = getRowCount(); if (previous >= 0) { if (previous > rowCount) { previous = rowCount; } getUIData().setFirst(previous); } } } /** * Sets the dataPaginator to the next page */ public void gotoNextPage() { int next = getUIData().getFirst() + getUIData().getRows(); if (isModelResultSet()) { getUIData().setRowIndex(next); if (getUIData().isRowAvailable()) { getUIData().setFirst(next); } } else { if (next < getUIData().getRowCount()) { getUIData().setFirst(next); } } } /** * Sets the dataPaginator to the (n) number of pages forward, defined by the * fastStep property */ public void gotoFastForward() { int fastStep = getFastStep(); if (fastStep <= 0) { fastStep = 1; } int next = getUIData().getFirst() + getUIData().getRows() * fastStep; int rowcount = getUIData().getRowCount(); if (next >= rowcount) { next = (rowcount - 1) - ((rowcount - 1) % getUIData().getRows()); } getUIData().setFirst(next); } /** * Sets the dataPaginator to the (n) number of pages back, defined by the * fastStep property */ public void gotoFastRewind() { int fastStep = getFastStep(); if (fastStep <= 0) { fastStep = 1; } int previous = getUIData().getFirst() - getUIData().getRows() * fastStep; if (previous < 0) { previous = 0; } getUIData().setFirst(previous); } /** * Sets the dataPaginator to the last page */ public void gotoLastPage() { if (isModelResultSet()) { int first = getUIData().getFirst(); while (true) { getUIData().setRowIndex(first + 1); if (getUIData().isRowAvailable()) { first++; } else { break; } } getUIData().setFirst(first - (first % getUIData().getRows())); } else { int rowcount = getUIData().getRowCount(); int rows = getUIData().getRows(); int delta = rowcount % rows; int first = delta > 0 && delta < rows ? rowcount - delta : rowcount - rows; if (first >= 0) { getUIData().setFirst(first); } else { getUIData().setFirst(0); } } } /** * Return a boolean value, whether current page is the last page */ public boolean isLastPage() { return (getPageIndex() >= getPageCount()) ? true : false; } private String enabledOnUserRole = null; private String renderedOnUserRole = null; /** *

Set the value of the enabledOnUserRole property.

*/ public void setEnabledOnUserRole(String enabledOnUserRole) { this.enabledOnUserRole = enabledOnUserRole; } /** *

Return the value of the enabledOnUserRole property.

*/ public String getEnabledOnUserRole() { if (enabledOnUserRole != null) { return enabledOnUserRole; } ValueBinding vb = getValueBinding("enabledOnUserRole"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } /** *

Set the value of the renderedOnUserRole property.

*/ public void setRenderedOnUserRole(String renderedOnUserRole) { this.renderedOnUserRole = renderedOnUserRole; } /** *

Return the value of the renderedOnUserRole property.

*/ public String getRenderedOnUserRole() { if (renderedOnUserRole != null) { return renderedOnUserRole; } ValueBinding vb = getValueBinding("renderedOnUserRole"); return vb != null ? (String) vb.getValue(getFacesContext()) : null; } private transient Boolean modelResultSet = null; public boolean isModelResultSet() { if (modelResultSet == null) { if (getUIData().getValue() instanceof ResultSet) { modelResultSet = Boolean.TRUE; } else { if (getUIData() .getValue() instanceof javax.faces.model.DataModel) { javax.faces.model.DataModel dataModel = (javax.faces.model.DataModel) getUIData() .getValue(); if (dataModel.getRowCount() == -1) { modelResultSet = Boolean.TRUE; return modelResultSet.booleanValue(); } } modelResultSet = Boolean.FALSE; } } return modelResultSet.booleanValue(); } public boolean isKeyboardNavigationEnabled() { if (keyboardNavigationEnabled != null) { return keyboardNavigationEnabled.booleanValue(); } ValueBinding vb = getValueBinding("keyboardNavigationEnabled"); Boolean boolVal = vb != null ? (Boolean) vb.getValue(getFacesContext()) : null; return boolVal != null ? boolVal.booleanValue() : true; } public void setKeyboardNavigationEnabled(boolean keyboardNavigationEnabled) { this.keyboardNavigationEnabled = new Boolean(keyboardNavigationEnabled); } public void decode(FacesContext context) { //each cycle can have new component DataPaginatorGroup.add(context, this); super.decode(context); } /** *

Set the value of the tabindex property.

*/ public void setTabindex(int tabindex) { this.tabindex = new Integer(tabindex); } /** *

Return the value of the fastStep property.

*/ public int getTabindex() { if (tabindex != null) { return tabindex.intValue(); } ValueBinding vb = getValueBinding("tabindex"); Integer v = vb != null ? (Integer) vb.getValue(getFacesContext()) : null; return v != null ? v.intValue() : Integer.MIN_VALUE; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy