<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you 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.
-->
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
 <meta name="Author" content="Malcolm Edgar"/>
 <meta name="description" lang="en" content="Apache Click Java web application framework"/>
 <meta name="keywords" lang="en" content="Apache Click, Click, Click Framework, Java, JEE, J2EE, web application framework, open source"/>
 <title>Apache Click</title>
 <link rel="stylesheet" type="text/css" href="../help.css"/>
</head>
<body>

<h1>User Guide</h1>
<p/>
Click comes with a comprehensive user guide to get you started quickly. It starts
off with an introductory chapter showing how to work with pages and templates
and moves on to some of the most popular controls, Form and Table.

<p/>
It also explains in depth the Page and Control life cycle, configuration and
best practices.

<p/>
The user guide is available in three flavors:

<ul>
    <li>
        <a href="user-guide/html/index.html">HTML multiple pages</a>
    </li>
    <li>
        <a href="user-guide/htmlsingle/click-book.html">HTML single page (320 KB)</a>
    </li>
    <li>
        <a target='_blank' class='external' href="user-guide/pdf/click-book.pdf">PDF (480 KB)</a>
    </li>
</ul>

<!-- FOOTER -->
<div id="footer">
    <hr/>
    <p>
    <a target='_blank' href='http://www.apache.org' title='Apache Software Foundation'>
        <img id="asf-logo" src="http://www.apache.org/images/asf-logo.gif" alt="Apache Software Foundation"/>
    </a>
    Copyright &copy; 2001-2013 Apache Software Foundation. Apache Click,
    Click, Apache, the Apache feather logo, and the Apache Click project logo are
    trademarks of The Apache Software Foundation.
    <a href="http://cayenne.apache.org/privacy-policy.html">Privacy policy.</a>
    </p>
</div>

</body>
</html>

