<!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">
<head>
    <title>Hello World</title>
</head>
<body>
<ui:composition template="/template.xhtml">
    <ui:define name="additionalHeadIncludes">
        <link type="text/css" rel="stylesheet" href="#{resource['styles:compilerWindow.css']}"/>
    </ui:define>

    <ui:define name="body">
        <!-- also we need to add some values here -->
        <div class="centerDiv">
            <h:panelGroup styleClass="stdBoxBig" style="color:black;">
                <h2>Ext-Scripting Compiler Window</h2>

                <p>This page shows the compiler output window and refresh history.</p>

            </h:panelGroup>

            <h:form>
                <h:outputLink style="margin-left: 10px; color: white; font-weight: bold;"
                              value="./compilerWindow.jsf">Refresh Compiler output &gt;&gt;</h:outputLink>
            </h:form>
        </div>
    </ui:define>
</ui:composition>
</body>
</html>