KickJava   Java API By Example, From Geeks To Geeks.

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


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 /*
68  * ExRemoteLayerTag.java
69  *
70  * Copyright 2002, 2002 Yves Henri AMAIZO.
71  * amy_amaizo@compuserve.com
72  */

73
74 import com.jcorporate.expresso.core.misc.StringUtil;
75 import org.apache.struts.taglib.html.LinkTag;
76
77 import javax.servlet.jsp.JspException JavaDoc;
78 import javax.servlet.jsp.tagext.TagSupport JavaDoc;
79
80 /**
81  * Tag for input fields of type "RemoteLayer".
82  *
83  * @author Yves Henri AMAIZO
84  */

85 public class ExRemoteLayerTag extends LinkTag {
86
87     private static String JavaDoc STR_HREF_JS_LAYER = "";
88     private static String JavaDoc STR_JS_LAYER = "%action%%id%('%type%');return false;";
89     private static String JavaDoc SHOW_JS = "showLayer";
90     private static String JavaDoc HIDE_JS = "hideLayer";
91     private static String JavaDoc EXPAND = "EXPAND";
92     private static String JavaDoc COLLAPSE = "COLLAPSE";
93
94     private String JavaDoc node = EXPAND;
95     private String JavaDoc id = "";
96     private String JavaDoc action = SHOW_JS;
97
98
99     /**
100      * Generate the required input tag.
101      *
102      * @throws JspException if a JSP exception has occurred
103      */

104     public int doStartTag() throws JspException JavaDoc {
105         String JavaDoc href = STR_HREF_JS_LAYER;
106         String JavaDoc hrefClick = STR_JS_LAYER;
107
108         if (action.equalsIgnoreCase("SHOW")) {
109             this.action = SHOW_JS;
110         } else {
111             if (action.equalsIgnoreCase("HIDE")) {
112                 this.action = HIDE_JS;
113             } else {
114                 throw new JspException JavaDoc("action must be 'Show' or 'Hide'");
115             }
116         }
117
118         hrefClick += StringUtil.notNull(getOnclick());
119         hrefClick = StringUtil.replaceString(hrefClick, "%id%", id);
120         hrefClick = StringUtil.replaceString(hrefClick, "%action%", action);
121         hrefClick = StringUtil.replaceString(hrefClick, "%type%", node);
122         super.setHref(href);
123         super.setOnclick(hrefClick);
124         Object JavaDoc tagParent = getParent();
125         if (tagParent != null) {
126             if (action.equals(HIDE_JS)) {
127                 if (tagParent.getClass().getName().equals(ExLayerInputTag.class.getName())) {
128                     ExLayerInputTag layerParent = (ExLayerInputTag) tagParent;
129                     layerParent.addLayerToHide(id);
130                 }
131             }
132         }
133         return super.doStartTag();
134     }
135
136     /**
137      * Gets the id
138      *
139      * @return Returns a String
140      */

141     public String JavaDoc getId() {
142         return id;
143     }
144
145     /**
146      * Sets the id
147      *
148      * @param id The id to set
149      */

150     public void setId(String JavaDoc id) {
151         this.id = id;
152     }
153
154
155     /**
156      * Gets the action
157      *
158      * @return Returns a String
159      */

160     public String JavaDoc getAction() {
161         return action;
162     }
163
164     /**
165      * Sets the action
166      *
167      * @param action The action to set
168      */

169     public void setAction(String JavaDoc action) {
170         this.action = action;
171     }
172
173
174     private TagSupport JavaDoc getAncestor(String JavaDoc className)
175             throws JspException JavaDoc {
176         Class JavaDoc klass = null;
177
178         try {
179             klass = Class.forName(className);
180         } catch (ClassNotFoundException JavaDoc ex) {
181             throw new JspException JavaDoc(ex.getMessage());
182         }
183
184         return (TagSupport JavaDoc) findAncestorWithClass(this, klass);
185     }
186
187     /**
188      * Gets the node
189      *
190      * @return Returns a String
191      */

192     public String JavaDoc getNode() {
193         return node;
194     }
195
196     /**
197      * Sets the node
198      *
199      * @param node The node to set
200      */

201     public void setNode(String JavaDoc node) throws JspException JavaDoc {
202         if (node.equalsIgnoreCase(EXPAND)) {
203             this.node = EXPAND;
204         } else {
205             if (node.equalsIgnoreCase(COLLAPSE)) {
206                 this.node = COLLAPSE;
207             } else {
208                 throw new JspException JavaDoc("node must be 'collapse' or 'expand'");
209             }
210         }
211     }
212
213 }
214
215
Popular Tags