[richfaces-svn-commits] JBoss Rich Faces SVN: r2164 - in trunk: ui/tree/src/main/java/org/richfaces/renderkit and 1 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Wed Aug 8 19:00:09 EDT 2007


Author: nbelaevski
Date: 2007-08-08 19:00:09 -0400 (Wed, 08 Aug 2007)
New Revision: 2164

Modified:
   trunk/test-applications/facelets/
   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/templates/htmlTree.jspx
Log:
Tree updated to render correctly with new markup


Property changes on: trunk/test-applications/facelets
___________________________________________________________________
Name: svn:ignore
   - target

   + target
.classpath
.project
.settings


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-08 22:09:01 UTC (rev 2163)
+++ trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeDataModelEventNavigator.java	2007-08-08 23:00:09 UTC (rev 2164)
@@ -95,16 +95,16 @@
 					level -= floatingKey.depth();
 				}
 				
-				if (level != 0) {
+				//if (level != 0) {
 					beforeUp(level);
-				}
+				//}
 			}
 
 			this.tree.setRowKey(context, null);
 
-			if (level != 0) {
+			//if (level != 0) {
 				afterUp(level);
-			}
+			//}
 		}
 		
 		this.rowKey = newRowKey;

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-08 22:09:01 UTC (rev 2163)
+++ trunk/ui/tree/src/main/java/org/richfaces/renderkit/TreeRendererBase.java	2007-08-08 23:00:09 UTC (rev 2164)
@@ -35,21 +35,20 @@
 import javax.faces.context.ResponseWriter;
 import javax.faces.el.MethodBinding;
 
+import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.javascript.JSReference;
+import org.ajax4jsf.javascript.ScriptUtils;
 import org.ajax4jsf.model.DataVisitor;
 import org.ajax4jsf.renderkit.AjaxRendererUtils;
 import org.ajax4jsf.renderkit.ComponentsVariableResolver;
-import org.ajax4jsf.renderkit.RendererUtils;
-import org.ajax4jsf.javascript.JSFunction;
-import org.ajax4jsf.javascript.JSReference;
-import org.ajax4jsf.javascript.ScriptUtils;
-import org.richfaces.model.LastElementAware;
-import org.richfaces.model.TreeRowKey;
 import org.richfaces.component.UITree;
 import org.richfaces.component.UITreeNode;
 import org.richfaces.component.nsutils.NSUtils;
-import org.richfaces.model.TreeRange;
 import org.richfaces.component.state.TreeState;
 import org.richfaces.component.state.TreeStateAdvisor;
+import org.richfaces.model.LastElementAware;
+import org.richfaces.model.TreeRange;
+import org.richfaces.model.TreeRowKey;
 
 public abstract class TreeRendererBase extends CompositeRenderer {
 
@@ -99,10 +98,18 @@
 		}
 
 		public void afterUp(int levels) throws IOException {
+			Context c = droppedDownToLevelFlag.getContext();
+			if (c != null) {
+				openDiv(c);
+				closeDiv();
+				droppedDownToLevelFlag.setContext(null);
+			}
+			
 			//writer.write("** afterUp **");
 			for (int i = 0; i < levels; i++) {
 				closeDiv();
 			}
+
 			//if (!isLastElement) closeDiv();
 		}
 
@@ -110,36 +117,54 @@
 		}		
 		
 		public void beforeDown() throws IOException {
+			Context c = droppedDownToLevelFlag.getContext();
+			droppedDownToLevelFlag.setContext(null);
+			openDiv(c);
 			//writer.write("** beforeDown **");
-			droppedDownToLevelFlag.setFlag();
 			
-			if (this.getRowKey()==null ) openDiv();
+			//if (this.getRowKey()==null ) openDiv();
 
 		}
 
 		public void beforeUp(int levels) throws IOException {
 		}
 		
