1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.suggestajax.tablesuggestajax;
20
21
22 import java.io.IOException;
23 import java.util.ArrayList;
24 import java.util.HashMap;
25 import java.util.List;
26 import java.util.Map;
27
28 import javax.faces.component.UIComponent;
29 import javax.faces.component.UIViewRoot;
30 import javax.faces.context.FacesContext;
31 import javax.faces.context.ResponseWriter;
32
33 import org.apache.myfaces.custom.inputAjax.Listener;
34 import org.apache.myfaces.custom.util.ComponentUtils;
35 import org.apache.myfaces.shared_tomahawk.renderkit.html.HTML;
36
37
38
39
40
41
42
43
44
45
46
47
48
49 public abstract class AbstractHtmlOutputText extends org.apache.myfaces.component.html.ext.HtmlOutputText
50 {
51 public static final String COMPONENT_TYPE = "org.apache.myfaces.HtmlOutputTextFor";
52
53 public AbstractHtmlOutputText()
54 {
55 }
56
57 public void encodeBegin(FacesContext facesContext) throws IOException
58 {
59 super.encodeBegin(facesContext);
60 }
61
62 public void encodeEnd(FacesContext facesContext) throws IOException
63 {
64 ResponseWriter writer = facesContext.getResponseWriter();
65 writer.startElement(HTML.SPAN_ELEM, null);
66 writer.writeAttribute("id", this.getClientId(facesContext), null);
67 super.encodeEnd(facesContext);
68 writer.endElement(HTML.SPAN_ELEM);
69 }
70
71 public boolean getRendersChildren()
72 {
73 return true;
74 }
75
76 public void encodeChildren(FacesContext facesContext) throws IOException
77 {
78 checkForListeners(facesContext, this);
79 super.encodeChildren(facesContext);
80 }
81
82 private void checkForListeners(FacesContext context, UIComponent component)
83 {
84
85 List children = component.getChildren();
86 if(children != null){
87 for (int i=0; i<children.size(); i++)
88 {
89 UIComponent child = (UIComponent) children.get(i);
90 if(child instanceof Listener){
91 Listener listener = (Listener) child;
92 Map rmap = context.getExternalContext().getRequestMap();
93 List listeners = (List) rmap.get(Listener.LISTENER_MAP_ENTRY);
94 if(listeners == null){
95 listeners = new ArrayList();
96 rmap.put(Listener.LISTENER_MAP_ENTRY, listeners);
97 }
98
99 UIViewRoot root = context.getViewRoot();
100 UIComponent ajaxComponent;
101
102 ajaxComponent = ComponentUtils.findComponentById(context, root, listener.getOn());
103 if(ajaxComponent != null){
104
105 Map listenerItem = new HashMap();
106 listenerItem.put("listenOn", ajaxComponent.getClientId(context));
107 listenerItem.put("listenerId", component.getClientId(context));
108 listenerItem.put("action", listener.getAction());
109 listenerItem.put("eventType", listener.getEventType());
110 listeners.add(listenerItem);
111 }
112 }
113 }
114 }
115 }
116
117
118
119
120
121
122 public abstract String getFor();
123
124
125
126
127
128
129
130
131 public abstract String getForValue();
132
133
134
135
136
137
138
139 public abstract String getLabel();
140
141 }