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.html;
 
 import static org.richfaces.renderkit.HtmlConstants.CLASS_ATTRIBUTE;
 import static org.richfaces.renderkit.HtmlConstants.DIV_ELEM;
 import static org.richfaces.renderkit.HtmlConstants.ID_ATTRIBUTE;
 
 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  javax.faces.event.ActionEvent;
 
 import  org.ajax4jsf.javascript.JSObject;
 import  org.richfaces.application.ServiceTracker;
 import  org.richfaces.component.ComponentIterators;
 import  org.richfaces.javascript.JavaScriptService;
 import  org.richfaces.renderkit.HtmlConstants;
 
 import  com.google.common.base.Predicate;

Author(s):
akolonitsky
Since:
2010-08-24
 
 @ResourceDependencies({ @ResourceDependency(library = "org.richfaces", name = "ajax.reslib"),
         @ResourceDependency(library = "org.richfaces", name = "base-component.reslib"),
         @ResourceDependency(name = "richfaces-event.js"),
         @ResourceDependency(library = "org.richfaces", name = "togglePanelItem.js"),
         @ResourceDependency(library = "org.richfaces", name = "tab.js") })
 @JsfRenderer(type = "org.richfaces.TabRenderer", family = .)
 public class TabRenderer extends TogglePanelItemRenderer {
     @Override
     protected void doDecode(FacesContext context, UIComponent component) {
 
         Map<StringStringrequestMap = context.getExternalContext().getRequestParameterMap();
 
         AbstractTab tab = (AbstractTabcomponent;
         String compClientId = component.getClientId(context);
         if (requestMap.get(compClientId) != null) {
             AbstractTabPanel parentTabPanel = getParentTabPanel(tab);
 
             if (parentTabPanel.isImmediate()) {
                 tab.setImmediate(true);
             }
             new ActionEvent(tab).queue();
 
             if (context.getPartialViewContext().isPartialRequest()) {
                 context.getPartialViewContext().getRenderIds().add(component.getClientId(context));
                 addOnCompleteParam(contexttab.getName(), tab.getTabPanel().getClientId(context));
             }
         }
     }
 
     @Override
     protected void doEncodeItemBegin(ResponseWriter writer, FacesContext context, UIComponent componentthrows IOException {
 
         super.doEncodeItemBegin(writercontextcomponent);
         encodeContentBegin(contextcomponentwriter);
     }
 
     @Override
     protected String getStyleClass(UIComponent component) {
         return concatClasses("rf-tab", attributeAsString(component"styleClass"));
     }
 
     @Override
     protected void doEncodeChildren(ResponseWriter writer, FacesContext context, UIComponent componentthrows IOException {
 
         AbstractTab tab = (AbstractTabcomponent;
 
        if (tab.shouldProcess() && !tab.isDisabled()) {
            super.doEncodeChildren(writercontexttab);
        }
    }
    @Override
    protected void doEncodeItemEnd(ResponseWriter writer, FacesContext context, UIComponent componentthrows IOException {
        encodeContentEnd(componentwriter);
        jsService().addScript(contextgetScriptObject(contextcomponent));
        writer.endElement(HtmlConstants.DIV_ELEM);
    }
    @Override
    protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent componentthrows IOException {
        if (((AbstractTogglePanelItemInterfacecomponent).shouldProcess()) {
            doEncodeItemEnd(writercontextcomponent);
        } else {
            encodePlaceHolder(contextcomponent);
            jsService().addScript(contextgetScriptObject(contextcomponent));
        }
    }
    private JavaScriptService jsService() {
        return ServiceTracker.getService(JavaScriptService.class);
    }
    private void encodeContentBegin(FacesContext context, UIComponent component, ResponseWriter writerthrows IOException {
        writer.startElement(DIV_ELEM, component);
        writer.writeAttribute(CLASS_ATTRIBUTE, concatClasses("rf-tab-cnt", attributeAsString(component"contentClass")), null);
        writer.writeAttribute(ID_ATTRIBUTE, component.getClientId(context) + ":content"null);
    }
    private void encodeContentEnd(UIComponent component, ResponseWriter responseWriterthrows IOException {
        responseWriter.endElement(DIV_ELEM);
    }
    @Override
    protected JSObject getScriptObject(FacesContext context, UIComponent component) {
        return new JSObject("RichFaces.ui.Tab"component.getClientId(context), getScriptObjectOptions(contextcomponent));
    }
    @Override
    protected Map<StringObjectgetScriptObjectOptions(FacesContext context, UIComponent component) {
        Map<StringObjectres = super.getScriptObjectOptions(contextcomponent);
        res.put("disabled", ((AbstractTabcomponent).isDisabled());
        res.put("enter", ((AbstractTogglePanelItemInterfacecomponent).getOnenter());
        res.put("leave", ((AbstractTogglePanelItemInterfacecomponent).getOnleave());
        return res;
    }
    @Override
    protected Class<? extends UIComponent> getComponentClass() {
        return AbstractTab.class;
    }
    private static AbstractTabPanel getParentTabPanel(AbstractTab menuItem) {
        return (AbstractTabPanel) ComponentIterators.getParent(menuItemnew Predicate<UIComponent>() {
            public boolean apply(UIComponent component) {
                return component instanceof AbstractTabPanel;
            }
        });
    }
New to GrepCode? Check out our FAQ X