Author: konstantin.mishin
Date: 2008-02-07 07:47:37 -0500 (Thu, 07 Feb 2008)
New Revision: 5907
Added:
trunk/ui/dataTable/src/main/java/org/richfaces/taglib/
trunk/ui/dataTable/src/main/java/org/richfaces/taglib/ColumnTagHandler.java
Modified:
trunk/ui/dataTable/src/main/config/component/column.xml
trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/component/html/MockColumns.java
Log:
RF-1741
Modified: trunk/ui/dataTable/src/main/config/component/column.xml
===================================================================
--- trunk/ui/dataTable/src/main/config/component/column.xml 2008-02-07 12:45:55 UTC (rev
5906)
+++ trunk/ui/dataTable/src/main/config/component/column.xml 2008-02-07 12:47:37 UTC (rev
5907)
@@ -22,11 +22,9 @@
</superclass>
<test/>
</tag>
- <!--
<taghandler>
- <classname>org.ajax4jsf.tag.TestHandler</classname>
+ <classname>org.richfaces.taglib.ColumnTagHandler</classname>
</taghandler>
- -->
&ui_component_attributes;
&html_universal_attributes;
<property disabled="true">
@@ -93,6 +91,13 @@
<classname>boolean</classname>
<description>Attribute defines a bean property which is used for filtering of a
column</description>
</property>
+ <property elonly="true">
+ <name>filterMethod</name>
+ <classname>javax.el.MethodExpression</classname>
+ <methodargs>java.lang.Object</methodargs>
+ <returntype>boolean</returntype>
+ <description></description>
+ </property>
<!--
<property>
Modified: trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java
===================================================================
--- trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java 2008-02-07
12:45:55 UTC (rev 5906)
+++ trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java 2008-02-07
12:47:37 UTC (rev 5907)
@@ -27,6 +27,7 @@
import javax.el.ELContext;
import javax.el.ExpressionFactory;
+import javax.el.MethodExpression;
import javax.el.ValueExpression;
import javax.faces.component.UIColumn;
import javax.faces.component.UIComponent;
@@ -177,6 +178,10 @@
if (filterExpression != null) {
filterFields.add(new FilterField(filterExpression));
}
+ MethodExpression filterMethod = column.getFilterMethod();
+ if (filterMethod != null) {
+ filterFields.add(new FilterField(filterMethod));
+ }
if (column.isSortable() && !Ordering.UNSORTED.equals(column.getSortOrder()))
{
ValueExpression sortExpression =
component.getValueExpression("sortExpression");
if (sortExpression != null) {
Added: trunk/ui/dataTable/src/main/java/org/richfaces/taglib/ColumnTagHandler.java
===================================================================
--- trunk/ui/dataTable/src/main/java/org/richfaces/taglib/ColumnTagHandler.java
(rev 0)
+++ trunk/ui/dataTable/src/main/java/org/richfaces/taglib/ColumnTagHandler.java 2008-02-07
12:47:37 UTC (rev 5907)
@@ -0,0 +1,58 @@
+/**
+ *
+ */
+package org.richfaces.taglib;
+
+import javax.el.MethodExpression;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+import com.sun.facelets.FaceletContext;
+import com.sun.facelets.tag.MetaRule;
+import com.sun.facelets.tag.MetaRuleset;
+import com.sun.facelets.tag.Metadata;
+import com.sun.facelets.tag.MetadataTarget;
+import com.sun.facelets.tag.TagAttribute;
+import com.sun.facelets.tag.jsf.ComponentConfig;
+import com.sun.facelets.tag.jsf.ComponentHandler;
+
+/**
+ * @author Konstantin Mishin
+ *
+ */
+public class ColumnTagHandler extends ComponentHandler {
+
+ private final static String FILTER_METHOD = "filterMethod";
+
+ public ColumnTagHandler(ComponentConfig config) {
+ super(config);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected MetaRuleset createMetaRuleset(Class type) {
+ MetaRuleset ruleset = super.createMetaRuleset(type);
+
+ ruleset.addRule(new MetaRule() {
+
+ @Override
+ public Metadata applyRule(String name, final TagAttribute attribute, MetadataTarget
metadataTarget) {
+ if (FILTER_METHOD.equals(name)) {
+ return new Metadata() {
+ public void applyMetadata(FaceletContext context, Object object) {
+ FacesContext facesContext = context.getFacesContext();
+
+ MethodExpression expression =
facesContext.getApplication().getExpressionFactory().
+ createMethodExpression(facesContext.getELContext(), attribute.getValue(),
boolean.class, new Class[]{Object.class});
+ ((UIComponent) object).getAttributes().put(FILTER_METHOD, expression);
+ }
+ };
+ }
+
+ return null;
+ }
+ });
+
+ return ruleset;
+ }
+}
Modified:
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/component/html/MockColumns.java
===================================================================
---
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/component/html/MockColumns.java 2008-02-07
12:45:55 UTC (rev 5906)
+++
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/component/html/MockColumns.java 2008-02-07
12:47:37 UTC (rev 5907)
@@ -21,6 +21,7 @@
package org.richfaces.component.html;
+import javax.el.MethodExpression;
import javax.faces.component.UIColumn;
import javax.faces.component.UIComponent;
import javax.faces.component.UIComponentBase;
@@ -40,6 +41,7 @@
private String sortExpression;
private Ordering sortOrder;
+ private MethodExpression methodExpression;
private boolean sortable;
private boolean breakbefore;
@@ -84,4 +86,13 @@
public void setSortOrder(Ordering sortOrder) {
this.sortOrder = sortOrder;
}
+
+ public MethodExpression getFilterMethod() {
+ return methodExpression;
+ }
+
+ public void setFilterMethod(MethodExpression methodExpression) {
+ this.methodExpression = methodExpression;
+
+ }
}
Show replies by date