Package org.jboss.portletbridge.richfaces

Source Code of org.jboss.portletbridge.richfaces.PotrletTemplateCSSRenderer$DummyRenderer

/**
*
*/
package org.jboss.portletbridge.richfaces;

import java.io.IOException;
import java.io.Writer;

import javax.faces.FacesException;
import javax.faces.FactoryFinder;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;
import javax.faces.render.RenderKit;
import javax.faces.render.RenderKitFactory;

import org.ajax4jsf.css.CssCompressor;
import org.ajax4jsf.renderkit.RendererBase;
import org.ajax4jsf.renderkit.compiler.PreparedTemplate;
import org.ajax4jsf.resource.CountingOutputWriter;
import org.ajax4jsf.resource.InternetResource;
import org.ajax4jsf.resource.ResourceContext;
import org.ajax4jsf.resource.TemplateCSSRenderer;

/**
* @author asmirnov
*
*/
public class PotrletTemplateCSSRenderer extends TemplateCSSRenderer {
  private static final class DummyRenderer extends RendererBase {
    protected Class<? extends UIComponent> getComponentClass() {
      return UIComponent.class;
    }
  }
  private static final String COMPRESS_STYLE_PARAMETER = "org.ajax4jsf.COMPRESS_STYLE";

  private static final RendererBase renderer = new DummyRenderer();
  /* (non-Javadoc)
   * @see org.ajax4jsf.resource.BaseResourceRenderer#send(org.ajax4jsf.resource.InternetResource, org.ajax4jsf.resource.ResourceContext)
   */
  public int send(InternetResource base, ResourceContext context) throws IOException {
    PreparedTemplate template = null;
    CountingOutputWriter countingOutputWriter = new CountingOutputWriter();
    template = getTemplate(base, context);
    FacesContext facesContext = FacesContext.getCurrentInstance();
    boolean _CompressStyleOn = !"false".equals(facesContext.getExternalContext()
                 .getInitParameter(COMPRESS_STYLE_PARAMETER));
    Writer writer = context.getWriter();
    int bytesLength;
    if(null != facesContext) {
      // Create responseWriter.
      String defaultRenderKitId = facesContext.getApplication().getDefaultRenderKitId();
      if (null == defaultRenderKitId) {
        defaultRenderKitId = RenderKitFactory.HTML_BASIC_RENDER_KIT;
      }
//      RenderKitFactory renderKitFactory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
//      RenderKit renderKit = renderKitFactory.getRenderKit(facesContext,defaultRenderKitId);
//      // TODO - handle response encoding
//       
//      ResponseWriter responseWriter = renderKit.createResponseWriter(countingOutputWriter,null,"UTF-8");
      TextCssResponseWriter responseWriter = new TextCssResponseWriter(writer);
      facesContext.setResponseWriter(responseWriter);
      responseWriter.startDocument();
     
      // TODO - parameters and mock renderer/component ?
      // for first time, this template only allow skin or faces variables interaction
      template.encode(renderer,facesContext,null);
      responseWriter.endDocument();
      responseWriter.flush();
      responseWriter.close();
     
      if (_CompressStyleOn) {   
            CssCompressor compressor = new CssCompressor(countingOutputWriter.getContent()); // Compressing css document and printing result in response stream
            bytesLength = compressor.compress(writer, -1);
            writer.flush();
            writer.close();
      } else {
            writer.write(countingOutputWriter.getContent().toString())// Write not compressed style content
            bytesLength = countingOutputWriter.getWritten();
            writer.flush();
            writer.close();
      }
     
    } else {
      throw new FacesException("FacesContext for resource from template "+base.getKey()+" is null");
    }
    return bytesLength;
  }

}
TOP

Related Classes of org.jboss.portletbridge.richfaces.PotrletTemplateCSSRenderer$DummyRenderer

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.