KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > ext > struts > taglib > html > ExSubmitTag


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.struts.taglib.html;
66
67 import com.jcorporate.expresso.core.controller.ControllerElement;
68 import com.jcorporate.expresso.core.controller.Transition;
69 import com.jcorporate.expresso.core.misc.StringUtil;
70 import com.jcorporate.expresso.ext.struts.taglib.ControllerUtils;
71 import com.jcorporate.expresso.ext.taglib.MessageUtil;
72 import org.apache.struts.taglib.html.Constants;
73 import org.apache.struts.taglib.html.SubmitTag;
74 import org.apache.struts.util.ResponseUtils;
75
76 import javax.servlet.jsp.JspException JavaDoc;
77 import java.util.Hashtable JavaDoc;
78
79
80 /**
81  * Tag for input fields of type "submit".
82  *
83  * @author Craig R. McClanahan
84  */

85 public class ExSubmitTag
86         extends SubmitTag {
87     protected String JavaDoc name = null;
88
89     /* The base Struts tag does not support the "name" attribute here */
90     public String JavaDoc getName() {
91         return (this.name);
92     }
93
94     public void setName(String JavaDoc name) {
95         this.name = name;
96     }
97     // --------------------------------------------------------- Public Methods
98
/**
99      * Process the start of this tag. Write the hidden fields for the parameters for this transition
100      *
101      * @return integer as defined in the standard tag library framework.
102      * @throws JspException if a JSP exception has occurred
103      */

104     public int doStartTag()
105             throws JspException JavaDoc {
106         Transition myTransition = null;
107         String JavaDoc nameToUse = name;
108
109         if (StringUtil.notNull(nameToUse).equals(Constants.BEAN_KEY)) {
110             nameToUse = null;
111         }
112
113         ControllerElement ce = ControllerUtils.findElement(pageContext,
114                 nameToUse,
115                 property);
116
117         if (ce instanceof Transition) {
118             myTransition = (Transition) ce;
119         } else {
120             if (ce == null) {
121                 throw new JspException JavaDoc("Unable to find element: " + nameToUse
122                         + " and property" + property);
123
124             } else {
125                 throw new JspException JavaDoc("Element '" + property + "' in bean '" +
126                         nameToUse +
127                         "' is not a transition element - it is a '" +
128                         ce.getClass().getName() + "'");
129             }
130         }
131
132
133         Hashtable JavaDoc params = myTransition.getParams();
134
135         if (params != null) {
136
137             // Render this element to our writer
138
ResponseUtils.write(pageContext,
139                     myTransition.getHTMLParamString() + "\n");
140         }
141
142         this.text = null;
143
144         //return (EVAL_BODY_TAG);
145
return (EVAL_BODY_BUFFERED);
146     }
147
148     /**
149      * Save the associated label from the body content.
150      *
151      * @return integer as defined in the standard tag library framework.
152      * @throws JspException if a JSP exception has occurred
153      */

154     public int doAfterBody()
155             throws JspException JavaDoc {
156         if (bodyContent != null) {
157             String JavaDoc value = bodyContent.getString().trim();
158
159             if (value.length() > 0) {
160                 text = value;
161             }
162         }
163
164         return (SKIP_BODY);
165     }
166
167     /**
168      * Process the end of this tag.
169      *
170      * @return integer as defined in the standard tag library framework.
171      * @throws JspException if a JSP exception has occurred
172      */

173     public int doEndTag()
174             throws JspException JavaDoc {
175         Transition myTransition = null;
176         String JavaDoc nameToUse = name;
177
178         ControllerElement ce = ControllerUtils.findElement(pageContext,
179                 nameToUse,
180                 property);
181
182         if (ce instanceof Transition) {
183             myTransition = (Transition) ce;
184         } else {
185             throw new JspException JavaDoc("Element '" + property + "' in bean '" +
186                     nameToUse +
187                     "' is not a transition element - it is a '" +
188                     ce.getClass().getName() + "'");
189         }
190
191         // Acquire the label value we will be generating
192
String JavaDoc label = value;
193
194         if ((label == null) && (text != null)) {
195             label = text;
196         }
197         if ((label == null) || (label.length() < 1)) {
198             label = myTransition.getLabel();
199         }
200
201         // Generate an HTML element
202
StringBuffer JavaDoc results = new StringBuffer JavaDoc();
203         results.append("<input type=\"submit\" name=\"");
204         results.append("button_" + myTransition.getName());
205         results.append("\"");
206
207         if (accesskey != null) {
208             results.append(" accesskey=\"");
209             results.append(accesskey);
210             results.append("\"");
211         }
212         if (tabindex != null) {
213             results.append(" tabindex=\"");
214             results.append(tabindex);
215             results.append("\"");
216         }
217
218         results.append(" value=\"");
219         results.append(MessageUtil.getString(pageContext, label));
220         results.append("\"");
221         results.append(prepareEventHandlers());
222         results.append(prepareStyles());
223         results.append(">");
224
225         // Render this element to our writer
226
ResponseUtils.write(pageContext, results.toString());
227
228         // Evaluate the remainder of this page
229
return (EVAL_PAGE);
230     }
231 }
Popular Tags