Package org.richfaces.renderkit.html

Source Code of org.richfaces.renderkit.html.HtmlRichMessageRenderer

package org.richfaces.renderkit.html;

import java.io.IOException;
import java.util.Iterator;
import java.util.Set;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIMessage;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;

import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.ajax4jsf.resource.InternetResource;
import org.richfaces.component.UIRichMessage;
import org.richfaces.renderkit.RichMessageBaseRenderer;


/**
* @author Anton Belevich
*
*/
public class HtmlRichMessageRenderer extends RichMessageBaseRenderer{
 
  private final InternetResource[] styles = {getResource("/org/richfaces/renderkit/html/css/msg.css")};
 
  private InternetResource[] stylesAll = null;
 
 
  protected InternetResource[] getStyles(){
    synchronized (this){
      if(stylesAll == null){
       
        InternetResource[] rsrcs = super.getStyles();
        boolean ignoreSuper = rsrcs == null || rsrcs.length == 0;
        boolean ignoreThis = styles == null || styles.length == 0;
       
        if(ignoreSuper){
         
          if (ignoreThis) {
            stylesAll = new InternetResource[0]
          } else {
            stylesAll = styles;
          }
         
        }else{
          if(ignoreThis){
            stylesAll = rsrcs;
          }else{
            Set rsrcsSet = new java.util.LinkedHashSet();

            for(int i = 0; i < rsrcs.length; i++ ){
              rsrcsSet.add(rsrcs[i]);
            }

            for(int i = 0; i < styles.length; i++ ){
              rsrcsSet.add(styles[i]);
            }

            stylesAll = (InternetResource[]) rsrcsSet.toArray(new InternetResource[rsrcsSet.size()]);
          }
        }
      }
    }
   
    return stylesAll;
  }
 
 
  protected void doEncodeEnd(ResponseWriter writer, FacesContext context,  UIComponent component) throws IOException {
   
    Iterator msgIter = null;
   
    UIRichMessage msgComponent = (UIRichMessage)component;
    String forClientId = msgComponent.getFor();
   
    if(forClientId == null){
     
      if(log.isErrorEnabled()){
        log.error(NULL_PARAMETER_ERROR_MESSAGE);
      }
     
    }else{
     
      msgIter = getMessageIterator(context, forClientId, msgComponent);
      writer.startElement(HTML.SPAN_ELEM, msgComponent);
      getUtils().writeAttribute(writer, HTML.id_ATTRIBUTE, msgComponent.getClientId(context));
     
      if(!msgIter.hasNext() && msgComponent.isPassed()){
       
        encodingUIContent(msgComponent, context, null);
       
      }else if(msgIter.hasNext() ){
       
        FacesMessage message = (FacesMessage)msgIter.next();
        encodingUIContent(msgComponent, context, message)
     
      }
     
      writer.endElement(HTML.SPAN_ELEM);
   
  }
 
  protected void encodingUIContent(UIRichMessage uiMsg, FacesContext context, FacesMessage facesMsg) throws IOException{
         
    ResponseWriter writer = context.getResponseWriter();
   
    outerStyles(uiMsg, context, writer, facesMsg);
    renderMarkerFacet(uiMsg,context, writer,facesMsg);
    renderLabel(uiMsg, context, writer, facesMsg);
   
     
  }
 
  public void renderOuterStyles(UIComponent component, FacesContext context, ResponseWriter writer,String outerStyle, String outerClass) throws IOException{
   
    UIRichMessage uiMsg = null;
   
    if(!(component instanceof UIRichMessage)){
      return;
    }
   
    uiMsg = (UIRichMessage)component;
   
    String parentStyle = (String)uiMsg.getAttributes().get("style");
    String parentClass = (String)uiMsg.getAttributes().get("styleClass");
    
    String richMessageClass = "rich-message" + (null != outerClass ? " " + outerClass : "");
    String richMessageStyle = (null != outerStyle ? outerStyle + "," : "");
     
    parentStyle = parentStyle != null ? (richMessageStyle + parentStyle) :  richMessageStyle; 
    parentClass = parentClass != null ? (richMessageClass + " " + parentClass) : richMessageClass;   
      
    getUtils().writeAttribute(writer, HTML.class_ATTRIBUTE, parentClass);
    getUtils().writeAttribute(writer, HTML.style_ATTRIBUTE, parentStyle);
  }
 
  public void renderMarkerHtml(UIComponent component,UIComponent marker, FacesContext context,
                 ResponseWriter writer,String markerClass, String markerStyle) throws IOException{
   
    UIRichMessage uiMsg = null;
   
    if(!(component instanceof UIRichMessage)){
      return;
    }
   
    uiMsg = (UIRichMessage)component;
   
    writer.startElement(HTML.SPAN_ELEM, uiMsg);
   
    String classes = markerClass == null ? "rich-message-marker" : "rich-message-marker " + markerClass;
   
    getUtils().writeAttribute(writer, HTML.class_ATTRIBUTE, classes);
    getUtils().writeAttribute(writer, HTML.style_ATTRIBUTE, markerStyle);
   
    renderChild(context, marker);
   
    writer.endElement(HTML.SPAN_ELEM);
 
  }
 
  public void renderLabelHtml(UIComponent component, FacesContext context, ResponseWriter writer,
                FacesMessage facesMsg, String labelClass, String labelStyle, String passLabel) throws IOException{
      
    String summary = null;
   
    String detail = null;
   
    String title = null;
   
    UIRichMessage uiMsg = null;
   
    if(!(component instanceof UIRichMessage)){
      return;
    }
   
    uiMsg = (UIRichMessage)component;
   
    boolean isTooltip = getUtils().isBooleanAttribute(uiMsg, "tooltip");
      
    boolean showSummary = uiMsg.isShowSummary();
     
    boolean showDetail = uiMsg.isShowDetail();
   
   
    if(facesMsg != null){
      summary = (null != (summary = facesMsg.getSummary())) ? summary : "";
      detail = (null != (detail = facesMsg.getDetail())) ? detail : "";
    }    
      
    String classes = labelClass == null ? "rich-message-label" : "rich-message-label " + labelClass;
      
    writer.startElement(HTML.SPAN_ELEM, uiMsg);
      
    getUtils().writeAttribute(writer, HTML.class_ATTRIBUTE,classes);
    getUtils().writeAttribute(writer, HTML.style_ATTRIBUTE, labelStyle);
   
    if(facesMsg != null){
      if(isTooltip){
        title = (String) uiMsg.getAttributes().get("title");
        if(title != null){
          getUtils().writeAttribute(writer, HTML.title_ATTRIBUTE, title);
        }else{
          getUtils().writeAttribute(writer, HTML.title_ATTRIBUTE, summary);
        }
      }
      
      if(showDetail){
        writer.writeText(detail, null);
        writer.writeText("\t", null);
      }
        
      if(showSummary){
        writer.writeText(summary, null);
        writer.writeText("\t", null);
      }
    }else {   
        
      if(passLabel != null){
        writer.writeText(passLabel, null);
        writer.writeText("\t", null);
      }
           
    }
      
    writer.endElement(HTML.SPAN_ELEM);
   
  }
 
  protected Class getComponentClass() {

    return UIMessage.class;
  }
}
TOP

Related Classes of org.richfaces.renderkit.html.HtmlRichMessageRenderer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.