<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
/*
 * $Id$
 *
 * 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.
 */
-->
<project name="Apache Tiles - Framework">
    <bannerLeft>
        <name>Apache Software Foundation</name>
        <src>http://www.apache.org/images/asf-logo.gif</src>
        <href>http://www.apache.org</href>
    </bannerLeft>
    <bannerRight>
        <name>Apache Tiles 2</name>
        <src>http://tiles.apache.org/images/logo.png</src>
        <href>http://tiles.apache.org</href>
    </bannerRight>
    <body>

        <links>
            <item name="Apache" href="http://www.apache.org" />
            <item name="Tiles 2" href="http://tiles.apache.org" />
        </links>


        <menu name="Apache Tiles">
            <item
                   name="Home"
                   href="../index.html"/>
            <item
                   name="Tiles project start page"
                   href="./index.html"/>
        </menu>
        <menu name="Documentation">
            <item   
                    name="Getting Started"
                    href="getting_started.html"/>
            <item   
                    name="Tutorial"
                    href="tutorial/index.html"
                    collapse="true">
                <item   
                        name="The composite view pattern"
                        href="tutorial/pattern.html"/>
                <item   
                        name="Configuration"
                        href="tutorial/configuration.html"/>
                <item   
                        name="Basic Usage"
                        href="tutorial/basic/index.html"
                        collapse="true">
                    <item   
                            name="Tiles Concepts"
                            href="tutorial/basic/concepts.html"/>
                    <item   
                            name="Creating Pages"
                            href="tutorial/basic/pages.html"/>
                </item>
                <item   
                        name="Advanced Topics"
                        href="tutorial/advanced/index.html"
                        collapse="true">
                    <item   
                            name="Nesting and Extending"
                            href="tutorial/advanced/nesting-extending.html"/>
                    <item   
                            name="List Attributes"
                            href="tutorial/advanced/list-attributes.html"/>
                    <item   
                            name="Runtime Composition"
                            href="tutorial/advanced/runtime.html"/>
                    <item   
                            name="View Preparers"
                            href="tutorial/advanced/preparer.html"/>
                    <item   
                            name="Rendering Utilities"
                            href="tutorial/advanced/utils.html"/>
                    <item   
                            name="Localization"
                            href="tutorial/advanced/l10n.html"/>
                    <item   
                            name="Using Beans as Attributes"
                            href="tutorial/advanced/beans.html"/>
                    <item   
                            name="Menu-ing"
                            href="tutorial/advanced/menu.html"/>
                </item>
                <item   
                        name="Integrations"
                        href="tutorial/integration/index.html"
                        collapse="true">
                    <item   
                            name="Frameworks"
                            href="tutorial/integration/frameworks.html"/>
                    <item   
                            name="View technologies"
                            href="tutorial/integration/view.html"/>
                </item>
                <item   
                        name="Extensions"
                        href="tutorial/extension/index.html"
                        collapse="true">
                     <item   
                            name="Extension Points"
                            href="tutorial/extension/points.html"/>
                     <item   
                            name="UrlDefinitionsFactory"
                            href="tutorial/extension/url_definitions_factory.html"/>
                </item>
            <item   
                    name="Migration from Struts Tiles"
                    href="migration/index.html"/>
            </item>
        </menu>
        <menu name="Reference">
            <item
                    name="Configuration reference"
                    href="config-reference.html"/>
            <item
                    name="Javadoc"
                    href="apidocs/index.html"/>
            <item
                    name="Taglibdoc"
                    href="tiles-jsp/tlddoc/index.html"/>
            <item
                    name="Taglib Reference"
                    href="tiles-jsp/tagreference.html"/>
            <item
                    name="DTD Doc"
                    href="tiles-core/dtddoc/index.html"/>
        </menu>

        <menu name="Developers">
            <item
                    name="Building"
                    href="/dev/building.html"/>
            <item
                    name="Snapshots"
                    href="/dev/snapshots.html"/>
            <item
                    name="Release Process"
                    href="/dev/release.html"/>
            <item
                    name="Selenium Testing"
                    href="/selenium.html"/>
        </menu>

        ${modules}
        ${reports}

    </body>
</project>
