You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Igor Vaynberg (JIRA)" <ji...@apache.org> on 2010/09/10 06:48:49 UTC
[jira] Updated: (WICKET-1069) RFE: DataTable && colgroup
[ https://issues.apache.org/jira/browse/WICKET-1069?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Igor Vaynberg updated WICKET-1069:
----------------------------------
Fix Version/s: 1.5-M3
(was: 1.5-M2)
> 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: Matej Knopp
> Priority: Minor
> Fix For: 1.5-M3
>
>
> 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 is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.