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

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Tue May 1 22:04:35 EDT 2007


Author: alexsmirnov
Date: 2007-05-01 22:04:34 -0400 (Tue, 01 May 2007)
New Revision: 603

Added:
   trunk/richfaces-samples/dataTableDemo/src/main/webapp/pages/colgroup.jsp
Modified:
   trunk/richfaces/dataTable/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
   trunk/richfaces/dataTable/src/main/java/org/richfaces/renderkit/html/ColgroupRenderer.java
Log:
fix  RF-70 issue : encoding rowOnXXX JavaScript handlers for columnGroup

Modified: trunk/richfaces/dataTable/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
===================================================================
--- trunk/richfaces/dataTable/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java	2007-05-02 00:05:01 UTC (rev 602)
+++ trunk/richfaces/dataTable/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java	2007-05-02 02:04:34 UTC (rev 603)
@@ -42,7 +42,18 @@
  */
 public abstract class AbstractRowsRenderer extends HeaderResourcesRendererBase implements
 		DataVisitor {
+    
+	public static final String[][] TABLE_EVENT_ATTRS = 	{ 
+		{"onclick","onRowClick"},
+		{"ondblclick","onRowDblClick"},
+		{"onmousemove","onRowMouseMove"},
+		{"onmouseup","onRowMouseUp"},
+		{"onmousedown","onRowMouseDown"},
+		{"onmouseover","onRowMouseOver"},
+		{"onmouseout","onRowMouseOut"}
+	};
 
+
 	public static final Object ROW_CLASS_KEY = AbstractRowsRenderer.class
 			.getName()
 			+ ".rowClass";
@@ -158,13 +169,10 @@
 	protected void encodeRowEvents(FacesContext context, UIDataAdaptor table)
 			throws IOException {
 		RendererUtils utils2 = getUtils();
-		utils2.encodeAttribute(context, table, "onRowClick", "onclick");
-		utils2.encodeAttribute(context, table, "onRowDblClick", "ondblclick");
-		utils2.encodeAttribute(context, table, "onRowMouseMove", "onmousemove");
-		utils2.encodeAttribute(context, table, "onRowMouseUp", "onmouseup");
-		utils2.encodeAttribute(context, table, "onRowMouseDown", "onmousedown");
-		utils2.encodeAttribute(context, table, "onRowMouseOver", "onmouseover");
-		utils2.encodeAttribute(context, table, "onRowMouseOut", "onmouseout");
+		for (int i = 0; i < TABLE_EVENT_ATTRS.length; i++) {
+		    String[] attrs = TABLE_EVENT_ATTRS[i];
+			utils2.encodeAttribute(context, table, attrs[1], attrs[0]);		    
+		}
 	}
 
 	/**

Modified: trunk/richfaces/dataTable/src/main/java/org/richfaces/renderkit/html/ColgroupRenderer.java
===================================================================
--- trunk/richfaces/dataTable/src/main/java/org/richfaces/renderkit/html/ColgroupRenderer.java	2007-05-02 00:05:01 UTC (rev 602)
+++ trunk/richfaces/dataTable/src/main/java/org/richfaces/renderkit/html/ColgroupRenderer.java	2007-05-02 02:04:34 UTC (rev 603)
@@ -42,7 +42,14 @@
 public class ColgroupRenderer extends AbstractRowsRenderer {
 
 	private static final String[] STYLE_ATTRS = { "style", "class" };
+	public static final String[] EVENT_ATTRS ;
 
+	static {
+	    EVENT_ATTRS = new String[AbstractRowsRenderer.TABLE_EVENT_ATTRS.length];
+	    for (int i = 0; i < AbstractRowsRenderer.TABLE_EVENT_ATTRS.length; i++) {
+		EVENT_ATTRS[i]=AbstractRowsRenderer.TABLE_EVENT_ATTRS[i][0];
+	    }
+	}
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -152,7 +159,21 @@
 				"dr-tablerow rich-tablerow", requestMap
 						.get(AbstractRowsRenderer.ROW_CLASS_KEY), styleClass);
 		encodeStyle(context.getResponseWriter(),null, null, null, style);
-		getUtils().encodePassThru(context, colspan);
+		getUtils().encodePassThruWithExclusionsArray(context, colspan,EVENT_ATTRS);
+		// Search for enclosed DataAdaptor.
+		UIComponent parent = colspan.getParent();
+		// ENCODE event attributes. If component don't have own attribute, search in the parent table.
+		boolean inRow = null != parent && parent.getChildren().contains(colspan);
+		for (int i = 0; i < AbstractRowsRenderer.TABLE_EVENT_ATTRS.length; i++) {
+		    String[] attrs = AbstractRowsRenderer.TABLE_EVENT_ATTRS[i];
+		    String event = (String) colspan.getAttributes().get(attrs[0]);
+		    if(null == event && inRow){
+			event = (String) parent.getAttributes().get(attrs[1]);
+		    }
+		    if(null != event){
+			writer.writeAttribute(attrs[0], event, attrs[0]);
+		    }
+		}
 	}
 
 	/*

Added: trunk/richfaces-samples/dataTableDemo/src/main/webapp/pages/colgroup.jsp
===================================================================
--- trunk/richfaces-samples/dataTableDemo/src/main/webapp/pages/colgroup.jsp	                        (rev 0)
+++ trunk/richfaces-samples/dataTableDemo/src/main/webapp/pages/colgroup.jsp	2007-05-02 02:04:34 UTC (rev 603)
@@ -0,0 +1,81 @@
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
+<%@ taglib uri="http://richfaces.ajax4jsf.org/dataTable" prefix="data"%>
+<%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%>
+<html>
+<head>
+<title></title>
+</head>
+<body>
+<f:view>
+	<h:form>
+		<h:panelGrid columns="1" border="1">
+			<data:dataTable id="master" var="master" value="#{data.mounths}"
+			    rowKeyVar="key"
+				styleClass="table" captionClass="caption"
+				rowClasses="rowa,rowb,rowc rowcc" headerClass="header"
+				footerClass="footer" onRowClick="alert('row #{key}')">
+				<f:facet name="caption">
+					<h:outputText value="caption" />
+				</f:facet>
+				<f:facet name="header">
+					<data:columnGroup columnClasses="cola, colb ,rowc rowcc">
+						<data:column rowspan="2">
+							<h:outputText value="2-row head" />
+						</data:column>
+						<h:column>
+							<h:outputText value="head in UIColumn" />
+						</h:column>
+						<data:column breakBefore="true">
+							<h:outputText value="2-d row head" />
+						</data:column>
+					</data:columnGroup>
+				</f:facet>
+				<f:facet name="footer">
+					<h:outputText value="table foot" />
+				</f:facet>
+				<data:columnGroup >
+				<data:column id="mounth" styleClass="column" rowspan="2"
+					headerClass="cheader" footerClass="cfooter">
+					<f:facet name="header">
+						<h:outputText value="mounth" />
+					</f:facet>
+					<f:facet name="footer">
+						<h:outputText value="-//-" />
+					</f:facet>
+					<h:outputText value="#{master.mounth}" />
+				</data:column>
+				<data:column styleClass="column" >
+					headerClass="cheader" footerClass="cfooter">
+					<f:facet name="header">
+						<h:outputText value="mounth" />
+					</f:facet>
+					<f:facet name="footer">
+						<h:outputText value="-//-" />
+					</f:facet>
+					<h:outputText value="#{master.mounth}" />
+				</data:column>
+				</data:columnGroup>
+				<data:column styleClass="column" 
+					headerClass="cheader" footerClass="cfooter">
+					<h:outputText value="#{master.mounth}" />
+				</data:column>
+				<data:subTable id="detail" var="detail" value="#{master.detail}">
+					<data:column id="name">
+						<h:outputText value="#{detail.name}" />
+					</data:column>
+					<data:column id="qty">
+						<h:outputText value="#{detail.qty}" />
+					</data:column>
+				</data:subTable>
+				<data:column id="total" styleClass="total" colspan="2">
+					<h:outputText value="#{master.total}" />
+				</data:column>
+			</data:dataTable>
+
+		</h:panelGrid>
+	</h:form>
+	<a4j:log hotkey="D" />
+</f:view>
+</body>
+</html>




More information about the richfaces-svn-commits mailing list