Description
This is a request to enhance the rendering capability of the HtmlSelectManyCheckbox component. Right now, this component can only render a single row or column of checkboxes. Often it is useful to be able to render an X by X grid of checkboxes. I have added the ability to acheive this type of rendering by introducing a new tag attribute called "layoutWidth" which is interpreted along with the "layout" attribute as follows:
If layout=lineDirection and layoutWidth=3 and there are 13 checkboxes the checkboxes will be rendered as follows where each [xx] is a checkbox:
[01] [04] [07] [10][13]
[02] [05] [08] [11]
[03] [06] [09] [12]
You can see that for lineDirection layouts, the layoutWidth is interpreted as rows.
If the layout=pageDirection and layoutWidth=3 and there are 13 checkboxes, the rendering changes to:
[01] [02] [03]
[04] [05] [06]
[07] [08] [09]
[10] [11] [12]
[13]
For pageDirection layouts, the layoutWidth is interpreted as columns.
If the layoutWidth is not specified, the width can be assumed to be 1 which would make the component render like the original.
I chose 13 checkboxes here to demonstrate that the rendering can handle the case where the number of checkboxes isn't evenly divisible by the layoutWidth.
I am not sure if this enhancement can be made directly to the HtmlSelectManyCheckbox component, or if it is more appropriate to create a brand new component in the Tomahawk project that extends the original one. I will first attach patches that change the behavior of the original component, and wait for instructions as to whether or not these patches are appropriate. These patches are meant to be applied to the myfaces-api, myfaces-impl, and myfaces-share directories.