| 1 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 ; 42 import org.w3c.dom.Node ; 43 44 import javax.faces.component.UIComponent; 45 import javax.faces.context.FacesContext; 46 import java.io.IOException ; 47 48 public class CommandSortHeaderRenderer extends CommandLinkRenderer { 49 50 54 public void encodeEnd(FacesContext facesContext, UIComponent uiComponent) 55 throws IOException { 56 validateParameters(facesContext, uiComponent, null); 57 if (Util.isEnabledOnUserRole(uiComponent)) { 59 CommandSortHeader sortHeader = (CommandSortHeader) uiComponent; 60 HtmlDataTable dataTable = sortHeader.findParentDataTable(); 61 62 Node child = null; 63 DOMContext domContext = 64 DOMContext.getDOMContext(facesContext, uiComponent); 65 Element root = (Element ) domContext.getRootNode(); 66 String 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 arrow; 74 if (dataTable.isSortAscending()) { 75 arrow = "↑"; 76 } else { 77 arrow = "↓"; 78 } 79 if (child != null) { 80 if (child.getNodeType() == 1) { child = child.getFirstChild(); 82 } 83 child.setNodeValue(child.getNodeValue() + arrow); 84 } 85 } 86 } 87 super.encodeEnd(facesContext, uiComponent); 88 } 89 } 90 | Popular Tags |