[ https://issues.apache.org/jira/browse/TOBAGO-733?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12659864#action_12659864 ]
Bernd Bohmann commented on TOBAGO-733: -------------------------------------- Hello Michael, can you create a different issue for Properties of UICell should support ValueBinding. Can you provide a patch for UIGridLayout, please. I'm not sure that this change goes in the right direction. Maybe Volker should look at this issue. In 1.1 we are working on a rewrite of the LayoutManagement Code. > Support for more dynamic layouts by evaluation of the rendered attribute in > UICell an UIGridLayout > -------------------------------------------------------------------------------------------------- > > Key: TOBAGO-733 > URL: https://issues.apache.org/jira/browse/TOBAGO-733 > Project: MyFaces Tobago > Issue Type: Improvement > Components: Core > Affects Versions: 1.0.20, 1.0.21, 1.1.0 > Environment: Windows XP Professional > Apache Tomcat 6.0.18 > Java6 Update 10 > MyFaces 1.2.5 > Tomahawk 12-1.1.8 > Tobago 1.0.20 > Reporter: Michael Bauer > Priority: Minor > Original Estimate: 2h > Remaining Estimate: 2h > > Some child components of the grid layout might change their rendered state > during user interaction, for example if the user decides to not display a > menu component or an information box etc. In that case the layout should > dynamically devide the given space using appropriate row-/colspans. To > achieve this, two changes would be necessary: > 1. Using UICell in a grid layout with dynamic spans: > Let a managed bean support the dynamic layout by calculating the actual cell > spans. Add value bindings to UICell's spanX- and spanY-attributes like this > for example: > public Integer getSpanX() { > ValueBinding spanBinding = getValueBinding( ATTR_SPAN_X ); > if(spanBinding != null) > { > Object obj = spanBinding.getValue( getFacesContext() ); > if(obj != null && obj instanceof Integer) > { > Integer integer = (Integer) obj; > return integer; > } > } > return spanX; > } > 2. Calculating layout in UIGridLayout depending on the rendered state of the > child components (UICells in this case) > If the child would be a cell and the cell would have a (changing!) value > binding for the rendered attribute, the cell and it's contents would not be > rendered - which is OK; However, the place taken by the not rendered cell > will not be filled by the other components, hence leaving an empty space in > the layout... > Checking if a child is rendered before evaluating the grid layout fixes this. > The necessary changes would have to be made in method "private List<Row> > createRows() {" for example like this: > boolean childRendered = component.isRendered(); > if(childRendered) > { > rows.get(r).addControl(component, spanX); > rows.get(r).fill(c + 1, c + spanX, component.isRendered()); > } > With that, a child component with the attribute rendered set to false will be > ignored in the layout. > The second change would need for a dynamic span-evaluation of the other > components in the same row as suggested in the first change. > Regards, > Michael -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.