<?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 template="/main.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:tc="http://myfaces.apache.org/tobago/component"
                xmlns:ui="http://java.sun.com/jsf/facelets">

  <p>The <code class="language-markup">&lt;tc:treeListbox/></code> can be used to replace a classic
    <code class="language-markup">&lt;tc:tree/></code>. It displays the tree as a number of lists.</p>
  <tc:link label="Tag Library Documentation" image="#{request.contextPath}/image/feather-leaf.png"
           link="#{apiController.base}/doc/#{apiController.currentRelease}/tld/tc/treeListbox.html"/>

  <tc:section label="Example">
    <pre><code class="language-markup">&lt;tc:treeListbox value="\#{treeListboxController.sample}" ...></code></pre>
    <tc:treeListbox id="listbox" value="#{treeListboxController.sample}" var="node"
                    state="#{treeListboxController.state}">
      <tc:treeNode id="node">
        <tc:treeLabel id="label" value="#{node.userObject.name}"/>
      </tc:treeNode>
    </tc:treeListbox>

    <tc:button id="submit" label="Submit" action="#{treeListboxController.submit}"/>

    <tc:out id="output" label="Selection" tip="as set of tree pathes"
            value="#{treeListboxController.state.selectedState}"/>
  </tc:section>
</ui:composition>
