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>