KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > context > effects > LocalEffectEncoder


1 /*
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * "The contents of this file are subject to the Mozilla Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
11  * License for the specific language governing rights and limitations under
12  * the License.
13  *
14  * The Original Code is ICEfaces 1.5 open source software code, released
15  * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
16  * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
17  * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
18  *
19  * Contributor(s): _____________________.
20  *
21  * Alternatively, the contents of this file may be used under the terms of
22  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
23  * License), in which case the provisions of the LGPL License are
24  * applicable instead of those above. If you wish to allow use of your
25  * version of this file only under the terms of the LGPL License and not to
26  * allow others to use your version of this file under the MPL, indicate
27  * your decision by deleting the provisions above and replace them with
28  * the notice and other provisions required by the LGPL License. If you do
29  * not delete the provisions above, a recipient may use your version of
30  * this file under either the MPL or the LGPL License."
31  *
32  */

33
34 package com.icesoft.faces.context.effects;
35
36 import org.apache.commons.logging.Log;
37 import org.apache.commons.logging.LogFactory;
38 import org.w3c.dom.Element JavaDoc;
39
40 import javax.faces.component.UIComponent;
41 import javax.faces.context.FacesContext;
42 import java.util.Map JavaDoc;
43
44 /**
45  * Encode an effect call to an javascript event
46  */

47 public class LocalEffectEncoder {
48
49     private static final String JavaDoc[] EVENTS = {
50             "click", "dblclick", "mousedown",
51             "mouseup", "mousemove", "mouseover", "mouseout",
52             "change", "reset", "submit",
53             "keypress", "keydown", "keyup"
54     };
55
56     private static String JavaDoc[] ATTRIBUTES = new String JavaDoc[EVENTS.length];
57     private static final String JavaDoc ATTRIBUTE_PREFIX = "on";
58     private static String JavaDoc[] EFFECTS = new String JavaDoc[EVENTS.length];
59     private static final String JavaDoc EFFECT_SUFFIX = "effect";
60
61     static {
62         for (int index = 0; index < EVENTS.length; index++) {
63             ATTRIBUTES[index] = ATTRIBUTE_PREFIX + EVENTS[index];
64             EFFECTS[index] = ATTRIBUTES[index] + EFFECT_SUFFIX;
65         }
66     }
67
68     private static final Log log = LogFactory.getLog(LocalEffectEncoder.class);
69
70
71     public static void encodeLocalEffects(UIComponent comp, Element JavaDoc rootNode,
72                                           FacesContext facesContext) {
73         Map JavaDoc atts = comp.getAttributes();
74         try {
75             for (int i = 0; i < EVENTS.length; i++) {
76                 Effect fx = (Effect) atts.get(EFFECTS[i]);
77                 if (fx == null) {
78                     // in some cases the value binding can be null on the initial render
79
// but contain an effect later. This makes a place holder for that effect
80
// once it arrives.
81
if (comp.getValueBinding(EFFECTS[i]) != null) {
82                         fx = new BlankEffect();
83                     }
84                 }
85
86                 if (fx != null) {
87                     String JavaDoc value = JavascriptContext.applyEffect(fx,
88                                                                  comp.getClientId(
89                                                                          facesContext),
90                                                                  facesContext);
91
92                     String JavaDoc original = (String JavaDoc) atts.get(ATTRIBUTES[i]);
93                     if (original == null) {
94                         original = "";
95                     }
96
97                     rootNode.setAttribute(ATTRIBUTES[i], value + original);
98                 }
99             }
100         } catch (Exception JavaDoc e) {
101
102             if (log.isErrorEnabled()) {
103                 log.error(e.getMessage(), e);
104             }
105         }
106     }
107
108     public static void encodeLocalEffect(String JavaDoc id, Effect fx, String JavaDoc event, FacesContext facesContext){
109         String JavaDoc value = JavascriptContext.applyEffect(fx, id, facesContext);
110         //TODO: refactor so that is dosen't clobber an existing effect
111
String JavaDoc js = "$('" + id + "').on"+event + "=function(){" + value + "};";
112         JavascriptContext.addJavascriptCall(facesContext, js);
113     }
114 }
115
Popular Tags