KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > myfaces > custom > tree > taglib > TreeTag


1 /*
2  * Copyright 2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.myfaces.custom.tree.taglib;
17
18 import org.apache.myfaces.custom.tree.model.DefaultTreeModel;
19 import org.apache.myfaces.custom.tree.model.TreeModel;
20 import org.apache.myfaces.custom.tree.model.TreePath;
21 import org.apache.myfaces.custom.tree.HtmlTree;
22 import org.apache.myfaces.taglib.UIComponentTagBase;
23
24 import javax.faces.component.UIComponent;
25 import javax.faces.context.FacesContext;
26 import javax.faces.el.ValueBinding;
27 import javax.servlet.jsp.JspException JavaDoc;
28
29 /**
30  * <p>
31  * HtmlTree tag.
32  * </p>
33  *
34  * @author <a HREF="mailto:oliver@rossmueller.com">Oliver Rossmueller </a>
35  * @version $Revision: 1.12 $ $Date: 2004/10/13 11:50:58
36  * $ $Log: TreeTag.java,v $
37  * $ Revision 1.12 2005/02/18 17:19:30 matzew
38  * $ added release() to tag clazzes.
39  * $ $ Revision 1.11 2005/02/11 00:54:02
40  * svieujot $ Revert changes commited to the wrong branch. $ $ Revision 1.9
41  * 2004/11/26 12:46:38 oros $ cleanup: removed unused iconChild attribute $ $
42  * Revision 1.8 2004/11/26 12:14:10 oros $ MYFACES-8: applied tree table patch
43  * by David Le Strat $
44  */

