Author: awiner
Date: Tue Sep 19 09:20:02 2006
New Revision: 447897

URL: http://svn.apache.org/viewvc?view=rev&rev=447897
Log:
Commit patch for ADFFACES-184: ClassCastException when the wrong child is in a 
panelTabbed.  While in there, noticed that rendered=false showDetailItems 
weren't necessarily handled the right way

Modified:
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/uix/PanelTabbedRenderer.java

Modified: 
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/uix/PanelTabbedRenderer.java
URL: 
http://svn.apache.org/viewvc/incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/uix/PanelTabbedRenderer.java?view=diff&rev=447897&r1=447896&r2=447897
==============================================================================
--- 
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/uix/PanelTabbedRenderer.java
 (original)
+++ 
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/uix/PanelTabbedRenderer.java
 Tue Sep 19 09:20:02 2006
@@ -23,6 +23,7 @@
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.trinidad.component.UIXShowDetail;
+import org.apache.myfaces.trinidad.logging.TrinidadLogger;
 
 import org.apache.myfaces.trinidadinternal.uinode.UINodeRendererBase;
 
@@ -48,11 +49,17 @@
     boolean oneIsDisclosed = false;
     for (int i=0; i<childCount; i++)
     {
-      UIXShowDetail child =  (UIXShowDetail) children.get(i);
-      if (child.isDisclosed())
+      if (children.get(i) instanceof UIXShowDetail)
       {
-        oneIsDisclosed = true;
-        break;
+        UIXShowDetail child =  (UIXShowDetail) children.get(i);
+        if (child.isDisclosed())
+        {
+          oneIsDisclosed = true;
+          break;
+        }
+      } else
+      {
+        _LOG.warning("Only tr:showDetailItem is allowed as child of 
tr:panelTabbed.");
       }
     }
 
@@ -61,16 +68,24 @@
     {
       for (int i=0; i<childCount; i++)
       {
-        UIXShowDetail child =  (UIXShowDetail) children.get(i);
-        Object disabled = child.getAttributes().get("disabled");
-        if (Boolean.TRUE.equals(disabled))
-          continue;
+        if (children.get(i) instanceof UIXShowDetail)
+        {
+          UIXShowDetail child =  (UIXShowDetail) children.get(i);
+          if (!child.isRendered())
+            continue;
 
-        child.setDisclosed(true);
-        break;
+          Object disabled = child.getAttributes().get("disabled");
+          if (Boolean.TRUE.equals(disabled))
+            continue;
+
+          child.setDisclosed(true);
+          break;
+        }
       }
     }
 
     super.encodeBegin(context, component);
   }
+
+  static private final TrinidadLogger _LOG = 
TrinidadLogger.createTrinidadLogger(PanelTabbedRenderer.class);
 }


Reply via email to