KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > renderkit > dom_html_basic > RadioRenderer


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.renderkit.dom_html_basic;
35
36 import com.icesoft.faces.context.DOMContext;
37 import org.w3c.dom.Element JavaDoc;
38 import org.w3c.dom.Text JavaDoc;
39
40 import javax.faces.component.UIComponent;
41 import javax.faces.component.UISelectOne;
42 import javax.faces.context.FacesContext;
43 import javax.faces.model.SelectItem;
44 import java.io.IOException JavaDoc;
45 import java.util.HashSet JavaDoc;
46 import java.util.Set JavaDoc;
47
48
49 public class RadioRenderer extends SelectManyCheckboxListRenderer {
50
51     protected void renderOption(FacesContext facesContext,
52                                 UIComponent uiComponent,
53                                 SelectItem selectItem, boolean renderVertically,
54                                 Element JavaDoc rootTR, int counter,
55                                 Object JavaDoc componentValue)
56             throws IOException JavaDoc {
57         UISelectOne uiSelectOne = (UISelectOne) uiComponent;
58         DOMContext domContext =
59                 DOMContext.attachDOMContext(facesContext, uiSelectOne);
60         Element JavaDoc rootTable = (Element JavaDoc) domContext.getRootNode();
61
62         Object JavaDoc submittedValue = uiSelectOne.getSubmittedValue();
63         if (submittedValue == null) {
64             submittedValue = componentValue;
65         }
66         if (renderVertically) {
67             rootTR = domContext.createElement("tr");
68             rootTable.appendChild(rootTR);
69         }
70         String JavaDoc labelClass = null;
71         boolean disabled = false;
72         if (uiSelectOne.getAttributes().get("disabled") != null &&
73             uiSelectOne.getAttributes().get("disabled")
74                     .equals(Boolean.TRUE)) {
75             disabled = true;
76
77         }
78         if (selectItem.isDisabled()) {
79             disabled = true;
80         }
81         labelClass = (String JavaDoc) uiSelectOne.getAttributes().get("styleClass");
82         if (labelClass != null && disabled) {
83             labelClass += "-dis";
84         }
85
86
87         Element JavaDoc td = domContext.createElement("td");
88         rootTR.appendChild(td);
89
90         Element JavaDoc input = domContext.createElement("input");
91         td.appendChild(input);
92         input.setAttribute("type", "radio");
93
94         if (disabled) {
95             input.setAttribute("disabled", "disabled");
96         }
97
98         HashSet JavaDoc excludes = new HashSet JavaDoc();
99         String JavaDoc accesskey =
100                 (String JavaDoc) uiComponent.getAttributes().get("accesskey");
101         if (accesskey != null) {
102             input.setAttribute("accesskey", accesskey);
103             excludes.add("accesskey");
104         }
105
106         Object JavaDoc selectItemValue = selectItem.getValue();
107         
108         if (selectItemValue != null && String.valueOf(selectItemValue).equals(String.valueOf(componentValue))) {
109             input.setAttribute("checked", "checked");
110         } else {
111             input.removeAttribute("checked");
112         }
113
114         input.setAttribute("name", uiSelectOne.getClientId(facesContext));
115         input.setAttribute("id",
116                            uiComponent.getClientId(facesContext) + ":_" +
117                            counter);
118         input.setAttribute("value", (formatComponentValue(facesContext,
119                                                           uiSelectOne,
120                                                           selectItem.getValue())));
121
122         addJavaScript(facesContext, uiSelectOne, input, excludes);
123         // style is rendered on containing table
124
excludes.add("style");
125         excludes.add("readonly");
126         excludes.add("disabled");
127
128         PassThruAttributeRenderer.
129                 renderAttributes(
130                         facesContext, uiSelectOne, getExcludesArray(excludes));
131
132         Element JavaDoc label = domContext.createElement("label");
133         td.appendChild(label);
134
135         if (labelClass != null) {
136             label.setAttribute("class", labelClass);
137         }
138         String JavaDoc itemLabel = selectItem.getLabel();
139         if (itemLabel != null) {
140             Text JavaDoc labelText = domContext.getDocument().createTextNode(itemLabel);
141             label.appendChild(labelText);
142         }
143     }
144
145     protected void addJavaScript(FacesContext facesContext,
146                                  UIComponent uiSelectOne, Element JavaDoc input,
147                                  Set JavaDoc excludes) {
148     }
149 }
Popular Tags