<!--
Tbis HTML document provides a base template for Component Reference pages.

* All ??? text should be replaced.

* Examples should illustrate near real world use of the component, see other
  existing component page examples for formatting and style guidelines.
  
* Use Tapestry 2.2 Beta 1+ "expression" binding syntax instead of 
  "property-path" syntax.
  
* Include links to Tapestry Javadoc API where appropriate.

* Include Tapestry Developers Guide multi-page version where appropriate.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- $Id$ --> 
<html>
<head>
<title>contrib:TableFormPages</title>
<link rel="stylesheet" type="text/css" href="Tapestry.css" title="style">
</head>

<body>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
 <tr>
  <!-- Previous component in alphabetical order. -->
  <td align="left"><A href="contrib.TableColumns.html"><IMG alt="contrib:TableColumns" src="common-images/prev.png"></a></td>  
  <td align="middle"><a href="index.html"><img alt="Component Index" src="common-images/home.png" ></a></td>
  <!-- Next component in alphabetical order. -->
  <td align="right"><a href="contrib.TableFormRows.html"><img alt="contrib:TableFormRows" src="common-images/next.png"></a></td>  
 <tr>
 <tr>
  <td colspan="3"><hr></td>  
 </tr>
 <tr>
  <td colspan="3">
   <table border="0" cellpadding="4" cellspacing="4" width="100%">

<tr valign="top">
 <td>
  <table>
   <tr>
    <td><font size="+2"><b>contrib:TableFormPages</b></font></td>
   </tr>
   <tr>
    <td>
     <A href="../api/org/apache/tapestry/contrib/table/components/TableFormPages.html">org.apache.tapestry.contrib.table.components.TableFormPages</a>
    </td>
   </tr>
  </table>
 </td>
 <td>
  <table align="right" valign="middle" bgcolor="#c0c0c0" cellpadding="8">
   <tr>
    <td>
		<SPAN><A 
		href="#">&lt;&lt;</A>&nbsp;<A 
		href="#">&lt;</A>&nbsp;<A 
		href="#">7</A>&nbsp;<A 
		href="#">8</A>&nbsp;<A 
		href="#">9</A><B>&nbsp;10</B>&nbsp;<A 
		href="#">11</A>&nbsp;<A 
		href="#">12</A>&nbsp;<A 
		href="#">13</A>&nbsp;<A 
		href="#">&gt;</A>&nbsp;<A 
		href="#">&gt;&gt;</A></SPAN> 
	</td>
   </tr>
  </table>
 </td>
</tr>

<tr valign="center">
 <td colspan="2">&nbsp;</td>
</tr>

<tr>
 <td colspan="2">
  <b>Description</b>
  <br> 
 A version of <A href="contrib.TablePages.html">TablePages</a> that is designed for 
 operation in a form.
 It is a low level Table component that renders the pages in the table.
 This component must be wrapped by <A HREF="../api/org/apache/tapestry/contrib/table/components/TableView.html"><CODE>TableView</CODE></A>.
 <p>
 The component generates a list of pages in the Table centered around the 
 current one and allows you to navigate to other pages. The links it generates
 submit the form and thus allow its data to be preserved.

 </td>
</tr>

<tr>
 <td colspan="2">
  <b>See Also</b>
  <br>
  <A href="contrib.Table.html">Table</a>,
  <A href="contrib.TableColumns.html">TableColumns</a>, 
  <A href="contrib.TablePages.html">TablePages</a>,
  <A href="contrib.TableRows.html">TableRows</a>,
  <A href="contrib.TableValues.html">TableValues</a>,
  <A href="contrib.TableView.html">TableView</a>
  <A href="contrib.FormTable.html">FormTable</a>,
  <A href="contrib.TableFormRows.html">TableFormRows</a>
 </td>
</tr>

<tr>
 <td colspan="2">
  <b>Parameters</b>
  <br>
  <table border="1" cellpadding="4" cellspacing="4" class="parameters">
   <tr> 
    <th>Name</th>
    <th>Type</th>
    <th>Direction</th>
    <th>Required</th> 
    <th>Default</th>
    <th>Description</th>
   </tr>

	<tr>
	  <td>pagesDisplayed</td>
	  <td>int</td>
	  <td>in</td>
	  <td>no</td>
	  <td>7</td>
	  <td align="left">Determines the maximum number of pages to be displayed in the page list
	      when the table has more than one page.
	      <p>For example, if the table has 20 pages, and 10 is the current page,
	      pages from 7 to 13 in the page list will be shown if this parameter has 
	      a value of 7.
	  </td> 
	</tr>

  </table>
  <p>
  Body: <strong>removed</strong><br>
  Informal parameters: <strong>allowed</strong><br>
  <!-- component-specification "reserved-parameter" -->
  Reserved parameters: none
  </p>    
 </td>
</tr>

<tr>
 <td colspan="2">
  <b>Examples</b>
  <p>
  This example is under construction.
  </p>
      

 </td></tr></table>
</td></tr>
<tr>
 <td colspan="3"><hr></td>  
</tr>
<tr>
  <!-- Previous component in alphabetical order. -->
  <td align="left"><A href="contrib.TableColumns.html"><IMG alt="contrib:TableColumns" src="common-images/prev.png"></a></td>  
  <td align="middle"><a href="index.html"><img alt="Component Index" src="common-images/home.png" ></a></td>
  <!-- Next component in alphabetical order. -->
  <td align="right"><a href="contrib.TableRows.html"><img alt="contrib:TableRows" src="common-images/next.png"></a></td>  
</tr>
</table>

</body>
</html>