1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.selectOneLanguage;
20
21 import java.io.IOException;
22 import java.util.List;
23 import java.util.Locale;
24 import java.util.Map;
25 import java.util.Set;
26
27 import javax.faces.component.UIComponent;
28 import javax.faces.component.behavior.ClientBehavior;
29 import javax.faces.context.FacesContext;
30 import javax.faces.context.ResponseWriter;
31 import javax.faces.convert.Converter;
32
33 import org.apache.myfaces.renderkit.html.ext.HtmlMenuRenderer;
34 import org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils;
35 import org.apache.myfaces.shared_tomahawk.renderkit.html.HTML;
36 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils;
37 import org.apache.myfaces.shared_tomahawk.renderkit.html.util.ResourceUtils;
38
39
40
41
42
43
44
45
46
47
48 public class SelectOneLanguageRenderer extends HtmlMenuRenderer {
49
50 public void encodeEnd(FacesContext facesContext, UIComponent component)
51 throws IOException
52 {
53 RendererUtils.checkParamValidity(facesContext, component, null);
54
55 SelectOneLanguage selectOneLanguage = (SelectOneLanguage) component;
56 ResponseWriter writer = facesContext.getResponseWriter();
57
58 Map<String, List<ClientBehavior>> behaviors = null;
59 behaviors = selectOneLanguage.getClientBehaviors();
60 if (!behaviors.isEmpty())
61 {
62 ResourceUtils.renderDefaultJsfJsInlineIfNecessary(
63 facesContext, facesContext.getResponseWriter());
64 }
65
66 if(HtmlRendererUtils.isDisplayValueOnly(component))
67 {
68
69 writer.startElement(HTML.SPAN_ELEM, selectOneLanguage);
70 if (!behaviors.isEmpty())
71 {
72 writer.writeAttribute(HTML.ID_ATTR, component.getClientId(facesContext),null);
73 }
74 else
75 {
76 HtmlRendererUtils.writeIdIfNecessary(writer, selectOneLanguage, facesContext);
77 }
78
79 String[] supportedAttributes = {HTML.STYLE_CLASS_ATTR, HTML.STYLE_ATTR};
80 HtmlRendererUtils.renderHTMLAttributes(writer, selectOneLanguage, supportedAttributes);
81
82 String languageCode = selectOneLanguage.getValue().toString();
83 String languageName = new Locale(languageCode).getDisplayLanguage( facesContext.getViewRoot().getLocale() );
84
85 writer.write( languageName );
86
87 writer.endElement(HTML.SPAN_ELEM);
88 return;
89 }
90
91 writer.startElement(HTML.SELECT_ELEM, component);
92 if (!behaviors.isEmpty())
93 {
94 writer.writeAttribute(HTML.ID_ATTR, component.getClientId(facesContext),null);
95 }
96 else
97 {
98 HtmlRendererUtils.writeIdIfNecessary(writer, selectOneLanguage, facesContext);
99 }
100 writer.writeAttribute(HTML.NAME_ATTR, selectOneLanguage.getClientId(facesContext), null);
101
102 List selectItemList = selectOneLanguage.getLanguagesChoicesAsSelectItemList();
103 Converter converter = HtmlRendererUtils.findUIOutputConverterFailSafe(facesContext, selectOneLanguage);
104
105 writer.writeAttribute(HTML.SIZE_ATTR, "1", null);
106
107 if (!behaviors.isEmpty())
108 {
109 HtmlRendererUtils.renderBehaviorizedOnchangeEventHandler(facesContext, writer, selectOneLanguage, behaviors);
110 HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, selectOneLanguage, behaviors);
111 HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchange(facesContext, writer, selectOneLanguage, behaviors);
112 HtmlRendererUtils.renderHTMLAttributes(writer, selectOneLanguage, HTML.SELECT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
113 }
114 else
115 {
116 HtmlRendererUtils.renderHTMLAttributes(writer, selectOneLanguage, HTML.SELECT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED);
117 }
118
119 if ( isDisabled(facesContext, selectOneLanguage) ) {
120 writer.writeAttribute(HTML.DISABLED_ATTR, Boolean.TRUE, null);
121 }
122
123 Set lookupSet = HtmlRendererUtils.getSubmittedOrSelectedValuesAsSet(false, selectOneLanguage, facesContext, converter);
124
125 HtmlRendererUtils.renderSelectOptions(facesContext, selectOneLanguage, converter, lookupSet, selectItemList);
126
127 writer.writeText("", null);
128 writer.endElement(HTML.SELECT_ELEM);
129 }
130 }