KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > icesoft > faces > component > commandsortheader > CommandSortHeaderRenderer


1 /*
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * "The contents of this file are subject to the Mozilla Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
11  * License for the specific language governing rights and limitations under
12  * the License.
13  *
14  * The Original Code is ICEfaces 1.5 open source software code, released
15  * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
16  * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
17  * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
18  *
19  * Contributor(s): _____________________.
20  *
21  * Alternatively, the contents of this file may be used under the terms of
22  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
23  * License), in which case the provisions of the LGPL License are
24  * applicable instead of those above. If you wish to allow use of your
25  * version of this file only under the terms of the LGPL License and not to
26  * allow others to use your version of this file under the MPL, indicate
27  * your decision by deleting the provisions above and replace them with
28  * the notice and other provisions required by the LGPL License. If you do
29  * not delete the provisions above, a recipient may use your version of
30  * this file under either the MPL or the LGPL License."
31  *
32  */

33
34 package com.icesoft.faces.component.commandsortheader;
35
36 import com.icesoft.faces.component.ext.HtmlDataTable;
37 import com.icesoft.faces.component.ext.renderkit.CommandLinkRenderer;
38 import com.icesoft.faces.component.ext.taglib.Util;
39 import com.icesoft.faces.context.DOMContext;
40 import com.icesoft.faces.renderkit.dom_html_basic.HTML;
41 import org.w3c.dom.Element JavaDoc;
42 import org.w3c.dom.Node JavaDoc;
43
44 import javax.faces.component.UIComponent;
45 import javax.faces.context.FacesContext;
46 import java.io.IOException JavaDoc;
47
48 public class CommandSortHeaderRenderer extends CommandLinkRenderer {
49     
50     /*
51      * (non-Javadoc)
52      * @see javax.faces.render.Renderer#encodeEnd(javax.faces.context.FacesContext, javax.faces.component.UIComponent)
53      */

54     public void encodeEnd(FacesContext facesContext, UIComponent uiComponent)
55             throws IOException JavaDoc {
56         validateParameters(facesContext, uiComponent, null);
57         //Render if user is in given role
58
if (Util.isEnabledOnUserRole(uiComponent)) {
59             CommandSortHeader sortHeader = (CommandSortHeader) uiComponent;
60             HtmlDataTable dataTable = sortHeader.findParentDataTable();
61
62             Node JavaDoc child = null;
63             DOMContext domContext =
64                     DOMContext.getDOMContext(facesContext, uiComponent);
65             Element JavaDoc root = (Element JavaDoc) domContext.getRootNode();
66             String JavaDoc headerClass = sortHeader.getStyleClass();
67             if (headerClass != null) {
68                 root.setAttribute(HTML.CLASS_ATTR, headerClass);
69             }
70             if (sortHeader.isArrow() &&
71                 sortHeader.getColumnName().equals(dataTable.getSortColumn())) {
72                 child = root.getFirstChild();
73                 String JavaDoc arrow;
74                 if (dataTable.isSortAscending()) {
75                     arrow = "↑";
76                 } else {
77                     arrow = "↓";
78                 }
79                 if (child != null) {
80                     if (child.getNodeType() == 1) { //span
81
child = child.getFirstChild();
82                     }
83                     child.setNodeValue(child.getNodeValue() + arrow);
84                 }
85             }
86         }
87         super.encodeEnd(facesContext, uiComponent);
88     }
89 }
90
Popular Tags