Author: ilya_shaikovsky
Date: 2009-09-04 09:36:44 -0400 (Fri, 04 Sep 2009)
New Revision: 15462
Added:
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/carsstore/
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/carsstore/CarsBean.java
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/carsstore/InventoryItem.java
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/common/SelectsBean.java
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/ajax/selectsUpdates.xhtml
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/dataTable.xhtml
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/dataTable/
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/dataTable/dataTableEdit.xhtml
Modified:
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/ajax.xhtml
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/outputPanel/usage.xhtml
root/examples/trunk/richfaces-demo/src/main/webapp/templates/includes/navigation.xhtml
Log:
Added:
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/carsstore/CarsBean.java
===================================================================
---
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/carsstore/CarsBean.java
(rev 0)
+++
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/carsstore/CarsBean.java 2009-09-04
13:36:44 UTC (rev 15462)
@@ -0,0 +1,187 @@
+/**
+ *
+ */
+package org.richfaces.demo.carsstore;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.model.SelectItem;
+@ManagedBean(name="carsBean")
+@SessionScoped
+public class CarsBean {
+
+ private static final String [] CHEVROLETES = {"Corvette", "Malibu",
"Tahoe"};
+ private static final String [] FORDS = {"Taurus", "Explorer"};
+ private static final String [] NISSANS = {"Maxima", "Frontier"};
+ private static final String [] TOYOTA = {"4-Runner", "Camry",
"Avalon"};
+ private static final String [] GMCS = {"Sierra", "Yukon"};
+ private static final String [] INFINITIES = {"G35", "EX35"};
+
+ private static int DECIMALS = 1;
+ private static int ROUNDING_MODE = BigDecimal.ROUND_HALF_UP;
+
+ private List<InventoryItem> allCars = null;
+
+ private List<SelectItem> chevies = new ArrayList<SelectItem>();
+ private List<SelectItem> fords = new ArrayList<SelectItem>();
+ private List<SelectItem> nissans = new ArrayList<SelectItem>();
+ private List<SelectItem> toyotas = new ArrayList<SelectItem>();
+ private List<SelectItem> gmcs = new ArrayList<SelectItem>();
+ private List<SelectItem> infinities = new ArrayList<SelectItem>();
+
+ public CarsBean() {
+ chevies.add(new SelectItem("Corvette"));
+ chevies.add(new SelectItem("Malibu"));
+ chevies.add(new SelectItem("Tahoe"));
+
+ fords.add(new SelectItem("Taurus"));
+ fords.add(new SelectItem("Explorer"));
+
+ nissans.add(new SelectItem("Maxima"));
+ nissans.add(new SelectItem("Frontier"));
+
+ toyotas.add(new SelectItem("4-Runner"));
+ toyotas.add(new SelectItem("Camry"));
+ toyotas.add(new SelectItem("Avalon"));
+
+ gmcs.add(new SelectItem("Sierra"));
+ gmcs.add(new SelectItem("Yukon"));
+
+ infinities.add(new SelectItem("G35"));
+ infinities.add(new SelectItem("EX35"));
+ }
+
+ public List<InventoryItem> getAllCars() {
+ synchronized (this) {
+ if (allCars == null) {
+ allCars = new ArrayList<InventoryItem>();
+ for (int k = 0; k <= 5; k++) {
+ try {
+ switch (k) {
+ case 0:
+ allCars.addAll(createCar("Chevrolet", "Corvette",5));
+ allCars.addAll(createCar("Chevrolet", "Malibu", 8));
+ allCars.addAll(createCar("Chevrolet", "Tahoe", 6));
+ break;
+ case 1:
+ allCars.addAll(createCar("Ford", "Taurus", 12));
+ allCars.addAll(createCar("Ford", "Explorer", 11));
+ break;
+ case 2:
+ allCars.addAll(createCar("Nissan", "Maxima", 9));
+ allCars.addAll(createCar("Nissan", "Frontier", 6));
+ break;
+ case 3:
+ allCars.addAll(createCar("Toyota", "4-Runner", 7));
+ allCars.addAll(createCar("Toyota", "Camry", 15));
+ allCars.addAll(createCar("Toyota", "Avalon", 13));
+ break;
+ case 4:
+ allCars.addAll(createCar("GMC", "Sierra", 8));
+ allCars.addAll(createCar("GMC", "Yukon", 10));
+ break;
+ case 5:
+ allCars.addAll(createCar("Infiniti", "G35", 6));
+ allCars.addAll(createCar("Infiniti", "EX35", 5));
+ break;
+ default:
+ break;
+ }
+ } catch (Exception e) {
+ System.out.println("!!!!!!loadAllCars Error: "
+ + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ return allCars;
+ }
+
+ public List<InventoryItem> getTenRandomCars() {
+ List<InventoryItem> result = new ArrayList<InventoryItem>();
+ int size = getAllCars().size() - 1;
+ for (int i = 0; i < 10; i++) {
+ result.add(getAllCars().get(rand(1, size)));
+ }
+ return result;
+ }
+
+ public int genRand() {
+ return rand(1, 10000);
+ }
+
+ public List<InventoryItem> createCar(String make, String model,
+ int count) {
+
+ ArrayList<InventoryItem> iiList = null;
+
+ try {
+ int arrayCount = count;
+
+ InventoryItem[] demoInventoryItemArrays = new InventoryItem[arrayCount];
+
+ for (int j = 0; j < demoInventoryItemArrays.length; j++) {
+ InventoryItem ii = new InventoryItem();
+
+ ii.setMake(make);
+ ii.setModel(model);
+ ii.setStock(randomstring(6, 7));
+ ii.setVin(randomstring(14, 15));
+ ii.setMileage(new BigDecimal(rand(5000, 80000)).setScale(
+ DECIMALS, ROUNDING_MODE));
+ ii.setMileageMarket(new BigDecimal(rand(25000, 45000))
+ .setScale(DECIMALS, ROUNDING_MODE));
+ ii.setPrice(new Integer(rand(15000, 55000)));
+ ii.setPriceMarket(new BigDecimal(rand(15000, 55000)).setScale(
+ DECIMALS, ROUNDING_MODE));
+ ii.setDaysLive(rand(1, 90));
+ ii.setChangeSearches(new BigDecimal(rand(0, 5)).setScale(
+ DECIMALS, ROUNDING_MODE));
+ ii.setChangePrice(new BigDecimal(rand(0, 5)).setScale(DECIMALS,
+ ROUNDING_MODE));
+ ii.setExposure(new BigDecimal(rand(0, 5)).setScale(DECIMALS,
+ ROUNDING_MODE));
+ ii.setActivity(new BigDecimal(rand(0, 5)).setScale(DECIMALS,
+ ROUNDING_MODE));
+ ii.setPrinted(new BigDecimal(rand(0, 5)).setScale(DECIMALS,
+ ROUNDING_MODE));
+ ii.setInquiries(new BigDecimal(rand(0, 5)).setScale(DECIMALS,
+ ROUNDING_MODE));
+ demoInventoryItemArrays[j] = ii;
+
+ }
+
+ iiList = new ArrayList<InventoryItem>(Arrays
+ .asList(demoInventoryItemArrays));
+
+ } catch (Exception e) {
+ System.out.println("!!!!!!createCategory Error: " + e.getMessage());
+ e.printStackTrace();
+ }
+ return iiList;
+ }
+
+ public static int rand(int lo, int hi) {
+ Random rn2 = new Random();
+ int n = hi - lo + 1;
+ int i = rn2.nextInt() % n;
+ if (i < 0)
+ i = -i;
+ return lo + i;
+ }
+
+ public static String randomstring(int lo, int hi) {
+ int n = rand(lo, hi);
+ byte b[] = new byte[n];
+ for (int i = 0; i < n; i++)
+ b[i] = (byte) rand('A', 'Z');
+ return new String(b);
+ }
+}
Property changes on:
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/carsstore/CarsBean.java
___________________________________________________________________
Name: svn:executable
+ *
Added:
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/carsstore/InventoryItem.java
===================================================================
---
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/carsstore/InventoryItem.java
(rev 0)
+++
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/carsstore/InventoryItem.java 2009-09-04
13:36:44 UTC (rev 15462)
@@ -0,0 +1,147 @@
+package org.richfaces.demo.carsstore;
+
+import java.math.BigDecimal;
+import java.io.Serializable;
+
+public class InventoryItem{
+
+ String make;
+ String model;
+ String stock;
+ String vin;
+
+ BigDecimal mileage;
+ BigDecimal mileageMarket;
+ Integer price;
+ BigDecimal priceMarket;
+
+ int daysLive;
+ BigDecimal changeSearches;
+ BigDecimal changePrice;
+
+ BigDecimal exposure;
+ BigDecimal activity;
+ BigDecimal printed;
+ BigDecimal inquiries;
+
+
+ public String getMake() {
+ return make;
+ }
+
+ public void setMake(String make) {
+ this.make = make;
+ }
+
+ public String getModel() {
+ return model;
+ }
+
+ public void setModel(String model) {
+ this.model = model;
+ }
+
+ public String getStock() {
+ return stock;
+ }
+
+ public void setStock(String stock) {
+ this.stock = stock;
+ }
+
+ public String getVin() {
+ return vin;
+ }
+
+ public void setVin(String vin) {
+ this.vin = vin;
+ }
+
+ public BigDecimal getMileage() {
+ return mileage;
+ }
+
+ public void setMileage(BigDecimal mileage) {
+ this.mileage = mileage;
+ }
+
+ public BigDecimal getMileageMarket() {
+ return mileageMarket;
+ }
+
+ public void setMileageMarket(BigDecimal mileageMarket) {
+ this.mileageMarket = mileageMarket;
+ }
+
+ public Integer getPrice() {
+ return price;
+ }
+
+ public void setPrice(Integer price) {
+ this.price = price;
+ }
+
+ public BigDecimal getPriceMarket() {
+ return priceMarket;
+ }
+
+ public void setPriceMarket(BigDecimal priceMarket) {
+ this.priceMarket = priceMarket;
+ }
+
+ public int getDaysLive() {
+ return daysLive;
+ }
+
+ public void setDaysLive(int daysLive) {
+ this.daysLive = daysLive;
+ }
+
+ public BigDecimal getChangeSearches() {
+ return changeSearches;
+ }
+
+ public void setChangeSearches(BigDecimal changeSearches) {
+ this.changeSearches = changeSearches;
+ }
+
+ public BigDecimal getChangePrice() {
+ return changePrice;
+ }
+
+ public void setChangePrice(BigDecimal changePrice) {
+ this.changePrice = changePrice;
+ }
+
+ public BigDecimal getExposure() {
+ return exposure;
+ }
+
+ public void setExposure(BigDecimal exposure) {
+ this.exposure = exposure;
+ }
+
+ public BigDecimal getActivity() {
+ return activity;
+ }
+
+ public void setActivity(BigDecimal activity) {
+ this.activity = activity;
+ }
+
+ public BigDecimal getPrinted() {
+ return printed;
+ }
+
+ public void setPrinted(BigDecimal printed) {
+ this.printed = printed;
+ }
+
+ public BigDecimal getInquiries() {
+ return inquiries;
+ }
+
+ public void setInquiries(BigDecimal inquiries) {
+ this.inquiries = inquiries;
+ }
+}
Property changes on:
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/carsstore/InventoryItem.java
___________________________________________________________________
Name: svn:executable
+ *
Added:
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/common/SelectsBean.java
===================================================================
---
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/common/SelectsBean.java
(rev 0)
+++
root/examples/trunk/richfaces-demo/src/main/java/org/richfaces/demo/common/SelectsBean.java 2009-09-04
13:36:44 UTC (rev 15462)
@@ -0,0 +1,79 @@
+package org.richfaces.demo.common;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+import javax.faces.event.ValueChangeEvent;
+import javax.faces.model.SelectItem;
+
+/**
+ * @author Ilya Shaikovsky
+ *
+ */
+@ManagedBean(name="selectsBean")
+@RequestScoped
+public class SelectsBean {
+ private String currentType="";
+ private String currentItem="";
+ public List<SelectItem> firstList = new ArrayList<SelectItem>();
+ public List<SelectItem> secondList = new ArrayList<SelectItem>();
+ private static final String [] FRUITS = {"", "Banana",
"Cranberry", "Blueberry", "Orange"};
+ private static final String [] VEGETABLES = {"","Potatoes",
"Broccoli", "Garlic", "Carrot"};
+
+ public SelectsBean() {
+ SelectItem item = new SelectItem("", "");
+ firstList.add(item);
+ item = new SelectItem("fruits", "Fruits");
+ firstList.add(item);
+ item = new SelectItem("vegetables", "Vegetables");
+ firstList.add(item);
+ for (int i = 0; i < FRUITS.length; i++) {
+ item = new SelectItem(FRUITS[i]);
+ }
+ }
+
+ public List<SelectItem> getFirstList() {
+ return firstList;
+ }
+ public List<SelectItem> getSecondList() {
+ return secondList;
+ }
+ public static String[] getFRUITS() {
+ return FRUITS;
+ }
+ public static String[] getVEGETABLES() {
+ return VEGETABLES;
+ }
+ public void valueChanged(ValueChangeEvent event){
+ secondList.clear();
+ String[] currentItems;
+ if (((String)event.getNewValue()).equals("fruits")) {
+ currentItems = FRUITS;
+ }else{
+ currentItems = VEGETABLES;
+ }
+ for (int i = 0; i < currentItems.length; i++) {
+ SelectItem item = new SelectItem(currentItems[i]);
+ secondList.add(item);
+ }
+
+ }
+
+ public String getCurrentType() {
+ return currentType;
+ }
+
+ public void setCurrentType(String currentType) {
+ this.currentType = currentType;
+ }
+
+ public String getCurrentItem() {
+ return currentItem;
+ }
+
+ public void setCurrentItem(String currentItem) {
+ this.currentItem = currentItem;
+ }
+}
Added:
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/ajax/selectsUpdates.xhtml
===================================================================
---
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/ajax/selectsUpdates.xhtml
(rev 0)
+++
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/ajax/selectsUpdates.xhtml 2009-09-04
13:36:44 UTC (rev 15462)
@@ -0,0 +1,24 @@
+<!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:a4j="http://richfaces.org/a4j">
+
+<ui:composition>
+ <h:form>
+ <h:selectOneMenu value="#{selectsBean.currentType}"
+ valueChangeListener="#{selectsBean.valueChanged}">
+ <f:selectItems value="#{selectsBean.firstList}" />
+ <a4j:ajax event="valueChange" render="second"
execute="@this"
+ onbegin="if (confirm('Really want to change?'))
{alert('1');return false;}"/>
+ </h:selectOneMenu>
+ <a4j:outputPanel id="second" layout="block">
+ <h:selectOneMenu value="#{selectsBean.currentType}" rendered="#{not
empty selectsBean.currentType}">
+ <f:selectItems value="#{selectsBean.secondList}" />
+ </h:selectOneMenu>
+ </a4j:outputPanel>
+ </h:form>
+</ui:composition>
+
+</html>
\ No newline at end of file
Modified: root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/ajax.xhtml
===================================================================
--- root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/ajax.xhtml 2009-09-04
10:14:12 UTC (rev 15461)
+++ root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/ajax.xhtml 2009-09-04
13:36:44 UTC (rev 15462)
@@ -14,6 +14,14 @@
<legend>Simple sample</legend>
<ui:include src="/richfaces/ajax/ajax.xhtml" />
</fieldset>
+
+ <p>Typical use-case of dependent select components. When you choosing
+ the type in the first select - corresponding items appears in second one.
+ </p>
+ <fieldset>
+ <legend>Simple sample</legend>
+ <ui:include src="/richfaces/ajax/selectsUpdates.xhtml" />
+ </fieldset>
</ui:define>
</ui:composition>
Added:
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/dataTable/dataTableEdit.xhtml
===================================================================
---
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/dataTable/dataTableEdit.xhtml
(rev 0)
+++
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/dataTable/dataTableEdit.xhtml 2009-09-04
13:36:44 UTC (rev 15462)
@@ -0,0 +1,40 @@
+<!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:a4j="http://richfaces.org/a4j">
+
+ <ui:composition>
+ <h:form>
+ <h:dataTable value="#{carsBean.allCars}" var="car"
id="table">
+ <h:column>
+ <f:facet name="header">
+ <h:outputText value="Make" />
+ </f:facet>
+ <h:outputText value="#{car.make}"/>
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ <h:outputText value="Model" />
+ </f:facet>
+ <h:outputText value="#{car.model}"/>
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ <h:outputText value="Price" />
+ </f:facet>
+ <h:outputText value="#{car.price}"/>
+ </h:column>
+ <h:column>
+ <f:facet name="header">
+ Actions
+ </f:facet>
+ <a4j:commandLink value="Edit" action="#{carsBean.edit}"
render="table"/>
+ <h:outputText value=" " />
+ <a4j:commandLink value="Remove" action="#{carsBean.remove}"
render="table"/>
+ </h:column>
+ </h:dataTable>
+ </h:form>
+ </ui:composition>
+</html>
\ No newline at end of file
Added: root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/dataTable.xhtml
===================================================================
--- root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/dataTable.xhtml
(rev 0)
+++
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/dataTable.xhtml 2009-09-04
13:36:44 UTC (rev 15462)
@@ -0,0 +1,18 @@
+<!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">
+
+<ui:composition template="/templates/main.xhtml">
+ <ui:define name="body">
+ <p>
+ </p>
+ <fieldset>
+ <legend>Table Edit Sample</legend>
+ <ui:include src="/richfaces/dataTable/dataTableEdit.xhtml" />
+ </fieldset>
+ </ui:define>
+</ui:composition>
+
+</html>
\ No newline at end of file
Modified:
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/outputPanel/usage.xhtml
===================================================================
---
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/outputPanel/usage.xhtml 2009-09-04
10:14:12 UTC (rev 15461)
+++
root/examples/trunk/richfaces-demo/src/main/webapp/richfaces/outputPanel/usage.xhtml 2009-09-04
13:36:44 UTC (rev 15462)
@@ -49,7 +49,7 @@
<a4j:outputPanel layout="block">
<h:form>
- <a4j:outputPanel ajaxRendered="true"
layout="block">
+ <a4j:outputPanel layout="block">
<h:message for="text2" style="color:red"
/>
</a4j:outputPanel>
Modified:
root/examples/trunk/richfaces-demo/src/main/webapp/templates/includes/navigation.xhtml
===================================================================
---
root/examples/trunk/richfaces-demo/src/main/webapp/templates/includes/navigation.xhtml 2009-09-04
10:14:12 UTC (rev 15461)
+++
root/examples/trunk/richfaces-demo/src/main/webapp/templates/includes/navigation.xhtml 2009-09-04
13:36:44 UTC (rev 15462)
@@ -27,6 +27,9 @@
value="#{facesContext.externalContext.requestContextPath}/richfaces/commandLink.jsf">a4j:commandLink</h:outputLink>
<h:outputLink
value="#{facesContext.externalContext.requestContextPath}/richfaces/log.jsf">a4j:log</h:outputLink>
+ <hr/>
+ <h:outputLink
+ value="#{facesContext.externalContext.requestContextPath}/richfaces/dataTable.jsf">h:dataTable
vs Ajax</h:outputLink>
</h:panelGrid>
</rich:panel>
</ui:composition>