diff options
Diffstat (limited to 'orkweb/src/net/sf/oreka/tapestry/TableHeader.java')
-rw-r--r-- | orkweb/src/net/sf/oreka/tapestry/TableHeader.java | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/orkweb/src/net/sf/oreka/tapestry/TableHeader.java b/orkweb/src/net/sf/oreka/tapestry/TableHeader.java new file mode 100644 index 0000000..6b8ccc2 --- /dev/null +++ b/orkweb/src/net/sf/oreka/tapestry/TableHeader.java @@ -0,0 +1,81 @@ +/* + * Oreka -- A media capture and retrieval platform + * + * Copyright (C) 2005, orecx LLC + * + * http://www.orecx.com + * + * This program is free software, distributed under the terms of + * the GNU General Public License. + * Please refer to http://www.gnu.org/copyleft/gpl.html + * + */ + +/** + * + */ +package net.sf.oreka.tapestry; + +import java.util.*; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.*; +import org.apache.tapestry.*; + + +public abstract class TableHeader extends BaseComponent { + + static Logger logger = Logger.getLogger(TableHeader.class); + + public abstract TableState getTableState(); + public abstract void setTableState(TableState state); + + //private String columns; + public abstract String getColumnsCSV(); + public abstract void setColumnsCSV(String columns); + + + public List getColumns() { + String[] columnsArray = StringUtils.split(getColumnsCSV(),", "); + //logger.log(Level.INFO, "ColumnsCSV: "+getColumnsCSV()); + + List columns = new ArrayList(); + for (int i=0; i<columnsArray.length; i++) { + TableColumn column = new TableColumn(); + column.setSortable(true); + String columnKey = columnsArray[i]; + if (columnsArray[i].charAt(0) == '!') { + column.setSortable(false); + columnKey = columnsArray[i].substring(1); + } + column.setKey(columnKey); + String LocalizedMessage = getPage().getMessages().getMessage(columnKey); + column.setMessage(LocalizedMessage); + columns.add(column); + } + return columns; + } + + public abstract void setColumn(TableColumn col); + public abstract TableColumn getColumn(); + + /** + * + */ + public TableHeader() { + } + + public void columnClickAction(IRequestCycle cycle) { + + Object[] parameters = cycle.getServiceParameters(); + String column = (String)parameters[0]; + if (!column.equals(getTableState().getOrderBy())) { + getTableState().setOrderBy(column); + getTableState().setAscending(true); + } + else { + // Toggle direction + getTableState().setAscending(!getTableState().isAscending()); + } + setTableState(getTableState()); + } +} |