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