[richfaces-svn-commits] JBoss Rich Faces SVN: r5907 - in trunk/ui: dataTable/src/main/java/org/richfaces and 3 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Thu Feb 7 07:47:37 EST 2008


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;
+		
+	}
 }




More information about the richfaces-svn-commits mailing list