<?xml version="1.0"?>
<!--
    $Id: index.xml 544855 2007-06-06 14:44:15Z apetrelli $

    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.
-->
<!--
// ======================================================================== 78
-->
<document>
<properties>
  <title>Welcome</title>
</properties>

<body>

<section name="Welcome To Struts Tiles">
    <p>
        Welcome to the Struts Tiles component.Tiles is a templating 
        system. (Include on steriods.) It can be used to create a common look 
        and feel for a web application. Tiles can also be used to create 
        reusable view components. This site will help 
        you get started with Tiles. 
    </p>
    <p>
        Tiles can also be used without Struts. A new release of Tiles, 
        Tiles 2, is being prepared. If you would like to use Tiles without 
        Struts, see the new <a href="http://tiles.apache.org/">Apache Tiles 2
        project.</a> The focus of this site is using Tiles <em>with</em> Struts. 
    </p>
</section>

<section name="Tiles Features" href="Features">
     <ul>
          <li>Screen definitions
             <ul>
                <li>Create a screen by assembling
                   <strong><em>Tiles</em></strong> : header, footer,
                   menu, body, etc.
                </li>
                <li>
                   Definitions can take place : 
                   <ul>
                      <li>in a centralized XML file</li>
                      <li>directly in JSP pages</li>
                      <li>programatically in Actions</li>
                   </ul>
                </li>
                <li>
                   Definitions provide an inheritance
                   mechanism : a definition can extend another one,
                   and override parameters.
                </li>
             </ul>
          </li>
          <li>
             Layouts 
             <ul>
                <li>
                   Define common page layouts and reuse
                   them across your website.
                </li>
                <li>
                   Define menu layouts, and use them by
                   passing lists of items and links.
                </li>
                <li>
                   Define a portal layout, use it by
                   passing a list of <strong><em>Tiles</em></strong>
                   (pages) to show.
                </li>
                <li>
                   Reuse existing layouts, or define
                   your own.
                </li>
             </ul>
          </li>
          <li>
             Dynamic page building 
             <ul>
                <li>
                   Tiles can be gathered dynamically during
                   page reload. It is possible to change any attribute:
                   layout, list of Tiles in portal, list of menu
                   items, etc.
                </li>
             </ul>
          </li>
          <li>
             Reuse of <strong><em>Tiles</em></strong> /
             Components 
             <ul>
                <li>
                   If well defined, a
                   <strong><em>Tile</em></strong> can be reused across multiple
                   applications.
                </li>
                <li>
                   Dynamic attributes are used to
                   parameterize <em><strong>Tiles</strong></em>.
                </li>
                <li>
                   It is possible to define a library of
                   reusable <em><strong>Tiles</strong></em>.
                </li>
                <li>
                   Build a page by assembling predefined
                   components, giving them appropriate parameters.
                </li>
             </ul>
          </li>
          <li>
             Internationalization (i18n)
          </li>
          <ul>
          <li>
             It is possible to load different tiles
             according to Locale.
          </li>
          <li>
             A mechanism similar to Java properties
             files is used for definitions files: you can have one
             definition file per Locale. The appropriate definition is
             loaded according to the current Locale.
          </li>
          </ul>
          <li>
             Multi-channels
          </li>
          <ul>
          <li>
             It is possible to load different Tiles
             according to a key.
          </li>
          
          <li>
             For example, the key could represent user privileges,
             browser type, arbitrary name stored in session, etc.
          </li>
          
          <li>
             A mechanism similar to Java properties
             files is used for definitions files: you can have one
             definition file per key. The appropriate definition is
             loaded according to the key.
          </li>
          </ul>
       </ul>

</section>

</body>
</document>
