1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.autoscroll;
20
21 import java.io.IOException;
22
23 import javax.faces.component.UIComponent;
24 import javax.faces.component.UIForm;
25 import javax.faces.context.FacesContext;
26 import javax.faces.context.ResponseWriter;
27
28 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
29 import org.apache.myfaces.shared_tomahawk.config.MyfacesConfig;
30 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlFormRendererBase;
31 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRenderer;
32 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRendererUtils;
33
34
35
36
37
38
39
40 @JSFRenderer(renderKitId = "HTML_BASIC",
41 family = "org.apache.myfaces.custom.autoscroll.AutoscrollHiddenField",
42 type = "org.apache.myfaces.custom.autoscroll.AutoscrollHiddenField")
43 public class AutoscrollHiddenFieldRenderer extends HtmlRenderer
44 {
45 private static final String SCROLL_HIDDEN_INPUT = "org.apache.myfaces.SCROLL_HIDDEN_INPUT";
46
47 @Override
48 public void encodeEnd(FacesContext context, UIComponent component)
49 throws IOException
50 {
51
52 super.encodeEnd(context, component);
53
54
55
56
57
58
59 component.popComponentFromEL(context);
60 try
61 {
62 UIComponent form = UIComponent.getCurrentComponent(context);
63
64 if (form instanceof UIForm)
65 {
66 ResponseWriter writer = context.getResponseWriter();
67 if (MyfacesConfig.getCurrentInstance(context.getExternalContext()).isAutoScroll())
68 {
69
70 HtmlFormRendererBase.renderScrollHiddenInputIfNecessary(form, context, writer);
71 }
72 else
73 {
74
75
76
77 HtmlRendererUtils.renderAutoScrollHiddenInput(context, writer);
78 context.getExternalContext().getRequestMap().put(getScrollHiddenInputName(context, form), Boolean.TRUE);
79 }
80 }
81 }
82 finally
83 {
84
85 component.pushComponentToEL(context, component);
86 }
87 }
88
89 private static String getScrollHiddenInputName(FacesContext facesContext, UIComponent form) {
90 StringBuffer buf = new StringBuffer();
91 buf.append(SCROLL_HIDDEN_INPUT);
92 buf.append("_");
93 buf.append(form.getClientId(facesContext));
94 return buf.toString();
95 }
96 }