Package org.ajax4jsf.renderkit

Source Code of org.ajax4jsf.renderkit.HeaderResourcesRendererBase

/**
* License Agreement.
*
* Rich Faces - Natural Ajax for Java Server Faces (JSF)
*
* Copyright (C) 2007 Exadel, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 as published by the Free Software Foundation.
*
* This library 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 library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
*/

package org.ajax4jsf.renderkit;

import java.io.IOException;
import java.util.LinkedHashSet;

import javax.faces.component.UIComponent;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import org.ajax4jsf.resource.InternetResource;
import org.ajax4jsf.resource.InternetResourceBuilder;
import org.ajax4jsf.webapp.BaseFilter;

/**
* Base renderer for components used JavaScripts and Styles in header. In real
* class override getScripts or/and getStyles methods
*
* @author asmirnov@exadel.com (latest modification by $Author: alexsmirnov $)
* @version $Revision: 1.1.2.1 $ $Date: 2007/01/09 18:58:51 $
*
*/
public abstract class HeaderResourcesRendererBase extends RendererBase
    implements HeaderResourceProducer2, HeaderResourceProducer {

  /*
   * (non-Javadoc)
   *
   * @see org.ajax4jsf.renderkit.HeaderResourceProducer#getHeaderScripts(javax.faces.context.FacesContext)
   */
  public LinkedHashSet<String> getHeaderScripts(FacesContext context,
      UIComponent component) {
    return getUrisSet(context, getScripts(), component);
  }

  /**
   * Hoock method to return array of scripts resources to store in head.
   *
   * @return
   */
  protected InternetResource[] getScripts() {
    // return nothing by default.
    return null;
  }

  /*
   * (non-Javadoc)
   *
   * @see org.ajax4jsf.renderkit.HeaderResourceProducer#getHeaderStyles(javax.faces.context.FacesContext)
   */
  public LinkedHashSet<String> getHeaderStyles(FacesContext context,
      UIComponent component) {
    return getUrisSet(context, getStyles(), component);
  }

  /**
   * Hoock method to return array of styles resources to store in head
   *
   * @return
   */
  protected InternetResource[] getStyles() {
    // TODO Auto-generated method stub
    return null;
  }

  /**
   * @param context
   * @param resources
   * @param component
   *            TODO
   * @return
   */
  private LinkedHashSet<String> getUrisSet(FacesContext context,
      InternetResource[] resources, UIComponent component) {
    if (null != resources) {
      LinkedHashSet<String> uris = new LinkedHashSet<String>(); // Collections.singleton(ajaxScript.getUri(context,
      // null));
      for (int i = 0; i < resources.length; i++) {
        InternetResource resource = resources[i];
        uris.add(resource.getUri(context, component));
      }
      return uris;
    }
    return null;
  }

  /*
   * (non-Javadoc)
   *
   * @see org.ajax4jsf.renderkit.RendererBase#preEncodeBegin(javax.faces.context.FacesContext,
   *      javax.faces.component.UIComponent)
   */
//  protected void preEncodeBegin(FacesContext context, UIComponent component)
//      throws IOException {
//    if ((null == context.getExternalContext().getRequestMap().get(
//        BaseFilter.RESPONSE_WRAPPER_ATTRIBUTE))
//    /* && (!AjaxRendererUtils.isAjaxRequest(context)) */) {
//      // Filter not used - encode scripts and CSS before component.
//      ExternalContext externalContext = context.getExternalContext();
//      String scriptStrategy = externalContext
//          .getInitParameter(InternetResourceBuilder.LOAD_SCRIPT_STRATEGY_PARAM);
//      if (null == scriptStrategy || !InternetResourceBuilder.LOAD_NONE.equals(scriptStrategy)) {
//          encodeResourcesArray(context, component, getScripts());
//      }
//      String styleStrategy = externalContext
//          .getInitParameter(InternetResourceBuilder.LOAD_STYLE_STRATEGY_PARAM);
//      if (null != styleStrategy || !InternetResourceBuilder.LOAD_NONE.equals(styleStrategy)) {
//          encodeResourcesArray(context, component, getStyles());
//      }
//    }
//  }

  /**
   * @param context
   * @param component
   * @param resources
   * @throws IOException
   */
  protected void encodeResourcesArray(FacesContext context,
      UIComponent component, InternetResource[] resources)
      throws IOException {
    if (resources != null) {
      for (int i = 0; i < resources.length; i++) {
        resources[i].encode(context, component);
      }
    }
  }

  public void encodeToHead(FacesContext context, UIComponent component, ProducerContext pc) throws IOException {

    if (pc.isProcessScripts()) {
      encodeResourcesArray(context, component, getScripts());
    }

    if (pc.isProcessStyles()) {
      encodeResourcesArray(context, component, getStyles());
    }
  }
}
TOP

Related Classes of org.ajax4jsf.renderkit.HeaderResourcesRendererBase

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.