[richfaces-svn-commits] JBoss Rich Faces SVN: r962 - trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Thu May 31 13:21:16 EDT 2007


Author: abelevich
Date: 2007-05-31 13:21:16 -0400 (Thu, 31 May 2007)
New Revision: 962

Modified:
   trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java
   trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ColumnWalker.java
   trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/GridRendererState.java
   trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java
Log:


Modified: trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java
===================================================================
--- trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java	2007-05-31 17:20:44 UTC (rev 961)
+++ trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java	2007-05-31 17:21:16 UTC (rev 962)
@@ -14,8 +14,6 @@
 
 public class AjaxFunctionBuilder {
 
-//	public static final String DATA_READY = ;
-	
 	private static final JSReference request = new JSReference("request");
 	private static final JSReference event = new JSReference("event");
 	private static final JSReference data = new JSReference("data");
@@ -32,6 +30,7 @@
 	public static JSFunctionDefinition getOnDataReady(FacesContext context, UIScrollableGrid grid, RendererBase renderer) {
 		
 		ScrollableGridBaseRenderer sr = (ScrollableGridBaseRenderer)renderer;
+		
 		JSFunction function = createFunction(sr.getJavaScriptVarName(context, grid) + ".onCompleteGridInvalidation");
 //		JSFunction function = createFunction(sr.getJavaScriptVarName(context, grid) + ".getModel().fireEvent");
 		JSFunctionDefinition functionDefinition = new JSFunctionDefinition();

Modified: trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ColumnWalker.java
===================================================================
--- trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ColumnWalker.java	2007-05-31 17:20:44 UTC (rev 961)
+++ trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ColumnWalker.java	2007-05-31 17:21:16 UTC (rev 962)
@@ -17,7 +17,7 @@
  * @author Anton Belevich
  *
  */
-public class ColumnWalker {
+public class ColumnWalker{
 	
 	static int iterateOverColumns(FacesContext context, UIComponent component, ColumnVisitor visitor, 
 								   ResponseWriter writer, GridRendererState state) throws IOException{

Modified: trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/GridRendererState.java
===================================================================
--- trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/GridRendererState.java	2007-05-31 17:20:44 UTC (rev 961)
+++ trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/GridRendererState.java	2007-05-31 17:21:16 UTC (rev 962)
@@ -4,6 +4,7 @@
 package org.richfaces.renderkit.html;
 
 import java.io.Serializable;
+import java.util.Collection;
 import java.util.Map;
 
 import javax.faces.FacesException;
@@ -34,6 +35,8 @@
 	
 	private int _columns = 0;
 	
+	private Collection collection;
+	
 	private Integer sepOffset;
 	
 	private int _loadedRowsCount;
@@ -371,5 +374,13 @@
 
 	public void setSepOffset(Integer sepOffset) {
 		this.sepOffset = sepOffset;
+	}
+
+	public Collection getCollection() {
+		return collection;
+	}
+
+	public void setCollection(Collection collection) {
+		this.collection = collection;
 	}	
 }

Modified: trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java
===================================================================
--- trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java	2007-05-31 17:20:44 UTC (rev 961)
+++ trunk/sandbox/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java	2007-05-31 17:21:16 UTC (rev 962)
@@ -1,6 +1,8 @@
 package org.richfaces.renderkit.html;
 
 import java.io.IOException;
+import java.util.Collection;
+import java.util.Iterator;
 import java.util.Map;
 
 import javax.faces.component.UIComponent;
@@ -37,10 +39,6 @@
 	
 	private final String  HEADER_PART = "header";
 	
-	private final String  SPLASH_FACET = "splash";
-		
-	private final String CELL_ID_PREFFIX ="bc_";
-	
 	private final String COLUMN_FROZEN_TYPE = "frozen"; 
 	
 	private final String COLUMN_NORMAL_TYPE = "normal";
@@ -165,10 +163,17 @@
 			grid.setRowKey(rowIndex);
 			
 			if(grid.isRowAvailable()){
+				String row_id;
 				
 				int index = ((Integer)rowIndex).intValue();
 				state.setRowIndex(index);
-				String row_id = "row_" + index;
+				
+				if(state.isFrozenPart()){
+					row_id = "f:row_" + index;
+				}else{
+					row_id = "n:row_" + index;
+				}
+				
 				ResponseWriter writer = context.getResponseWriter();
 				writer.startElement(HTML.TR_ELEMENT, grid);
 				state.setFrozenColumnCount(((Integer)grid.getAttributes().get("frozenColCount")).intValue());
@@ -185,43 +190,78 @@
 		}
 	};
 		
-	private final ColumnVisitor ajaxCellRenderer = new ExtendedColumnVisitor(){
-		
-		public int visit(FacesContext context, UIScrollableGridColumn column, ResponseWriter writer, GridRendererState state) throws IOException {
-			int i = state.getFrozenColumnCount();
-			state.setFrozenColumnCount(i-1);
-			renderContent(context, column, writer,state);
-			
-			return 1;
-		}
-
-		public void renderContent(FacesContext context, UIScrollableGridColumn column, ResponseWriter writer, GridRendererState state) throws IOException {
-			writer.startElement(HTML.SPAN_ELEM, column);
-					
-			String cell_id =  state.getClientId() + ":" + CELL_ID_PREFFIX + state.getRowIndex()+ "_" + state.getCellIndex();
-			getUtils().writeAttribute(writer, "id",cell_id);
-			getUtils().writeAttribute(writer, "class", "ClientUI_Grid_BCBody");
-			System.out.println("cell index: " + cell_id);
-			renderChildren(context, column);
-			writer.endElement(HTML.SPAN_ELEM);
-			AjaxContext ajaxContext = state.getAjaxContext();
-			ajaxContext.addRenderedArea(cell_id);
-		}
-	
-	};
-	
 	private final DataVisitor ajaxRowsRenderer = new DataVisitor(){
 
 		public void process(FacesContext context, Object rowKey, Object argument) throws IOException {
+			
+			GridRendererState state = (GridRendererState)argument;
 
-			GridRendererState state = (GridRendererState)argument;
+			AjaxContext ajaxContext = state.getAjaxContext();
+			ajaxContext.getResponseData();
+			
 			UIScrollableGrid  grid = state.getGrid();
+			Collection collection = grid.getResponseData();
 			grid.setRowKey(rowKey);
 			ResponseWriter writer = context.getResponseWriter();
 			state.setFrozenColumnCount(((Integer)grid.getAttributes().get("frozenColCount")).intValue());
+			
+			String row_id = null;
+			
+			int columnsCount = 0;
+			
+			boolean frozenTRRendered = false;
+			
+			boolean normalTRRendered = false;
+						
 			System.out.println("row index: "  + grid.getRowIndex());
-			ColumnWalker.iterateOverColumns(context, grid, ajaxCellRenderer, writer, state);
-			state.nextRow();
+				
+			for (Iterator iter = grid.getChildren().iterator(); iter.hasNext(); ) {
+				UIComponent kid = (UIComponent) iter.next();
+				
+				if (kid.isRendered()) {
+					
+					if (kid instanceof UIScrollableGridColumn){
+						
+						if(state.isFrozenColumn() && !frozenTRRendered){
+							
+							state.setFrozenPart(true);
+							frozenTRRendered = true;
+							row_id = "f:row_" +  state.getRowIndex();
+							writer.startElement("tr", grid);
+							getUtils().writeAttribute(writer,"id",row_id);
+							getUtils().writeAttribute(writer,"class", "ClientUI_Grid_BR");
+							collection.add(row_id);
+																							
+						}else if(!state.isFrozenColumn() && !normalTRRendered){
+							
+							if(frozenTRRendered){
+								writer.endElement("tr");
+							}
+							
+							state.setFrozenPart(false);
+							row_id = "n:row_" +  state.getRowIndex();
+							
+							writer.startElement("tr", grid);
+							getUtils().writeAttribute(writer,"id",row_id);
+							getUtils().writeAttribute(writer,"class", "ClientUI_Grid_BR");
+							normalTRRendered = true;
+							collection.add(row_id);
+									
+						}
+
+						UIScrollableGridColumn column = (UIScrollableGridColumn)kid;
+						columnsCount += cellRenderer.visit(context, column, writer, state);
+						state.nextCell();
+					
+					}
+				
+				}
+			
+			}
+			
+			writer.endElement("tr");
+			state.setCellIndex(0);
+			state.nextRow();	
 		}
 	};
 	
@@ -342,6 +382,7 @@
 		options.put("parameters", parametersMap);
 		
 		JSFunction function = AjaxRendererUtils.buildAjaxFunction(grid, context);
+		options.put("oncomplete", AjaxFunctionBuilder.getOnDataReady(context, grid, this));
 		function.addParameter(options);
 		String completeFunction = function.toScript() + "; return false;";
 		
@@ -374,15 +415,16 @@
 				if(!sortOrder.equals("asc")){
 					asc = false;
 				}
+				UIScrollableGridColumn column = (UIScrollableGridColumn)grid.getChildren().get(sortColumn);
+				if(column.isSortable()){
+					grid.setDataIndex(new Integer(sortDataIndex));
+					grid.setStartRow(new Integer(sortStartRow));
+					grid.setRequestedRows(new Integer(grid.getRows()));
+					sorted = true;
 				
-				grid.setDataIndex(new Integer(sortDataIndex));
-				grid.setStartRow(new Integer(sortStartRow));
-				grid.setRequestedRows(new Integer(grid.getRows()));
-				sorted = true;
-				
-				SortEvent sortEvent = new SortEvent(grid,sortColumn, sortStartRow, sortDataIndex, asc );
-				grid.queueEvent(sortEvent);
-			
+					SortEvent sortEvent = new SortEvent(grid,sortColumn, sortStartRow, sortDataIndex, asc );
+					grid.queueEvent(sortEvent);
+				}	
 			}
 			
 			if(parameters.containsKey(clientId + "_state_input") && !sorted){
@@ -441,8 +483,14 @@
 		System.out.println("");
 		System.out.println("ScrollableGridBaseRenderer.renderAjaxChildren()");
 		System.out.println("");
-		
+		grid.getResponseData().clear();
+		ResponseWriter writer = context.getResponseWriter();
+		writer.startElement("table", grid);
+		writer.startElement("tbody", grid);
 		grid.walk(context, ajaxRowsRenderer, state);
+		writer.endElement("tbody");
+		writer.endElement("table");
+		ajaxContext.setResponseData(grid.getResponseData());
 		ajaxContext.getAjaxRenderedAreas().remove(grid.getClientId(context));
 		grid.setRows(old);
 	}




More information about the richfaces-svn-commits mailing list