KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > displaytag > tags > TableFooterTag


1 /**
2  * Licensed under the Artistic License; you may not use this file
3  * except in compliance with the License.
4  * You may obtain a copy of the License at
5  *
6  * http://displaytag.sourceforge.net/license.html
7  *
8  * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
9  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
10  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
11  */

12 package org.displaytag.tags;
13
14 import java.util.List JavaDoc;
15 import java.util.Map JavaDoc;
16
17 import javax.servlet.jsp.JspException JavaDoc;
18 import javax.servlet.jsp.tagext.BodyTagSupport JavaDoc;
19
20 import org.displaytag.exception.TagStructureException;
21 import org.displaytag.properties.MediaTypeEnum;
22 import org.displaytag.util.MediaUtil;
23
24
25 /**
26  * Display a table footer. Html only, not included in export.
27  * @author Fabrizio Giustina
28  * @author rapruitt
29  * @version $Revision: 999 $ ($Author: fgiust $)
30  */

31 public class TableFooterTag extends BodyTagSupport JavaDoc implements MediaUtil.SupportsMedia
32 {
33
34     /**
35      * D1597A17A6.
36      */

37     private static final long serialVersionUID = 899149338534L;
38
39     /**
40      * The media supported attribute.
41      */

42     private List JavaDoc supportedMedia;
43
44     /**
45      * Show the footer as a last table row.
46      */

47     private boolean showAsLastRow;
48
49     /**
50      * @see javax.servlet.jsp.tagext.Tag#doEndTag()
51      */

52     public int doEndTag() throws JspException JavaDoc
53     {
54         TableTag tableTag = (TableTag) findAncestorWithClass(this, TableTag.class);
55
56         if (tableTag == null)
57         {
58             throw new TagStructureException(getClass(), "footer", "table");
59         }
60
61         MediaTypeEnum currentMediaType = (MediaTypeEnum) this.pageContext.findAttribute(TableTag.PAGE_ATTRIBUTE_MEDIA);
62         if (currentMediaType != null && !MediaUtil.availableForMedia(this, currentMediaType))
63         {
64             return SKIP_BODY;
65         }
66
67         if (tableTag.isLastIteration())
68         {
69             if (getBodyContent() != null)
70             {
71                 tableTag.setFooter(getBodyContent().getString());
72             }
73         }
74
75         return EVAL_PAGE;
76     }
77
78     /**
79      * @see javax.servlet.jsp.tagext.Tag#doStartTag()
80      */

81     public int doStartTag() throws JspException JavaDoc
82     {
83         TableTag tableTag = (TableTag) findAncestorWithClass(this, TableTag.class);
84
85         if (tableTag == null)
86         {
87             throw new TagStructureException(getClass(), "footer", "table");
88         }
89
90         MediaTypeEnum currentMediaType = (MediaTypeEnum) this.pageContext.findAttribute(TableTag.PAGE_ATTRIBUTE_MEDIA);
91         if (!MediaUtil.availableForMedia(this, currentMediaType))
92         {
93             return SKIP_BODY;
94         }
95
96         // Run the footer only when all of the cells have been populated
97
if (tableTag.isLastIteration())
98         {
99             if (tableTag.getVarTotals() != null)
100             {
101                 Map JavaDoc totals = tableTag.getTotals();
102                 this.pageContext.setAttribute(tableTag.getVarTotals(), totals);
103             }
104             // using int to avoid deprecation error in compilation using j2ee 1.3 (EVAL_BODY_TAG)
105
return 2;
106         }
107
108         return SKIP_BODY;
109     }
110
111     /**
112      * @see org.displaytag.util.MediaUtil.SupportsMedia#setSupportedMedia(java.util.List)
113      */

114     public void setSupportedMedia(List JavaDoc media)
115     {
116         this.supportedMedia = media;
117     }
118
119     /**
120      * @see org.displaytag.util.MediaUtil.SupportsMedia#getSupportedMedia()
121      */

122     public List JavaDoc getSupportedMedia()
123     {
124         return this.supportedMedia;
125     }
126
127     /**
128      * Tag setter.
129      * @param media the space delimited list of supported types
130      */

131     public void setMedia(String JavaDoc media)
132     {
133         MediaUtil.setMedia(this, media);
134     }
135
136     /**
137      * @see javax.servlet.jsp.tagext.Tag#release()
138      */

139     public void release()
140     {
141         this.supportedMedia = null;
142         this.showAsLastRow = false;
143         super.release();
144     }
145
146     /**
147      * Tag setter.
148      * @param showAsLastRow the space delimited list of supported types
149      */

150     public void setShowAsLastRow(boolean showAsLastRow)
151     {
152         this.showAsLastRow = showAsLastRow;
153     }
154 }
Popular Tags