<?xml version="1.0" encoding="UTF-8"?>
<!--
    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.
-->
        
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:tr="http://myfaces.apache.org/trinidad"
                template="/pages/componentDemo.xhtml">

    <ui:define name="demoContent">

        <tr:panelFormLayout rows="5" labelAlignment="start">
            <tr:outputFormatted value="&lt;b&gt;Temperature converter&lt;b&gt;"/>
            <tr:spacer height="5px"/>
            <tr:panelHorizontalLayout>
                <tr:inputText value="#{commandLinkBean.celsiusDegrees}" onclick="this.value='';"/>
                <tr:outputText value="C"/>
            </tr:panelHorizontalLayout>
            <tr:commandLink text="Convert" action="#{commandLinkBean.convertToFahrenheit}"/>
            <tr:panelHorizontalLayout>
                <tr:inputText value="#{commandLinkBean.fahrenheitDegrees}" disabled="true"/>
                <tr:outputText value="F"/>
            </tr:panelHorizontalLayout>
        </tr:panelFormLayout>

    </ui:define>
</ui:composition>
