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 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  com.google.common.base.Strings;

Author(s):
Anton Belevich
 
 @JsfRenderer(type = "org.richfaces.CollapsibleSubTableTogglerRenderer", family = .)
 @ResourceDependencies({ @ResourceDependency(library = "org.richfaces", name = "ajax.reslib"),
         @ResourceDependency(name = "richfaces-event.js"),
         @ResourceDependency(library = "org.richfaces", name = "collapsible-subtable-toggler.js"),
         @ResourceDependency(library = "org.richfaces", name = "collapsible-subtable.ecss") })
 public abstract class CollapsibleSubTableTogglerRendererBase extends RendererBase {
    
 
     private static final RendererUtils RENDERER_UTILS = RendererUtils.getInstance();
     private static final String DISPLAY_NONE = "display: none;";
     private static final String UP_ICON_URL = "org.richfaces/up_icon.gif";
     private static final String DOWN_ICON_URL = "org.richfaces/down_icon.gif";
     private static final String EXPANDED_STATE = "expanded";
     private static final String COLLAPSED_STATE = "collapsed";
     private static final String EXPANDED_CONTROL_CLASS = "rf-csttg-exp";
     private static final String COLLAPSED_CONTROL_CLASS = "rf-csttg-colps";
 
     @Override
     protected void doDecode(FacesContext context, UIComponent component) {
         // TODO - review
         context.getPartialViewContext().getRenderIds().add(component.getClientId(context));
     }
 
     protected void encodeControl(FacesContext context, UIComponent componentthrows IOException {
         AbstractCollapsibleSubTableToggler toggleControl = (AbstractCollapsibleSubTableTogglercomponent;
         AbstractCollapsibleSubTable subTable = findComponent(contexttoggleControl);
 
         if (subTable != null) {
             boolean expanded = subTable.isExpanded();
 
             ResponseWriter writer = context.getResponseWriter();
             encodeControl(contextwritertoggleControlexpandedtrue);
             encodeControl(contextwritertoggleControl, !expandedfalse);
 
             JSFunction jsFunction = new JSFunction("new RichFaces.ui.CollapsibleSubTableToggler");
             String toggleId = toggleControl.getClientId(context);
             jsFunction.addParameter(toggleId);
             Map<StringObjectoptions = encodeOptions(contexttoggleControlsubTable);
             jsFunction.addParameter(options);
 
             writer.startElement(HtmlConstants.SCRIPT_ELEM, subTable);
             writer.writeText(jsFunction.toScript(), null);
             writer.endElement(HtmlConstants.SCRIPT_ELEM);
         }
     }
 
     private boolean isEmpty(String value) {
         return (value == null || value.trim().length() == 0);
     }
 
     protected void encodeControl(FacesContext context, ResponseWriter writerAbstractCollapsibleSubTableToggler control,
         boolean expandedboolean visiblethrows IOException {
         String state = getState(expanded);
         String styleClass = getStyleClass(contextcontrol);
        String style = getStyle(contextcontrol);
        writer.startElement(HtmlConstants.SPAN_ELEM, control);
        if (!visible) {
            writer.writeAttribute(HtmlConstants.STYLE_ATTRIBUTE, null);
        }
        writer.writeAttribute(HtmlConstants.ID_ATTRIBUTE, control.getClientId(context) + ":" + statenull);
        writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE,
            concatClasses(styleClassexpanded ?  : ), null);
        writer.writeAttribute(HtmlConstants.STYLE_ATTRIBUTE, stylenull);
        UIComponent controlFacet = control.getFacet(state);
        if (controlFacet != null && controlFacet.isRendered()) {
            if (!visible) {
                String facetStyle = (StringcontrolFacet.getAttributes().get(HtmlConstants.STYLE_ATTRIBUTE);
                facetStyle = facetStyle != null ? facetStyle + ";" +  : ;
                controlFacet.getAttributes().put(HtmlConstants.STYLE_ATTRIBUTE, facetStyle);
            }
            controlFacet.encodeAll(context);
        }
        String expandedIcon = control.getExpandedIcon();
        if (isEmpty(expandedIcon)) {
            expandedIcon = context.getApplication().getResourceHandler().createResource().getRequestPath();
        } else {
            expandedIcon = RenderKitUtils.getResourceURL(expandedIconcontext);
        }
        String collapsedIcon = control.getCollapsedIcon();
        if (isEmpty(collapsedIcon)) {
            collapsedIcon = context.getApplication().getResourceHandler().createResource().getRequestPath();
        } else {
            collapsedIcon = RenderKitUtils.getResourceURL(collapsedIconcontext);
        }
        String image = expanded ? expandedIcon : collapsedIcon;
        if (image != null && image.trim().length() > 0) {
            writer.startElement(HtmlConstants.IMG_ELEMENT, control);
            writer.writeAttribute(HtmlConstants.SRC_ATTRIBUTE, imagenull);
            writer.writeAttribute(HtmlConstants.ALT_ATTRIBUTE, ""null);
            writer.endElement(HtmlConstants.IMG_ELEMENT);
        }
        String label = expanded ? control.getExpandedLabel() : control.getCollapsedLabel();
        if (label != null && label.trim().length() > 0) {
            writer.startElement(HtmlConstants.A_ELEMENT, control);
            writer.writeAttribute(HtmlConstants.HREF_ATTR, "javascript:void(0);"null);
            writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, "rf-csttg-lnk"null);
            writer.writeText(labelnull);
            writer.endElement(HtmlConstants.A_ELEMENT);
        }
        writer.endElement(HtmlConstants.SPAN_ELEM);
    }
    public HashMap<StringObjectencodeOptions(FacesContext contextAbstractCollapsibleSubTableToggler toggleControl,
        AbstractCollapsibleSubTable subTable) {
        String forId = subTable.getClientId(context);
        String toggleControlId = toggleControl.getClientId(context);
        HashMap<StringObjectoptions = new HashMap<StringObject>();
        options.put("forId"forId);
        options.put("expandedControl"toggleControlId + ":expanded");
        options.put("collapsedControl"toggleControlId + ":collapsed");
        String eventName = toggleControl.getEvent();
        if (Strings.isNullOrEmpty(eventName)) {
            eventName = .;
        }
        eventName = eventName.trim().startsWith("on") ? eventName.substring(2) : eventName;
        options.put("eventName"eventName);
        return options;
    }
    public String getStyleClass(FacesContext contextAbstractCollapsibleSubTableToggler control) {
        return null;
    }
    public String getStyle(FacesContext contextAbstractCollapsibleSubTableToggler control) {
        return null;
    }
    protected AbstractCollapsibleSubTable findComponent(FacesContext contextAbstractCollapsibleSubTableToggler toggleControl) {
        String forId = toggleControl.getFor();
        if (forId != null && forId.length() > 0) {
            UIComponent subTable = .findComponentFor(contexttoggleControlforId);
            if (subTable instanceof AbstractCollapsibleSubTable) {
                return (AbstractCollapsibleSubTablesubTable;
            }
        }
        return null;
    }
    protected String getState(boolean expanded) {
        return expanded ?  : ;
    }
New to GrepCode? Check out our FAQ X