Author: abelevich
Date: 2011-02-01 09:25:11 -0500 (Tue, 01 Feb 2011)
New Revision: 21356
Modified:
trunk/ui/iteration/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/AbstractTableBaseRenderer.java
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
Log:
RF-8685 implement set of event handlers onrow* (onrowmouseover, onrowclick and so on..)
for dataTAble and ExtendedDataTable
Modified:
trunk/ui/iteration/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
===================================================================
---
trunk/ui/iteration/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2011-02-01
14:21:26 UTC (rev 21355)
+++
trunk/ui/iteration/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2011-02-01
14:25:11 UTC (rev 21356)
@@ -45,6 +45,7 @@
import org.ajax4jsf.model.ExtendedDataModel;
import org.ajax4jsf.model.Range;
import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
import org.richfaces.context.ExtendedVisitContext;
import org.richfaces.context.ExtendedVisitContextMode;
import org.richfaces.event.FilteringEvent;
@@ -141,6 +142,36 @@
@Attribute
public abstract SortMode getSortMode();
+ @Attribute(events = @EventName("rowclick"))
+ public abstract String getOnrowclick();
+
+ @Attribute(events = @EventName("rowdblclick"))
+ public abstract String getOnrowdblclick();
+
+ @Attribute(events = @EventName("rowmousedown"))
+ public abstract String getOnrowmousedown();
+
+ @Attribute(events = @EventName("rowmouseup"))
+ public abstract String getOnrowmouseup();
+
+ @Attribute(events = @EventName("rowmouseover"))
+ public abstract String getOnrowmouseover();
+
+ @Attribute(events = @EventName("rowmousemove"))
+ public abstract String getOnrowmousemove();
+
+ @Attribute(events = @EventName("rowmouseout"))
+ public abstract String getOnrowmouseout();
+
+ @Attribute(events = @EventName("rowkeypress"))
+ public abstract String getOnrowkeypress();
+
+ @Attribute(events = @EventName("rowkeydown"))
+ public abstract String getOnrowkeydown();
+
+ @Attribute(events = @EventName("rowkeyup"))
+ public abstract String getOnrowkeyup();
+
public Iterator<UIComponent> columns() {
return new DataTableColumnsIterator(this);
}
Modified:
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
===================================================================
---
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2011-02-01
14:21:26 UTC (rev 21355)
+++
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2011-02-01
14:25:11 UTC (rev 21356)
@@ -23,6 +23,8 @@
package org.richfaces.renderkit;
import java.io.IOException;
+import java.util.Collections;
+import java.util.Map;
import javax.faces.FacesException;
import javax.faces.application.ResourceDependencies;
@@ -48,6 +50,30 @@
})
public abstract class AbstractRowsRenderer extends RendererBase implements DataVisitor {
+ private static final Map<String, ComponentAttribute> ROW_HANDLER_ATTRIBUTES =
Collections
+ .unmodifiableMap(ComponentAttribute.createMap(
+ new
ComponentAttribute(HtmlConstants.ONCLICK_ATTRIBUTE).setEventNames("rowclick").
+ setComponentAttributeName("onrowclick"),
+ new
ComponentAttribute(HtmlConstants.ONDBLCLICK_ATTRIBUTE).setEventNames("rowdblclick").
+ setComponentAttributeName("onrowdblclick"),
+ new
ComponentAttribute(HtmlConstants.ONMOUSEDOWN_ATTRIBUTE).setEventNames("rowmousedown").
+ setComponentAttributeName("onrowmousedown"),
+ new
ComponentAttribute(HtmlConstants.ONMOUSEUP_ATTRIBUTE).setEventNames("rowmouseup").
+ setComponentAttributeName("onrowmouseup"),
+ new
ComponentAttribute(HtmlConstants.ONMOUSEOVER_ATTRIBUTE).setEventNames("rowmouseover").
+ setComponentAttributeName("onrowmouseover"),
+ new
ComponentAttribute(HtmlConstants.ONMOUSEMOVE_ATTRIBUTE).setEventNames("rowmousemove").
+ setComponentAttributeName("onrowmousemove"),
+ new
ComponentAttribute(HtmlConstants.ONMOUSEOUT_ATTRIBUTE).setEventNames("rowmouseout").
+ setComponentAttributeName("onrowmouseout"),
+ new
ComponentAttribute(HtmlConstants.ONKEYPRESS_ATTRIBUTE).setEventNames("rowkeypress").
+ setComponentAttributeName("onrowkeypress"),
+ new
ComponentAttribute(HtmlConstants.ONKEYDOWN_ATTRIBUTE).setEventNames("rowkeydown").
+ setComponentAttributeName("onrowkeydown"),
+ new
ComponentAttribute(HtmlConstants.ONKEYUP_ATTRIBUTE).setEventNames("rowkeyup").
+ setComponentAttributeName("onrowkeyup")
+ ));
+
public abstract void encodeRow(ResponseWriter writer, FacesContext facesContext,
RowHolderBase rowHolder) throws IOException;
public abstract RowHolderBase createRowHolder(FacesContext context, UIComponent
component, Object [] options);
@@ -76,6 +102,10 @@
public void encodeFakeRow(FacesContext facesContext, RowHolderBase rowHolder) throws
IOException {
}
+ protected void renderRowHandlers(FacesContext context, UIDataTableBase dataTable)
throws IOException {
+ RenderKitUtils.renderPassThroughAttributesOptimized(context, dataTable,
ROW_HANDLER_ATTRIBUTES);
+ }
+
public void processRows(ResponseWriter writer, FacesContext facesContext, UIComponent
component, Object[] options) throws IOException {
RowHolderBase rowHolder = createRowHolder(facesContext, component, options);
encodeRows(facesContext, rowHolder);
Modified:
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/AbstractTableBaseRenderer.java
===================================================================
---
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/AbstractTableBaseRenderer.java 2011-02-01
14:21:26 UTC (rev 21355)
+++
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/AbstractTableBaseRenderer.java 2011-02-01
14:25:11 UTC (rev 21356)
@@ -32,6 +32,7 @@
import javax.faces.context.ResponseWriter;
import org.richfaces.component.Row;
+import org.richfaces.component.UIDataTableBase;
/**
@@ -79,7 +80,7 @@
} else {
encodeRowStart(writer, context, parentId, currentRow, component);
}
-
+ renderRowHandlers(context, (UIDataTableBase)rowHolder.getRow());
rowHolder.setRowStart(false);
}
Modified:
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
===================================================================
---
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2011-02-01
14:21:26 UTC (rev 21355)
+++
trunk/ui/iteration/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2011-02-01
14:25:11 UTC (rev 21356)
@@ -764,7 +764,9 @@
RendererState state = (RendererState) rowHolder;
UIDataTableBase table = state.getRow();
writer.startElement(HtmlConstants.TR_ELEMENT, table);
-
+
+ renderRowHandlers(facesContext, (UIDataTableBase)rowHolder.getRow());
+
String rowClass = getRowClass(rowHolder);
if (!"".equals(rowClass)) {
writer.writeAttribute(HtmlConstants.CLASS_ATTRIBUTE, rowClass, null);