Author: konstantin.mishin
Date: 2010-03-01 13:30:39 -0500 (Mon, 01 Mar 2010)
New Revision: 16514
Added:
root/examples-sandbox/trunk/components/tables/src/main/java/org/richfaces/demo/FilteringAndSortingBean.java
root/examples-sandbox/trunk/components/tables/src/main/webapp/filteringAndSorting.xhtml
Log:
RF-7852 filtering and sorting sample
Added:
root/examples-sandbox/trunk/components/tables/src/main/java/org/richfaces/demo/FilteringAndSortingBean.java
===================================================================
---
root/examples-sandbox/trunk/components/tables/src/main/java/org/richfaces/demo/FilteringAndSortingBean.java
(rev 0)
+++
root/examples-sandbox/trunk/components/tables/src/main/java/org/richfaces/demo/FilteringAndSortingBean.java 2010-03-01
18:30:39 UTC (rev 16514)
@@ -0,0 +1,100 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright ${year}, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+
+package org.richfaces.demo;
+
+import java.util.Comparator;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.swing.SortOrder;
+
+import org.richfaces.demo.model.Employee;
+import org.richfaces.model.Filter;
+
+@ManagedBean(name="filteringAndSortingBean")
+@SessionScoped
+public class FilteringAndSortingBean {
+
+ private SortOrder nameSortOrder = SortOrder.UNSORTED;
+
+ private SortOrder emailSortOrder = SortOrder.UNSORTED;
+
+ private String nameFilterValue;
+
+ private String titleFilterValue;
+
+ public Filter<?> getFilter() {
+ return new Filter<Employee>() {
+ public boolean accept(Employee employee) {
+ if (titleFilterValue != null && employee != null &&
employee.getTitle() != null) {
+ return
employee.getTitle().toUpperCase().startsWith(titleFilterValue.toUpperCase());
+ }
+ return true;
+ }
+ };
+ }
+
+ public Comparator<?> getComparator() {
+ return new Comparator<Employee>() {
+ public int compare(Employee o1, Employee o2) {
+ if (o1.getName() != null) {
+ return o1.getName().compareToIgnoreCase(o2.getName());
+ }
+ return 0;
+ }
+ };
+ }
+
+ public void setNameSortOrder(SortOrder nameSortOrder) {
+ this.nameSortOrder = nameSortOrder;
+ }
+
+ public SortOrder getNameSortOrder() {
+ return nameSortOrder;
+ }
+
+ public void setEmailSortOrder(SortOrder emailSortOrder) {
+ this.emailSortOrder = emailSortOrder;
+ }
+
+ public SortOrder getEmailSortOrder() {
+ return emailSortOrder;
+ }
+
+ public void setTitleFilterValue(String titleFilterValue) {
+ this.titleFilterValue = titleFilterValue;
+ }
+
+ public String getTitleFilterValue() {
+ return titleFilterValue;
+ }
+
+ public void setNameFilterValue(String nameFilterValue) {
+ this.nameFilterValue = nameFilterValue;
+ }
+
+ public String getNameFilterValue() {
+ return nameFilterValue;
+ }
+
+}
Added:
root/examples-sandbox/trunk/components/tables/src/main/webapp/filteringAndSorting.xhtml
===================================================================
---
root/examples-sandbox/trunk/components/tables/src/main/webapp/filteringAndSorting.xhtml
(rev 0)
+++
root/examples-sandbox/trunk/components/tables/src/main/webapp/filteringAndSorting.xhtml 2010-03-01
18:30:39 UTC (rev 16514)
@@ -0,0 +1,104 @@
+<!--
+JBoss, Home of Professional Open Source
+Copyright ${year}, Red Hat, Inc. and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+
+This is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as
+published by the Free Software Foundation; either version 2.1 of
+the License, or (at your option) any later version.
+
+
+This software is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+
+You should have received a copy of the GNU Lesser General Public
+License along with this software; if not, write to the Free
+Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html
xmlns="http://www.w3.org/1999/xhtml"
+
xmlns:h="http://java.sun.com/jsf/html"
+
xmlns:f="http://java.sun.com/jsf/core"
+
xmlns:ui="http://java.sun.com/jsf/facelets"
+
xmlns:rich="http://richfaces.org/rich">
+ <f:view contentType="text/html"/>
+
+ <h:head>
+ <title>Richfaces Filtering And Sorting Developer's Demo</title>
+ </h:head>
+
+ <h:body>
+ <h:form id="form1">
+ <h:outputText value="Show data in table" />
+ <h:selectBooleanCheckbox value="#{dataBean.state}">
+ <f:ajax render="dataTable" />
+ </h:selectBooleanCheckbox>
+ <rich:dataTable id="dataTable" value="#{dataBean.state ?
dataBean.employeeList : null}" var="record" rowKeyVar="rkv"
filterVar="fv">
+ <f:facet name="noData">
+ <h:outputText value="There isn't data." style="border: solid
black 1px;"/>
+ </f:facet>
+ <rich:column>
+ <f:facet name="header">
+ <h:outputText value="rkv"/>
+ </f:facet>
+ <h:outputText value="#{rkv}" />
+ </rich:column>
+ <rich:column id="column_name"
filterValue="#{filteringAndSortingBean.nameFilterValue}"
+ filterExpression="#{fv == null || fv == '' ||fv == record.name}"
+ comparator="#{filteringAndSortingBean.comparator}"
sortOrder="#{filteringAndSortingBean.nameSortOrder}">
+ <f:facet name="header">
+ <h:outputText id="columnHeader1" value="Column Header Facet"
/>
+ <h:outputText value="Title"/>
+ <h:inputText
value="#{filteringAndSortingBean.nameFilterValue}">
+ <f:ajax render=":form1:dataTable" />
+ </h:inputText>
+ <h:selectOneMenu value="#{filteringAndSortingBean.nameSortOrder}">
+ <f:selectItem itemLabel="ASCENDING"
itemValue="ASCENDING"/>
+ <f:selectItem itemLabel="DESCENDING"
itemValue="DESCENDING"/>
+ <f:selectItem itemLabel="UNSORTED"
itemValue="UNSORTED"/>
+ <f:ajax render=":form1:dataTable" />
+ </h:selectOneMenu>
+ </f:facet>
+ <h:outputText value="#{record.name}" />
+ <f:facet name="footer">
+ <h:outputText id="columnFooter1" value="Column Footer
Facet"/>
+ </f:facet>
+ </rich:column>
+
+ <rich:column id="column_title" width="200px"
filter="#{filteringAndSortingBean.filter}">
+ <f:facet name="header">
+ <h:outputText value="Title"/>
+ <h:inputText
value="#{filteringAndSortingBean.titleFilterValue}">
+ <f:ajax render=":form1:dataTable" />
+ </h:inputText>
+ </f:facet>
+ <h:outputText value="#{record.title}" />
+ <f:facet name="footer">
+ <h:outputText id="columnFooter2" value="Column Footer
Facet2"/>
+ </f:facet>
+ </rich:column>
+
+ <rich:column id="column_email" width="300px"
sortBy="#{record.EMail}"
sortOrder="#{filteringAndSortingBean.emailSortOrder}">
+ <f:facet name="header">
+ <h:outputText value="E-mail"/>
+ <h:selectOneMenu
value="#{filteringAndSortingBean.emailSortOrder}">
+ <f:selectItem itemLabel="ASCENDING"
itemValue="ASCENDING"/>
+ <f:selectItem itemLabel="DESCENDING"
itemValue="DESCENDING"/>
+ <f:selectItem itemLabel="UNSORTED"
itemValue="UNSORTED"/>
+ <f:ajax render=":form1:dataTable" />
+ </h:selectOneMenu>
+ </f:facet>
+ <h:outputText value="#{record.EMail}" />
+ </rich:column>
+ </rich:dataTable>
+ <input type="submit" />
+ </h:form>
+ </h:body>
+</html>