-		public void openDiv() throws IOException {
+		int stat = 0;
+		
+		public void openDiv(Context context) throws IOException {
+			stat++;
 			writer.startElement("div", tree);
-			getUtils().writeAttribute(writer, "id", clientId + "childs");
+			
+			if (context == null) {
+				context = new Context();
+				context.setLast(this.actualLast);
+				context.setClientId(this.clientId);
+				context.setExpanded(this.expanded);
+				context.setRowKey(this.getRowKey());
+			}
+			
+			getUtils().writeAttribute(writer, "id", context.getClientId() + "childs");
 
-			if (!expanded) {
+			if (!context.isExpanded()) {
 				getUtils().writeAttribute(writer, "style", "display: none;");
 			}
 			
 			String styleClasses = "";
-			if (this.getRowKey() != null) {
+			if (context.getRowKey() != null) {
 				styleClasses = "dr-tree-h-ic-div";
-				if (!isStackedLastElement() && showLines) styleClasses += " dr-tree-h-ic-line";
+				if (!context.isLast() && showLines) styleClasses += " dr-tree-h-ic-line";
 			}
 			if (styleClasses!="") getUtils().writeAttribute(writer, "class", styleClasses);
 		}
 		
 		public void closeDiv() throws IOException {
 			writer.endElement("div");
+			stat--;
 		}
 		
+		public int getStat() {
+			return stat;
+		}
 	}
 
 	private class DataVisitorWithLastElement implements DataVisitor,
@@ -172,20 +197,28 @@
 			
 			navigator.followRowKey(context, (TreeRowKey) rowKey);
 
-			if (!flag.isFlagSet()) {
+			Context c = flag.getContext();
+			if (c != null) {
+				navigator.openDiv(c);
 				navigator.closeDiv();
-			} else {
-				flag.resetFlag();
 			}
-
+			
 			UITreeNode nodeFacet = tree.getNodeFacet();
 			Object oldAttrValue = nodeFacet.getAttributes().get("isLastElement");
 			try {
 				nodeFacet.getAttributes().put("isLastElement", new Boolean(isLastElement));
 
 				renderChild(context, nodeFacet);
+
+				c = new Context();
+				c.setClientId(tree.getClientId(context) + ":");
+				c.setLast(this.isLastElement);
+				c.setExpanded(tree.isExpanded());
+				c.setRowKey(tree.getRowKey());
+				flag.setContext(c);
+				
 				//writer.write("** after renderChild **");
-				navigator.openDiv();
+				//navigator.openDiv();
 			} finally {
 				if (oldAttrValue != null) {
 					nodeFacet.getAttributes().put("isLastElement", oldAttrValue);
@@ -304,13 +337,15 @@
 							tree.setRowKey(context, key);
 							
 							String id = tree.getNodeFacet().getClientId(context);
+							String treeChildrenId = tree.getClientId(context) + ":childs";
 							if (ids.isEmpty() || ids.contains(id) || ids.contains(tree.getClientId(context))/* handle tree updates requests */) {
 								writeContent(context, tree, key);
 								encodeScripts = true;
 								renderedAreas.add(id);
 								encodedAreaIds.add(id);
-								renderedAreas.add(id+":childs");
-								encodedAreaIds.add(id+":childs");
+								
+								renderedAreas.add(treeChildrenId);
+								//encodedAreaIds.add(id+":childs");
 							}
 						}
 						
@@ -469,7 +504,7 @@
 			input.captureOrigValue();
 			
 			if (key != null) {
-				droppedDownToLevelFlag.setFlag();
+				droppedDownToLevelFlag.setContext(null);
 				//openLevelDownTable(context, input, writer);
 				input.setRowKey(context, key);
 			} else {
@@ -513,6 +548,8 @@
 			}*/
 
 			levelNavigator.followRowKey(context, null);
+
+			System.out.println("TreeRendererBase.writeContent() " + levelNavigator.getStat());
 		} finally {
 			input.setRowKey(context, null);
 			input.restoreOrigValue();
@@ -521,17 +558,44 @@
 }
 
 class Flag {
-	private boolean flag = false;
-
-	public void setFlag() {
-		this.flag = true;
+	private Context context;
+	
+	public Context getContext() {
+		return context;
 	}
 
-	public void resetFlag() {
-		this.flag = false;
+	public void setContext(Context context) {
+		this.context = context;
 	}
+}
 
-	public boolean isFlagSet() {
-		return flag;
+class Context {
+	private String clientId;
+	private Object rowKey;
+	private boolean expanded;
+	private boolean last;
+	public String getClientId() {
+		return clientId;
 	}
+	public void setClientId(String clientId) {
+		this.clientId = clientId;
+	}
+	public Object getRowKey() {
+		return rowKey;
+	}
+	public void setRowKey(Object rowKey) {
+		this.rowKey = rowKey;
+	}
+	public boolean isExpanded() {
+		return expanded;
+	}
+	public void setExpanded(boolean expanded) {
+		this.expanded = expanded;
+	}
+	public boolean isLast() {
+		return last;
+	}
+	public void setLast(boolean last) {
+		this.last = last;
+	}
 }
\ No newline at end of file

Modified: trunk/ui/tree/src/main/templates/htmlTree.jspx
===================================================================
--- trunk/ui/tree/src/main/templates/htmlTree.jspx	2007-08-08 22:09:01 UTC (rev 2163)
+++ trunk/ui/tree/src/main/templates/htmlTree.jspx	2007-08-08 23:00:09 UTC (rev 2164)
@@ -49,10 +49,11 @@
 			<vcp:body />
 		</tbody>
 	</table-->
-	<div id="#{clientId}:children">
+	<!-- div id="#{clientId}:children">
 			<vcp:body />
-	</div>
+	</div -->
 
+	<vcp:body />
 	
 	<f:call name="encodeSelectionStateInput" />
 	<f:clientId var="clientId" />




More information about the richfaces-svn-commits mailing list