I was thinking of implementing colgroup support, but I decided not to. Colgroup as far as i can tell has serious styling limitation, which only allows to specify very reduced subset of css to the colgroup.
-Matej On 10/13/07, Jan Kriesten <[EMAIL PROTECTED]> wrote: > > [https://issues.apache.org/jira/browse/WICKET-1069] > > 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. > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
