<?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:f="http://java.sun.com/jsf/core"
                xmlns:tr="http://myfaces.apache.org/trinidad"
                template="/pages/componentDemo.xhtml">

    <ui:define name="demoContent">

        <tr:outputText value="The monarchs of England, from House of Stuart(restored) are:"/>
        <tr:spacer height="15px"/>
        <tr:table width="100%" rowSelection="multiple" emptyText="No data available."
                  value="#{tableColumn.monarchs}" var="row">
            <tr:column >
                <f:facet name="header">
                    <tr:outputText value="Id"/>
                </f:facet>
                <tr:outputText value="#{row.id}"/>
            </tr:column>
            <tr:column>
                <f:facet name="header">
                    <tr:outputText value="Name"/>
                </f:facet>
                <tr:outputText value="#{row.name}"/>
            </tr:column>
            <tr:column>
                <f:facet name="header">
                    <tr:outputText value="Birth"/>
                </f:facet>
                <tr:outputText value="#{row.birth}"/>
            </tr:column>
            <tr:column>
                <f:facet name="header">
                    <tr:outputText value="Death"/>
                </f:facet>
                <tr:outputText value="#{row.death}"/>
            </tr:column>
        </tr:table>

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