[richfaces-svn-commits] JBoss Rich Faces SVN: r2488 - in trunk: samples/tree-demo/src/main/java/org/richfaces and 9 other directories.
richfaces-svn-commits at lists.jboss.org
richfaces-svn-commits at lists.jboss.org
Fri Aug 24 15:13:38 EDT 2007
Author: nbelaevski
Date: 2007-08-24 15:13:37 -0400 (Fri, 24 Aug 2007)
New Revision: 2488
Modified:
trunk/framework/api/src/main/java/org/richfaces/event/AjaxSelectedEvent.java
trunk/framework/api/src/main/java/org/richfaces/event/NodeSelectedEvent.java
trunk/samples/tree-demo/src/main/java/org/richfaces/Bean.java
trunk/samples/tree-demo/src/main/webapp/pages/index.jsp
trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java
trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeDataModelEventNavigator.java
trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/css/tree.xcss
trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item.js
trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js
trunk/ui/tree/src/main/templates/htmlTree.jspx
trunk/ui/tree/src/main/templates/htmlTreeNode.jspx
trunk/ui/tree/src/test/java/org/richfaces/component/TreeComponentTest.java
trunk/ui/tree/src/test/java/org/richfaces/component/events/TreeEventsListenersTest.java
trunk/ui/tree/src/test/java/org/richfaces/component/events/TreeEventsTest.java
trunk/ui/tree/src/test/java/org/richfaces/renderkit/TreeRowKeyComparatorTest.java
Log:
http://jira.jboss.com/jira/browse/RF-642
Possibility to update ambigious node by AJAX added, demo updated
Modified: trunk/framework/api/src/main/java/org/richfaces/event/AjaxSelectedEvent.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/event/AjaxSelectedEvent.java 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/framework/api/src/main/java/org/richfaces/event/AjaxSelectedEvent.java 2007-08-24 19:13:37 UTC (rev 2488)
@@ -23,6 +23,8 @@
import javax.faces.component.UIComponent;
+import org.richfaces.model.TreeRowKey;
+
/**
* @author Konstantin Mishin
*
@@ -34,8 +36,8 @@
*/
private static final long serialVersionUID = 1156974665865521208L;
- public AjaxSelectedEvent(UIComponent component) {
- super(component);
+ public AjaxSelectedEvent(UIComponent component, TreeRowKey oldSelection) {
+ super(component, oldSelection);
}
}
Modified: trunk/framework/api/src/main/java/org/richfaces/event/NodeSelectedEvent.java
===================================================================
--- trunk/framework/api/src/main/java/org/richfaces/event/NodeSelectedEvent.java 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/framework/api/src/main/java/org/richfaces/event/NodeSelectedEvent.java 2007-08-24 19:13:37 UTC (rev 2488)
@@ -25,6 +25,8 @@
import javax.faces.event.FacesEvent;
import javax.faces.event.FacesListener;
+import org.richfaces.model.TreeRowKey;
+
/**
* @author Nick Belaevski - nbelaevski at exadel.com
* created 27.11.2006
@@ -32,8 +34,12 @@
*/
public class NodeSelectedEvent extends FacesEvent {
- public NodeSelectedEvent(UIComponent component) {
+ private TreeRowKey oldSelection;
+
+ public NodeSelectedEvent(UIComponent component, TreeRowKey oldSelection) {
super(component);
+
+ this.oldSelection = oldSelection;
}
/**
@@ -56,4 +62,8 @@
public void processListener(FacesListener listener) {
((NodeSelectedListener) listener).processSelection(this);
}
+
+ public TreeRowKey getOldSelection() {
+ return oldSelection;
+ }
}
Modified: trunk/samples/tree-demo/src/main/java/org/richfaces/Bean.java
===================================================================
--- trunk/samples/tree-demo/src/main/java/org/richfaces/Bean.java 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/samples/tree-demo/src/main/java/org/richfaces/Bean.java 2007-08-24 19:13:37 UTC (rev 2488)
@@ -85,6 +85,8 @@
private int counter = 0;
+ private int counter1 = 0;
+
public String getIcon() {
return icon;
}
@@ -187,14 +189,14 @@
public void onSelect(NodeSelectedEvent event) {
System.out.println("Node selected: " + getTree(event).getRowKey());
UITree tree = getTree(event);
- Set keys = tree.getAjaxKeys();
- if (keys == null) {
- keys = new HashSet();
- tree.setAjaxKeys(keys);
- }
+// Set keys = tree.getAjaxKeys();
+// if (keys == null) {
+// keys = new HashSet();
+// tree.setAjaxKeys(keys);
+// }
- keys.add(tree.getRowKey());
- keys.add(new ListRowKey());
+ //keys.add(tree.getRowKey());
+ //keys.add(new ListRowKey());
if (getTree(event).getTreeNode()!=null) {
selectedNode = getTree(event).getTreeNode();
@@ -202,6 +204,17 @@
}
}
+ public boolean getReRenderValue() {
+ return false;
+ }
+
+ public void setReRenderValue(boolean value) {
+ if (value) {
+ Set set = tree.getOrCreateDetachableRowKeys();
+ set.add(tree.getRowKey());
+ }
+ }
+
public void onSelectInc(NodeSelectedEvent event) {
counter ++;
@@ -439,4 +452,13 @@
break;
}
}
+
+ public int getCounter1() {
+ return counter1;
+ }
+
+ public void incCounter1() {
+ tree.setAjaxKeys(null);
+ counter1++;
+ }
}
\ No newline at end of file
Modified: trunk/samples/tree-demo/src/main/webapp/pages/index.jsp
===================================================================
--- trunk/samples/tree-demo/src/main/webapp/pages/index.jsp 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/samples/tree-demo/src/main/webapp/pages/index.jsp 2007-08-24 19:13:37 UTC (rev 2488)
@@ -1,5 +1,5 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
+<!-- DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd"-->
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
@@ -157,6 +157,8 @@
<rich:treeNode ondrop="blinkElement(this.getElement())" type="input" dropListener="#{bean.processDrop}" oncollapse="Element.removeClassName(event['treeItem'].getElement(), 'colored')" onexpand="Element.addClassName(event['treeItem'].getElement(), 'colored')">
<h:outputText value="#{data} : " />
+ <h:outputText value="#{bean.counter1} : " />
+ <h:selectBooleanCheckbox value="#{bean.reRenderValue}" />
<h:inputText value="#{data.name}" required="true" styleClass="inputs">
</h:inputText>
@@ -168,6 +170,8 @@
</rich:treeNode>
</rich:tree>
+ <a4j:commandButton value="Increase counter" action="#{bean.incCounter1}" />
+
<h:outputText value="Enter path to expand, eg. [webApp_:id__1 , webApp_:id__1:7 ]:" />
<h:inputText value="#{bean.pathToExpand}">
<a4j:support event="onchange" reRender="tree" action="#{bean.expandNode}"/>
Modified: trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/main/java/org/richfaces/component/UITree.java 2007-08-24 19:13:37 UTC (rev 2488)
@@ -22,8 +22,10 @@
package org.richfaces.component;
import java.io.IOException;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
+import java.util.Set;
import javax.faces.application.Application;
import javax.faces.component.NamingContainer;
@@ -107,6 +109,8 @@
private UITreeNode defaultFacet;
+ private Set detachableRowKeys;
+
public UITree() {
super();
@@ -395,7 +399,7 @@
TreeState state = (TreeState) getComponentState();
if (!state.isSelected(null)) {
- new NodeSelectedEvent(this).queue();
+ new NodeSelectedEvent(this, state.getSelectedNode()).queue();
}
}
@@ -814,6 +818,22 @@
return null;
}
+
+
+ public Set getDetachableRowKeys() {
+ return detachableRowKeys;
+ }
+
+ public void resetDetachableRowKeys() {
+ detachableRowKeys = null;
+ }
+
+ public Set getOrCreateDetachableRowKeys() {
+ if (detachableRowKeys == null) {
+ detachableRowKeys = new HashSet();
+ }
+ return detachableRowKeys;
+ }
}
Modified: trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/main/java/org/richfaces/renderkit/NodeRendererBase.java 2007-08-24 19:13:37 UTC (rev 2488)
@@ -249,11 +249,10 @@
UITreeNode node = (UITreeNode) component;
UITree tree = node.getUITree();
-
+ TreeRowKey key = (TreeRowKey) tree.getRowKey();
Map requestMap = context.getExternalContext().getRequestParameterMap();
String id = node.getClientId(context);
TreeState componentState = (TreeState) tree.getComponentState();
- TreeRowKey key = (TreeRowKey) tree.getRowKey();
String nodeExpandedId = id + NODE_EXPANDED_INPUT_SUFFIX;
Object nodeExpandedValue = requestMap.get(nodeExpandedId);
@@ -289,17 +288,16 @@
if (tree.getAttributes().get(
UITree.SELECTED_NODE_PARAMETER_NAME) == null) {
- new NodeSelectedEvent(tree).queue();
- new NodeSelectedEvent(node).queue();
+ new NodeSelectedEvent(tree, componentState.getSelectedNode()).queue();
+ new NodeSelectedEvent(node, componentState.getSelectedNode()).queue();
} else {
- new AjaxSelectedEvent(tree).queue();
- new AjaxSelectedEvent(node).queue();
+ new AjaxSelectedEvent(tree, componentState.getSelectedNode()).queue();
+ new AjaxSelectedEvent(node, componentState.getSelectedNode()).queue();
}
}
tree.getAttributes().remove(UITree.SELECTION_INPUT_ATTRIBUTE);
}
-
}
public String getAjaxSelectedListenerFlag(FacesContext context,
Modified: trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeDataModelEventNavigator.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeDataModelEventNavigator.java 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeDataModelEventNavigator.java 2007-08-24 19:13:37 UTC (rev 2488)
@@ -128,6 +128,10 @@
protected TreeRowKey getRowKey() {
return this.rowKey;
}
+
+ protected TreeRowKey getFloatingKey() {
+ return floatingKey;
+ }
protected boolean isStackedLastElement() {
if (stackedLast != null) {
Modified: trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java
===================================================================
--- trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java 2007-08-24 19:13:37 UTC (rev 2488)
@@ -23,12 +23,12 @@
import java.io.IOException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.TreeSet;
import javax.faces.FacesException;
import javax.faces.component.NamingContainer;
@@ -60,6 +60,18 @@
TreeRowKey treeRowKey1 = (TreeRowKey) key1;
TreeRowKey treeRowKey2 = (TreeRowKey) key2;
+ if (treeRowKey1 == null) {
+ if (treeRowKey2 == null) {
+ return 0;
+ } else {
+ return -1;
+ }
+ } else {
+ if (treeRowKey2 == null) {
+ return 1;
+ }
+ }
+
Iterator iterator1 = treeRowKey1.iterator();
Iterator iterator2 = treeRowKey2.iterator();
@@ -174,6 +186,15 @@
if (!context.isExpanded()) {
getUtils().writeAttribute(writer, "style", "display: none;");
+ } else {
+ if (tree.isShowConnectingLines()) {
+ TreeRowKey floatingKey = getFloatingKey();
+ //need the expression only for AJAX update root
+ if (floatingKey != null && floatingKey.equals(context.getRowKey())) {
+ String expression = "background-image:expression(this.nextSibling ? '' : 'none')";
+ getUtils().writeAttribute(writer, "style", expression);
+ }
+ }
}
String styleClasses = "";
@@ -202,11 +223,14 @@
private TreeStateAdvisor methodBindingAdvisor = null;
+ private Object floatingKey;
+
private DataVisitorWithLastElement(Flag flag, UITree tree,
- RendererDataModelEventNavigator navigator) {
+ RendererDataModelEventNavigator navigator, Object rowKey) {
this.flag = flag;
this.tree = tree;
this.navigator = navigator;
+ this.floatingKey = rowKey;
}
public void process(FacesContext context, Object rowKey, Object argument)
@@ -223,22 +247,19 @@
UITreeNode nodeFacet = tree.getNodeFacet();
Object oldAttrValue = nodeFacet.getAttributes().get("isLastElement");
+ Object oldAjaxRootAttrValue = nodeFacet.getAttributes().get("isAjaxUpdateRoot");
try {
nodeFacet.getAttributes().put("isLastElement", new Boolean(isLastElement));
-
+ nodeFacet.getAttributes().put("isAjaxUpdateRoot", new Boolean(floatingKey != null && floatingKey.equals(rowKey)));
ResponseWriter writer = context.getResponseWriter();
if (isLastElement) {
writer.startElement("p", tree);
- writer.writeAttribute("class", "last-node", null);
+ writer.writeAttribute("class", "dr-tree-last-node-marker", null);
writer.endElement("p");
-
- writer.startElement("div", tree);
- renderChild(context, nodeFacet);
- writer.endElement("div");
- } else {
- renderChild(context, nodeFacet);
}
+ renderChild(context, nodeFacet);
+
c = new Context();
c.setClientId(nodeFacet.getClientId(context) + NamingContainer.SEPARATOR_CHAR);
@@ -255,6 +276,12 @@
} else {
nodeFacet.getAttributes().remove("isLastElement");
}
+
+ if (oldAjaxRootAttrValue != null) {
+ nodeFacet.getAttributes().put("isAjaxUpdateRoot", oldAjaxRootAttrValue);
+ } else {
+ nodeFacet.getAttributes().remove("isAjaxUpdateRoot");
+ }
}
}
@@ -361,13 +388,17 @@
try {
Set ajaxKeys = tree.getAjaxKeys();
if (ajaxKeys != null) {
- List list = new ArrayList(ajaxKeys.size());
- list.addAll(ajaxKeys);
- Collections.sort(list, treeRowKeyComparator);
- Iterator ajaxKeysItr = list.iterator();
+ Set keys = tree.getDetachableRowKeys();
+ Set sortedKeys = new TreeSet(treeRowKeyComparator);
+ sortedKeys.addAll(ajaxKeys);
+ if (keys != null) {
+ sortedKeys.addAll(keys);
+ }
+ Iterator ajaxKeysItr = sortedKeys.iterator();
TreeRowKey lastKey = null;
+ boolean nullRoot = false;
- while (ajaxKeysItr.hasNext()) {
+ while (!nullRoot && ajaxKeysItr.hasNext()) {
TreeRowKey key = (TreeRowKey) ajaxKeysItr.next();
if (lastKey == null) {
@@ -381,7 +412,8 @@
}
}
- if (key != null && key.depth() == 0) {
+ if (key == null || key.depth() == 0) {
+ nullRoot = true;
key = null;
}
@@ -405,6 +437,7 @@
}
}
+ tree.resetDetachableRowKeys();
//ajaxKeys.clear();
}
} catch (Exception e) {
@@ -582,7 +615,7 @@
};
input.walk(context, new DataVisitorWithLastElement(droppedDownToLevelFlag, input,
- levelNavigator), treeRange, key, null);
+ levelNavigator, key), treeRange, key, null);
/*if (key != null) {
closeLevelDownTable(context, input, writer);
Modified: trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/css/tree.xcss
===================================================================
--- trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/css/tree.xcss 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/css/tree.xcss 2007-08-24 19:13:37 UTC (rev 2488)
@@ -80,7 +80,7 @@
cursor: pointer;
}
-.last-node {
+.dr-tree-last-node-marker {
display: none;
}
@@ -116,12 +116,12 @@
<f:resource f:key="org.richfaces.renderkit.html.images.TreeLineNodeImage"/>
</u:style>
</u:selector>
-<u:selector name="p.last-node+* .rich-tree-node-handleicon">
+<u:selector name="p.dr-tree-last-node-marker+* .rich-tree-node-handleicon, .dr-tree-h-ic-line-last">
<u:style name="background-image">
<f:resource f:key="org.richfaces.renderkit.html.images.TreeLineLastImage"/>
</u:style>
</u:selector>
-<u:selector name="p.last-node+*+div.dr-tree-h-ic-line">
+<u:selector name="p.dr-tree-last-node-marker+*+div.dr-tree-h-ic-line">
<u:style name="background-image" value="none" />
</u:selector>
<u:selector name=".dr-tree-h-ic-line-exp">
Modified: trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item.js
===================================================================
--- trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item.js 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree-item.js 2007-08-24 19:13:37 UTC (rev 2488)
@@ -1,6 +1,6 @@
Tree.Item = Class.create();
Tree.Item.prototype = {
- initialize: function(id, tree, parent) {
+ initialize: function(id, tree, parent, ajaxUpdate) {
this.parent = parent;
this.tree = tree;
this.elements = {};
@@ -26,7 +26,7 @@
this.elementID.icon = this.id + Tree.ID_DEVIDER + Tree.ID_ICON;
this.elementID.text = this.id + Tree.ID_DEVIDER + Tree.ID_TEXT;
- this.getElements(element);
+ this.getElements(element, ajaxUpdate);
this.eventSelectionClick = this.toggleSelection.bindAsEventListener(this);
this.eventMouseOut = this.processMouseOut.bindAsEventListener(this);
@@ -82,7 +82,7 @@
}
},
- getElements: function(element) {
+ getElements: function(element, ajaxUpdate) {
this.childs = [];
/*var contextMenu = Richfaces.getNSAttribute("oncontextmenu", $(this.elementID.icon));
@@ -92,6 +92,21 @@
var childsTd = element.nextSibling;//$(this.elementID.children);
+ if (ajaxUpdate && this.tree.showConnectingLines) {
+ var cell = element.rows[0].cells[0];
+ if (cell.style && cell.style.removeExpression) {
+ cell.style.backgroundImage = cell.currentStyle.backgroundImage;
+ cell.style.removeExpression('backgroundImage');
+ }
+
+ if (childsTd) {
+ if (childsTd.style && childsTd.style.removeExpression) {
+ childsTd.style.backgroundImage = childsTd.currentStyle.backgroundImage;
+ childsTd.style.removeExpression('backgroundImage');
+ }
+ }
+ }
+
if (childsTd) {
var child = childsTd.firstChild;
while ( child != null )
Modified: trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js
===================================================================
--- trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/main/resources/org/richfaces/renderkit/html/scripts/tree.js 2007-08-24 19:13:37 UTC (rev 2488)
@@ -19,7 +19,7 @@
Tree.CLASS_AJAX_SELECTED_LISTENER_FLAG = "ajax_selected_listener_flag";
Tree.prototype = {
- initialize: function(id, input, switchType, events, onAjaxSelect, toggleOnClick) {
+ initialize: function(id, input, switchType, events, onAjaxSelect, toggleOnClick, showConnectingLines) {
this.childs = [];
this.elements = {};
@@ -33,6 +33,7 @@
this.inputId = input;
this.input = $(this.inputId);
this.toggleOnClick = toggleOnClick;
+ this.showConnectingLines = showConnectingLines;
var options = Object.extend({
columnCount: 0
@@ -107,14 +108,14 @@
}.bindAsEventListener(this));
},
- getElements: function() {
+ getElements: function(ajaxUpdate) {
this.elements.contentTd = $(this.id +
Tree.ID_DEVIDER + Tree.ID_CHILDS_ROW/* + Tree.ID_DEVIDER + Tree.ID_CHILDS_TD*/);
if (this.elements.contentTd) {
for(var child = this.elements.contentTd.firstChild; child != null; child = child.nextSibling ) {
if (child.nodeType == 1 && child.tagName.toLowerCase() == "table") {
- this.addChild(new Tree.Item(child, this, this));
+ this.addChild(new Tree.Item(child, this, this, ajaxUpdate));
}
}
/*
@@ -145,7 +146,7 @@
}
this.childs = [];
- this.getElements();
+ this.getElements(true);
}
}
@@ -162,7 +163,7 @@
if (cid == nodeId) {
child.destroy();
- node.childs[i] = new Tree.Item(cid, this, child.parent);
+ node.childs[i] = new Tree.Item(cid, this, child.parent, true);
break;
} else {
var scid = cid.substring(0, cid.lastIndexOf(':'));
Modified: trunk/ui/tree/src/main/templates/htmlTree.jspx
===================================================================
--- trunk/ui/tree/src/main/templates/htmlTree.jspx 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/main/templates/htmlTree.jspx 2007-08-24 19:13:37 UTC (rev 2488)
@@ -59,7 +59,8 @@
function(event) {
#{this:getAjaxScript(context, component)}
},
- #{component.toggleOnClick}
+ #{component.toggleOnClick},
+ #{component.showConnectingLines}
);
#{this:getScriptContributions(context, component)}
</script>
Modified: trunk/ui/tree/src/main/templates/htmlTreeNode.jspx
===================================================================
--- trunk/ui/tree/src/main/templates/htmlTreeNode.jspx 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/main/templates/htmlTreeNode.jspx 2007-08-24 19:13:37 UTC (rev 2488)
@@ -41,6 +41,18 @@
<f:parameter value="id,onclick"/>
</f:call>
<td class="dr-tree-h-ic rich-tree-node-handleicon #{line}">
+ <jsp:scriptlet>
+ <![CDATA[
+ if (Boolean.TRUE.equals(component.getAttributes().get("isAjaxUpdateRoot")) && component.getUITree().isShowConnectingLines()) {
+ String lineBasic = getResource("org.richfaces.renderkit.html.images.TreeLineNodeImage").getUri(context, component);
+ String lineLast = getResource("org.richfaces.renderkit.html.images.TreeLineLastImage").getUri(context, component);
+ getUtils().writeAttribute(writer, "style",
+ "background-image:expression(this.parentNode.parentNode.parentNode.nextSibling.nextSibling ? " +
+ "'url(" + lineBasic + ")' : 'url(" + lineLast + ")')");
+ }
+ ]]>
+ </jsp:scriptlet>
+
<div>
<jsp:scriptlet>
<![CDATA[
Modified: trunk/ui/tree/src/test/java/org/richfaces/component/TreeComponentTest.java
===================================================================
--- trunk/ui/tree/src/test/java/org/richfaces/component/TreeComponentTest.java 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/test/java/org/richfaces/component/TreeComponentTest.java 2007-08-24 19:13:37 UTC (rev 2488)
@@ -500,7 +500,7 @@
*/
public final void testQueueEventFacesEvent() {
NodeExpandedEvent nodeExpandedEvent = new NodeExpandedEvent(tree);
- NodeSelectedEvent nodeSelectedEvent = new NodeSelectedEvent(tree);
+ NodeSelectedEvent nodeSelectedEvent = new NodeSelectedEvent(tree, null);
ExpandAllCommandEvent expandAllCommandEvent = new ExpandAllCommandEvent(tree);
DragEvent dragEvent = new DragEvent(tree);
DropEvent dropEvent = new DropEvent(tree);
@@ -525,7 +525,7 @@
tree.setImmediate(true);
NodeExpandedEvent nodeExpandedEvent = new NodeExpandedEvent(tree);
- NodeSelectedEvent nodeSelectedEvent = new NodeSelectedEvent(tree);
+ NodeSelectedEvent nodeSelectedEvent = new NodeSelectedEvent(tree, null);
ExpandAllCommandEvent expandAllCommandEvent = new ExpandAllCommandEvent(tree);
DragEvent dragEvent = new DragEvent(tree);
DropEvent dropEvent = new DropEvent(tree);
Modified: trunk/ui/tree/src/test/java/org/richfaces/component/events/TreeEventsListenersTest.java
===================================================================
--- trunk/ui/tree/src/test/java/org/richfaces/component/events/TreeEventsListenersTest.java 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/test/java/org/richfaces/component/events/TreeEventsListenersTest.java 2007-08-24 19:13:37 UTC (rev 2488)
@@ -73,7 +73,7 @@
}
public void testNodeSelectedListener() {
- NodeSelectedEvent event = new NodeSelectedEvent(source);
+ NodeSelectedEvent event = new NodeSelectedEvent(source, null);
SelectListener listener = new SelectListener();
Modified: trunk/ui/tree/src/test/java/org/richfaces/component/events/TreeEventsTest.java
===================================================================
--- trunk/ui/tree/src/test/java/org/richfaces/component/events/TreeEventsTest.java 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/test/java/org/richfaces/component/events/TreeEventsTest.java 2007-08-24 19:13:37 UTC (rev 2488)
@@ -106,7 +106,7 @@
assertNotNull(events);
assertEquals(0, events.size());
- AjaxSelectedEvent event = new AjaxSelectedEvent(treeNode);
+ AjaxSelectedEvent event = new AjaxSelectedEvent(treeNode, null);
TreeEvents.invokeListenerBindings(treeNode, event, facesContext);
assertEquals(1, events.size());
@@ -130,7 +130,7 @@
assertEquals(0, events.size());
assertEquals(0, binding.getInvocationArgs().length);
- AjaxSelectedEvent event = new AjaxSelectedEvent(treeNode);
+ AjaxSelectedEvent event = new AjaxSelectedEvent(treeNode, null);
TreeEvents.invokeListenerBindings(treeNode, event, facesContext);
assertNotNull(events);
@@ -157,7 +157,7 @@
MockMethodBinding binding = new MockMethodBinding();
treeNode.setNodeSelectListener(binding);
- NodeSelectedEvent event = new NodeSelectedEvent(treeNode);
+ NodeSelectedEvent event = new NodeSelectedEvent(treeNode, null);
TreeEvents.invokeListenerBindings(treeNode, event, facesContext);
Object[][] args = binding.getInvocationArgs();
Modified: trunk/ui/tree/src/test/java/org/richfaces/renderkit/TreeRowKeyComparatorTest.java
===================================================================
--- trunk/ui/tree/src/test/java/org/richfaces/renderkit/TreeRowKeyComparatorTest.java 2007-08-24 18:58:45 UTC (rev 2487)
+++ trunk/ui/tree/src/test/java/org/richfaces/renderkit/TreeRowKeyComparatorTest.java 2007-08-24 19:13:37 UTC (rev 2488)
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
+import java.util.Iterator;
import org.richfaces.model.ListRowKey;
@@ -76,20 +77,25 @@
list.add(predKey);
list.add(supKey);
list.add(key);
+ list.add(null);
list.add(emptyKey);
+ list.add(null);
list.add(predLongKey);
Collections.sort(list, comparator);
- assertEquals(emptyKey, list.get(0));
- assertEquals(predKey, list.get(1));
- assertEquals(predLongKey, list.get(2));
- assertEquals(predSupKey, list.get(3));
- assertEquals(eqkey, list.get(4));
- assertEquals(key, list.get(5));
- assertEquals(supKey, list.get(6));
- assertEquals(succKey, list.get(7));
- assertEquals(succSupKey, list.get(8));
+ Iterator iterator = list.iterator();
+ assertNull(iterator.next());
+ assertNull(iterator.next());
+ assertEquals(emptyKey, iterator.next());
+ assertEquals(predKey, iterator.next());
+ assertEquals(predLongKey, iterator.next());
+ assertEquals(predSupKey, iterator.next());
+ assertEquals(eqkey, iterator.next());
+ assertEquals(key, iterator.next());
+ assertEquals(supKey, iterator.next());
+ assertEquals(succKey, iterator.next());
+ assertEquals(succSupKey, iterator.next());
}
}
More information about the richfaces-svn-commits
mailing list