<?xml version="1.0" encoding="UTF-8"?>
<!-- 
    Copyright 2005 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.
-->
<document>
    <properties>
        <title>SimpleTableColumnFormComponent</title>
    </properties>
    <body>

        <section name="SimpleTableColumnFormComponent">

            <p>A component that renders the default column header in a form.</p>

            <p>
                If the current column is sortable, it renders the header as a link. Clicking on the
                link causes the table to be sorted on that column. Clicking on the link again causes
                the sorting order to be reversed.
            </p>

            <p>
                This component renders links that cause the form to be submitted. This ensures that
                the updated data in the other form fields is preserved.
            </p>

            <span class="info">
                <strong>Note:</strong>
                <p>
                The column header rendered by this component has two main css class definitions. The
                embedded table html markup within each
                <code>td</code>
                element for a sorted column has the class
                <code>tableHeaderImage</code>
                . The image used to sort table columns has an embedded style class definition for
                <code>tableHeaderImage</code>
                that defines
                <code>align:center</code>
                .

                <br />
                You may override these definitions with your own css rules.
                </p>
            </span>

            <p>
                <strong>
                    See also:
                    <a href="table.html">Table</a>
                    ,
                    <a href="tableview.html">TableView</a>
                    ,
                    <a href="tablepages.html">TablePages</a>
                    ,
                    <a href="tablerows.html">TableRows</a>
                    ,
                    <a href="tablevalues.html">TableValues</a>
                    ,
                    <a href="tablecolumns.html">TableColumns</a>
                </strong>
            </p>

            <subsection name="Parameters">
                <p>
                    <em>No parameters</em>
                </p>

                <p>
                    Body:
                    <strong>removed</strong>
                </p>

                <p>
                    Informal parameters:
                    <strong>allowed</strong>
                </p>

                <p>
                    Reserved parameters:
                    <em>none</em>
                </p>

            </subsection>

        </section>

    </body>
</document>
