/**
* Copyright (C) 2008-2010, Squale Project - http://www.squale.org
*
* This file is part of Squale.
*
* Squale 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 3 of the
* License, or any later version.
*
* Squale 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 General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Squale. If not, see <http://www.gnu.org/licenses/>.
*/
package org.squale.welcom.taglib.aide;
import java.util.Locale;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import org.apache.commons.validator.GenericValidator;
import org.apache.struts.Globals;
import org.apache.struts.util.MessageResources;
import org.apache.struts.util.ResponseUtils;
import org.squale.welcom.outils.Util;
import org.squale.welcom.outils.WelcomConfigurator;
import org.squale.welcom.taglib.button.ButtonTag;
/**
* Generated tag class. Ce tag n'est pas renseign� dans la TLD de welcom
*/
public class AideTag
extends BodyTagSupport
{
/**
*
*/
private static final long serialVersionUID = -6893823684557475693L;
/** property declaration for tag attribute: key. */
private String key;
/** property declaration for tag attribute: name. */
private String name = "aide";
/** property declaration for tag attribute: type. */
private String type = "";
/** property declaration for tag attribute: divOngletName. */
private String divOngletName = "";
/** property declaration for tag attribute: vue. */
private String vue = "";
/** Message resource */
private MessageResources resources;
/** locale */
private Locale locale;
/**
* Constructeur
*/
public AideTag()
{
super();
}
/**
* . This method is called when the JSP engine encounters the start tag, after the attributes are processed.
* Scripting variables (if any) have their values set here.
*
* @return EVAL_BODY_INCLUDE if the JSP engine should evaluate the tag body, otherwise return SKIP_BODY. This method
* is automatically generated. Do not modify this method. Instead, modify the methods that this method
* calls.
* @throws JspException exception pouvant etre levee
*/
public int doStartTag()
throws JspException
{
if ( !Util.isTrue( WelcomConfigurator.getMessage( WelcomConfigurator.AIDE_ACTIVE ) ) )
{
return SKIP_BODY;
}
resources = (MessageResources) pageContext.getServletContext().getAttribute( Globals.MESSAGES_KEY );
// Recupere la locale
locale = (Locale) pageContext.getSession().getAttribute( Globals.LOCALE_KEY );
// Si la locale est nulle alors la force en francais
if ( locale == null )
{
locale = Locale.getDefault();
}
// pageContext.getServletContext().getRealPath(Aide.getUrlAide(key, locale))
StringBuffer results = new StringBuffer();
try
{
writeButton( results );
}
catch ( final AideException ae )
{
results = new StringBuffer();
}
// Publie
ResponseUtils.write( pageContext, results.toString() );
return SKIP_BODY;
}
/**
* Ecrit le boutton
*
* @param results resultat
* @throws AideException probleme sur l'aide
* @throws JspException exception
*/
private void writeButton( StringBuffer results )
throws AideException, JspException
{
if ( type == null )
{
// Genere le tag de l'aide
writeDefaultButton( results );
}
else
{
if ( type.equals( "ongletHiddenHyperlink" ) )
{
// Genere le tag de l'aide
results.append( "<input type=\"" );
results.append( "hidden" );
results.append( "\" name=\"" );
results.append( name );
results.append( "\" value=\"" );
results.append( Aide.getUrlAide( key, locale ) );
results.append( "\">" );
}
else if ( type.equals( "ongletTitreHyperlink" ) )
{
// Genere le tag de l'aide
results.append( "<a styleId=\"lien\" " );
results.append( "href=\"javascript:openHelp(calculeURL(\'" );
results.append( divOngletName );
results.append( "\'));\">" );
results.append( resources.getMessage( locale, "aide" ) );
results.append( "</a>" );
if ( GenericValidator.isBlankOrNull( divOngletName ) )
{
throw new JspException(
"Aide Erreur : Type ongletTitreyperlink doit renseigner le propri�t� 'divOngletName'" );
}
}
else if ( type.equals( "FormHyperlink" ) )
{
// Genere le tag de l'aide
results.append( "<a onclick=\"this.blur()\" class=\"mymenu\" href=\"javascript:openHelp(\'" );
results.append( Aide.getUrlAide( key, locale ) );
results.append( "\');\">" );
results.append( "<img src=\"images/form/fr/bouton_aide.gif\" border=\"0\">" );
results.append( "</a>" );
}
else if ( type.equals( "MenuHyperlink" ) )
{
// Genere le tag de l'aide
final ButtonTag bt = new ButtonTag();
bt.setPageContext( pageContext );
bt.setParent( getParent() );
bt.setName( "aide" );
bt.setOnclick( "javascript:openHelp(\'" + Aide.getUrlAide( key, locale ) + "\')" );
bt.doStartTag();
bt.doEndTag();
}
else if ( type.equals( "MenuHyperlinkOnglet" ) )
{
// Genere le tag de l'aide
final ButtonTag bt = new ButtonTag();
bt.setPageContext( pageContext );
bt.setParent( getParent() );
bt.setName( "aide" );
bt.setOnclick( "javascript:openHelp(calculeURL(\'" + divOngletName + "\'));" );
bt.doStartTag();
bt.doEndTag();
if ( GenericValidator.isBlankOrNull( divOngletName ) )
{
throw new JspException(
"Aide Erreur : Type MenuHyperlinkOnglet doit renseigner le propri�t� 'divOngletName'" );
}
}
else
{
writeDefaultButton( results );
}
}
}
/**
* Bouton par defaut
*
* @param results stringbuffer
* @throws AideException aide
*/
private void writeDefaultButton( StringBuffer results )
throws AideException
{
// Genere le tag de l'aide
results.append( "<a styleId=\"lien\" " );
results.append( "href=\"javascript:openHelp(\'" );
results.append( Aide.getUrlAide( key, locale ) );
results.append( "\');\">" );
results.append( resources.getMessage( locale, "aide" ) );
results.append( "</a>" );
}
/**
* Accesseur
*
* @return la key
*/
public String getKey()
{
return key;
}
/**
* Accesseur
*
* @param value la nouvelle valeur de key
*/
public void setKey( final String value )
{
key = value;
}
/**
* Accesseur
*
* @return le name
*/
public String getName()
{
return name;
}
/**
* Accesseur
*
* @param value la nouvelle valeur de name
*/
public void setName( final String value )
{
name = value;
}
/**
* Gets the type
*
* @return Returns a String
*/
public String getType()
{
return type;
}
/**
* Sets the type
*
* @param pType The type to set
*/
public void setType( final String pType )
{
type = pType;
}
/**
* Gets the divOngletName
*
* @return Returns a String
*/
public String getDivOngletName()
{
return divOngletName;
}
/**
* Sets the divOngletName
*
* @param pDivOngletName The divOngletName to set
*/
public void setDivOngletName( final String pDivOngletName )
{
divOngletName = pDivOngletName;
}
/**
* Gets the vue
*
* @return Returns a String
*/
public String getVue()
{
return vue;
}
/**
* Sets the vue
*
* @param pVue The vue to set
*/
public void setVue( final String pVue )
{
vue = pVue;
}
/**
* @see javax.servlet.jsp.tagext.BodyTagSupport#release()
*/
public void release()
{
super.release();
key = "";
name = "aide";
type = "";
divOngletName = "";
vue = "";
}
}