1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.custom.tree2;
20
21 import java.util.Map;
22
23 import javax.faces.component.UICommand;
24 import javax.faces.component.html.HtmlCommandLink;
25 import javax.faces.context.FacesContext;
26 import javax.faces.el.MethodBinding;
27
28 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
29 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
30 import org.apache.myfaces.component.LibraryLocationAware;
31 import org.apache.myfaces.component.LocationAware;
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 @JSFComponent(
52 name = "t:tree2",
53 clazz = "org.apache.myfaces.custom.tree2.HtmlTree",
54 tagClass = "org.apache.myfaces.custom.tree2.TreeTag",
55 tagHandler = "org.apache.myfaces.custom.tree2.HtmlTreeTagHandler")
56 public abstract class AbstractHtmlTree extends UITreeData
57 implements LocationAware, LibraryLocationAware
58 {
59 public static final String COMPONENT_TYPE = "org.apache.myfaces.HtmlTree2";
60 private static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.HtmlTree2";
61
62 private UICommand _expandControl = null;
63
64
65
66
67
68
69 @JSFProperty(defaultValue = "true")
70 public boolean isClientSideToggle()
71 {
72 return (Boolean) getStateHelper().eval(PropertyKeys.clientSideToggle, true);
73 }
74
75
76
77
78
79
80 public void setClientSideToggle(boolean clientSideToggle)
81 {
82 getStateHelper().put(PropertyKeys.clientSideToggle, clientSideToggle );
83 }
84
85
86
87
88 protected void processNodes(FacesContext context, int processAction, TreeWalker walker)
89 {
90 if (isClientSideToggle()) {
91 walker.setCheckState(false);
92 }
93 super.processNodes(context, processAction, walker);
94 }
95
96
97
98
99 public void setNodeId(String nodeId)
100 {
101 super.setNodeId(nodeId);
102
103 String varNodeToggler = (String) getStateHelper().get(PropertyKeys.varNodeToggler);
104 if (varNodeToggler != null)
105 {
106 Map requestMap = getFacesContext().getExternalContext().getRequestMap();
107 requestMap.put(varNodeToggler, this);
108 }
109 }
110
111
112
113
114
115
116
117
118 public UICommand getExpandControl()
119 {
120 if (_expandControl == null){
121 _expandControl = new HtmlCommandLink();
122 _expandControl.setParent(this);
123 }
124 return _expandControl;
125 }
126
127
128
129
130
131
132 @JSFProperty(literalOnly=true)
133 public String getVarNodeToggler()
134 {
135 return (String) getStateHelper().get(PropertyKeys.varNodeToggler);
136 }
137
138 public void setVarNodeToggler(String varNodeToggler)
139 {
140 getStateHelper().put(PropertyKeys.varNodeToggler, varNodeToggler );
141
142
143 String bindingString = "#{" + varNodeToggler + ".toggleExpanded}";
144 MethodBinding actionBinding = FacesContext.getCurrentInstance().getApplication().createMethodBinding(bindingString, null);
145 getExpandControl().setAction(actionBinding);
146 }
147
148
149
150
151
152
153 @JSFProperty(defaultValue="true")
154 public abstract boolean isShowNav();
155
156
157
158
159
160 @JSFProperty(defaultValue="true")
161 public abstract boolean isShowLines();
162
163
164
165
166
167 @JSFProperty(defaultValue="true")
168 public abstract boolean isShowRootNode();
169
170
171
172
173
174
175 @JSFProperty(defaultValue="true")
176 public abstract boolean isPreserveToggle();
177
178 protected enum PropertyKeys
179 {
180 clientSideToggle
181 , varNodeToggler
182 }
183 }