You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Grigorov (JIRA)" <ji...@apache.org> on 2014/02/20 14:22:21 UTC

[jira] [Resolved] (WICKET-1069) RFE: DataTable && colgroup

     [ https://issues.apache.org/jira/browse/WICKET-1069?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Grigorov resolved WICKET-1069.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: 7.0.0

> RFE: DataTable && colgroup
> --------------------------
>
>                 Key: WICKET-1069
>                 URL: https://issues.apache.org/jira/browse/WICKET-1069
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket-extensions
>         Environment: any
>            Reporter: Jan Kriesten
>            Assignee: Martin Grigorov
>            Priority: Minor
>             Fix For: 7.0.0
>
>
> Hi!
> I want to suggest an enhancement for the DataTable extension.
> Right now it's only possible to style columns (width, alignment, color etc.) via stylesheets. This has some not so nice implications IMHO:
> - You have to extend the IStyledColumn to return the proper CSS class.
> - You have to add a bunch of CSS classes to get the proper styles.
> - You have redundancy in HTML output - which isn't necessary.
> This is actually what <colgroup><col></colgroup> is meant to solve.
> My suggestion:
> Adding a 'addColGroup( ColGroup cg )'-feature, which actually lets you add x ColGroups with n Cols on which you can use AttributeModifiers to have your styles/classes/width-Attributes added.
> A quick implementation would be this:
> ---[ColGroup.java]--
> import java.util.List;
> import org.apache.wicket.behavior.IBehavior;
> import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractToolbar;
> import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
> import org.apache.wicket.markup.html.WebMarkupContainer;
> import org.apache.wicket.markup.repeater.RepeatingView;
> public class ColGroup
>     extends AbstractToolbar
> {
>   private static final long serialVersionUID = 1L;
>   private int numCols;
>   private Col[] cols;
>   public ColGroup( DataTable datatable, int numCols )
>   {
>     super( datatable );
>     this.numCols = numCols;
>   }
>   public void onBeforeRender()
>   {
>     if( !hasBeenRendered() )
>     {
>       WebMarkupContainer colgroup = new WebMarkupContainer( "colgroup" );
>       for( IBehavior b : (List<IBehavior>) getBehaviors() )
>         colgroup.add( b );
>       setRenderBodyOnly( true );
>       removeAll();
>       add( colgroup );
>       RepeatingView colgroupCols = new RepeatingView( "elements" );
>       colgroup.add( colgroupCols );
>       for( Col column : getCols() )
>       {
>         WebMarkupContainer item = new WebMarkupContainer( colgroupCols.newChildId() );
>         colgroupCols.add( item );
>         item.add( column );
>       }
>     }
>     super.onBeforeRender();
>   }
>   public final Col[] getCols( )
>   {
>     if( cols == null )
>     {
>       cols = new Col[numCols];
>       for( int i = 0; i < numCols; i++ )
>         cols[i] = new Col();
>     }
>     return(cols);
>   }
>   public final class Col
>       extends WebMarkupContainer
>   {
>     private static final long serialVersionUID = 1L;
>     private Col()
>     {
>       super( "col" );
>     }
>   }
> }
> ---[/ColGroup.java]--
> ---[ColGroup.html]--
>   <wicket:panel>
>     <colgroup wicket:id="colgroup">
>       <wicket:container wicket:id="elements"><col wicket:id="col"/></wicket:container>
>     </colgroup>
>   </wicket:panel>
> ---[/ColGroup.html]--
> Usage:
> ColGroup colgroup = new ColGroup( datatable, 4 );
> colgroup.add( new SimpleAttributeModifier( "style", "border: solid 1px green;" ) );
> Col[] cols = colgroup.getCols();
> cols[0].add( new SimpleAttributeModifier( "width", "10%" ) );
> cols[1].add( new SimpleAttributeModifier( "width", "35%" ) );
> cols[2].add( new SimpleAttributeModifier( "width", "45%" ) );
> cols[3].add( new SimpleAttributeModifier( "width", "10%" ) );
> datatable.addColGroup( colgroup );
> Any thoughts?
> Regards, --- Jan.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)