<!--
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:TablePages</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.TableFormRows.html"><IMG alt="contrib:TableFormRows" 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>
 <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:TablePages</b></font></td>
   </tr>
   <tr>
    <td>
     <A href="../api/org/apache/tapestry/contrib/table/components/TablePages.html">org.apache.tapestry.contrib.table.components.TablePages</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 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.

 </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.TableRows.html">TableRows</a>,
  <A href="contrib.TableValues.html">TableValues</a>,
  <A href="contrib.TableView.html">TableView</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>