[richfaces-svn-commits] JBoss Rich Faces SVN: r2229 - in trunk/ui/scrollable-grid/src/main: java/org/richfaces/renderkit/html and 2 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Mon Aug 13 13:02:58 EDT 2007


Author: maksimkaszynski
Date: 2007-08-13 13:02:58 -0400 (Mon, 13 Aug 2007)
New Revision: 2229

Added:
   trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridOptions.java
Modified:
   trunk/ui/scrollable-grid/src/main/config/component/scrollable-grid.xml
   trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java
   trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java
   trunk/ui/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridBody.js
   trunk/ui/scrollable-grid/src/main/javascript/ClientUI/controls/grid/Selection.js
   trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid-footer-cell.jspx
   trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid-header-cell.jspx
   trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid.jspx
Log:
RF-592
RF-591

Modified: trunk/ui/scrollable-grid/src/main/config/component/scrollable-grid.xml
===================================================================
--- trunk/ui/scrollable-grid/src/main/config/component/scrollable-grid.xml	2007-08-13 16:15:10 UTC (rev 2228)
+++ trunk/ui/scrollable-grid/src/main/config/component/scrollable-grid.xml	2007-08-13 17:02:58 UTC (rev 2229)
@@ -115,6 +115,12 @@
 			<name>selection</name>
 			<classname>org.richfaces.model.selection.Selection</classname>
 		</property>
+		
+		<property>
+			<name>hideWhenScrolling</name>
+			<classname>boolean</classname>
+			<defaultvalue>false</defaultvalue>
+		</property>
 		&ui_component_attributes;
 	</component>
 	

Modified: trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java
===================================================================
--- trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java	2007-08-13 16:15:10 UTC (rev 2228)
+++ trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/AjaxFunctionBuilder.java	2007-08-13 17:02:58 UTC (rev 2229)
@@ -8,7 +8,6 @@
 import org.ajax4jsf.javascript.JSFunction;
 import org.ajax4jsf.javascript.JSFunctionDefinition;
 import org.ajax4jsf.javascript.JSReference;
-import org.ajax4jsf.renderkit.RendererBase;
 import org.richfaces.component.UIScrollableGrid;
 
 
@@ -29,17 +28,16 @@
 		return function;
 	}	
 		
