View Javadoc

1   /*
2    * $Id: CommandLinkTag.java 471754 2006-11-06 14:55:09Z husted $
3    *
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  package org.apache.struts.faces.taglib;
23  
24  
25  import javax.faces.component.ActionSource;
26  import javax.faces.component.UIComponent;
27  import javax.faces.context.FacesContext;
28  import javax.faces.el.MethodBinding;
29  import javax.faces.event.ActionEvent;
30  
31  
32  /**
33   * <p>Render a <code>CommandLinkComponent</code> inside a
34   * Struts-Faces <code>FormComponent</code>.</p>
35   *
36   * @version $Rev: 471754 $ $Date: 2006-11-06 08:55:09 -0600 (Mon, 06 Nov 2006) $
37   */
38  
39  public class CommandLinkTag extends AbstractFacesTag {
40  
41  
42      // ------------------------------------------------------ Instance Variables
43  
44  
45      private String accesskey = null;
46      private String action = null;
47      private String actionListener = null;
48      private String charset = null;
49      private String dir = null;
50      private String hreflang = null;
51      private String immediate = null;
52      private String lang = null;
53      private String onblur = null;
54      private String onclick = null;
55      private String ondblclick = null;
56      private String onfocus = null;
57      private String onkeydown = null;
58      private String onkeypress = null;
59      private String onkeyup = null;
60      private String onmousedown = null;
61      private String onmousemove = null;
62      private String onmouseout = null;
63      private String onmouseover = null;
64      private String onmouseup = null;
65      private String rel = null;
66      private String rev = null;
67      private String style = null;
68      private String styleClass = null;
69      private String tabindex = null;
70      private String target = null;
71      private String title = null;
72      private String type = null;
73  
74  
75      // ---------------------------------------------------------- Tag Attributes
76  
77  
78      public void setAccesskey(String accesskey) {
79          this.accesskey = accesskey;
80      }
81  
82  
83      public void setAction(String action) {
84          this.action = action;
85      }
86  
87  
88      public void setactionListener(String actionListener) {
89          this.actionListener = actionListener;
90      }
91  
92  
93      public void setCharset(String charset) {
94          this.charset = charset;
95      }
96  
97  
98      public void setDir(String dir) {
99          this.dir = dir;
100     }
101 
102 
103     public void setHreflang(String hreflang) {
104         this.hreflang = hreflang;
105     }
106 
107 
108     public void setImmediate(String immediate) {
109         this.immediate = immediate;
110     }
111 
112 
113     public void setLang(String lang) {
114         this.lang = lang;
115     }
116 
117 
118     public void setOnblur(String onblur) {
119         this.onblur = onblur;
120     }
121 
122 
123     public void setOnclick(String onclick) {
124         this.onclick = onclick;
125     }
126 
127 
128     public void setOndblclick(String ondblclick) {
129         this.ondblclick = ondblclick;
130     }
131 
132 
133     public void setOnfocus(String onfocus) {
134         this.onfocus = onfocus;
135     }
136 
137 
138     public void setOnkeydown(String onkeydown) {
139         this.onkeydown = onkeydown;
140     }
141 
142 
143     public void setOnkeypress(String onkeypress) {
144         this.onkeypress = onkeypress;
145     }
146 
147 
148     public void setOnkeyup(String onkeyup) {
149         this.onkeyup = onkeyup;
150     }
151 
152 
153     public void setOnmousedown(String onmousedown) {
154         this.onmousedown = onmousedown;
155     }
156 
157 
158     public void setOnmousemove(String onmousemove) {
159         this.onmousemove = onmousemove;
160     }
161 
162 
163     public void setOnmouseout(String onmouseout) {
164         this.onmouseout = onmouseout;
165     }
166 
167 
168     public void setOnmouseover(String onmouseover) {
169         this.onmouseover = onmouseover;
170     }
171 
172 
173     public void setOnmouseup(String onmouseup) {
174         this.onmouseup = onmouseup;
175     }
176 
177 
178     public void setRel(String rel) {
179         this.rel = rel;
180     }
181 
182 
183     public void setRev(String rev) {
184         this.rev = rev;
185     }
186 
187 
188     public void setStyle(String style) {
189         this.style = style;
190     }
191 
192 
193     public void setStyleClass(String styleClass) {
194         this.styleClass = styleClass;
195     }
196 
197 
198     public void setTabindex(String tabindex) {
199         this.tabindex = tabindex;
200     }
201 
202 
203     public void setTarget(String target) {
204         this.target = target;
205     }
206 
207 
208     public void setTitle(String title) {
209         this.title = title;
210     }
211 
212 
213     public void setType(String type) {
214         this.type = type;
215     }
216 
217 
218     // ------------------------------------------------------------- Tag Methods
219 
220 
221     /**
222      * <p>Release any allocated resources.</p>
223      */
224     public void release() {
225 
226         super.release();
227         accesskey = null;
228         action = null;
229         actionListener = null;
230         charset = null;
231         dir = null;
232         hreflang = null;
233         immediate = null;
234         lang = null;
235         onblur = null;
236         onclick = null;
237         ondblclick = null;
238         onfocus = null;
239         onkeydown = null;
240         onkeypress = null;
241         onkeyup = null;
242         onmousedown = null;
243         onmousemove = null;
244         onmouseout = null;
245         onmouseover = null;
246         onmouseup = null;
247         rel = null;
248         rev = null;
249         style = null;
250         styleClass = null;
251         tabindex = null;
252         target = null;
253         title = null;
254         type = null;
255 
256     }
257 
258 
259     // ---------------------------------------------------------- Public Methods
260 
261 
262     /**
263      * <p>Return the type of component to be created for this tag.</p>
264      */
265     public String getComponentType() {
266 
267         return ("org.apache.struts.faces.CommandLink");
268 
269     }
270 
271 
272     /**
273      * <p>Return the <code>rendererType</code> to be used for rendering
274      * our component.</p>
275      */
276     public String getRendererType() {
277 
278         return ("org.apache.struts.faces.CommandLink");
279 
280     }
281 
282 
283     // ------------------------------------------------------- Protected Methods
284 
285 
286     /**
287      * <p>Override attributes set on this tag instance.</p>
288      *
289      * @param component Component whose attributes should be overridden
290      */
291     protected void setProperties(UIComponent component) {
292 
293         super.setProperties(component);
294         if (action != null) {
295             if (isValueReference(action)) {
296                 MethodBinding mb = FacesContext.getCurrentInstance().
297                     getApplication().createMethodBinding(action, null);
298                 ((ActionSource) component).setAction(mb);
299             } else {
300                 final String outcome = action;
301                 MethodBinding mb = new ConstantMethodBinding(outcome);
302                 ((ActionSource) component).setAction(mb);
303             }
304         }
305         if (actionListener != null) {
306             if (isValueReference(actionListener)) {
307                 Class[] args = {ActionEvent.class};
308                 MethodBinding mb = FacesContext.getCurrentInstance().
309                 getApplication().createMethodBinding(actionListener, args);
310                 ((ActionSource) component).setActionListener(mb);
311             }
312         }
313         setStringAttribute(component, "accesskey", accesskey);
314         setStringAttribute(component, "charset", charset);
315         setStringAttribute(component, "dir", dir);
316         setStringAttribute(component, "hreflang", hreflang);
317         setBooleanAttribute(component, "immediate", immediate);
318         setStringAttribute(component, "lang", lang);
319         setStringAttribute(component, "onblur", onblur);
320         setStringAttribute(component, "onclick", onclick);
321         setStringAttribute(component, "ondblclick", ondblclick);
322         setStringAttribute(component, "onfocus", onfocus);
323         setStringAttribute(component, "onkeydown", onkeydown);
324         setStringAttribute(component, "onkeypress", onkeypress);
325         setStringAttribute(component, "onkeyup", onkeyup);
326         setStringAttribute(component, "onmousedown", onmousedown);
327         setStringAttribute(component, "onmousemove", onmousemove);
328         setStringAttribute(component, "onmouseout", onmouseout);
329         setStringAttribute(component, "onmouseover", onmouseover);
330         setStringAttribute(component, "onmouseup", onmouseup);
331         setStringAttribute(component, "rel", rel);
332         setStringAttribute(component, "rev", rev);
333         setStringAttribute(component, "style", style);
334         setStringAttribute(component, "styleClass", styleClass);
335         setStringAttribute(component, "tabindex", tabindex);
336         setStringAttribute(component, "target", target);
337         setStringAttribute(component, "title", title);
338         setStringAttribute(component, "type", type);
339 
340     }
341 
342 
343 }
344 
345 
346 // Private MethodBinding Implementation To Return A Constant Value
347 
348 class ConstantMethodBinding extends MethodBinding {
349 
350     public ConstantMethodBinding(String outcome) {
351         this.outcome = outcome;
352     }
353 
354     private String outcome = null;
355 
356     public Object invoke(FacesContext context, Object params[]) {
357         return (this.outcome);
358     }
359 
360     public Class getType(FacesContext context) {
361         return (String.class);
362     }
363 
364 
365 }