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.taglib;
20
21 import java.io.IOException;
22
23 import javax.el.ELException;
24 import javax.faces.FacesException;
25 import javax.faces.component.UIComponent;
26 import javax.faces.view.facelets.FaceletContext;
27 import javax.faces.view.facelets.FaceletException;
28 import javax.faces.view.facelets.TagAttribute;
29 import javax.faces.view.facelets.TagConfig;
30 import javax.faces.view.facelets.TagHandler;
31
32 import org.apache.myfaces.custom.tree.HtmlTree;
33 import org.apache.myfaces.custom.tree.event.TreeSelectionListener;
34 import org.apache.myfaces.shared_tomahawk.util.ClassUtils;
35
36
37
38
39
40 public class TreeSelectionListenerTagHandler extends TagHandler
41 {
42
43 private final TagAttribute typeAttr;
44
45 public TreeSelectionListenerTagHandler(TagConfig config)
46 {
47 super(config);
48 typeAttr = getRequiredAttribute("type");
49 }
50
51 public void apply(FaceletContext faceletContext, UIComponent parent)
52 throws IOException, FacesException, FaceletException, ELException
53 {
54 if (parent.getParent() == null)
55 {
56 if (parent instanceof HtmlTree)
57 {
58 String className;
59 if (!typeAttr.isLiteral())
60 {
61 className = typeAttr.getValue();
62 }
63 else
64 {
65 className = typeAttr.getValue(faceletContext);
66 }
67 TreeSelectionListener listener = (TreeSelectionListener) ClassUtils.newInstance(className);
68 ((HtmlTree) parent).addTreeSelectionListener(listener);
69 }
70 else
71 {
72 throw new FacesException(
73 "Component is not HtmlTree children");
74 }
75 }
76 }
77 }