1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.inputAjax;
20
21 import java.io.IOException;
22 import java.util.HashMap;
23 import java.util.Map;
24
25 import javax.faces.component.UIComponent;
26 import javax.faces.context.FacesContext;
27 import javax.faces.context.ResponseWriter;
28 import javax.servlet.http.HttpServletRequest;
29
30 import org.apache.commons.logging.Log;
31 import org.apache.commons.logging.LogFactory;
32 import org.apache.myfaces.renderkit.html.util.AddResource;
33 import org.apache.myfaces.renderkit.html.util.AddResourceFactory;
34 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils;
35 import org.apache.myfaces.custom.ajax.api.AjaxRenderer;
36 import org.apache.myfaces.custom.ajax.util.AjaxRendererUtils;
37 import org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils;
38 import org.apache.myfaces.renderkit.html.ext.HtmlCheckboxRenderer;
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 public class HtmlSelectManyCheckboxAjaxRenderer extends HtmlCheckboxRenderer implements AjaxRenderer
54 {
55 private static final Log log = LogFactory.getLog(HtmlSelectManyCheckboxAjaxRenderer.class);
56 private static final String JAVASCRIPT_ENCODED = "org.apache.myfaces.custom.inputAjax.HtmlSelectManyCheckbox.JAVASCRIPT_ENCODED";
57
58
59
60
61
62
63
64
65
66
67
68 private void encodeJavascript(FacesContext context, UIComponent component) throws IOException
69 {
70
71 HtmlSelectManyCheckboxAjax selectManyCheckbox = (HtmlSelectManyCheckboxAjax) component;
72
73 AddResource addResource = AddResourceFactory.getInstance(context);
74
75 AjaxRendererUtils.addPrototypeScript(context, component, addResource);
76
77 ResponseWriter out = context.getResponseWriter();
78
79 String extraParams =("&checked=\" + el.checked + \"");
80 AjaxRendererUtils.writeAjaxScript(context, out, selectManyCheckbox, extraParams);
81
82 context.getExternalContext().getRequestMap().put(JAVASCRIPT_ENCODED, Boolean.TRUE);
83 }
84
85
86 public void encodeEnd(FacesContext context, UIComponent component) throws IOException
87 {
88 RendererUtils.checkParamValidity(context, component, HtmlSelectManyCheckboxAjax.class);
89
90 if (HtmlRendererUtils.isDisplayValueOnly(component) || isDisabled(context, component))
91 {
92 super.encodeEnd(context, component);
93 return;
94 }
95
96 String clientId = component.getClientId(context);
97
98 HtmlSelectManyCheckboxAjax selectManyCheckbox = (HtmlSelectManyCheckboxAjax) component;
99
100
101 String onClick = selectManyCheckbox.getOnclick();
102 if(onClick == null){
103 onClick = "";
104 }
105
106 onClick = AjaxRendererUtils.JS_MYFACES_NAMESPACE + "ajaxSubmit2(this, '" + clientId + "'); ";
107 selectManyCheckbox.setOnclick(onClick);
108
109 this.encodeJavascript(context, component);
110
111 super.encodeEnd(context, component);
112 AjaxRendererUtils.writeLoadingImage(context, component);
113
114 }
115
116 public void encodeAjax(FacesContext context, UIComponent component) throws IOException
117 {
118 log.debug("encodeAjax in HtmlSelectManyCheckboxAjaxRenderer");
119
120
121 Map extraReturnAttributes = new HashMap();
122
123 extraReturnAttributes.put("checked", context.getExternalContext().getRequestParameterMap().get("checked"));
124 extraReturnAttributes.put("eltype", "checkbox");
125 AjaxRendererUtils.encodeAjax(context, component, extraReturnAttributes);
126
127
128 }
129
130
131
132 }