You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2015/10/29 14:04:57 UTC

svn commit: r1711245 - /myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SheetRenderer.java

Author: lofwyr
Date: Thu Oct 29 13:04:57 2015
New Revision: 1711245

URL: http://svn.apache.org/viewvc?rev=1711245&view=rev
Log:
TOBAGO-1494: Sheet support for Bootstrap

Modified:
    myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SheetRenderer.java

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SheetRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SheetRenderer.java?rev=1711245&r1=1711244&r2=1711245&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SheetRenderer.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SheetRenderer.java Thu Oct 29 13:04:57 2015
@@ -1151,16 +1151,37 @@ public class SheetRenderer extends Rende
 
   @Override
   public void prepareRendersChildren(final FacesContext facesContext, final UIComponent component) throws IOException {
+
     final UISheet sheet = (UISheet) component;
-    for (final UIColumn column : sheet.getRenderedColumns()) {
-      if (column instanceof AbstractUIColumnNode) {
-        if (LOG.isDebugEnabled()) {
-          LOG.debug("TODO: AbstractUIColumnNode are not prepared.");
-        }
-        // TBD: when the column should be prepared for rendering, I think we need to
-        // TBD: iterate over each row to prepare it.
-        // TBD: in the moment this method TreeNodeRendererBase.prepareRender() will not be called in sheets
+    List<UIComponent> others = new ArrayList<UIComponent>();
+    List<UIColumn> columns = new ArrayList<UIColumn>();
+
+    for (final UIComponent child : sheet.getChildren()) {
+      if (child instanceof UIColumn) {
+        columns.add((UIColumn) child);
       } else {
+        others.add(child);
+      }
+    }
+
+    // for non-columns: prepare only once (needed for e.g. UIStyle)
+    for (UIComponent other : others) {
+      EncodeUtils.prepareRendererAll(facesContext, other);
+    }
+
+    // for columns: prepare for each row
+    final int last = sheet.isRowsUnlimited() ? Integer.MAX_VALUE : sheet.getFirst() + sheet.getRows();
+    for (int rowIndex = sheet.getFirst(); rowIndex < last; rowIndex++) {
+      sheet.setRowIndex(rowIndex);
+      if (!sheet.isRowAvailable()) {
+        break;
+      }
+      final Object rowRendered = sheet.getAttributes().get("rowRendered");
+      if (rowRendered instanceof Boolean && !((Boolean) rowRendered)) {
+        continue;
+      }
+
+      for (UIComponent column : columns) {
         EncodeUtils.prepareRendererAll(facesContext, column);
       }
     }