/*
* $Id: ResultSetBean.java,v 1.1 2005/11/03 03:00:23 SherryShen Exp $
*/
/*
* Copyright 2004-2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
package demo.model;
import com.sun.org.apache.commons.logging.Log;
import com.sun.org.apache.commons.logging.LogFactory;
import javax.faces.component.UIComponent;
import javax.faces.component.UIData;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
/**
* <p>Backing file bean for <code>ResultSet</code> demo.</p>
*/
public class ResultSetBean {
private static Log log = LogFactory.getLog(ResultSetBean.class);
private List list = null;
public ResultSetBean() {
}
public List getList() {
// Construct a preconfigured customer list lazily.
if (list == null) {
list = new ArrayList();
for (int i = 0; i < 1000; i++) {
list.add(new CustomerBean(Integer.toString(i),
"name_" + Integer.toString(i),
"symbol_" + Integer.toString(i), i));
}
}
return list;
}
public void setList(List newlist) {
this.list = newlist;
}
// -------------------------------------------------------- Bound Components
/**
* <p>The <code>UIData</code> component representing the entire table.</p>
*/
private UIData data = null;
public UIData getData() {
return data;
}
public void setData(UIData data) {
this.data = data;
}
// ---------------------------------------------------------- Action Methods
/**
* <p>Scroll directly to the first page.</p>
*/
public String first() {
scroll(0);
return (null);
}
/**
* <p>Scroll directly to the last page.</p>
*/
public String last() {
scroll(data.getRowCount() - 1);
return (null);
}
/**
* <p>Scroll forwards to the next page.</p>
*/
public String next() {
int first = data.getFirst();
scroll(first + data.getRows());
return (null);
}
/**
* <p>Scroll backwards to the previous page.</p>
*/
public String previous() {
int first = data.getFirst();
scroll(first - data.getRows());
return (null);
}
/**
* <p>Scroll to the page that contains the specified row number.</p>
*
* @param row Desired row number
*/
public void scroll(int row) {
int rows = data.getRows();
if (rows < 1) {
return; // Showing entire table already
}
if (row < 0) {
data.setFirst(0);
} else if (row >= data.getRowCount()) {
data.setFirst(data.getRowCount() - 1);
} else {
data.setFirst(row - (row % rows));
}
}
/**
* Handles the ActionEvent generated as a result of clicking on a
* link that points a particular page in the result-set.
*/
public void processScrollEvent(ActionEvent event) {
int currentRow = 1;
if (log.isTraceEnabled()) {
log.trace("TRACE: ResultSetBean.processScrollEvent ");
}
FacesContext context = FacesContext.getCurrentInstance();
UIComponent component = event.getComponent();
Integer curRow = (Integer) component.getAttributes().get("currentRow");
if (curRow != null) {
currentRow = curRow.intValue();
}
// scroll to the appropriate page in the ResultSet.
scroll(currentRow);
}
}