Author: knopp Date: Fri Jun 8 13:30:43 2007 New Revision: 545612 URL: http://svn.apache.org/viewvc?view=rev&rev=545612 Log: WICKET-630 - It should be possible to specify different CSS class names for certain columns in DataTable
Added: incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/IStyledColumn.java Modified: incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/AbstractColumn.java incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java Modified: incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/AbstractColumn.java URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/AbstractColumn.java?view=diff&rev=545612&r1=545611&r2=545612 ============================================================================== --- incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/AbstractColumn.java (original) +++ incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/AbstractColumn.java Fri Jun 8 13:30:43 2007 @@ -25,7 +25,7 @@ * * @author Igor Vaynberg ( ivaynberg ) */ -public abstract class AbstractColumn implements IColumn +public abstract class AbstractColumn implements IStyledColumn { private IModel displayModel; private String sortProperty; @@ -92,5 +92,13 @@ { displayModel.detach(); } + } + + /** + * @ssee [EMAIL PROTECTED] IStyledColumn#getCssClass()} + */ + public String getCssClass() + { + return null; } } Modified: incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java?view=diff&rev=545612&r1=545611&r2=545612 ============================================================================== --- incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java (original) +++ incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DataTable.java Fri Jun 8 13:30:43 2007 @@ -16,7 +16,11 @@ */ package org.apache.wicket.extensions.markup.html.repeater.data.table; +import org.apache.wicket.Component; +import org.apache.wicket.behavior.AbstractBehavior; +import org.apache.wicket.behavior.IBehavior; import org.apache.wicket.extensions.markup.html.repeater.data.grid.DataGridView; +import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.navigation.paging.IPageable; import org.apache.wicket.markup.html.panel.Panel; @@ -26,6 +30,7 @@ import org.apache.wicket.markup.repeater.RepeatingView; import org.apache.wicket.markup.repeater.data.IDataProvider; import org.apache.wicket.model.IModel; +import org.apache.wicket.util.string.Strings; /** @@ -67,6 +72,31 @@ */ public class DataTable extends Panel implements IPageable { + static abstract class CssAttributeBehavior extends AbstractBehavior + { + protected abstract String getCssClass(); + + /** + * @see IBehavior#onComponentTag(Component, ComponentTag) + */ + public void onComponentTag(Component component, ComponentTag tag) + { + String className = getCssClass(); + if (!Strings.isEmpty(className)) + { + CharSequence oldClassName = tag.getString("class"); + if (Strings.isEmpty(oldClassName)) + { + tag.put("class", className); + } + else + { + tag.put("class", oldClassName + " " + className); + } + } + } + } + /** * The component id that toolbars must be created with in order to be added * to the data table @@ -106,7 +136,21 @@ protected Item newCellItem(String id, int index, IModel model) { - return DataTable.this.newCellItem(id, index, model); + Item item = DataTable.this.newCellItem(id, index, model); + final IColumn column = DataTable.this.columns[index]; + if (column instanceof IStyledColumn) + { + item.add(new DataTable.CssAttributeBehavior() + { + private static final long serialVersionUID = 1L; + + protected String getCssClass() + { + return ((IStyledColumn)column).getCssClass(); + } + }); + } + return item; } protected Item newRowItem(String id, int index, IModel model) @@ -286,7 +330,7 @@ * * @return DataItem created DataItem */ - protected Item newCellItem(final String id, int index, final IModel model) + protected Item newCellItem(final String id, final int index, final IModel model) { return new Item(id, index, model); } Modified: incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java?view=diff&rev=545612&r1=545611&r2=545612 ============================================================================== --- incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java (original) +++ incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/HeadersToolbar.java Fri Jun 8 13:30:43 2007 @@ -34,7 +34,7 @@ public class HeadersToolbar extends AbstractToolbar { private static final long serialVersionUID = 1L; - + /** * Constructor * @@ -69,6 +69,20 @@ { header = new WebMarkupContainer("header"); } + + if (column instanceof IStyledColumn) + { + header.add(new DataTable.CssAttributeBehavior() + { + private static final long serialVersionUID = 1L; + + protected String getCssClass() + { + return ((IStyledColumn)column).getCssClass(); + } + }); + } + item.add(header); item.setRenderBodyOnly(true); header.add(column.getHeader("label")); Added: incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/IStyledColumn.java URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/IStyledColumn.java?view=auto&rev=545612 ============================================================================== --- incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/IStyledColumn.java (added) +++ incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/IStyledColumn.java Fri Jun 8 13:30:43 2007 @@ -0,0 +1,15 @@ +package org.apache.wicket.extensions.markup.html.repeater.data.table; + +/** + * Interface that allows styling individuals DataTable columns + * + * @author Matej Knopp + */ +public interface IStyledColumn extends IColumn +{ + /** + * Returns the css class for this column. + * @return CSS class name + */ + public String getCssClass(); +}