Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Header: Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008 The Sakai Foundation Licensed under the Educational Community 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.opensource.org/licenses/ECL-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 org.sakaiproject.jsf.renderer;
 
 import java.util.List;
 
 

This does not render children, but can deal with children by surrounding them in a comment.

 
 public class ToolBarRenderer extends Renderer
 {
  
This component renders its children

Returns:
true
 
   public boolean getRendersChildren()
   {
 	  return true;
   }
   
   public boolean supportsComponentType(UIComponent component)
   {
     return (component instanceof org.sakaiproject.jsf.component.ToolBarComponent);
   }
 
   public void encodeBegin(FacesContext contextUIComponent componentthrows IOException
   {
 	if(!component.isRendered()){
 		//tool_bar tag is not to be rendered, return now
 		return;
 	}
     ResponseWriter writer = context.getResponseWriter();
     writer.write("<ul class=\"navIntraTool actionToolbar jsfToolbar\">");
 
     return;
   }
  
  
We put all our processing in the encodeChildren method

Parameters:
context
component
Throws:
java.io.IOException
 
   public void encodeChildren(FacesContext contextUIComponent component)
     throws IOException
   {
     if (!component.isRendered())
     {
       return;
     }
 
     String clientId = null;
 
     if (component.getId() != null &&
       !component.getId().startsWith(.))
     {
       clientId = component.getClientId(context);
     }
 
     ResponseWriter writer = context.getResponseWriter();
 
     if (clientId != null)
     {
       writer.startElement("ul"component);
       //writer.append(" class=\"jsfToolbar\" "); // we don't seem to get here
     }
 
    @SuppressWarnings("unchecked")
    List<UIComponentchildren = component.getChildren();
    // this is a special separator attribute, not supported by UIData
    String separator = (String) RendererUtil.getAttribute(contextcomponent"separator");
    if (separator==nullseparator="";
    boolean first = true;
    boolean foundCurrent = false;
    for (Iterator<UIComponentiter = children.iterator(); iter.hasNext();)
    {
      UIComponent child = (UIComponent)iter.next();
      // should instead leave the span open, and the item should then add class and aria attributes
      // depending on the item is (disabled or not) and then close
      if (child.isRendered()) {
         if (!first)   
         {
        	 writer.write("<li>");
         }
         else
         {
        	 writer.write("<li class=\"firstToolBarItem\">");
         }
         // SAK-23062 improve JSF options menu
         boolean current = false;
         if (!foundCurrent) {
             // check for the "current" attribute on the custom tag, mark that item as current if it set to true
             boolean hasCurrentIndicated = (child.getAttributes().get("current") != null); // NOTE: child.getAttributes().containsKey("current") will NOT work here
             current = (hasCurrentIndicated && ((Boolean)child.getAttributes().get("current")).booleanValue());
             /* this breaks too many other things
             if (!hasCurrentIndicated && !"javax.faces.Link".equals(child.getRendererType())) {
                 // basically - if it is not a link, it is probably the current item
                 current = true;
             }
             */
         }
         if (current) {
             foundCurrent = true;
             writer.write("<span class=\"current\">");
         } else {
             writer.write("<span>");
         }
         RendererUtil.encodeRecursive(contextchild);
    	 writer.write("</span></li> ");
         first = false;
      }
    } 
      if (clientId != null)
        {
        writer.endElement("ul");
      }
  }
  public void encodeEnd(FacesContext contextUIComponent componentthrows IOException
  {
    ResponseWriter writer = context.getResponseWriter();
    writer.write("</ul>");
  }
New to GrepCode? Check out our FAQ X