<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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 xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
      xmlns:grv="http://myfaces.apache.org/groovy"
      xmlns:g="http://java.sun.com/jsf/composite/greet"

        >

<head>
    <title>Hello World</title>
</head>
<body>
<ui:composition template="/template.xhtml">

    <ui:define name="body">
        <h1>Hello from Apache MyFaces Extension Scripting</h1>
        <h:panelGrid columns="2" columnClasses="celltop, celltop">


            <h:panelGroup styleClass="stdBox" id="demoMenu">
                <h2>Documentation</h2>

                <h:outputLink target="_new"
                              value="http://people.apache.org/~werpu/ext-script-site/index.html">Extension Scripting Documentation</h:outputLink>


                <h2>Demo and Testing Links</h2>
                <h:panelGrid columns="1">
                    <h:outputLink value="helloWorld.jsf">Hello World Artifacting Testing Case</h:outputLink>
                    <h:outputLink value="componentTest.jsf">Component Testing Case</h:outputLink>
                    <h:outputLink value="complexBean.jsf">Complex Bean Testing Case</h:outputLink>
                    <h:outputLink value="javablog.jsf">Java Blog Example</h:outputLink>
                    <h:outputLink value="blog.jsf">Groovy Blog Example</h:outputLink>
                </h:panelGrid>
            </h:panelGroup>

            <h:panelGroup
                    styleClass="stdBox"><h3>Apache Apache MyFaces Extension Scripting - short Ext-Scripting is a dynamic script
                extension for the Apache MyFaces JSF Implementation.
                With it you can edit JSF artifacts on the fly in both Groovy and Java.
                </h3>
            </h:panelGroup>

        </h:panelGrid>

        <h:panelGroup styleClass="stdBoxBig" style="width: 810px;">
            <object width="800" height="600" style="margin-left: 5px;" >
                <param name="movie"
                       value="http://www.youtube.com/v/g2YvzOloNyI&#38;hl=de_DE&#38;fs=1&#38;border=1"></param>
                <param name="allowFullScreen" value="true"></param>
                <param name="allowscriptaccess" value="always"></param>
                <embed src="http://www.youtube.com/v/g2YvzOloNyI&#38;hl=de_DE&#38;fs=1&#38;border=1"
                       type="application/x-shockwave-flash" allowscriptaccess="always"
                       allowfullscreen="true" width="800" height="550"></embed>
            </object>
        </h:panelGroup>


    </ui:define>


</ui:composition>
</body>
</html>