1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.tree.renderkit.html;
20
21 import java.io.IOException;
22 import java.util.Set;
23
24 import javax.faces.FacesException;
25 import javax.faces.component.UIComponent;
26 import javax.faces.component.UISelectMany;
27 import javax.faces.context.FacesContext;
28 import javax.faces.convert.Converter;
29
30 import org.apache.myfaces.custom.tree.HtmlTreeCheckbox;
31 import org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils;
32 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlCheckboxRendererBase;
33
34
35
36
37
38
39
40
41
42 public class HtmlTreeCheckboxRenderer extends HtmlCheckboxRendererBase
43 {
44
45
46
47
48
49 public void encodeEnd(FacesContext context, UIComponent component) throws IOException
50 {
51 HtmlTreeCheckbox checkbox = (HtmlTreeCheckbox) component;
52
53 String forAttr = checkbox.getFor();
54 if (forAttr == null)
55 {
56 throw new IllegalStateException("Mandatory attribute 'for'");
57 }
58
59 UIComponent uiComponent = checkbox.findComponent(forAttr);
60 if (uiComponent == null)
61 {
62 throw new IllegalStateException("Could not find component '" + forAttr
63 + "' (calling findComponent on component '" + checkbox.getClientId(context) + "')");
64 }
65 if (!(uiComponent instanceof UISelectMany))
66 {
67 throw new IllegalStateException("UISelectMany expected");
68 }
69
70 UISelectMany uiSelectMany = (UISelectMany) uiComponent;
71
72 Converter converter;
73 try
74 {
75 converter = RendererUtils.findUISelectManyConverter(context, uiSelectMany);
76 }
77 catch (FacesException e)
78 {
79 converter = null;
80 }
81
82 Set lookupSet = RendererUtils.getSelectedValuesAsSet(context, component, converter, uiSelectMany);
83
84 Object itemValue = checkbox.getItemValue();
85 String itemStrValue = null;
86 if (converter == null)
87 {
88 if (null != itemValue)
89 {
90 itemStrValue = itemValue.toString();
91 }
92 }
93 else
94 {
95 itemStrValue = converter.getAsString(context, uiSelectMany, itemValue);
96 }
97
98 renderCheckbox(context,
99 uiSelectMany,
100 itemStrValue,
101 checkbox.getItemLabel(),
102 isDisabled(context,uiSelectMany),
103 lookupSet.contains(itemStrValue),
104 true);
105 }
106
107
108
109
110
111 protected boolean isDisabled(FacesContext facesContext, UIComponent uiComponent)
112 {
113 return super.isDisabled(facesContext, uiComponent);
114 }
115
116
117
118
119
120 public void decode(FacesContext facesContext, UIComponent uiComponent)
121 {
122 if (uiComponent instanceof HtmlTreeCheckbox)
123 {
124
125 }
126 else
127 {
128 super.decode(facesContext, uiComponent);
129 }
130 }
131 }