There was an issue found with scrollable dataTable and re-ordering columns, that possibly required stacked columns. The scrollable dataTable uses two tables, one for the header and one for the body that also includes a duplicated header that's usually hidden. There was a bug in the rendering of the duplicated headers, where the dataTable changes its container client id so that child components will use a "dupeSeg" addition to their clientIds, so everything remains unique. The problem is that component properties and fields are not reliably accessible, since their values are stored without the "dupeSeg" but are trying to be accessed with it. In this case, headerColumnOrdering was failing, so the duplicated headers were not re-ordered and didn't match the real headers, so messed up the sizing algorithm. I verified this was the issue by bypassing the stored properties that rely on the clientId, and used EL for columnOrdering and headerColumnOrdering, tying them to bean properties, which fixed the un-ordered rendering problem. The real fix came from adding the ColumnModel to the rendering context, so that nothing it relies on will need to be re-gotten during the duplicated rendering, and it also optimises the rendering speed.
To duplicate the issue, use the QA Sparkle Nightly dataTable app and the stackedColumnsAlignmentIssue.xhtml page. Bring up the tableConfigPanel, move the stacked seven and eight columns to come between one and two columns. Click the checkmark, and see that the header and body columns do not line up.
Sparkle/Nightly/dataTable/web/views/stackedColumnsAlignmentIssue.xhtml
branch
Subversion 38757
That didn't actually completely fix the column sizing glitch, since there are actually two problems. The other issue is that a previous commit introduced a regression in the resizing:
Revision #38718 Committed by art.zambrano at 11/1/13 3:44:20 PM ICE-9576, ICE-9532 backported these fixes to this branch
With commit 38757 in, and commit 38718 reverted, it then works properly. I verified that it's not the tableConfigPanel's bug by turning on the reorderableColumns property on the dataTable, and using column dragging instead of the tableConfigPanel, and reproduced the issue with commit 38718 in, which doesn't happen with it reverted.
This had originally been reported as a bug in ICE-8573. Adding support for this will help make it easier for developers to intuitively use the panel when using column groups.