Author: nbelaevski
Date: 2010-11-18 11:02:06 -0500 (Thu, 18 Nov 2010)
New Revision: 20088
Added:
trunk/examples/iteration-demo/src/main/webapp/images/
trunk/examples/iteration-demo/src/main/webapp/images/leaf.png
trunk/examples/iteration-demo/src/main/webapp/images/minus.png
trunk/examples/iteration-demo/src/main/webapp/images/plus.png
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeNodeState.java
Removed:
trunk/core/impl/src/main/java/org/richfaces/component/util/ViewUtil.java
Modified:
trunk/examples/iteration-demo/src/main/webapp/tree.xhtml
trunk/ui/common/ui/src/main/java/org/richfaces/renderkit/RenderKitUtils.java
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java
trunk/ui/iteration/ui/src/main/java/org/richfaces/component/AbstractTreeNode.java
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeEncoderBase.java
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeNodeRendererBase.java
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
trunk/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/tree.ecss
trunk/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/tree.js
trunk/ui/iteration/ui/src/main/templates/treeNode.template.xml
Log:
https://jira.jboss.org/browse/RF-9715
Deleted: trunk/core/impl/src/main/java/org/richfaces/component/util/ViewUtil.java
===================================================================
--- trunk/core/impl/src/main/java/org/richfaces/component/util/ViewUtil.java 2010-11-18
14:44:10 UTC (rev 20087)
+++ trunk/core/impl/src/main/java/org/richfaces/component/util/ViewUtil.java 2010-11-18
16:02:06 UTC (rev 20088)
@@ -1,53 +0,0 @@
-/**
- * License Agreement.
- *
- * JBoss RichFaces - Ajax4jsf Component Library
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.richfaces.component.util;
-
-import javax.faces.context.FacesContext;
-
-/**
- * @author Nick Belaevski - nbelaevski(a)exadel.com
- * created 19.02.2007
- */
-public final class ViewUtil {
- private ViewUtil() {
- }
-
- public static String getResourceURL(String url) {
- if (null == url) {
- return null;
- }
-
- return ViewUtil.getResourceURL(url, FacesContext.getCurrentInstance());
- }
-
- public static String getResourceURL(String url, FacesContext context) {
- if (null == url) {
- return null;
- }
-
- String value = url;
-
- value = context.getApplication().getViewHandler().getResourceURL(context,
value);
-
- return context.getExternalContext().encodeResourceURL(value);
- }
-}
Added: trunk/examples/iteration-demo/src/main/webapp/images/leaf.png
===================================================================
--- trunk/examples/iteration-demo/src/main/webapp/images/leaf.png
(rev 0)
+++ trunk/examples/iteration-demo/src/main/webapp/images/leaf.png 2010-11-18 16:02:06 UTC
(rev 20088)
@@ -0,0 +1,4 @@
+�PNG
+
+
\ No newline at end of file
Added: trunk/examples/iteration-demo/src/main/webapp/images/minus.png
===================================================================
--- trunk/examples/iteration-demo/src/main/webapp/images/minus.png
(rev 0)
+++ trunk/examples/iteration-demo/src/main/webapp/images/minus.png 2010-11-18 16:02:06 UTC
(rev 20088)
@@ -0,0 +1,4 @@
+�PNG
+
+
\ No newline at end of file
Added: trunk/examples/iteration-demo/src/main/webapp/images/plus.png
===================================================================
--- trunk/examples/iteration-demo/src/main/webapp/images/plus.png
(rev 0)
+++ trunk/examples/iteration-demo/src/main/webapp/images/plus.png 2010-11-18 16:02:06 UTC
(rev 20088)
@@ -0,0 +1,5 @@
+�PNG
+
+
+�<n3�%ϥh�
\ No newline at end of file
Modified: trunk/examples/iteration-demo/src/main/webapp/tree.xhtml
===================================================================
--- trunk/examples/iteration-demo/src/main/webapp/tree.xhtml 2010-11-18 14:44:10 UTC (rev
20087)
+++ trunk/examples/iteration-demo/src/main/webapp/tree.xhtml 2010-11-18 16:02:06 UTC (rev
20088)
@@ -51,6 +51,15 @@
<h:commandLink value="Re-render">
<f:ajax render=":form:tree" execute="@all" />
</h:commandLink>
+
+ <it:tree id="customizedTree" var="node"
value="#{treeBean.rootNodes}"
+ selectionType="#{treeBean.selectionType}"
toggleType="#{treeBean.toggleType}">
+
+ <it:treeNode iconLeaf="/images/leaf.png"
iconExpanded="/images/minus.png" iconCollapsed="/images/plus.png">
+ #{node.data}
+ </it:treeNode>
+ </it:tree>
+
</h:form>
</h:body>
</html>
Modified: trunk/ui/common/ui/src/main/java/org/richfaces/renderkit/RenderKitUtils.java
===================================================================
---
trunk/ui/common/ui/src/main/java/org/richfaces/renderkit/RenderKitUtils.java 2010-11-18
14:44:10 UTC (rev 20087)
+++
trunk/ui/common/ui/src/main/java/org/richfaces/renderkit/RenderKitUtils.java 2010-11-18
16:02:06 UTC (rev 20088)
@@ -699,6 +699,18 @@
return path;
}
+ public static String getResourceURL(String url, FacesContext context) {
+ if (null == url) {
+ return null;
+ }
+
+ String value = url;
+
+ value = context.getApplication().getViewHandler().getResourceURL(context,
value);
+
+ return context.getExternalContext().encodeResourceURL(value);
+ }
+
@SuppressWarnings("serial")
public static final class Attributes extends TreeSet<ComponentAttribute> {
Modified:
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java
===================================================================
---
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java 2010-11-18
14:44:10 UTC (rev 20087)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/CalendarRendererBase.java 2010-11-18
16:02:06 UTC (rev 20088)
@@ -54,7 +54,6 @@
import org.richfaces.component.util.HtmlUtil;
import org.richfaces.component.util.MessageUtil;
import org.richfaces.component.util.SelectUtils;
-import org.richfaces.component.util.ViewUtil;
import org.richfaces.event.CurrentDateChangeEvent;
import org.richfaces.utils.CalendarHelper;
@@ -305,8 +304,8 @@
buttonIcon =
(String)component.getAttributes().get("buttonIconDisabled");
}
- if (buttonIcon != null && buttonIcon.trim().length() != 0) {
- buttonIcon = ViewUtil.getResourceURL(buttonIcon, facesContext);
+ if(buttonIcon != null && buttonIcon.trim().length() != 0) {
+ buttonIcon = RenderKitUtils.getResourceURL(buttonIcon, facesContext);
} else {
buttonIcon = disable ? CALENDAR_ICON_RESOURCE_NAME:
CALENDAR_ICON_RESOURCE_NAME;
buttonIcon = RenderKitUtils.getResourcePath(facesContext,
"org.richfaces.images",buttonIcon);
Modified:
trunk/ui/iteration/ui/src/main/java/org/richfaces/component/AbstractTreeNode.java
===================================================================
---
trunk/ui/iteration/ui/src/main/java/org/richfaces/component/AbstractTreeNode.java 2010-11-18
14:44:10 UTC (rev 20087)
+++
trunk/ui/iteration/ui/src/main/java/org/richfaces/component/AbstractTreeNode.java 2010-11-18
16:02:06 UTC (rev 20088)
@@ -94,6 +94,12 @@
//TODO - move to template
public abstract String getStyleClass();
+ public abstract String getIconLeaf();
+
+ public abstract String getIconExpanded();
+
+ public abstract String getIconCollapsed();
+
protected Boolean getLocalExpandedValue(FacesContext facesContext) {
return (Boolean) getStateHelper().get(PropertyKeys.expanded);
}
Modified:
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeEncoderBase.java
===================================================================
---
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeEncoderBase.java 2010-11-18
14:44:10 UTC (rev 20087)
+++
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeEncoderBase.java 2010-11-18
16:02:06 UTC (rev 20088)
@@ -32,7 +32,6 @@
import org.richfaces.component.AbstractTreeNode;
import org.richfaces.component.TreeRange;
import org.richfaces.component.util.HtmlUtil;
-import org.richfaces.renderkit.TreeRendererBase.NodeState;
import org.richfaces.renderkit.TreeRendererBase.QueuedData;
import com.google.common.base.Predicate;
@@ -41,10 +40,8 @@
abstract class TreeEncoderBase {
- private static final String TREE_NODE_HANDLE_CLASS_ATTRIBUTE =
"__treeNodeHandleClass";
+ static final String TREE_NODE_STATE_ATTRIBUTE = "__treeNodeState";
- private static final String TREE_NODE_ICON_CLASS_ATTRIBUTE =
"__treeNodeIconClass";
-
protected final FacesContext context;
protected final ResponseWriter responseWriter;
@@ -91,7 +88,7 @@
if (!data.isEncoded()) {
tree.setRowKey(context, data.getRowKey());
- writeTreeNodeStartElement(data.isExpanded() ? NodeState.expanded :
NodeState.collapsed, data.isLastNode());
+ writeTreeNodeStartElement(data.isExpanded() ? TreeNodeState.expanded :
TreeNodeState.collapsed, data.isLastNode());
data.setEncoded(true);
}
@@ -110,18 +107,17 @@
QueuedData data = queuedData.removeLast();
if (!data.isEncoded()) {
- NodeState nodeState = iterateChildren ? NodeState.leaf :
NodeState.collapsed;
+ TreeNodeState nodeState = iterateChildren ? TreeNodeState.leaf :
TreeNodeState.collapsed;
writeTreeNodeStartElement(nodeState, data.isLastNode());
}
writeTreeNodeEndElement();
}
- protected void writeTreeNodeStartElement(NodeState nodeState, boolean isLast) throws
IOException {
+ protected void writeTreeNodeStartElement(TreeNodeState nodeState, boolean isLast)
throws IOException {
AbstractTreeNode treeNodeComponent = tree.findTreeNodeComponent();
- context.getAttributes().put(TREE_NODE_HANDLE_CLASS_ATTRIBUTE,
nodeState.getHandleClass());
- context.getAttributes().put(TREE_NODE_ICON_CLASS_ATTRIBUTE,
nodeState.getIconClass());
+ context.getAttributes().put(TREE_NODE_STATE_ATTRIBUTE, nodeState);
responseWriter.startElement(HtmlConstants.DIV_ELEM, tree);
responseWriter.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE,
Modified:
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeNodeRendererBase.java
===================================================================
---
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeNodeRendererBase.java 2010-11-18
14:44:10 UTC (rev 20087)
+++
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeNodeRendererBase.java 2010-11-18
16:02:06 UTC (rev 20088)
@@ -27,11 +27,15 @@
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.PartialViewContext;
+import javax.faces.context.ResponseWriter;
import org.richfaces.component.AbstractTreeNode;
import org.richfaces.component.MetaComponentResolver;
+import org.richfaces.component.SwitchType;
import org.richfaces.event.TreeToggleEvent;
+import com.google.common.base.Strings;
+
/**
* @author Nick Belaevski
*
@@ -77,6 +81,65 @@
} else {
throw new IllegalArgumentException(metaComponentId);
}
+ }
+
+ protected TreeNodeState getNodeState(FacesContext context) {
+ return (TreeNodeState)
context.getAttributes().get(TreeEncoderBase.TREE_NODE_STATE_ATTRIBUTE);
+ }
+
+ protected void encodeDefaultHandle(FacesContext context, UIComponent component,
String styleClass) throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+
+ writer.startElement(HtmlConstants.SPAN_ELEM, component);
+ writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, styleClass, null);
+ writer.endElement(HtmlConstants.SPAN_ELEM);
+ }
+
+ protected void encodeCustomHandle(FacesContext context, UIComponent component, String
styleClass, String iconSource) throws IOException {
+ ResponseWriter writer = context.getResponseWriter();
+
+ writer.startElement(HtmlConstants.IMG_ELEMENT, component);
+ writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, styleClass, null);
+ writer.writeAttribute(HtmlConstants.ALT_ATTRIBUTE, "", null);
+ writer.writeURIAttribute(HtmlConstants.SRC_ATTRIBUTE,
RenderKitUtils.getResourceURL(iconSource, context), null);
+ writer.endElement(HtmlConstants.IMG_ELEMENT);
+ }
+
+
+
+ protected void encodeHandle(FacesContext context, UIComponent component) throws
IOException {
+ TreeNodeState nodeState = getNodeState(context);
+
+ AbstractTreeNode treeNode = (AbstractTreeNode) component;
+
+ if (nodeState.isLeaf()) {
+ String iconLeaf = (String)
treeNode.getAttributes().get("iconLeaf");
+ encodeHandleForNodeState(context, treeNode, nodeState, iconLeaf);
+ } else {
+ String iconExpanded = (String)
treeNode.getAttributes().get("iconExpanded");
+ String iconCollapsed = (String)
treeNode.getAttributes().get("iconCollapsed");
+
+ if (Strings.isNullOrEmpty(iconCollapsed) &&
Strings.isNullOrEmpty(iconExpanded)) {
+ encodeDefaultHandle(context, component,
nodeState.getDefaultHandleClass());
+ } else {
+ SwitchType toggleType = treeNode.findTreeComponent().getToggleType();
+ if (toggleType == SwitchType.client || nodeState ==
TreeNodeState.collapsed) {
+ encodeHandleForNodeState(context, treeNode, TreeNodeState.collapsed,
iconCollapsed);
+ }
+
+ if (toggleType == SwitchType.client || nodeState ==
TreeNodeState.expanded) {
+ encodeHandleForNodeState(context, treeNode, TreeNodeState.expanded,
iconExpanded);
+ }
+ }
+ }
}
+
+ protected void encodeHandleForNodeState(FacesContext context, AbstractTreeNode
treeNode, TreeNodeState nodeState, String cutomIcon) throws IOException {
+ if (Strings.isNullOrEmpty(cutomIcon)) {
+ encodeDefaultHandle(context, treeNode, nodeState.getDefaultHandleClass());
+ } else {
+ encodeCustomHandle(context, treeNode, nodeState.getCustomHandleClass(),
cutomIcon);
+ }
+ }
}
Added: trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeNodeState.java
===================================================================
--- trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeNodeState.java
(rev 0)
+++
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeNodeState.java 2010-11-18
16:02:06 UTC (rev 20088)
@@ -0,0 +1,78 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.richfaces.renderkit;
+
+import org.richfaces.component.util.HtmlUtil;
+
+public enum TreeNodeState {
+ expanded("rf-tr-nd-exp", "rf-trn-hnd-exp", "rf-trn-hnd-exp
rf-trn-hnd-exp-cst", "rf-trn-ico-nd") {
+ @Override
+ public boolean isLeaf() {
+ return false;
+ }
+ },
+ collapsed("rf-tr-nd-colps", "rf-trn-hnd-colps",
"rf-trn-hnd-colps rf-trn-hnd-colps-cst", "rf-trn-ico-nd") {
+ @Override
+ public boolean isLeaf() {
+ return false;
+ }
+ },
+ leaf("rf-tr-nd-lf", "rf-trn-hnd-lf", "rf-trn-hnd-lf
rf-trn-hnd-lf-cst", "rf-trn-ico-lf") {
+ @Override
+ public boolean isLeaf() {
+ return true;
+ }
+ };
+
+ private String nodeClass;
+
+ private String defaultHandleClass;
+
+ private String customHandleClass;
+
+ private String iconClass;
+
+ private TreeNodeState(String nodeClass, String defaultHandleClass, String
customHandleClass, String iconClass) {
+ this.nodeClass = nodeClass;
+ this.defaultHandleClass = HtmlUtil.concatClasses(defaultHandleClass,
"rf-trn-hnd");
+ this.customHandleClass = HtmlUtil.concatClasses(customHandleClass,
"rf-trn-hnd");
+ this.iconClass = iconClass;
+ }
+
+ public abstract boolean isLeaf();
+
+ public String getNodeClass() {
+ return nodeClass;
+ }
+
+ public String getDefaultHandleClass() {
+ return defaultHandleClass;
+ }
+
+ public String getIconClass() {
+ return iconClass;
+ }
+
+ public String getCustomHandleClass() {
+ return customHandleClass;
+ }
+}
\ No newline at end of file
Modified:
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
===================================================================
---
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2010-11-18
14:44:10 UTC (rev 20087)
+++
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2010-11-18
16:02:06 UTC (rev 20088)
@@ -84,37 +84,6 @@
}
}
- enum NodeState {
- expanded("rf-tr-nd-exp", "rf-trn-hnd-exp",
"rf-trn-ico-nd"),
- collapsed("rf-tr-nd-colps", "rf-trn-hnd-colps",
"rf-trn-ico-nd"),
- leaf("rf-tr-nd-lf", "rf-trn-hnd-lf",
"rf-trn-ico-lf");
-
- private String nodeClass;
-
- private String handleClass;
-
- private String iconClass;
-
- private NodeState(String nodeClass, String handleClass, String iconClass) {
- this.nodeClass = nodeClass;
- this.handleClass = handleClass;
- this.iconClass = iconClass;
- }
-
- public String getNodeClass() {
- return nodeClass;
- }
-
- public String getHandleClass() {
- return handleClass;
- }
-
- public String getIconClass() {
- return iconClass;
- }
-
- }
-
static final class QueuedData {
private Object rowKey;
Modified:
trunk/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/tree.ecss
===================================================================
---
trunk/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/tree.ecss 2010-11-18
14:44:10 UTC (rev 20087)
+++
trunk/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/tree.ecss 2010-11-18
16:02:06 UTC (rev 20088)
@@ -66,6 +66,15 @@
background: "url(#{resource['org.richfaces.images:leaf_icon.gif']})
no-repeat center";
}
+.rf-trn-hnd-colps-cst, .rf-trn-hnd-exp-cst {
+ background: none;
+}
+
+.rf-tr-nd-colps > .rf-trn > .rf-trn-hnd-exp,
+.rf-tr-nd-exp > .rf-trn > .rf-trn-hnd-colps {
+ display: none;
+}
+
.rf-tr-nd.rf-tr-nd-colps .rf-tr-nd {
display: none;
}
Modified:
trunk/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/tree.js
===================================================================
---
trunk/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/tree.js 2010-11-18
14:44:10 UTC (rev 20087)
+++
trunk/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/tree.js 2010-11-18
16:02:06 UTC (rev 20088)
@@ -65,8 +65,8 @@
});
},
- __getHandle: function() {
- return this.__rootElt.find(" > .rf-trn:first > .rf-trn-hnd:first");
+ __getHandles: function() {
+ return this.__rootElt.find(" > .rf-trn:first > .rf-trn-hnd");
},
__getContent: function() {
@@ -116,15 +116,15 @@
},
isExpanded: function() {
- return !this.isLeaf() &&
this.__getHandle().hasClass("rf-trn-hnd-exp");
+ return !this.isLeaf() && this.__rootElt.hasClass("rf-tr-nd-exp");
},
isCollapsed: function() {
- return !this.isLeaf() &&
this.__getHandle().hasClass("rf-trn-hnd-colps");
+ return !this.isLeaf() && this.__rootElt.hasClass("rf-tr-nd-colps");
},
isLeaf: function() {
- return this.__getHandle().hasClass("rf-trn-hnd-lf");
+ return this.__rootElt.hasClass("rf-tr-nd-lf");
},
toggle: function() {
@@ -157,7 +157,13 @@
switch (tree.getToggleType()) {
case 'client':
this.__rootElt.addClass(TREE_CLASSES[newState ? 1 :
0]).removeClass(TREE_CLASSES[!newState ? 1 : 0]);
- this.__getHandle().addClass(TREE_HANDLE_CLASSES[newState ? 1 :
0]).removeClass(TREE_HANDLE_CLASSES[!newState ? 1 : 0]);
+
+ var handles = this.__getHandles();
+
+ if (handles.length == 1) {
+ handles.addClass(TREE_HANDLE_CLASSES[newState ? 1 :
0]).removeClass(TREE_HANDLE_CLASSES[!newState ? 1 : 0]);
+ }
+
this.__updateClientToggleStateInput(newState);
break;
Modified: trunk/ui/iteration/ui/src/main/templates/treeNode.template.xml
===================================================================
--- trunk/ui/iteration/ui/src/main/templates/treeNode.template.xml 2010-11-18 14:44:10 UTC
(rev 20087)
+++ trunk/ui/iteration/ui/src/main/templates/treeNode.template.xml 2010-11-18 16:02:06 UTC
(rev 20088)
@@ -16,10 +16,13 @@
</cc:interface>
<cc:implementation>
+ <cdk:object name="nodeState"
value="#{getNodeState(facesContext)}"
type="org.richfaces.renderkit.TreeNodeState" />
+
<div class="#{concatClasses('rf-trn',
component.attributes['styleClass'])}">
- <span class="rf-trn-hnd
#{facesContext.attributes['__treeNodeHandleClass']}" />
+ <cdk:call expression="encodeHandle(facesContext, component)"
/>
+
<span class="rf-trn-cnt">
- <span class="rf-trn-ico
#{facesContext.attributes['__treeNodeIconClass']}" />
+ <span class="rf-trn-ico #{nodeState.iconClass}" />
<span class="rf-trn-lbl">
<cdk:body />
</span>