<?xml version="1.0"?>
<!--
   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.workbench.fields.Fields">
	<component id="border" type="Border"/>
	<component id="showError" type="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="dateLabel" type="FieldLabel">
		<binding name="field" expression="components.inputDate"/>
	</component>
	<component id="inputDate" type="ValidField">
		<binding name="validator" expression="beans.dateValidator"/>
		<binding name="value" expression="visit.dateValue"/>
		<static-binding name="displayName">Date Field</static-binding>
	</component>
	<component id="intLabel" type="FieldLabel">
		<binding name="field" expression="components.inputInt"/>
	</component>
	<component id="inputInt" type="ValidField">
		<binding name="validator" expression="beans.intValidator"/>
		<binding name="value" expression="visit.intValue"/>
		<static-binding name="displayName">Integer Field</static-binding>
	</component>
	<component id="doubleLabel" type="FieldLabel">
		<binding name="field" expression="components.inputDouble"/>
	</component>
	<component id="inputDouble" type="ValidField">
		<binding name="validator" expression="beans.doubleValidator"/>
		<binding name="value" expression="visit.doubleValue"/>
		<static-binding name="displayName">Double Field</static-binding>
	</component>
	<component id="bigDecimalLabel" type="FieldLabel">
		<binding name="field" expression="components.inputBigDecimal"/>
	</component>
	<component id="inputBigDecimal" type="ValidField">
		<binding name="value" expression="visit.bigDecimalValue"/>
		<binding name="validator" expression="beans.bigDecimalValidator"/>
		<static-binding name="displayName">Big Decimal Field</static-binding>
	</component>
	<component id="longLabel" type="FieldLabel">
		<binding name="field" expression="components.inputLong"/>
	</component>
	<component id="inputLong" type="ValidField">
		<binding name="value" expression="visit.longValue"/>
		<binding name="validator" expression="beans.longValidator"/>
		<static-binding name="displayName">Long Field</static-binding>
	</component>
	<component id="stringLabel" type="FieldLabel">
		<binding name="field" expression="components.inputString"/>
	</component>
	<component id="inputString" type="ValidField">
		<binding name="value" expression="visit.stringValue"/>
		<binding name="validator" expression="beans.stringValidator"/>
		<static-binding name="displayName">String Field</static-binding>
	</component>
	<component id="continue" type="ImageSubmit">
		<binding name="image" propertypath="assets.continue"/>
	</component>
	<context-asset name="continue" path="/images/workbench/Continue.gif"/>
</page-specification>
