Package com.liferay.faces.bridge.renderkit.primefaces

Source Code of com.liferay.faces.bridge.renderkit.primefaces.HeadRendererPrimeFacesImpl

/**
* Copyright (c) 2000-2014 Liferay, Inc. All rights reserved.
*
* This library 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 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.
*/
package com.liferay.faces.bridge.renderkit.primefaces;

import java.util.ArrayList;
import java.util.List;

import javax.el.ELContext;
import javax.el.ExpressionFactory;
import javax.el.ValueExpression;
import javax.faces.component.UIComponent;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import com.liferay.faces.bridge.component.ResourceComponent;
import com.liferay.faces.bridge.renderkit.html_basic.HeadRendererBridgeImpl;
import com.liferay.faces.util.lang.StringPool;


/**
* This class replaces the PrimeFaces HeadRenderer because it renders a <head>...</head> element to the
* response writer which is forbidden in a portlet environment.
*
* @author  Neil Griffin
*/
public class HeadRendererPrimeFacesImpl extends HeadRendererBridgeImpl {

  // Private Constants
  private static final String PRIMEFACES_THEME_DEFAULT = "aristo";
  private static final String PRIMEFACES_THEME_PARAM = "primefaces.THEME";
  private static final String PRIMEFACES_THEME_NONE = "none";
  private static final String PRIMEFACES_THEME_PREFIX = "primefaces-";
  private static final String PRIMEFACES_THEME_RESOURCE_NAME = "theme.css";

  @Override
  protected List<UIComponent> getFirstResources(FacesContext facesContext, UIComponent uiComponent) {

    List<UIComponent> resources = super.getFirstResources(facesContext, uiComponent);

    // PrimeFaces Theme
    ExternalContext externalContext = facesContext.getExternalContext();
    String primeFacesThemeName = externalContext.getInitParameter(PRIMEFACES_THEME_PARAM);

    if (primeFacesThemeName != null) {
      ELContext elContext = facesContext.getELContext();
      ExpressionFactory expressionFactory = facesContext.getApplication().getExpressionFactory();
      ValueExpression valueExpression = expressionFactory.createValueExpression(elContext, primeFacesThemeName,
          String.class);
      primeFacesThemeName = (String) valueExpression.getValue(elContext);

    }
    else {
      primeFacesThemeName = PRIMEFACES_THEME_DEFAULT;
    }

    if ((primeFacesThemeName != null) && !primeFacesThemeName.equals(PRIMEFACES_THEME_NONE)) {

      if (resources == null) {
        resources = new ArrayList<UIComponent>();
      }

      String resourceLibrary = PRIMEFACES_THEME_PREFIX + primeFacesThemeName;
      ResourceComponent primeFacesStyleSheet = new ResourceComponent(facesContext, PRIMEFACES_THEME_RESOURCE_NAME,
          resourceLibrary, StringPool.HEAD);
      resources.add(primeFacesStyleSheet);
    }

    return resources;
  }
}
TOP

Related Classes of com.liferay.faces.bridge.renderkit.primefaces.HeadRendererPrimeFacesImpl

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.