45 public class TreeTag extends UIComponentTagBase {
46
47     private String JavaDoc value;
48
49     private String JavaDoc var;
50
51     private String JavaDoc iconLine;
52
53     private String JavaDoc iconNoline;
54
55     private String JavaDoc iconChildFirst;
56
57     private String JavaDoc iconChildMiddle;
58
59     private String JavaDoc iconChildLast;
60
61     private String JavaDoc iconNodeOpen;
62
63     private String JavaDoc iconNodeOpenFirst;
64
65     private String JavaDoc iconNodeOpenMiddle;
66
67     private String JavaDoc iconNodeOpenLast;
68
69     private String JavaDoc iconNodeClose;
70
71     private String JavaDoc iconNodeCloseFirst;
72
73     private String JavaDoc iconNodeCloseMiddle;
74
75     private String JavaDoc iconNodeCloseLast;
76
77     private String JavaDoc styleClass;
78
79     private String JavaDoc rowClasses;
80
81     private String JavaDoc columnClasses;
82
83     private String JavaDoc headerClass;
84
85     private String JavaDoc footerClass;
86
87     private String JavaDoc nodeClass;
88
89     private String JavaDoc selectedNodeClass;
90
91     private String JavaDoc iconClass;
92
93     private boolean expandRoot;
94
95     private long expireListeners = HtmlTree.DEFAULT_EXPIRE_LISTENERS;
96
97     public String JavaDoc getComponentType() {
98         return "org.apache.myfaces.HtmlTree";
99     }
100
101     public String JavaDoc getRendererType() {
102         return "org.apache.myfaces.HtmlTree";
103     }
104
105     public String JavaDoc getValue() {
106         return value;
107     }
108
109     public void setValue(String JavaDoc newValue) {
110         value = newValue;
111     }
112
113     /**
114      * @return Returns the var.
115      */

116     public String JavaDoc getVar() {
117         return var;
118     }
119
120     /**
121      * @param var
122      * The var to set.
123      */

124     public void setVar(String JavaDoc var) {
125         this.var = var;
126     }
127
128     public String JavaDoc getIconLine() {
129         return iconLine;
130     }
131
132     public void setIconLine(String JavaDoc iconLine) {
133         this.iconLine = iconLine;
134     }
135
136     public String JavaDoc getIconNoline() {
137         return iconNoline;
138     }
139
140     public void setIconNoline(String JavaDoc iconNoline) {
141         this.iconNoline = iconNoline;
142     }
143
144     /**
145      * @return Returns the rowClasses.
146      */

147     public String JavaDoc getRowClasses() {
148         return rowClasses;
149     }
150
151     /**
152      * @param rowClasses
153      * The rowClasses to set.
154      */

155     public void setRowClasses(String JavaDoc rowClasses) {
156         this.rowClasses = rowClasses;
157     }
158
159     /**
160      * @return Returns the columnClasses.
161      */

162     public String JavaDoc getColumnClasses() {
163         return columnClasses;
164     }
165
166     /**
167      * @param columnClasses
168      * The columnClasses to set.
169      */

170     public void setColumnClasses(String JavaDoc columnClasses) {
171         this.columnClasses = columnClasses;
172     }
173
174     public String JavaDoc getIconChildFirst() {
175         return iconChildFirst;
176     }
177
178     public void setIconChildFirst(String JavaDoc iconChildFirst) {
179         this.iconChildFirst = iconChildFirst;
180     }
181
182     public String JavaDoc getIconChildMiddle() {
183         return iconChildMiddle;
184     }
185
186     public void setIconChildMiddle(String JavaDoc iconChildMiddle) {
187         this.iconChildMiddle = iconChildMiddle;
188     }
189
190     public String JavaDoc getIconChildLast() {
191         return iconChildLast;
192     }
193
194     public void setIconChildLast(String JavaDoc iconChildLast) {
195         this.iconChildLast = iconChildLast;
196     }
197
198     public String JavaDoc getIconNodeOpen() {
199         return iconNodeOpen;
200     }
201
202     public void setIconNodeOpen(String JavaDoc iconNodeOpen) {
203         this.iconNodeOpen = iconNodeOpen;
204     }
205
206     public String JavaDoc getIconNodeOpenFirst() {
207         return iconNodeOpenFirst;
208     }
209
210     public void setIconNodeOpenFirst(String JavaDoc iconNodeOpenFirst) {
211         this.iconNodeOpenFirst = iconNodeOpenFirst;
212     }
213
214     public String JavaDoc getIconNodeOpenMiddle() {
215         return iconNodeOpenMiddle;
216     }
217
218     public void setIconNodeOpenMiddle(String JavaDoc iconNodeOpenMiddle) {
219         this.iconNodeOpenMiddle = iconNodeOpenMiddle;
220     }
221
222     public String JavaDoc getIconNodeOpenLast() {
223         return iconNodeOpenLast;
224     }
225
226     public void setIconNodeOpenLast(String JavaDoc iconNodeOpenLast) {
227         this.iconNodeOpenLast = iconNodeOpenLast;
228     }
229
230     public String JavaDoc getIconNodeClose() {
231         return iconNodeClose;
232     }
233
234     public void setIconNodeClose(String JavaDoc iconNodeClose) {
235         this.iconNodeClose = iconNodeClose;
236     }
237
238     public String JavaDoc getIconNodeCloseFirst() {
239         return iconNodeCloseFirst;
240     }
241
242     public void setIconNodeCloseFirst(String JavaDoc iconNodeCloseFirst) {
243         this.iconNodeCloseFirst = iconNodeCloseFirst;
244     }
245
246     public String JavaDoc getIconNodeCloseMiddle() {
247         return iconNodeCloseMiddle;
248     }
249
250     public void setIconNodeCloseMiddle(String JavaDoc iconNodeCloseMiddle) {
251         this.iconNodeCloseMiddle = iconNodeCloseMiddle;
252     }
253
254     public String JavaDoc getIconNodeCloseLast() {
255         return iconNodeCloseLast;
256     }
257
258     public void setIconNodeCloseLast(String JavaDoc iconNodeCloseLast) {
259         this.iconNodeCloseLast = iconNodeCloseLast;
260     }
261
262     public String JavaDoc getStyleClass() {
263         return styleClass;
264     }
265
266     public void setStyleClass(String JavaDoc styleClass) {
267         this.styleClass = styleClass;
268     }
269
270     public String JavaDoc getNodeClass() {
271         return nodeClass;
272     }
273
274     public void setNodeClass(String JavaDoc nodeClass) {
275         this.nodeClass = nodeClass;
276     }
277
278     public String JavaDoc getSelectedNodeClass() {
279         return selectedNodeClass;
280     }
281
282     public void setSelectedNodeClass(String JavaDoc selectedNodeClass) {
283         this.selectedNodeClass = selectedNodeClass;
284     }
285
286     public String JavaDoc getIconClass() {
287         return iconClass;
288     }
289
290     public void setIconClass(String JavaDoc iconClass) {
291         this.iconClass = iconClass;
292     }
293
294     /**
295      * @return Returns the footerClass.
296      */

297     public String JavaDoc getFooterClass() {
298         return footerClass;
299     }
300
301     /**
302      * @param footerClass
303      * The footerClass to set.
304      */

305     public void setFooterClass(String JavaDoc footerClass) {
306         this.footerClass = footerClass;
307     }
308
309     /**
310      * @return Returns the headerClass.
311      */

312     public String JavaDoc getHeaderClass() {
313         return headerClass;
314     }
315
316     /**
317      * @param headerClass
318      * The headerClass to set.
319      */

320     public void setHeaderClass(String JavaDoc headerClass) {
321         this.headerClass = headerClass;
322     }
323
324     public boolean isExpandRoot() {
325         return expandRoot;
326     }
327
328     public void setExpandRoot(boolean expandRoot) {
329         this.expandRoot = expandRoot;
330     }
331
332     public long getExpireListeners() {
333         return expireListeners;
334     }
335
336     public void setExpireListeners(long expireListeners) {
337         this.expireListeners = expireListeners;
338     }
339
340     /**
341      * Obtain tree model or create a default model.
342      */

343     public int doStartTag() throws JspException JavaDoc {
344         FacesContext context = FacesContext.getCurrentInstance();
345
346         if (value != null) {
347             ValueBinding valueBinding = context.getApplication()
348                     .createValueBinding(value);
349             TreeModel treeModel = (TreeModel) (valueBinding.getValue(context));
350
351             if (treeModel == null) {
352                 // create default model
353
treeModel = new DefaultTreeModel();
354                 valueBinding.setValue(context, treeModel);
355             }
356         }
357         int answer = super.doStartTag();
358         HtmlTree tree = (HtmlTree) getComponentInstance();
359
360         if (getCreated() && expandRoot) {
361             // component was created, so expand the root node
362
TreeModel model = tree.getModel(context);
363
364             if (model != null) {
365                 tree.expandPath(new TreePath(new Object JavaDoc[] { model.getRoot() }),
366                         context);
367             }
368         }
369
370         tree.addToModelListeners();
371         return answer;
372     }
373
374     public void release() {
375         super.release();
376         value = null;
377         var = null;
378         iconLine = null;
379         iconNoline = null;
380         iconChildFirst = null;
381         iconChildMiddle = null;
382         iconChildLast = null;
383         iconNodeOpen = null;
384         iconNodeOpenFirst = null;
385         iconNodeOpenMiddle = null;
386         iconNodeOpenLast = null;
387         iconNodeClose = null;
388         iconNodeCloseFirst = null;
389         iconNodeCloseMiddle = null;
390         iconNodeCloseLast = null;
391         styleClass = null;
392         rowClasses = null;
393         columnClasses = null;
394         headerClass = null;
395         footerClass = null;
396         nodeClass = null;
397         selectedNodeClass = null;
398         iconClass = null;
399         expandRoot = false;
400         expireListeners = HtmlTree.DEFAULT_EXPIRE_LISTENERS;
401     }
402
403     /**
404      * Applies attributes to the tree component
405      */

406     protected void setProperties(UIComponent component) {
407         super.setProperties(component);
408         FacesContext context = FacesContext.getCurrentInstance();
409
410         if (value != null) {
411             if (isValueReference(value)) {
412                 ValueBinding binding = context.getApplication()
413                         .createValueBinding(value);
414                 component.setValueBinding("model", binding);
415             }
416         } else {
417             ValueBinding binding = component.getValueBinding("model");
418             if (binding == null) {
419                 binding = context.getApplication().createValueBinding(
420                         "#{sessionScope.tree}");
421             }
422             component.setValueBinding("model", binding);
423         }
424
425         setStringProperty(component, "var", var);
426         setStringProperty(component, "iconLine", iconLine);
427         setStringProperty(component, "iconNoline", iconNoline);
428         setStringProperty(component, "iconChildFirst", iconChildFirst);
429         setStringProperty(component, "iconChildMiddle", iconChildMiddle);
430         setStringProperty(component, "iconChildLast", iconChildLast);
431         setStringProperty(component, "iconNodeOpen", iconNodeOpen);
432         setStringProperty(component, "iconNodeOpenFirst", iconNodeOpenFirst);
433         setStringProperty(component, "iconNodeOpenMiddle", iconNodeOpenMiddle);
434         setStringProperty(component, "iconNodeOpenLast", iconNodeOpenLast);
435         setStringProperty(component, "iconNodeClose", iconNodeClose);
436         setStringProperty(component, "iconNodeCloseFirst", iconNodeCloseFirst);
437         setStringProperty(component, "iconNodeCloseMiddle", iconNodeCloseMiddle);
438         setStringProperty(component, "iconNodeCloseLast", iconNodeCloseLast);
439         setStringProperty(component, "styleClass", styleClass);
440         setStringProperty(component, "rowClasses", rowClasses);
441         setStringProperty(component, "columnClasses", columnClasses);
442         setStringProperty(component, "headerClass", headerClass);
443         setStringProperty(component, "footerClass", footerClass);
444         setStringProperty(component, "nodeClass", nodeClass);
445         setStringProperty(component, "selectedNodeClass", selectedNodeClass);
446         setStringProperty(component, "iconClass", iconClass);
447         ((HtmlTree) component).setExpireListeners(expireListeners);
448     }
449 }
Popular Tags