/** * 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.renderer; import java.util.HashMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.squale.welcom.outils.Charte; import org.squale.welcom.outils.Util; import org.squale.welcom.outils.WelcomConfigurator; import org.squale.welcom.taglib.button.impl.ButtonRendererv3001; import org.squale.welcom.taglib.button.impl.ButtonSkinv1; import org.squale.welcom.taglib.button.impl.ButtonSkinv2; import org.squale.welcom.taglib.button.impl.ButtonSkinv3; import org.squale.welcom.taglib.canvas.impl.CanvasCenterRendererV2001; import org.squale.welcom.taglib.canvas.impl.CanvasCenterRendererV2002; import org.squale.welcom.taglib.canvas.impl.CanvasCenterRendererV3001; import org.squale.welcom.taglib.canvas.impl.CanvasHeaderRendererV2001; import org.squale.welcom.taglib.canvas.impl.CanvasHeaderRendererV2002; import org.squale.welcom.taglib.canvas.impl.CanvasHeaderRendererV3001; import org.squale.welcom.taglib.canvas.impl.CanvasLeftMenuTagRendererV2001; import org.squale.welcom.taglib.canvas.impl.CanvasLeftMenuTagRendererV2002; import org.squale.welcom.taglib.canvas.impl.CanvasLeftMenuTagRendererV3001; import org.squale.welcom.taglib.canvas.impl.CanvasPopupRendererV2001; import org.squale.welcom.taglib.canvas.impl.CanvasPopupRendererV2002; import org.squale.welcom.taglib.canvas.impl.CanvasPopupRendererV3001; import org.squale.welcom.taglib.canvas.impl.CanvasRendererV2001; import org.squale.welcom.taglib.canvas.impl.CanvasRendererV2002; import org.squale.welcom.taglib.canvas.impl.CanvasRendererV3001; import org.squale.welcom.taglib.formulaire.impl.FormulaireBottomRendererV200X; import org.squale.welcom.taglib.formulaire.impl.FormulaireBottomRendererV3001; import org.squale.welcom.taglib.menu.impl.MenuSkinLight; import org.squale.welcom.taglib.menu.impl.MenuSkinV2; import org.squale.welcom.taglib.menu.impl.MenuSkinV3001; import org.squale.welcom.taglib.onglet.impl.JSOngletRendererV2001; import org.squale.welcom.taglib.onglet.impl.JSOngletRendererV2002; import org.squale.welcom.taglib.onglet.impl.JSOngletRendererV3001; import org.squale.welcom.taglib.progressbar.impl.ProgressbarRendererV2001; import org.squale.welcom.taglib.progressbar.impl.ProgressbarRendererV2002; import org.squale.welcom.taglib.progressbar.impl.ProgressbarRendererV3001; import org.squale.welcom.taglib.table.impl.TableNavigatorRendererV200X; import org.squale.welcom.taglib.table.impl.TableNavigatorRendererV3001; import org.squale.welcom.taglib.table.impl.TableRendererV2001; import org.squale.welcom.taglib.table.impl.TableRendererV2002; import org.squale.welcom.taglib.table.impl.TableRendererV3001; /** * Class fournissant tout les renders * * @author M327837 */ public class RendererFactory { /** logger */ private static Log logger = LogFactory.getLog( RendererFactory.class ); /** Clef du renderer pour le canasHeader */ public final static String CANVAS_HEADER = "canvasheader"; /** Clef du renderer pour le canvasLeft */ public final static String CANVAS_LEFT = "canvasleft"; /** Clef du renderer pour le canvas (body) */ public final static String CANVAS = "canvas"; /** Clef du renderer pour le canvas center */ public final static String CANVAS_CENTER = "canvascenter"; /** Clef du renderer pour le canvas center */ public final static String CANVAS_POPUP = "canvaspopup"; /** Clef du renderer pour le canvas center */ public final static String MENU = "menu"; /** Clef du renderer pour boutons */ public final static String BUTTON = "bouton"; /** Clef du renderer pour la barre de boutons formulaire */ public final static String FORM_BOTTOM_BAR = "formbar"; /** Clef du renderer pour la barre de boutons formulaire */ public final static String TABLE = "table"; /** Clef du renderer pour la barre de boutons formulaire */ public final static String TABLE_NAVIGATOR = "tablenavigator"; /** Clef du renderer pour la barre de boutons formulaire */ public final static String ONGLET = "onlget"; /** Clef du renderer pour la barre de boutons formulaire */ public final static String PROGRESSBAR = "progbar"; /** Map du tous les renderers */ private static HashMap renders = null; /** * Retourne le renderer demand� * * @param renderName nom du renderer * @return le rendere demand� */ public static Object getRenderer( String renderName ) { if ( renders == null ) { init(); } return renders.get( renderName ); } /** * Initialise les renders ... */ private static void init() { logger.info( "initialisation de render des taglibs en fonction de la charte graphique" ); renders = new HashMap(); if ( WelcomConfigurator.getCharte() == Charte.V2_001 ) { renders.put( CANVAS_HEADER, new CanvasHeaderRendererV2001() ); renders.put( CANVAS_LEFT, new CanvasLeftMenuTagRendererV2001() ); renders.put( CANVAS, new CanvasRendererV2001() ); renders.put( CANVAS_CENTER, new CanvasCenterRendererV2001() ); renders.put( CANVAS_POPUP, new CanvasPopupRendererV2001() ); if ( isMenuLight() ) { renders.put( MENU, new MenuSkinLight() ); } else { renders.put( MENU, new MenuSkinV2() ); } renders.put( BUTTON, new ButtonSkinv1() ); renders.put( FORM_BOTTOM_BAR, new FormulaireBottomRendererV200X() ); renders.put( TABLE, new TableRendererV2001() ); renders.put( TABLE_NAVIGATOR, new TableNavigatorRendererV200X() ); renders.put( ONGLET, new JSOngletRendererV2001() ); renders.put( PROGRESSBAR, new ProgressbarRendererV2001() ); } else if ( WelcomConfigurator.getCharte() == Charte.V2_002 ) { renders.put( CANVAS_HEADER, new CanvasHeaderRendererV2002() ); renders.put( CANVAS_LEFT, new CanvasLeftMenuTagRendererV2002() ); renders.put( CANVAS, new CanvasRendererV2002() ); renders.put( CANVAS_CENTER, new CanvasCenterRendererV2002() ); renders.put( CANVAS_POPUP, new CanvasPopupRendererV2002() ); if ( isMenuLight() ) { renders.put( MENU, new MenuSkinLight() ); } else { renders.put( MENU, new MenuSkinV2() ); } if ( isButtonSkinv2() ) { renders.put( BUTTON, new ButtonSkinv2() ); } else { renders.put( BUTTON, new ButtonSkinv3() ); } renders.put( FORM_BOTTOM_BAR, new FormulaireBottomRendererV200X() ); renders.put( TABLE, new TableRendererV2002() ); renders.put( TABLE_NAVIGATOR, new TableNavigatorRendererV200X() ); renders.put( ONGLET, new JSOngletRendererV2002() ); renders.put( PROGRESSBAR, new ProgressbarRendererV2002() ); } else { renders.put( CANVAS_HEADER, new CanvasHeaderRendererV3001() ); renders.put( CANVAS_LEFT, new CanvasLeftMenuTagRendererV3001() ); renders.put( CANVAS, new CanvasRendererV3001() ); renders.put( CANVAS_CENTER, new CanvasCenterRendererV3001() ); renders.put( CANVAS_POPUP, new CanvasPopupRendererV3001() ); renders.put( MENU, new MenuSkinV3001() ); renders.put( BUTTON, new ButtonRendererv3001() ); renders.put( FORM_BOTTOM_BAR, new FormulaireBottomRendererV3001() ); renders.put( TABLE, new TableRendererV3001() ); renders.put( ONGLET, new JSOngletRendererV3001() ); renders.put( TABLE_NAVIGATOR, new TableNavigatorRendererV3001() ); renders.put( PROGRESSBAR, new ProgressbarRendererV3001() ); } } /** * Retourn si c'est un menu light * * @return menu light */ private static boolean isMenuLight() { final String menuKey = WelcomConfigurator.getMessage( WelcomConfigurator.WELCOM_MENU_LIGHT ); return Util.isTrue( menuKey ); } /** * Retourn vrai si les boutons sont charte V2 * * @return vrai si les boutons sont charte V2 */ private static boolean isButtonSkinv2() { final String classButtonSkinName = WelcomConfigurator.getMessage( WelcomConfigurator.CHARTEV2_BOUTON_SKIN ); return ( "org.squale.welcom.taglib.button.ButtonSkinv2".equals( classButtonSkinName ) ); } }