<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright 2004 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.
-->
<!--  $Id$ -->
<!DOCTYPE component-specification PUBLIC 
  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
	
<component-specification class="org.apache.tapestry.contrib.table.components.TableFormRows" 
	allow-body="yes" allow-informal-parameters="yes">
	
	<description>
        A version of the TableRows designed for operation in a form. 
        This is a low level Table component that generates the rows of 
        the current page in the table. Each row is stored as a hidden value 
        in the form, which eliminates the chance of a stale link during rewinding. 
        This component must be wrapped by TableView. 
	</description>
  
	<parameter name="row" 
		type="Object" 
		required="no"
		direction="custom">
        <description>The value object of the row currently being rendered.</description>
    </parameter>

    <parameter name="convertor"
    	type="org.apache.tapestry.contrib.table.model.IPrimaryKeyConvertor"
    	required="no"
    	direction="auto"
    	default-value="null">
        <description>
        An interface defining how the items iterated upon by this component 
        will be stored in the form as Hidden values. This interface allows only 
        the primary key of the items to be stored, rather than the whole item.
        </description>
    </parameter>
    
	<parameter name="element" 
		type="java.lang.String" 
		required="no"
		default-value='"tr"'>
        <description>The tag to use to wrap the rows in, 'tr' by default.</description>
    </parameter>

	<component id="iterRows" type="ListEdit" inherit-informal-parameters="yes">
		<binding name="source" expression="convertedTableRowsIterator"/>
		<binding name="value" expression="convertedTableRow"/>
        <inherited-binding name="element" parameter-name="element"/>
	</component>

    <property-specification name="convertedValues" type="java.util.Map" initial-value="new java.util.HashMap()"/>
    <property-specification name="convertorCache" type="org.apache.tapestry.contrib.table.model.IPrimaryKeyConvertor" initial-value="null"/>
      
</component-specification>
