Author: awiner
Date: Mon Sep 25 17:22:24 2006
New Revision: 449872

URL: http://svn.apache.org/viewvc?view=rev&rev=449872
Log:
Patch for ADFFACES-197: tr:group should not render any content - it's just a 
grouping mechanism.  It also no longer has a renderer, and CoreGroup is history 
- just use UIXGroup.

Added:
    
incubator/adffaces/trunk/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXGroupTemplate.java
Removed:
    
incubator/adffaces/trunk/trinidad/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/core/CoreGroup.xml
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/GroupRenderer.java
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/group-minimal-golden.xml
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/group-minimalIE-golden.xml
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/group-minimalIERtl-golden.xml
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/group-minimalInacc-golden.xml
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/group-minimalPPC-golden.xml
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/group-minimalSaf-golden.xml
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/group-minimalScrRdr-golden.xml
    
incubator/adffaces/trunk/trinidad/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/testScripts/group.xml
Modified:
    
incubator/adffaces/trunk/trinidad/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Group.xml
    
incubator/adffaces/trunk/trinidad/trinidad-demo/src/main/webapp/components/group.jspx

Added: 
incubator/adffaces/trunk/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXGroupTemplate.java
URL: 
http://svn.apache.org/viewvc/incubator/adffaces/trunk/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXGroupTemplate.java?view=auto&rev=449872
==============================================================================
--- 
incubator/adffaces/trunk/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXGroupTemplate.java
 (added)
+++ 
incubator/adffaces/trunk/trinidad/trinidad-api/src/main/java-templates/org/apache/myfaces/trinidad/component/UIXGroupTemplate.java
 Mon Sep 25 17:22:24 2006
@@ -0,0 +1,68 @@
+/*
+ * Copyright  2003-2006 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.myfaces.trinidad.component;
+
+import java.io.IOException;
+import java.util.List;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+
+
+/**
+ * Base class for the group componnet.
+ * <p>
+ * @version $Name:  $ ($Revision: 429530 $) $Date: 2006-08-07 18:44:54 -0600 
(Mon, 07 Aug 2006) $
+ * @author The Oracle ADF Faces Team
+ */
+abstract public class UIXGroupTemplate extends UIXComponentBase
+{
+  /**
+   * Overridden to return true.
+   * @return true because the children are rendered by this component
+   */
+  @Override
+  public boolean getRendersChildren()
+  {
+    return true;
+  }
+
+  /**
+   * Renders the children in their raw form.
+   * There is no Renderer for this component because it has no
+   * visual representation or any sort of layout for its children.
+   * @param context the FacesContext
+   * @throws IOException if there is an error encoding the children
+   */
+  @Override
+  public void encodeChildren(FacesContext context) throws IOException
+  {
+    if (context == null)
+      throw new NullPointerException();
+
+    if (!isRendered())
+      return;
+
+    if (getChildCount() > 0)
+    {
+      for(UIComponent child : (List<UIComponent>)getChildren())
+      {
+        __encodeRecursive(context, child);
+      }
+    }
+  }
+}
+

Modified: 
incubator/adffaces/trunk/trinidad/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Group.xml
URL: 
http://svn.apache.org/viewvc/incubator/adffaces/trunk/trinidad/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Group.xml?view=diff&rev=449872&r1=449871&r2=449872
==============================================================================
--- 
incubator/adffaces/trunk/trinidad/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Group.xml
 (original)
+++ 
incubator/adffaces/trunk/trinidad/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Group.xml
 Mon Sep 25 17:22:24 2006
@@ -21,8 +21,11 @@
               xmlns:mafp="http://myfaces.apache.org/maven-trinidad-plugin";
               xmlns:xhtml="http://www.w3.org/1999/xhtml";>
   <component>
-    <description><![CDATA[Group is the base abstraction for components that 
contain
-a group of semantically-related children.]]>
+    <description><![CDATA[The group component is an invisible control that 
aggregates semantically-related children; the group itself has no associated 
client representation (visual or API).
+Some parent components may have special representation for groups like adding 
separators around the group but this is a special case and is not always 
rendered this way.
+In most cases, only the children of the group will be rendered directly to the 
page.
+There will be no layout applied to the children so the natural layout behavior 
of the underlying HTML elements will apply.
+If you require a more predictable layout, you should use a layout component 
such as panelGroupLayout.]]>
     </description>
     <icon>
       
<small-icon>/org/apache/myfaces/trinidad/metadata/icons/group.png</small-icon>
@@ -32,12 +35,31 @@
     <component-extension>
       
<mfp:component-family>org.apache.myfaces.trinidad.Group</mfp:component-family>
       
<mfp:component-supertype>org.apache.myfaces.trinidad.ComponentBase</mfp:component-supertype>
+      <mfp:tag-name>tr:group</mfp:tag-name>
       
<mfp:tag-class>org.apache.myfaces.trinidadinternal.taglib.UIXGroupTag</mfp:tag-class>
-      <mfp:long-description><![CDATA[Group is the base abstraction for 
components that contain
-a group semantically-related children.]]>
+      <mfp:long-description><![CDATA[The group component is an invisible 
control that aggregates semantically-related children; the group itself has no 
associated client representation (visual or API).
+Some parent components may have special representation for groups like adding 
separators around the group but this is a special case and is not always 
rendered this way.
+In most cases, only the children of the group will be rendered directly to the 
page.
+There will be no layout applied to the children so the natural layout behavior 
of the underlying HTML elements will apply.
+If you require a more predictable layout, you should use a layout component 
such as panelGroupLayout.]]>
       </mfp:long-description>
