[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