-	public static JSFunctionDefinition getOnComplete(FacesContext context, UIScrollableGrid grid, RendererBase renderer, int type) {
+	public static JSFunctionDefinition getOnComplete(FacesContext context, UIScrollableGrid grid, int type) {
 		
-		ScrollableGridBaseRenderer sr = (ScrollableGridBaseRenderer)renderer;
 		JSFunction function = null;
 		
 		switch (type) {
 			case SCROLL:
-				function = createFunction(sr.getJavaScriptVarName(context, grid) + ".onScrollComplete");
+				function = createFunction(ScrollableGridBaseRenderer.getJavaScriptVarName(context, grid) + ".onScrollComplete");
 				break;
 			case SORT: 				
-				function = createFunction(sr.getJavaScriptVarName(context, grid) + ".onSortComplete");
+				function = createFunction(ScrollableGridBaseRenderer.getJavaScriptVarName(context, grid) + ".onSortComplete");
 				break;
 		}	
 

Modified: trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java
===================================================================
--- trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java	2007-08-13 16:15:10 UTC (rev 2228)
+++ trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridBaseRenderer.java	2007-08-13 17:02:58 UTC (rev 2229)
@@ -12,8 +12,6 @@
 
 import org.ajax4jsf.context.AjaxContext;
 import org.ajax4jsf.javascript.JSFunction;
-import org.ajax4jsf.javascript.JSFunctionDefinition;
-import org.ajax4jsf.javascript.JSReference;
 import org.ajax4jsf.model.DataVisitor;
 import org.ajax4jsf.renderkit.AjaxRendererUtils;
 import org.ajax4jsf.renderkit.ComponentVariables;
@@ -30,7 +28,6 @@
 import org.richfaces.model.SortOrder;
 import org.richfaces.renderkit.CompositeRenderer;
 import org.richfaces.renderkit.RendererContributor;
-import org.richfaces.renderkit.ScriptOptions;
 import org.richfaces.renderkit.html.response.GridScrollSettings;
 import org.richfaces.utils.TemplateLoader;
 
@@ -390,7 +387,7 @@
 		addContributor(new SelectionRendererContributor());
 	}
 
-	public String getJavaScriptVarName(FacesContext context, UIScrollableGrid grid) {
+	public static String getJavaScriptVarName(FacesContext context, UIScrollableGrid grid) {
 		
 		String name = grid.getScriptVar();
 		if (name == null) {
@@ -402,37 +399,14 @@
 	}
 	
 	public String createClientScrollableGrid(FacesContext context, UIScrollableGrid grid) {
-	
-		String id = grid.getBaseClientId(context);
 		
-		ScriptOptions options = new ScriptOptions(grid);
-		options.addOption("client_id", id);
+		ScrollableGridOptions  options = new ScrollableGridOptions(grid);
 		
-		if(grid.getFacets().containsKey("splash")){
-			UIComponent splash = grid.getFacet("splash");
-			String splash_id = splash.getClientId(context);
-			options.addOption("splash_id", splash_id);
-		}
 		
-		int columnCount = grid.getChildCount();
+		mergeScriptOptions(options, context, grid);
 		
-		options.addOption("columnsCount", new Integer(columnCount));
-		options.addOption("rowsCount", new Integer(grid.getRows()));
-		options.addEventHandler("onselectionchange");
-		options.addOption("ids", GridRendererState.getRendererState(context).getIds());
 		JSFunction function = new JSFunction("new ClientUI.controls.grid.ScrollableGrid");
 		function.addParameter(options);
-		
-		JSFunctionDefinition functionDefinition = new JSFunctionDefinition();
-		
-		JSReference sortEvent = new JSReference("event");
-		functionDefinition.addParameter(sortEvent);
-		functionDefinition.addToBody(onSortAjaxUpdate(context, grid));
-		
-		options.addOption("onSortAjaxUpdate", functionDefinition);
-		
-		mergeScriptOptions(options, context, grid);
-		
 		return function.toScript();
 	}
 	
@@ -549,7 +523,7 @@
 		
 		JSFunction function = AjaxRendererUtils.buildAjaxFunction(grid, context);
 		Map options = AjaxRendererUtils.buildEventOptions(context, grid);
-		options.put("oncomplete", AjaxFunctionBuilder.getOnComplete(context, grid, this, AjaxFunctionBuilder.SCROLL));
+		options.put("oncomplete", AjaxFunctionBuilder.getOnComplete(context, grid, AjaxFunctionBuilder.SCROLL));
 		Map parametersMap = (Map)options.get("parameters");
 		parametersMap.put(grid.getBaseClientId(context) + ":scroll", "");
 		function.addParameter(options);
@@ -559,30 +533,6 @@
 		
 	}
 
-	public String onSortAjaxUpdate(FacesContext context, UIScrollableGrid grid){
-		
-		JSReference sortColumn = new JSReference("event.column");
-		JSReference sortOrder = new JSReference("event.order");
-		JSReference sortStartRow = new JSReference("event.startRow");
-		JSReference sortIndex = new JSReference("event.index");
-		
-		Map options = AjaxRendererUtils.buildEventOptions(context, grid);
-		
-		Map parametersMap = (Map)options.get("parameters");
-		String id = grid.getClientId(context);
-		parametersMap.put(id + ":sortColumn", sortColumn);
-		parametersMap.put(id + ":sortOrder", sortOrder);
-		parametersMap.put(id + ":sortStartRow", sortStartRow);
-		parametersMap.put(id + ":sortIndex", sortIndex);
-		options.put("parameters", parametersMap);
-		
-		JSFunction function = AjaxRendererUtils.buildAjaxFunction(grid, context);
-		options.put("oncomplete", AjaxFunctionBuilder.getOnComplete(context, grid, this, AjaxFunctionBuilder.SORT));
-		function.addParameter(options);
-		String completeFunction = function.toScript() + "; return false;";
-		
-		return completeFunction;
-	}
 	
 	protected void doDecode(FacesContext context, UIComponent component) {
 		

Added: trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridOptions.java
===================================================================
--- trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridOptions.java	                        (rev 0)
+++ trunk/ui/scrollable-grid/src/main/java/org/richfaces/renderkit/html/ScrollableGridOptions.java	2007-08-13 17:02:58 UTC (rev 2229)
@@ -0,0 +1,97 @@
+/**
+ * License Agreement.
+ *
+ *  JBoss RichFaces 3.0 - Ajax4jsf Component Library
+ *
+ * Copyright (C) 2007  Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+package org.richfaces.renderkit.html;
+
+import java.util.Map;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.javascript.JSFunction;
+import org.ajax4jsf.javascript.JSFunctionDefinition;
+import org.ajax4jsf.javascript.JSReference;
+import org.ajax4jsf.renderkit.AjaxRendererUtils;
+import org.richfaces.component.UIScrollableGrid;
+import org.richfaces.renderkit.ScriptOptions;
+
+public class ScrollableGridOptions extends ScriptOptions {
+
+	public ScrollableGridOptions(UIScrollableGrid grid) {
+		super(grid);
+		FacesContext context = FacesContext.getCurrentInstance();
+		
+		String id = grid.getBaseClientId(context);
+		
+		addOption("client_id", id);
+		
+		if(grid.getFacets().containsKey("splash")){
+			UIComponent splash = grid.getFacet("splash");
+			String splash_id = splash.getClientId(context);
+			addOption("splash_id", splash_id);
+		}
+		
+		int columnCount = grid.getChildCount();
+		
+		addOption("columnsCount", new Integer(columnCount));
+		addOption("rowsCount", new Integer(grid.getRows()));
+		addEventHandler("onselectionchange");
+		addOption("ids", GridRendererState.getRendererState(context).getIds());
+		addOption("hideWhenScrolling");
+		
+		
+		JSFunctionDefinition functionDefinition = new JSFunctionDefinition();
+		
+		JSReference sortEvent = new JSReference("event");
+		functionDefinition.addParameter(sortEvent);
+		functionDefinition.addToBody(onSortAjaxUpdate(context, grid));
+		
+		addOption("onSortAjaxUpdate", functionDefinition);	
+		
+	}
+	
+	public String onSortAjaxUpdate(FacesContext context, UIScrollableGrid grid){
+		
+		JSReference sortColumn = new JSReference("event.column");
+		JSReference sortOrder = new JSReference("event.order");
+		JSReference sortStartRow = new JSReference("event.startRow");
+		JSReference sortIndex = new JSReference("event.index");
+		
+		Map options = AjaxRendererUtils.buildEventOptions(context, grid);
+		
+		Map parametersMap = (Map)options.get("parameters");
+		String id = grid.getClientId(context);
+		parametersMap.put(id + ":sortColumn", sortColumn);
+		parametersMap.put(id + ":sortOrder", sortOrder);
+		parametersMap.put(id + ":sortStartRow", sortStartRow);
+		parametersMap.put(id + ":sortIndex", sortIndex);
+		options.put("parameters", parametersMap);
+		
+		JSFunction function = AjaxRendererUtils.buildAjaxFunction(grid, context);
+		options.put("oncomplete", AjaxFunctionBuilder.getOnComplete(context, grid, AjaxFunctionBuilder.SORT));
+		function.addParameter(options);
+		String completeFunction = function.toScript() + "; return false;";
+		
+		return completeFunction;
+	}
+
+	
+}
\ No newline at end of file

Modified: trunk/ui/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridBody.js
===================================================================
--- trunk/ui/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridBody.js	2007-08-13 16:15:10 UTC (rev 2228)
+++ trunk/ui/scrollable-grid/src/main/javascript/ClientUI/controls/grid/GridBody.js	2007-08-13 17:02:58 UTC (rev 2229)
@@ -437,8 +437,11 @@
 			this.currRange = range;
 			this.currentPos = task.pos;
 			
-			//this.container.hide();
 			
+			if (this.grid.options.hideWhenScrolling) {
+				this.container.hide();
+			}
+			
 			var options = {
 					index: startIndex,
 					count: countToLoad,
@@ -595,7 +598,9 @@
 	},
 	_showContainer: function() {
 		this.container.show();
-		this.setScrollPos(this.currentPos);	
+		if (ClientUILib.isIE) {
+			this.setScrollPos(this.currentPos);	
+		}
 	},
 	/**
 	 * show hiden rows after loading them from datasource

Modified: trunk/ui/scrollable-grid/src/main/javascript/ClientUI/controls/grid/Selection.js
===================================================================
--- trunk/ui/scrollable-grid/src/main/javascript/ClientUI/controls/grid/Selection.js	2007-08-13 16:15:10 UTC (rev 2228)
+++ trunk/ui/scrollable-grid/src/main/javascript/ClientUI/controls/grid/Selection.js	2007-08-13 17:02:58 UTC (rev 2229)
@@ -441,7 +441,7 @@
 	},
 	
 	selectionChanged: function(event) {
-		$(this.inputElement).value = this.selection.inspectRanges()+ this.selectionFlag;
+		$(this.inputElement).value = this.selection.inspectRanges()+ (this.selectionFlag ? this.selectionFlag : "") ;
 		var state = this.selection.getState();			
 		event.oldSelection = this.oldState;
 		event.newSelection = state;

Modified: trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid-footer-cell.jspx
===================================================================
--- trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid-footer-cell.jspx	2007-08-13 16:15:10 UTC (rev 2228)
+++ trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid-footer-cell.jspx	2007-08-13 17:02:58 UTC (rev 2229)
@@ -11,12 +11,12 @@
 	component="javax.faces.component.UIComponent" 
 	>
 	
-	<td class="dr-sgrid-fc rich-sgrid-footer-cell #{component.attributes['footerClass']}">
+	<th class="dr-sgrid-fc rich-sgrid-footer-cell #{component.attributes['footerClass']}">
 		<span id="#{client_id}:fc_#{cell_index}" class="dr-sgrid-fcbody1">
 			<span class="dr-sgrid-fcbody">
 				<vcp:body/>
 			</span>
 		</span>
-	</td>
+	</th>
 	
 </f:root>	
\ No newline at end of file

Modified: trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid-header-cell.jspx
===================================================================
--- trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid-header-cell.jspx	2007-08-13 16:15:10 UTC (rev 2228)
+++ trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid-header-cell.jspx	2007-08-13 17:02:58 UTC (rev 2229)
@@ -12,7 +12,7 @@
 	component="javax.faces.component.UIComponent" 
 	>
 
-	<td class="dr-sgrid-hc rich-sgrid-header-cell" id="#{client_id}:hc_#{cell_index}" columnIndex="#{cell_index}" sortable="#{component.attributes['sortable']}">
+	<th class="dr-sgrid-hc rich-sgrid-header-cell" id="#{client_id}:hc_#{cell_index}" columnIndex="#{cell_index}" sortable="#{component.attributes['sortable']}">
 		
 		<vcp:body/>
 		
@@ -22,6 +22,6 @@
 			
 		</jsp:scriptlet>
 		<span column="#{cell_index}" id="#{client_id}:hsep_#{cell_index}" style="left: #{offset}px;" class="dr-sgrid-hsep rich-sgrid-hsep" />
-	</td>
+	</th>
 
 </f:root>	
\ No newline at end of file

Modified: trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid.jspx
===================================================================
--- trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid.jspx	2007-08-13 16:15:10 UTC (rev 2228)
+++ trunk/ui/scrollable-grid/src/main/templates/org/richfaces/scrollable-grid.jspx	2007-08-13 17:02:58 UTC (rev 2229)
@@ -81,7 +81,7 @@
 								]]>
 							</jsp:scriptlet>					
 							
-							<tbody>
+							<thead>
 								<tr class="dr-sgrid-hr #{component.attributes['headerClass']}">
 									<jsp:scriptlet>
 				                   		<![CDATA[
@@ -89,7 +89,7 @@
 										]]>
 									</jsp:scriptlet>
 								</tr>
-							</tbody>
+							</thead>
 						</table>					
 					</span>
 			
@@ -102,16 +102,16 @@
 								]]>
 							</jsp:scriptlet>					
 							<col width="1"/>
-							<tbody>
+							<thead>
 								<tr class="dr-sgrid-hr  #{component.attributes['headerClass']}">
 									<jsp:scriptlet>
 				                   		<![CDATA[
 											renderHeaders(context, component, false);
 										]]>
 									</jsp:scriptlet>
-									<td></td>
+									<th></th>
 								</tr>
-							</tbody>
+							</thead>
 						</table>
 				</span>	
 			</div>			
@@ -175,7 +175,7 @@
 								renderCols(context, component, true);
 							]]>
 						</jsp:scriptlet>					
-						<tbody>
+						<tfoot>
 							<tr class="dr-sgrid-fr #{component.attributes['footerClass']}">	
 								<jsp:scriptlet>
 				        	        <![CDATA[
@@ -183,7 +183,7 @@
 									]]>
 								</jsp:scriptlet>
 							</tr>
-						</tbody>
+						</tfoot>
 					</table>			
 				</span>
 				
@@ -196,16 +196,16 @@
 							]]>
 						</jsp:scriptlet>					
 						<col width="1"/>												
-						<tbody>
+						<tfoot>
 							<tr class="dr-sgrid-fr #{component.attributes['footerClass']}">
 								<jsp:scriptlet>
 				        	        <![CDATA[
 										renderFooters(context, component,false);	
 									]]>
 								</jsp:scriptlet>
-								<td></td>
+								<th></th>
 							</tr>
-						</tbody>
+						</tfoot>
 					</table>
 				</span>			
 			</div>




More information about the richfaces-svn-commits mailing list