+      <mfp:example>
+        <mfp:source-code><![CDATA[
+          <tr:panelFormLayout labelWidth="33%" fieldWidth="67%">
+  <tr:inputText label="non-group item 1"/>
+  <tr:group>
+    <tr:inputText label="group item 1"/>
+    <tr:inputText label="group item 2"/>
+    <tr:inputText label="group item 3"/>
+  </tr:group>
+  <tr:inputText label="non-group item 2"/>
+</tr:panelFormLayout>]]>
+        </mfp:source-code>
+      </mfp:example>
       <mfp:author>Matt Cooper</mfp:author>
-      <mfp:tag-class-modifier>abstract</mfp:tag-class-modifier>
+      <mfp:component-metadata>
+        <mfp:group>${md:getTranslatedString("PALETTE_OTHER")}</mfp:group>
+      </mfp:component-metadata>
     </component-extension>
   </component>
 </faces-config>

Modified: 
incubator/adffaces/trunk/trinidad/trinidad-demo/src/main/webapp/components/group.jspx
URL: 
http://svn.apache.org/viewvc/incubator/adffaces/trunk/trinidad/trinidad-demo/src/main/webapp/components/group.jspx?view=diff&rev=449872&r1=449871&r2=449872
==============================================================================
--- 
incubator/adffaces/trunk/trinidad/trinidad-demo/src/main/webapp/components/group.jspx
 (original)
+++ 
incubator/adffaces/trunk/trinidad/trinidad-demo/src/main/webapp/components/group.jspx
 Mon Sep 25 17:22:24 2006
@@ -29,43 +29,24 @@
           <tr:commandLink immediate="true" text="Component Guide"
             action="guide"/>
           <tr:outputText
-            value="The group component is an invisible control that aggregates 
semantically-related children.
-The children of the group will not be displayed unless the parent of the group 
has specific support for displaying the grouped children.
-The panelForm is an example of one of the components that has support for 
grouping its children components.
-If you place panelForm child items inside of a group, separators will be drawn 
around the group of form items if adjacent to other form items (separators 
won't be drawn at the top if the group is the first item in the column or, 
similarly, at the bottom if the group is the last item in the column).
-Grouped panelForm items are kept in the same column of the panelForm even when 
the assigned rows attribute is set to a value smaller than the number of items 
in the group.
-The panelForm component also supports the group component in its footer facet 
so you can place more than one item in the footer.  You can even group footer 
items one additional time to get separators to appear."/>
+            value="The group component is an invisible control that aggregates 
semantically-related children; the group itself has no associated client 
representation (visual or API).
+Some parent components may have special representation for groups like adding 
separators around the group but this is a special case and is not always 
rendered this way.
+In most cases, only the children of the group will be rendered directly to the 
page.
+There will be no layout applied to the children so the natural layout behavior 
of the underlying HTML elements will apply.
+If you require a more predictable layout, you should use a layout component 
such as panelGroupLayout."/>
           <tr:outputText
-            value="This is a demo page for a panelForm (drawn with a thick red 
border) that uses various group components around its form items."/>
-          <tr:panelFormLayout labelWidth="50%" fieldWidth="50%" rows="6"
-            inlineStyle="border: 4px solid red;">
-            <tr:inputText columns="10" label="main item 1"/>
-            <tr:inputText columns="10" label="main item 2"/>
-            <tr:inputText columns="10" label="main item 3"/>
-            <tr:inputText columns="10" label="main item 4"/>
-            <tr:inputText columns="10" label="main item 5"/>
-            <tr:inputText columns="10" label="main item 6"/>
-            <tr:inputText columns="10" label="main item 7"/>
-            <tr:group binding="#{editor.component}">
-              <tr:inputText columns="10" label="grouped item 1"/>
-              <tr:inputText columns="10" label="grouped item 2"/>
-            </tr:group>
-            <tr:inputText columns="10" label="main item 8"/>
-            <tr:inputText columns="10" label="main item 9"/>
-            <tr:inputText columns="10" label="main item 10"/>
-            <f:facet name="footer">
-              <tr:group>
-                <tr:inputText columns="10" label="grouped footer item 1"/>
-                <tr:inputText columns="10" label="grouped footer item 2"/>
-                <tr:group>
-                  <tr:inputText columns="10" label="double grouped footer item 
1"/>
-                  <tr:inputText columns="10" label="double grouped footer item 
2"/>
-                </tr:group>
-                <tr:inputText columns="10" label="grouped footer item 3"/>
-                <tr:inputText columns="10" label="grouped footer item 4"/>
+            value="The following demo shows a vertical panelGroupLayout with a 
separator facet containing a
+group that has two images directly inside of it."/>
+          <tr:panelGroupLayout layout="vertical">
+            <f:facet name="separator">
+              <tr:group binding="#{editor.component}">
+                <tr:image shortDesc="File" 
source="/components/images/file.gif"/>
+                <tr:image shortDesc="Check" 
source="/components/images/processCheck.gif"/>
               </tr:group>
             </f:facet>
-          </tr:panelFormLayout>
+            <tr:outputText value="Item 1"/>
+            <tr:outputText value="Item 2"/>
+          </tr:panelGroupLayout>
           <jsp:directive.include file="editor.jspf"/>
         </tr:panelGroupLayout>
       </tr:form>


Reply via email to