KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > ext > taglib > TableHead


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2002 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64
65 package com.jcorporate.expresso.ext.taglib;
66
67 import com.jcorporate.expresso.core.i18n.Messages;
68 import com.jcorporate.expresso.ext.struts.taglib.bean.ExMessageTag;
69 import com.jcorporate.expresso.kernel.util.FastStringBuffer;
70
71 import javax.servlet.jsp.JspTagException JavaDoc;
72 import javax.servlet.jsp.JspWriter JavaDoc;
73 import javax.servlet.jsp.PageContext JavaDoc;
74 import javax.servlet.jsp.tagext.Tag JavaDoc;
75 import javax.servlet.jsp.tagext.TagSupport JavaDoc;
76 import java.io.IOException JavaDoc;
77 import java.util.Locale JavaDoc;
78 import java.util.StringTokenizer JavaDoc;
79
80
81 /**
82  * A simple tag to parse apart a pipe-delimited string into a table heading row.
83  * The pipe-delimited string is a convenience used by a number of Expresso controllers
84  * to pass the table headings required for various tables to the view.
85  *
86  * @author Michael Nash
87  */

88 public class TableHead
89         extends TagSupport JavaDoc {
90
91     /**
92      * Values seperated by a pipe - these don't get "translated"
93      */

94     private String JavaDoc value = null;
95
96     /**
97      * Keys into the language file - these are translated for display
98      */

99     private String JavaDoc keys = null;
100
101     public TableHead() {
102         super();
103     }
104
105     public int doStartTag()
106             throws javax.servlet.jsp.JspTagException JavaDoc {
107         Locale JavaDoc l = (Locale JavaDoc) pageContext.getAttribute(Messages.LOCALE_KEY,
108                 PageContext.SESSION_SCOPE);
109
110         if (l == null) {
111             l = Locale.getDefault();
112         }
113
114         boolean translate = false;
115
116         if (keys != null) {
117             value = keys;
118             translate = true;
119         }
120         try {
121             if (value != null) {
122                 FastStringBuffer fsb = FastStringBuffer.getInstance();
123                 try {
124                     JspWriter JavaDoc writer = pageContext.getOut();
125                     StringTokenizer JavaDoc stk = new StringTokenizer JavaDoc(value, "|");
126                     fsb.append("<tr class=\"jc-default\">");
127
128                     while (stk.hasMoreTokens()) {
129                         fsb.append("<th scope=\"col\" class=\"jc-tabletitle\" nowrap>");
130
131                         if (translate) {
132                             fsb.append(getString(l, stk.nextToken()));
133                         } else {
134                             fsb.append(stk.nextToken());
135                         }
136                         fsb.append("</th>");
137                     }
138                     fsb.append("</tr>\n");
139                     writer.print(fsb.toString());
140                 } finally {
141                     fsb.release();
142                 }
143             } else {
144                 throw new JspTagException JavaDoc("No value supplied");
145             }
146         } catch (IOException JavaDoc ie) {
147             throw new JspTagException JavaDoc("IO Exception:" + ie.getMessage());
148         }
149
150         return Tag.SKIP_BODY;
151     }
152
153     public java.lang.String JavaDoc getValue() {
154         return value;
155     }
156
157     public void setValue(java.lang.String JavaDoc newValue) {
158         value = newValue;
159     }
160
161     public java.lang.String JavaDoc getKeys() {
162         return keys;
163     }
164
165     public void setKeys(java.lang.String JavaDoc newKeys) {
166         keys = newKeys;
167     }
168
169     private String JavaDoc getString(Locale JavaDoc l, String JavaDoc key) {
170         String JavaDoc schemaClass = (String JavaDoc) pageContext.getAttribute(ExMessageTag.SCHEMA_KEY,
171                 PageContext.PAGE_SCOPE);
172
173         if (schemaClass != null) {
174             Object JavaDoc[] args = {};
175
176             return Messages.getString(schemaClass, l, key, args);
177         } else {
178             return Messages.getString(l, key);
179         }
180     }
181 } /* TableHead */
182
183
Popular Tags