Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright ${year}, Red Hat, Inc. and individual contributors
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.richfaces.renderkit;
 
 import static org.richfaces.component.DataScrollerControlsMode.auto;
 import static org.richfaces.component.DataScrollerControlsMode.show;
 
 import java.util.Map;
 
 import  javax.faces.application.ResourceDependencies;
 import  javax.faces.application.ResourceDependency;
 import  javax.faces.component.UIComponent;
 import  javax.faces.context.FacesContext;
 import  javax.faces.context.ResponseWriter;
 
 import  org.ajax4jsf.javascript.JSFunction;
 import  org.ajax4jsf.javascript.JSFunctionDefinition;
 import  org.ajax4jsf.javascript.JSLiteral;
 import  org.ajax4jsf.javascript.JSReference;
 
 @ResourceDependencies({ @ResourceDependency(library = "javax.faces", name = "jsf.js"),
         @ResourceDependency(name = "jquery.js"),
         @ResourceDependency(name = "richfaces.js"),
         @ResourceDependency(library = "org.richfaces", name = "richfaces-queue.reslib"),
         @ResourceDependency(name = "richfaces-base-component.js"),
         @ResourceDependency(name = "richfaces-event.js"),
         @ResourceDependency(library = "org.richfaces", name = "datascroller.js"),
         @ResourceDependency(library = "org.richfaces", name = "datascroller.ecss") })
 public class DataScrollerBaseRenderer extends RendererBase {
     public void doDecode(FacesContext context, UIComponent component) {
         Map<StringStringparamMap = context.getExternalContext().getRequestParameterMap();
 
         String clientId = component.getClientId(context);
         String param = (StringparamMap.get(clientId + ":page");
 
         if (param != null) {
 
             AbstractDataScroller scroller = (AbstractDataScrollercomponent;
             int newPage = scroller.getPageForFacet(param);
             int page = scroller.getPage();
 
             if (newPage != 0 && newPage != page) {
                 new DataScrollEvent(scroller, String.valueOf(page), paramnewPage).queue();
             }
         }
     }
 
     protected boolean shouldRender(UIComponent component){
         AbstractDataScroller ds = (AbstractDataScrollercomponent;
         if ((ds.getPageCount() == 1)&&(!ds.isRenderIfSinglePage())){
             return false;
         }else{
         return true;
         }
     }
 
     private DataScrollerControlsMode getModeOrDefault(UIComponent componentString attributeName) {
         DataScrollerControlsMode mode = (DataScrollerControlsModecomponent.getAttributes().get(attributeName);
         if (mode == null) {
             mode = .;
         }
         return mode;
     }
 
     public ControlsState getControlsState(FacesContext context, UIComponent component) {
 
         int fastStep = (Integercomponent.getAttributes().get("fastStepOrDefault");
         int pageIndex = (Integercomponent.getAttributes().get("page");
         int pageCount = (Integercomponent.getAttributes().get("pageCount");
 
         int minPageIdx = 1;
         int maxPageIdx = pageCount;
 
         boolean useFirst = true;
        boolean useLast = true;
        boolean useBackFast = true;
        boolean useForwFast = true;
        ControlsState controlsState = new ControlsState();
        if (pageIndex <= minPageIdx) {
            useFirst = false;
        }
        if (pageIndex >= maxPageIdx) {
            useLast = false;
        }
        if (pageIndex - fastStep < minPageIdx) {
            useBackFast = false;
        }
        if (pageIndex + fastStep > maxPageIdx) {
            useForwFast = false;
        }
        DataScrollerControlsMode boundaryControls = getModeOrDefault(component"boundaryControls");
        DataScrollerControlsMode stepControls = getModeOrDefault(component"stepControls");
        DataScrollerControlsMode fastControls = getModeOrDefault(component"fastControls");
        boolean isAuto = .equals(boundaryControls);
        if (isAuto || .equals(boundaryControls)) {
            if (isAuto) {
                controlsState.setFirstRendered(useFirst);
                controlsState.setLastRendered(useLast);
            }
            controlsState.setFirstEnabled(useFirst);
            controlsState.setLastEnabled(useLast);
        } else {
            controlsState.setFirstRendered(false);
            controlsState.setLastRendered(false);
        }
        isAuto = .equals(stepControls);
        if (isAuto || .equals(stepControls)) {
            if (isAuto) {
                controlsState.setPreviousRendered(useFirst);
                controlsState.setNextRendered(useLast);
            }
            controlsState.setPreviousEnabled(useFirst);
            controlsState.setNextEnabled(useLast);
        } else {
            controlsState.setPreviousRendered(false);
            controlsState.setNextRendered(false);
        }
        isAuto = .equals(fastControls);
        if (isAuto || .equals(fastControls)) {
            if (isAuto) {
                controlsState.setFastForwardRendered(useForwFast);
                controlsState.setFastRewindRendered(useBackFast);
            }
            controlsState.setFastForwardEnabled(useForwFast);
            controlsState.setFastRewindEnabled(useBackFast);
        } else {
            controlsState.setFastForwardRendered(false);
            controlsState.setFastRewindRendered(false);
        }
        UIComponent controlsSeparatorFacet = component.getFacet("controlsSeparator");
        if (controlsSeparatorFacet != null && controlsSeparatorFacet.isRendered()) {
            controlsState.setControlsSeparatorRendered(true);
        }
        return controlsState;
    }
    public Map<StringStringrenderPager(ResponseWriter out, FacesContext context, UIComponent componentthrows IOException {
        int currentPage = (Integercomponent.getAttributes().get("page");
        int maxPages = (Integercomponent.getAttributes().get("maxPagesOrDefault");
        int pageCount = (Integercomponent.getAttributes().get("pageCount");
        Map<StringStringdigital = new HashMap<StringString>();
        if (pageCount <= 1) {
            return digital;
        }
        int delta = maxPages / 2;
        int pages;
        int start;
        if (pageCount > maxPages && currentPage > delta) {
            pages = maxPages;
            start = currentPage - pages / 2 - 1;
            if (start + pages > pageCount) {
                start = pageCount - pages;
            }
        } else {
            pages = pageCount < maxPages ? pageCount : maxPages;
            start = 0;
        }
        String clientId = component.getClientId(context);
        int size = start + pages;
        for (int i = starti < sizei++) {
            boolean isCurrentPage = (i + 1 == currentPage);
            String styleClass;
            String style;
            if (isCurrentPage) {
                styleClass = (Stringcomponent.getAttributes().get("selectedStyleClass");
                style = (Stringcomponent.getAttributes().get("selectedStyle");
            } else {
                styleClass = (Stringcomponent.getAttributes().get("inactiveStyleClass");
                style = (Stringcomponent.getAttributes().get("inactiveStyle");
            }
            if (styleClass == null) {
                styleClass = "";
            }
            if (isCurrentPage) {
                out.startElement(HtmlConstants.SPAN_ELEM, component);
                out.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, "rf-ds-nmb-btn rf-ds-act " + styleClassnull);
            } else {
                out.startElement(HtmlConstants.A_ELEMENT, component);
                out.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, "rf-ds-nmb-btn " + styleClassnull);
                out.writeAttribute(HtmlConstants.HREF_ATTR, "javascript:void(0);"null);
            }
            if (null != style) {
                out.writeAttribute(HtmlConstants.STYLE_ATTRIBUTE, stylenull);
            }
            String page = Integer.toString(i + 1);
            String id = clientId + "_ds_" + page;
            out.writeAttribute(HtmlConstants.ID_ATTRIBUTE, idnull);
            digital.put(idpage);
            out.writeText(pagenull);
            if (isCurrentPage) {
                out.endElement(HtmlConstants.SPAN_ELEM);
            } else {
                out.endElement(HtmlConstants.A_ELEMENT);
            }
        }
        return digital;
    }
    public Map<StringMap<StringString>> getControls(FacesContext context, UIComponent componentControlsState controlsState) {
        Map<StringMap<StringString>> controls = new HashMap<StringMap<StringString>>();
        Map<StringStringright = new HashMap<StringString>();
        Map<StringStringleft = new HashMap<StringString>();
        String clientId = component.getClientId(context);
        if (controlsState.getFirstRendered() && controlsState.getFirstEnabled()) {
            left.put(clientId + "_ds_f".);
        }
        if (controlsState.getFastRewindRendered() && controlsState.getFastRewindEnabled()) {
            left.put(clientId + "_ds_fr".);
        }
        if (controlsState.getPreviousRendered() && controlsState.getPreviousEnabled()) {
            left.put(clientId + "_ds_prev".);
        }
        if (controlsState.getFastForwardRendered() && controlsState.getFastForwardEnabled()) {
            right.put(clientId + "_ds_ff".);
        }
        if (controlsState.getNextRendered() && controlsState.getNextEnabled()) {
            right.put(clientId + "_ds_next".);
        }
        if (controlsState.getLastRendered() && controlsState.getLastEnabled()) {
            right.put(clientId + "_ds_l".);
        }
        if (!left.isEmpty()) {
            controls.put("left"left);
        }
        if (!right.isEmpty()) {
            controls.put("right"right);
        }
        return controls;
    }
    public void buildScript(ResponseWriter writer, FacesContext context, UIComponent componentMap<?, ?> buttonsMap<?, ?> digitals)
        throws IOException {
        JSFunction function = new JSFunction("new RichFaces.ui.DataScroller");
        function.addParameter(component.getClientId(context));
        Map<StringObjectoptions = new HashMap<StringObject>();
        options.put("buttons"buttons);
        options.put("digitals"digitals);
        options.put("currentPage", (Integercomponent.getAttributes().get("page"));
        function.addParameter(getSubmitFunction(contextcomponent));
        function.addParameter(options);
        writer.write(function.toString());
    }
    public JSFunctionDefinition getSubmitFunction(FacesContext facesContext, UIComponent component) {
        JSFunctionDefinition definition = new JSFunctionDefinition(JSReference.EVENT, new JSReference("element"),
            new JSReference("data"));
        AjaxFunction function = AjaxRendererUtils.buildAjaxFunction(facesContextcomponent);
        Map<StringObjectparameters = function.getOptions().getParameters();
        parameters.put(component.getClientId(facesContext) + ":page"new JSLiteral("data.page"));
        definition.addToBody(function.toScript());
        return definition;
    }
    public void encodeFacet(FacesContext context, UIComponent componentthrows IOException {
        component.encodeAll(context);
    }
    public boolean getRendersChildren() {
        return true;
    }
New to GrepCode? Check out our FAQ X