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.UIViewRoot;
25 import javax.faces.view.facelets.BehaviorConfig;
26 import javax.faces.view.facelets.BehaviorHandler;
27 import javax.faces.view.facelets.FaceletContext;
28
29 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletTag;
30
31
32
33
34
35
36 @JSFFaceletTag(name="t:autoScroll", behaviorClass="org.apache.myfaces.custom.autoscroll.AutoscrollBehavior")
37 public class AutoscrollBehaviorTagHandler extends BehaviorHandler
38 {
39
40 public static final String AUTOSCROLL_TAG_ON_PAGE = "oam.autoscroll.AUTOSCROLL_TAG_ON_PAGE";
41
42 public AutoscrollBehaviorTagHandler(BehaviorConfig config)
43 {
44 super(config);
45 }
46
47 @Override
48 public void apply(FaceletContext ctx, UIComponent parent)
49 throws IOException
50 {
51 super.apply(ctx, parent);
52
53 UIViewRoot root = getViewRoot(ctx, parent);
54
55 if (!root.getAttributes().containsKey(AUTOSCROLL_TAG_ON_PAGE))
56 {
57 root.getAttributes().put(AUTOSCROLL_TAG_ON_PAGE, Boolean.TRUE);
58 }
59 }
60
61 private UIViewRoot getViewRoot(FaceletContext ctx, UIComponent parent)
62 {
63 UIComponent c = parent;
64 do
65 {
66 if (c instanceof UIViewRoot)
67 {
68 return (UIViewRoot) c;
69 }
70 else
71 {
72 c = c.getParent();
73 }
74 } while (c != null);
75
76 return ctx.getFacesContext().getViewRoot();
77 }
78 }