001: //WebOnSwing - Web Application Framework
002: //Copyright (C) 2003 Fernando Damian Petrola
003: //
004: //This library is free software; you can redistribute it and/or
005: //modify it under the terms of the GNU Lesser General Public
006: //License as published by the Free Software Foundation; either
007: //version 2.1 of the License, or (at your option) any later version.
008: //
009: //This library is distributed in the hope that it will be useful,
010: //but WITHOUT ANY WARRANTY; without even the implied warranty of
011: //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012: //Lesser General Public License for more details.
013: //
014: //You should have received a copy of the GNU Lesser General Public
015: //License along with this library; if not, write to the Free Software
016: //Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
017:
018: package net.ar.webonswing.ui;
019:
020: import java.util.*;
021:
022: import net.ar.webonswing.render.*;
023: import net.ar.webonswing.render.markup.*;
024: import net.ar.webonswing.render.templates.html.*;
025: import net.ar.webonswing.visitor.*;
026: import net.ar.webonswing.wrapping.*;
027:
028: /**
029: * Almacena los resultados de graficacion, tags de identificacion y scripts de un componente dado.
030: *
031: * @author Fernando Damian Petrola
032: */
033: public class RenderingContributionContainer {
034: protected ComponentRenderer theContainerRenderer;
035: protected HashMap theComponentProps;
036:
037: public RenderingContributionContainer(
038: ComponentRenderer aContainerRenderer) {
039: theComponentProps = new HashMap();
040: theContainerRenderer = aContainerRenderer;
041: }
042:
043: /**
044: * Agrega un aporte de graficacion del componente "aComponent".
045: * Estos resultados van a ser utilizados por otro componente o la pagina que lo contiene para
046: * representarlo graficamente; ademas el tag identificador va a ser utilizado para mezclarlo con el tag
047: * encontrado en la plantilla asociada, y los scripts generados serviran para inicializar al componente.
048: *
049: * @param aComponent Componente graficado
050: * @param aContent Resultado de graficacion
051: * @param anIdTag Tag identificador del componente que va a ser mezclado con el tag encontrado en la plantilla
052: * @param anInitScript Scripts de inicializacion del componente
053: */
054: public void doContribution(VisualComponent aComponent,
055: Visitable aContent, Tag anIdTag, String[] anInitScript) {
056: List theProps = new Vector();
057: theProps.add(0, aContent);
058: theProps.add(1, anIdTag);
059: theProps.add(2, anInitScript);
060:
061: theComponentProps.put(aComponent, theProps);
062: }
063:
064: public void doContribution(VisualComponent aComponent,
065: Visitable aContent, Tag anIdTag, String anInitScript) {
066: List theProps = new Vector();
067: theProps.add(0, aContent);
068: theProps.add(1, anIdTag);
069: theProps.add(2, new String[] { anInitScript });
070:
071: theComponentProps.put(aComponent, theProps);
072: }
073:
074: public List getComponentProps(VisualComponent aComponent) {
075: return (List) theComponentProps.get(aComponent);
076: }
077:
078: public void setComponentProps(VisualComponent aComponent, List aList) {
079: theComponentProps.put(aComponent, aList);
080: }
081:
082: public Visitable getComponentRendering(VisualComponent aComponent) {
083: List theProps = (List) theComponentProps.get(aComponent);
084:
085: if (theProps == null)
086: return new HtmlDivsTemplate();
087: else
088: return (Visitable) theProps.get(0);
089: }
090:
091: public Tag getComponentIdTag(VisualComponent aComponent) {
092: return (Tag) ((List) theComponentProps.get(aComponent)).get(1);
093: }
094:
095: public String[] getComponentInitScripts(VisualComponent aComponent) {
096: return (String[]) ((List) theComponentProps.get(aComponent))
097: .get(2);
098: }
099:
100: public ComponentRenderer getContainerRenderer() {
101: return theContainerRenderer;
102: }
103:
104: public void setContainerRenderer(ComponentRenderer aRenderer) {
105: theContainerRenderer = aRenderer;
106: }
107: }
|