Java tutorial
/* * $Id$ * * This file is released under the GNU General Public License. * Refer to the COPYING file distributed with this package. * * Copyright (c) 2008 WURFL-Pro S.r.l. */ package it.filosganga.mobile.widgets.component; import static ch.lambdaj.Lambda.*; import java.util.*; import org.apache.commons.lang.Validate; import org.apache.commons.lang.builder.*; /** * @author Filippo De Luca * @version $Id$ */ public class TableHeader extends Component { private static final long serialVersionUID = 10L; private List<TableColumn> columns = new ArrayList<TableColumn>(); public TableHeader(List<TableColumn> columns) { if (columns != null) { setColumns(columns); } } public List<TableColumn> getColumns() { return columns; } public int getColumnsSize() { return sum(extractProperty(columns, "colspan")).intValue(); } // Business methods *************************************************** @Override public void accept(final ComponentVisitor visitor) throws ComponentException { super.accept(visitor); forEach(columns).accept(visitor); } public Table getTable() { return (Table) getParent(); } public TableColumn getColumnAtIndex(int index) { TableColumn column = null; int columnIndex = 0; Iterator<TableColumn> columnIt = columns.iterator(); while (columnIndex <= index && columnIt.hasNext()) { column = columnIt.next(); columnIndex = columnIndex + column.getColspan(); } return column; } public int getColumnIndex(TableColumn column) { Validate.isTrue(columns.contains(column), "The given cell must be child of this row"); return sum(extractProperty(columns.subList(0, columns.indexOf(column)), "colspan")).intValue(); } // Support methods **************************************************** private void setColumns(List<TableColumn> columns) { for (TableColumn column : columns) { addColumn(column); } } private void addColumn(TableColumn column) { Validate.notNull(column); if (columns.add(column)) { column.setParent(this); } } // Common methods ***************************************************** @Override public boolean equals(Object obj) { EqualsBuilder builder = new EqualsBuilder(); builder.appendSuper(super.equals(obj)); if (builder.isEquals() && obj instanceof TableHeader) { TableHeader other = (TableHeader) obj; builder.append(columns, other.columns); } return builder.isEquals(); } @Override public int hashCode() { HashCodeBuilder builder = new HashCodeBuilder(); builder.appendSuper(super.hashCode()); builder.append(columns); return builder.toHashCode(); } @Override public String toString() { ToStringBuilder builder = new ToStringBuilder(this); builder.appendSuper(super.toString()); builder.append(columns); return builder.toString(); } }