You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sc...@apache.org on 2005/05/27 16:23:30 UTC
svn commit: r178785 - in /myfaces/trunk: conf/
src/components/org/apache/myfaces/component/html/ext/
src/components/org/apache/myfaces/custom/crosstable/
src/components/org/apache/myfaces/renderkit/html/ext/
src/share/org/apache/myfaces/renderkit/html/
Author: schof
Date: Fri May 27 07:23:29 2005
New Revision: 178785
URL: http://svn.apache.org/viewcvs?rev=178785&view=rev
Log:
Fixes MYFACES-171 (Thanks to Mathias Broeklmann for the patch)
Modified:
myfaces/trunk/conf/faces-config.xml
myfaces/trunk/src/components/org/apache/myfaces/component/html/ext/HtmlDataTable.java
myfaces/trunk/src/components/org/apache/myfaces/custom/crosstable/HtmlColumnsTag.java
myfaces/trunk/src/components/org/apache/myfaces/custom/crosstable/UIColumns.java
myfaces/trunk/src/components/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java
myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlTableRendererBase.java
Modified: myfaces/trunk/conf/faces-config.xml
URL: http://svn.apache.org/viewcvs/myfaces/trunk/conf/faces-config.xml?rev=178785&r1=178784&r2=178785&view=diff
==============================================================================
--- myfaces/trunk/conf/faces-config.xml (original)
+++ myfaces/trunk/conf/faces-config.xml Fri May 27 07:23:29 2005
@@ -314,7 +314,7 @@
<component>
<component-type>org.apache.myfaces.Columns</component-type>
- <component-class>org.apache.myfaces.component.UIColumns</component-class>
+ <component-class>org.apache.myfaces.custom.crosstable.UIColumns</component-class>
</component>
<!-- additional "by type" converters -->
Modified: myfaces/trunk/src/components/org/apache/myfaces/component/html/ext/HtmlDataTable.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/src/components/org/apache/myfaces/component/html/ext/HtmlDataTable.java?rev=178785&r1=178784&r2=178785&view=diff
==============================================================================
--- myfaces/trunk/src/components/org/apache/myfaces/component/html/ext/HtmlDataTable.java (original)
+++ myfaces/trunk/src/components/org/apache/myfaces/component/html/ext/HtmlDataTable.java Fri May 27 07:23:29 2005
@@ -17,7 +17,7 @@
import org.apache.myfaces.component.UserRoleAware;
import org.apache.myfaces.component.UserRoleUtils;
-import org.apache.myfaces.component.UIColumns;
+import org.apache.myfaces.custom.crosstable.UIColumns;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
Modified: myfaces/trunk/src/components/org/apache/myfaces/custom/crosstable/HtmlColumnsTag.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/src/components/org/apache/myfaces/custom/crosstable/HtmlColumnsTag.java?rev=178785&r1=178784&r2=178785&view=diff
==============================================================================
--- myfaces/trunk/src/components/org/apache/myfaces/custom/crosstable/HtmlColumnsTag.java (original)
+++ myfaces/trunk/src/components/org/apache/myfaces/custom/crosstable/HtmlColumnsTag.java Fri May 27 07:23:29 2005
@@ -17,7 +17,6 @@
import javax.faces.component.UIComponent;
-import org.apache.myfaces.component.UIColumns;
import org.apache.myfaces.renderkit.JSFAttr;
import org.apache.myfaces.taglib.html.HtmlComponentBodyTagBase;
@@ -27,33 +26,33 @@
*/
public class HtmlColumnsTag extends HtmlComponentBodyTagBase
{
- private String mVar;
+ private String mVar;
- /**
- * @see javax.faces.webapp.UIComponentTag#getComponentType()
- */
- public String getComponentType()
- {
- return UIColumns.COMPONENT_TYPE;
- }
-
- /**
- * @see javax.faces.webapp.UIComponentTag#getRendererType()
- */
- public String getRendererType()
- {
- return null;
- }
-
- public void setVar(String var)
- {
- mVar = var;
- }
-
- protected void setProperties(UIComponent component)
- {
- super.setProperties(component);
+ /**
+ * @see javax.faces.webapp.UIComponentTag#getComponentType()
+ */
+ public String getComponentType()
+ {
+ return UIColumns.COMPONENT_TYPE;
+ }
+
+ /**
+ * @see javax.faces.webapp.UIComponentTag#getRendererType()
+ */
+ public String getRendererType()
+ {
+ return null;
+ }
+
+ public void setVar(String var)
+ {
+ mVar = var;
+ }
+
+ protected void setProperties(UIComponent component)
+ {
+ super.setProperties(component);
- setStringProperty(component, JSFAttr.VAR_ATTR, mVar);
- }
+ setStringProperty(component, JSFAttr.VAR_ATTR, mVar);
+ }
}
Modified: myfaces/trunk/src/components/org/apache/myfaces/custom/crosstable/UIColumns.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/src/components/org/apache/myfaces/custom/crosstable/UIColumns.java?rev=178785&r1=178784&r2=178785&view=diff
==============================================================================
--- myfaces/trunk/src/components/org/apache/myfaces/custom/crosstable/UIColumns.java (original)
+++ myfaces/trunk/src/components/org/apache/myfaces/custom/crosstable/UIColumns.java Fri May 27 07:23:29 2005
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.myfaces.component;
+package org.apache.myfaces.custom.crosstable;
import javax.faces.component.UIData;
Modified: myfaces/trunk/src/components/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/src/components/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java?rev=178785&r1=178784&r2=178785&view=diff
==============================================================================
--- myfaces/trunk/src/components/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java (original)
+++ myfaces/trunk/src/components/org/apache/myfaces/renderkit/html/ext/HtmlTableRenderer.java Fri May 27 07:23:29 2005
@@ -9,8 +9,10 @@
import javax.faces.context.ResponseWriter;
import java.io.IOException;
import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
import javax.faces.component.UIData;
import org.apache.myfaces.component.html.ext.HtmlDataTable;
+import org.apache.myfaces.custom.crosstable.UIColumns;
import org.apache.myfaces.renderkit.html.HTML;
public class HtmlTableRenderer
@@ -40,5 +42,85 @@
{
writer.writeAttribute(HTML.ONMOUSEOUT_ATTR, rowOnMouseOut, null);
}
+ }
+
+ /**
+ * handles uicolumns component
+ * @see org.apache.myfaces.renderkit.html.HtmlTableRendererBase#encodeColumnChild(javax.faces.context.FacesContext, javax.faces.context.ResponseWriter, javax.faces.component.UIData, javax.faces.component.UIComponent, java.lang.String)
+ */
+ protected void encodeColumnChild(FacesContext facesContext, ResponseWriter writer,
+ UIData uiData, UIComponent component, String columnStyle) throws IOException
+ {
+ super.encodeColumnChild(facesContext, writer, uiData, component, columnStyle);
+ if (component instanceof UIColumns)
+ {
+ UIColumns columns = (UIColumns) component;
+ for (int k = 0, colSize = columns.getRowCount(); k < colSize; k++)
+ {
+ columns.setRowIndex(k);
+ renderColumnBody(facesContext, writer, uiData, component, columnStyle);
+ }
+ columns.setRowIndex(-1);
+ }
+ }
+
+ /**
+ * handles uicolumns component
+ * @see org.apache.myfaces.renderkit.html.HtmlTableRendererBase#renderColumnChildHeaderOrFooterRow(javax.faces.context.FacesContext, javax.faces.context.ResponseWriter, javax.faces.component.UIComponent, java.lang.String, boolean)
+ */
+ protected void renderColumnChildHeaderOrFooterRow(FacesContext facesContext,
+ ResponseWriter writer, UIComponent uiComponent, String styleClass,
+ boolean header) throws IOException
+ {
+ super.renderColumnChildHeaderOrFooterRow(facesContext, writer, uiComponent, styleClass,
+ header);
+ if (uiComponent instanceof UIColumns)
+ {
+ UIColumns columns = (UIColumns) uiComponent;
+ for (int i = 0, size = columns.getRowCount(); i < size; i++)
+ {
+ columns.setRowIndex(i);
+ if (header)
+ {
+ renderColumnHeaderCell(facesContext, writer, columns, columns.getHeader(),
+ styleClass, 0);
+ }
+ else
+ {
+ renderColumnFooterCell(facesContext, writer, columns, columns.getFooter(),
+ styleClass, 0);
+ }
+ }
+ columns.setRowIndex(-1);
+ }
+ }
+
+ /**
+ * handles uicolumns component
+ * @see org.apache.myfaces.renderkit.html.HtmlTableRendererBase#determineChildColSpan(javax.faces.component.UIComponent)
+ */
+ protected int determineChildColSpan(UIComponent uiComponent)
+ {
+ int result = super.determineChildColSpan(uiComponent);
+ if (uiComponent instanceof UIColumns)
+ {
+ result += ((UIColumns) uiComponent).getRowCount();
+ }
+ return result;
+ }
+
+ /**
+ * handles uicolumns component
+ * @see org.apache.myfaces.renderkit.html.HtmlTableRendererBase#hasFacet(boolean, javax.faces.component.UIComponent)
+ */
+ protected boolean hasFacet(boolean header, UIComponent uiComponent)
+ {
+ boolean result = super.hasFacet(header, uiComponent);
+ if (!result && uiComponent instanceof UIColumns)
+ {
+ UIColumns columns = (UIColumns) uiComponent;
+ result = header ? columns.getHeader() != null : columns.getFooter() != null;
+ }
+ return result;
}
}
Modified: myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlTableRendererBase.java
URL: http://svn.apache.org/viewcvs/myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlTableRendererBase.java?rev=178785&r1=178784&r2=178785&view=diff
==============================================================================
--- myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlTableRendererBase.java (original)
+++ myfaces/trunk/src/share/org/apache/myfaces/renderkit/html/HtmlTableRendererBase.java Fri May 27 07:23:29 2005
@@ -19,7 +19,6 @@
import org.apache.myfaces.renderkit.RendererUtils;
import org.apache.myfaces.util.ArrayUtils;
import org.apache.myfaces.util.StringUtils;
-import org.apache.myfaces.component.UIColumns;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -135,22 +134,7 @@
UIComponent child = (UIComponent) children.get(j);
if(child.isRendered())
{
- if (child instanceof UIColumn)
- {
- String columnStyle = styles.getColumnStyle(j);
- renderColumnBody(facesContext, writer, uiData, child, columnStyle);
- }
- else if (child instanceof UIColumns)
- {
- UIColumns columns = (UIColumns) child;
- for (int k = 0, colSize = columns.getRowCount(); k < colSize; k++)
- {
- columns.setRowIndex(k);
- String columnStyle = styles.getColumnStyle(j);
- renderColumnBody(facesContext, writer, uiData, child, columnStyle);
- }
- columns.setRowIndex(-1);
- }
+ encodeColumnChild(facesContext, writer, uiData, child, styles.getColumnStyle(j));
}
}
renderRowEnd(facesContext, writer, uiData);
@@ -160,6 +144,15 @@
writer.endElement(HTML.TBODY_ELEM);
}
+ protected void encodeColumnChild(FacesContext facesContext, ResponseWriter writer,
+ UIData uiData, UIComponent component, String columnStyle) throws IOException
+ {
+ if (component instanceof UIColumn)
+ {
+ renderColumnBody(facesContext, writer, uiData, component, columnStyle);
+ }
+ }
+
/**
* Renders the body of a given <code>UIColumn</code> (everything but the header and footer facets).
* @param facesContext the <code>FacesContext</code>.
@@ -292,23 +285,10 @@
UIComponent uiComponent = (UIComponent) it.next();
if(uiComponent.isRendered())
{
- if (uiComponent instanceof UIColumn)
- {
- colspan++;
+ colspan += determineChildColSpan(uiComponent);
if (!hasColumnFacet)
{
- hasColumnFacet = header ? ((UIColumn) uiComponent).getHeader() != null : ((UIColumn) uiComponent)
- .getFooter() != null;
- }
- }
- else if (uiComponent instanceof UIColumns)
- {
- UIColumns columns = (UIColumns) uiComponent;
- colspan += columns.getRowCount();
- if (!hasColumnFacet)
- {
- hasColumnFacet = header ? columns.getHeader() != null : columns.getFooter() != null;
- }
+ hasColumnFacet = hasFacet(header, uiComponent);
}
}
}
@@ -343,6 +323,30 @@
}
/**
+ * @param header
+ * @param uiComponent
+ * @return
+ */
+ protected boolean hasFacet(boolean header, UIComponent uiComponent)
+ {
+ if (uiComponent instanceof UIColumn)
+ {
+ UIColumn uiColumn = (UIColumn) uiComponent;
+ return header ? uiColumn.getHeader() != null : uiColumn.getFooter() != null;
+ }
+ return false;
+ }
+
+ protected int determineChildColSpan(UIComponent uiComponent)
+ {
+ if (uiComponent instanceof UIColumn)
+ {
+ return 1;
+ }
+ return 0;
+ }
+
+ /**
* Renders the header row of the table being rendered.
* @param facesContext the <code>FacesContext</code>.
* @param writer the <code>ResponseWriter</code>.
@@ -442,6 +446,15 @@
UIComponent uiComponent = (UIComponent) it.next();
if(uiComponent.isRendered())
{
+ renderColumnChildHeaderOrFooterRow(facesContext, writer, uiComponent, styleClass, header);
+ }
+ }
+ writer.endElement(HTML.TR_ELEM);
+ }
+
+ protected void renderColumnChildHeaderOrFooterRow(FacesContext facesContext,
+ ResponseWriter writer, UIComponent uiComponent, String styleClass, boolean header) throws IOException
+ {
if (uiComponent instanceof UIColumn)
{
if (header)
@@ -455,28 +468,6 @@
((UIColumn) uiComponent).getFooter(), styleClass, 0);
}
}
- else if (uiComponent instanceof UIColumns)
- {
- UIColumns columns = (UIColumns) uiComponent;
- for (int i = 0, size = columns.getRowCount(); i < size; i++)
- {
- columns.setRowIndex(i);
- if (header)
- {
- renderColumnHeaderCell(facesContext, writer, columns, columns.getHeader(),
- styleClass, 0);
- }
- else
- {
- renderColumnFooterCell(facesContext, writer, columns, columns.getFooter(),
- styleClass, 0);
- }
- }
- columns.setRowIndex(-1);
- }
- }
- }
- writer.endElement(HTML.TR_ELEM);
}
/**
@@ -662,4 +653,4 @@
super.decode(context, component);
}
-}
\ No newline at end of file
+}