/** * 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.onglet; import java.util.Hashtable; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyTagSupport; import org.apache.struts.util.ResponseUtils; import org.squale.welcom.taglib.renderer.RendererFactory; /** * @author user To change this generated comment edit the template variable "typecomment": * Window>Preferences>Java>Templates. To enable and disable the creation of type comments go to * Window>Preferences>Java>Code Generation. */ public class JSOngletTag extends BodyTagSupport { /** * */ private static final long serialVersionUID = 1470492852260054467L; /** parametre du tag */ protected String styleClass = ""; /** parametre du tag */ protected String name = JSOnglet.DEFAULT_NAME; /** parametre du tag */ protected String bottomValue = ""; /** parametre du tag */ protected String selectedOnglet = null; /** parametre du tag */ protected boolean isFirstOngletSelected = false; /** le JSOnglet */ protected JSOnglet onglets = new JSOnglet(); /** render */ private static IJSOngletRenderer render = (IJSOngletRenderer) RendererFactory.getRenderer( RendererFactory.ONGLET ); /** * @param v la bottomValue */ public void addBottomValue( final String v ) { bottomValue = v; } /** * Ajoute un onglet * * @param o l'onglet a ajouter */ public void addOnglet( final JSOngletItem o ) { if ( onglets == null ) { onglets = new JSOnglet(); onglets.setName( name ); } onglets.addOnglet( o ); } /** * @see javax.servlet.jsp.tagext.Tag#doStartTag() */ public int doStartTag() throws JspException { // r�cup�re l'onglet s�lectionn� dans la session final Hashtable selOnglets = (Hashtable) pageContext.getSession().getAttribute( JSOnglet.SELECTED_TABS ); if ( selOnglets != null ) { selectedOnglet = (String) selOnglets.get( name + ".selectedtab" ); } return EVAL_PAGE; } /** * @see javax.servlet.jsp.tagext.Tag#doEndTag() */ public int doEndTag() throws JspException { if ( onglets == null ) { onglets = new JSOnglet(); onglets.setName( name ); } // v�rifie qu'un onglet est s�lectionn� sinon s�lectionne le premier final String selname = onglets.checkSelected( this ); // v�rifie que l'onglet s�lectionn� est celui enregistr� dans la session. sinon on remplce celui de la session if ( ( selname != null ) && ( selname.equals( selectedOnglet ) == false ) ) { final Hashtable selOnglets = (Hashtable) pageContext.getSession().getAttribute( JSOnglet.SELECTED_TABS ); if ( selOnglets != null ) { selOnglets.put( name + ".selectedtab", selname ); } } // onglets. // Affiche le menu que seulement s'il a des items if ( onglets.hasChild() ) { final String header = doPrintHeader(); final String bodyTitle = doPrintBodyTitle(); ResponseUtils.write( pageContext, header + bodyTitle ); doPrintBodyCorps(); // S'imprime dedans final String footer = doPrintFooter(); ResponseUtils.write( pageContext, footer ); } else { ResponseUtils.write( pageContext, "<!-- Pas d'onglets -->" ); } release(); return EVAL_PAGE; } /** * @return le bodyTitle */ public String doPrintBodyTitle() { final StringBuffer buf = new StringBuffer(); buf.append( "<input type=\"hidden\" name=\"" + name + ".selectedtab\" value=\"\">" ); buf.append( render.drawTitleBar( onglets.doPrintTitle() ) ); return buf.toString(); } /** * appel doPrintCorps de l'onglet * * @throws JspException exception pouvant etre levee */ public void doPrintBodyCorps() throws JspException { onglets.doPrintCorps(); } /** * @return le header */ public String doPrintHeader() { final StringBuffer buf = new StringBuffer(); buf.append( "\t<DIV id=\"" + name + "\">" ); return buf.toString(); } /** * @return le footer */ public String doPrintFooter() { final StringBuffer buf = new StringBuffer(); buf.append( "\t</DIV>" ); buf.append( render.drawTableBottom( bottomValue ) ); // Ajout du codeOnglet en champs Hidden // buf.append("<!-- Fin de la generation des onglets -->\n"); return buf.toString(); } /** * @return name */ public String getName() { return name; } /** * @param string le name */ public void setName( final String string ) { name = string; } /** * @return selectedOnglet */ public String getSelectedOnglet() { return selectedOnglet; } /** * @return isFirstOngletSelected */ public boolean isFirstOngletSelected() { return isFirstOngletSelected; } /** * @param b le isFirstOngletSelected */ public void setFirstOngletSelected( final boolean b ) { isFirstOngletSelected = b; } /** * @see javax.servlet.jsp.tagext.BodyTagSupport#release() */ public void release() { super.release(); styleClass = ""; name = JSOnglet.DEFAULT_NAME; bottomValue = ""; selectedOnglet = null; isFirstOngletSelected = false; onglets = new JSOnglet(); } }