<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright 2004 The Apache Software Foundation
  
   Licensed 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.
-->
<!-- $Id$ -->
<!DOCTYPE page-specification PUBLIC 
  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
	
<page-specification class="org.apache.tapestry.junit.mock.app.Register">

  <bean name="delegate" class="org.apache.tapestry.valid.ValidationDelegate"/>

  <bean name="requiredString" 
  	class="org.apache.tapestry.valid.StringValidator" 
  	lifecycle="page">
    <set-property name="minimumLength" expression="3"/>
    <set-property name="required" expression="true"/>
    <set-property name="clientScriptingEnabled" expression="true"/>
  </bean>
  
  <bean name="user" class="org.apache.tapestry.junit.mock.app.User"/>

  <component id="border" type="lib:Border">
  	<static-binding name="title">Register</static-binding>
  </component>
  
  <component id="showError" type="lib:ShowError">
  	<binding name="delegate" expression="beans.delegate"/>
  </component>
  
  <component id="form" type="Form">
  	<binding name="listener" expression="listeners.formSubmit"/>
  	<binding name="delegate" expression="beans.delegate"/>
  </component>
  
  <component id="labelFirstName" type="FieldLabel">
  	<binding name="field" expression="components.inputFirstName"/>
  </component>
  
  <component id="inputFirstName" type="ValidField">
  	<binding name="value" expression="beans.user.firstName"/>
  	<binding name="validator" expression="beans.requiredString"/>
  	<static-binding name="displayName">First Name</static-binding>
  </component>
  
  <component id="labelLastName" type="FieldLabel">
  	<binding name="field" expression="components.inputLastName"/>
  </component>
  
  <component id="inputLastName" type="ValidField">
  	<binding name="value" expression="beans.user.lastName"/>
  	<binding name="validator" expression="beans.requiredString"/>
  	<static-binding name="displayName">Last Name</static-binding>
  </component>  
  
  <component id="inputSex" type="RadioGroup">
  	<binding name="selected" expression="beans.user.male"/>
  </component>
  
  <component id="inputMale" type="Radio">
  	<binding name="value" expression="true"/>
  </component>
  
  <component id="inputFemale" type="Radio">
  	<binding name="value" expression="false"/>
  </component>
  
  <component id="inputAgeRange" type="PropertySelection">
  	 <binding name="value" expression="beans.user.ageRange"/>
  	 <binding name="model" expression="ageRangeModel"/>
  </component>
  
</page-specification>