[richfaces-svn-commits] JBoss Rich Faces SVN: r5021 - in trunk/ui/scrollableDataTable/src/main: javascript/ClientUI/controls/grid and 1 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Wed Dec 26 13:15:40 EST 2007


Author: konstantin.mishin
Date: 2007-12-26 13:15:40 -0500 (Wed, 26 Dec 2007)
New Revision: 5021

Modified:
   trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java
   trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js
   trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js
   trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx
Log:
merged scrollable-data-table with 3/1/x branch

Modified: trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java
===================================================================
--- trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java	2007-12-26 18:15:20 UTC (rev 5020)
+++ trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java	2007-12-26 18:15:40 UTC (rev 5021)
@@ -335,7 +335,7 @@
 				if (kid.isRendered()) {
 					
 					if (kid instanceof Column){						
-						if(state.isFrozenColumn() && !frozenTRRendered){
+						if(state.isFrozenColumn() && !frozenTRRendered && state.getFrozenColumnCount() > 0){
 							
 							state.setFrozenPart(true);
 							frozenTRRendered = true;
@@ -470,15 +470,15 @@
 		state.setFrozenPart(isFrozen);
 		state.setClientId(grid.getClientId(context));
 		
-		grid.walk(context, rowsRenderer, state);
-			
-		int fakeRowsCount = grid.getRows() - grid.getRowCount();
-		state.setFake(true);
-		for (int i = 0; i < fakeRowsCount; i++) {
-			rowsRenderer.process(context, null, state);	
+		if (!isFrozen || state.getFrozenColumnCount() > 0) {
+			grid.walk(context, rowsRenderer, state);
+			int fakeRowsCount = grid.getRows() - grid.getRowCount();
+			state.setFake(true);
+			for (int i = 0; i < fakeRowsCount; i++) {
+				rowsRenderer.process(context, null, state);
+			}
+			state.setFake(false);
 		}
-		
-		state.setFake(false);
 		state.setRowIndex(0);
 		grid.setRowKey(null);
 	}
@@ -500,8 +500,26 @@
 		state.setFrozenPart(isFrozen);
 		state.setClientId(grid.getClientId(context));
 		state.setSepOffset(new Integer(0));
-		
-		ColumnWalker.iterateOverColumns(context, grid, headerCellRenderer, writer, state);
+		if (!isFrozen || state.getFrozenColumnCount() > 0) {
+			writer.startElement(HTML.TR_ELEMENT, grid);
+			getUtils().writeAttribute(
+					writer,
+					"class",
+					"dr-sdt-hr rich-std-header-row"
+							+ grid.getAttributes().get("headerClass"));
+			ColumnWalker.iterateOverColumns(context, grid, headerCellRenderer,
+					writer, state);
+			if (!isFrozen) {
+				writer.startElement(HTML.th_ELEM, grid);
+				getUtils().writeAttribute(writer, "class",
+						"dr-sdt-hc rich-sdt-header-cell");
+				writer.startElement(HTML.DIV_ELEM, grid);
+				getUtils().writeAttribute(writer, "class", "dr-sdt-hcbody");
+				writer.endElement(HTML.DIV_ELEM);
+				writer.endElement(HTML.th_ELEM);
+			}
+			writer.endElement(HTML.TR_ELEMENT);
+		}
 	}
 	
 	public void renderCols(FacesContext context, UIScrollableDataTable grid, boolean isFrozen) throws IOException{
@@ -707,6 +725,8 @@
 		
 		grid.walk(context, ajaxRowsRenderer, state);
 		int fakeRowsCount = grid.getRows() - grid.getRowCount();
+		ScrollableDataTableRendererState.restoreState(context);
+		grid.setRowKey(null);
 		state.setFake(true);
 		for (int i = 0; i < fakeRowsCount; i++) {
 			ajaxRowsRenderer.process(context, null, state);	
@@ -728,9 +748,6 @@
 
 		renderHiddenScrollInput(context, grid);
 		ajaxContext.addRenderedArea(client_id+":si");
-
-		ScrollableDataTableRendererState.restoreState(context);
-		grid.setRowKey(null);
 		
 		ajaxContext.setResponseData(grid.getResponseData());
 		

Modified: trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js
===================================================================
--- trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js	2007-12-26 18:15:20 UTC (rev 5020)
+++ trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridBody.js	2007-12-26 18:15:40 UTC (rev 5021)
@@ -139,35 +139,34 @@
 		this.sizeBox.setHeight(this.templNormal.getElement().offsetHeight);
 	},
 	parseTemplate: function(templFrozen, templNormal) {
-		if(!templNormal || !templNormal.rows || templNormal.rows.length===0) {
-			return false;
+		var result = false;
+		if(templNormal && templNormal.rows && templNormal.rows.length != 0) {
+			var columns = this.grid.getHeader().getColumns();
+			var i=0, j=0;
+			var cols = this.templFrozen.getElement().getElementsByTagName("col");
+			for(i=0; i<cols.length; i++) {
+				columns[j].bodyCol = $(cols[i]);
+				j++;
+			}
+			cols = this.templNormal.getElement().getElementsByTagName("col");
+			for(i=0; i<cols.length; i++) {
+				columns[j].bodyCol = $(cols[i]);
+				j++;
+			}
+					
+			this.rowsCount = Math.min(templNormal.rows.length, this.grid.dataModel.getCount());
+
+			//if(ClientUILib.isGecko) {
+			//	this.defaultRowHeight -= this.getBorderWidth("tb") + this.getPadding("tb");
+			//}
+			this.helpObj = new ClientUI.common.box.Box(templFrozen, null, true);
+			this.countToLoad = 0;
+			this.startRow = 0;
+			this.startIndex = 0;
+			result = true;
 		}
-		
-		var columns = this.grid.getHeader().getColumns();
-		var i=0, j=0;
-		var cols = this.templFrozen.getElement().getElementsByTagName("col");
-		for(i=0; i<cols.length; i++) {
-			columns[j].bodyCol = $(cols[i]);
-			j++;
-		}
-		cols = this.templNormal.getElement().getElementsByTagName("col");
-		for(i=0; i<cols.length; i++) {
-			columns[j].bodyCol = $(cols[i]);
-			j++;
-		}
-				
-		this.rowsCount = Math.min(templNormal.rows.length, this.grid.dataModel.getCount());
-
-		//if(ClientUILib.isGecko) {
-		//	this.defaultRowHeight -= this.getBorderWidth("tb") + this.getPadding("tb");
-		//}
-		this.helpObj = new ClientUI.common.box.Box(templFrozen, null, true);
-		this.countToLoad = 0;
-		this.startRow = 0;
-		this.startIndex = 0;
 		this.currRange = $R(0, this.rowsCount);	
-		
-		return true;		
+		return result;		
 	},
 	setScrollPos: function(pos) {
 		this.contentBox.getElement().scrollTop = pos;
@@ -334,8 +333,10 @@
 		}.bind(this), this.grid.dataModel.getRequestDelay());
 	},
 	adjustColumnWidth: function(column, width) {
-		var columns = this.grid.getHeader().getColumns();
-		columns[column].bodyCol.width = width>0 ? width : 1;
+		var bodyCol = this.grid.getHeader().getColumns()[column].bodyCol;
+		if (bodyCol) {
+			bodyCol.width = width>0 ? width : 1;
+		}
 	},
 	
 	setFakeColumnWidth: function() {
@@ -726,7 +727,7 @@
 		this.scrollBox.getElement().scrollTop = 0;
 		this.currRange.start = -this.rowsCount;
 		this.currRange.end = -1;
-		this._onContentVScroll(0);
+		this._onContentVScroll({memo:{pos:0}});
 	},	
 	_getRowIndex: function(rowId) {
       	return Number(rowId.split(this.grid.getElement().id)[1].split(":")[2]);

Modified: trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js
===================================================================
--- trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js	2007-12-26 18:15:20 UTC (rev 5020)
+++ trunk/ui/scrollableDataTable/src/main/javascript/ClientUI/controls/grid/GridHeader.js	2007-12-26 18:15:40 UTC (rev 5021)
@@ -20,7 +20,7 @@
 		$super(template);
 
 		// register event handlers
-		this.eventSepDblClick = this.OnSepDblClick.bindAsEventListener(this);
+		this.eventSepClick = this.OnSepClick.bindAsEventListener(this);
 		this.eventSepMouseDown = this.OnSepMouseDown.bindAsEventListener(this);
 		this.eventSepMouseUp = this.OnSepMouseUp.bindAsEventListener(this);
 		this.eventSepMouseMove = this.OnSepMouseMove.bindAsEventListener(this);
@@ -107,7 +107,8 @@
 		
 		this.helpObj = new ClientUI.common.box.Box(this.frozenContentBox.getElement(), null, true);
 
-		var fcount = this.headerFrozenRow.getElement().rows[0].cells.length;
+		var rows = this.headerFrozenRow.getElement().rows
+		var fcount = rows.length?rows[0].cells.length:0;
 		var ncount = this.headerRow.getElement().rows[0].cells.length;
 		var columns = new Array(fcount + ncount);
 		var defaultWidth = 0;
@@ -118,11 +119,11 @@
 		// Get columns information
 		var i = 0, h, j=0, cell;
 		var cols = this.headerFrozenRow.getElement().getElementsByTagName("col");
-		var cells = this.headerFrozenRow.getElement().rows[0].cells;
+		this.frozenCells = fcount?this.headerFrozenRow.getElement().rows[0].cells:[];
 		var ids = this.grid.options.ids;
-		var count = cells.length;
+		var count = this.frozenCells.length;
 		for(i=0; i<count; i++) {
-			cell = cells[i];
+			cell = this.cells[i];
 			columns[j] = {
 				columnId: ids[i],
 				col: cols[i],
@@ -151,7 +152,7 @@
 			columns[j].sep = new ClientUI.common.box.InlineBox(details[0], null, true);
 			columns[j].sep.getElement().columnIndex = j;
 			if(!columns[j].fixedWidth) {
-				Event.observe(columns[j].sep.getElement(), 'dblclick',  this.eventSepDblClick);
+				Event.observe(columns[j].sep.getElement(), 'click',  this.eventSepClick);
 				Event.observe(columns[j].sep.getElement(), 'mousedown', this.eventSepMouseDown);
 			}			
 			else {
@@ -165,10 +166,10 @@
 		}
 
 		cols = this.headerRow.getElement().getElementsByTagName("col");
-		cells = this.headerRow.getElement().rows[0].cells;
-		count = cells.length;
+		this.cells = this.headerRow.getElement().rows[0].cells;
+		count = this.cells.length;
 		for(i=0; i<count; i++) {
-			cell = cells[i];
+			cell = this.cells[i];
 
 			columns[j] = {
 				columnId: ids[i],
@@ -199,7 +200,7 @@
 				columns[j].sep = new ClientUI.common.box.InlineBox(details[0], null, true);
 				columns[j].sep.getElement().columnIndex = j;
 				if(!columns[j].fixedWidth) {
-					Event.observe(columns[j].sep.getElement(), 'dblclick',  this.eventSepDblClick);
+					Event.observe(columns[j].sep.getElement(), 'click',  this.eventSepClick);
 					Event.observe(columns[j].sep.getElement(), 'mousedown', this.eventSepMouseDown);
 				}			
 				else {
@@ -238,19 +239,17 @@
 	},
 	agjustSeparators: function() {
 		var i=0;
-		var fcells = this.headerFrozenRow.getElement().rows[0].cells;
-		var ncells = this.headerRow.getElement().rows[0].cells;
-		var length = fcells.length;
+		var length = this.frozenCells.length;
 		var delta = 4;
-		if (ncells[0].offsetWidth == ncells[0].clientWidth) {
+		if (this.cells[0].offsetWidth == this.cells[0].clientWidth) {
 			delta--;
 		}
 		for(var j=0; j<length; i++,j++) {
-			this._columns[i].sep.moveToX(fcells[j].offsetLeft + fcells[j].offsetWidth - delta);
+			this._columns[i].sep.moveToX(this.frozenCells[j].offsetLeft + this.frozenCells[j].offsetWidth - delta);
 		}
-		var length = ncells.length - 1;
+		var length = this.cells.length - 1;
 		for(var j=0; j<length; i++,j++) {
-			this._columns[i].sep.moveToX(ncells[j].offsetLeft + ncells[j].offsetWidth - delta);
+			this._columns[i].sep.moveToX(this.cells[j].offsetLeft + this.cells[j].offsetWidth - delta);
 		}
 	},
 	updateSize: function() {
@@ -361,8 +360,8 @@
 			Event.stop(event);
 		}
 	},
-	OnSepDblClick: function(event) {
-		ClientUILib.log(ClientUILogger.INFO, "OnSepDblClick");
+	OnSepClick: function(event) {
+		Event.stop(event);
 	},
 	_showSplitter: function(index) {
 		if(!this.columnSplitter) {

Modified: trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx
===================================================================
--- trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx	2007-12-26 18:15:20 UTC (rev 5020)
+++ trunk/ui/scrollableDataTable/src/main/templates/org/richfaces/scrollable-data-table.jspx	2007-12-26 18:15:40 UTC (rev 5021)
@@ -100,13 +100,11 @@
 											</jsp:scriptlet>					
 											
 											<thead>
-												<tr class="dr-sdt-hr rich-std-header-row #{component.attributes['headerClass']}">
-													<jsp:scriptlet>
-								                   		<![CDATA[
-															renderHeaders(context, component, true);
-														]]>
-													</jsp:scriptlet>
-												</tr>
+												<jsp:scriptlet>
+							                   		<![CDATA[
+														renderHeaders(context, component, true);
+													]]>
+												</jsp:scriptlet>
 											</thead>
 										</table>					
 									</span>
@@ -121,16 +119,11 @@
 											</jsp:scriptlet>					
 											<col width="1"/>
 											<thead>
-												<tr class="dr-sdt-hr rich-std-header-row #{component.attributes['headerClass']}">
-													<jsp:scriptlet>
-								                   		<![CDATA[
-															renderHeaders(context, component, false);
-														]]>
-													</jsp:scriptlet>
-													<th class="dr-sdt-hc rich-sdt-header-cell">
-														<div class="dr-sdt-hcbody" />
-													</th>
-												</tr>
+												<jsp:scriptlet>
+							                   		<![CDATA[
+														renderHeaders(context, component, false);
+													]]>
+												</jsp:scriptlet>
 											</thead>
 										</table>
 								</span>	




More information about the richfaces-svn-commits mailing list