<?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.chart.ChartPage">

  <bean name="delegate" class="org.apache.tapestry.workbench.WorkbenchValidationDelegate"/>
  
	<bean name="required" class="org.apache.tapestry.valid.StringValidator" lifecycle="page">
	  <set-property name="required" expression="true"/>
	</bean>

  <bean name="intValidator" class="org.apache.tapestry.valid.NumberValidator" lifecycle="page">
  	<set-property name="required" expression="true"/>
  	<set-property name="minimum" expression="0"/>
  </bean>

  <component id="showError" type="ShowError">
     <binding name="delegate" expression="beans.delegate"/>
  </component>

  <component id="form" type="Form">
    <binding name="listener" expression="listeners.submit"/>
    <binding name="delegate" expression="beans.delegate"/>
  </component>

  <component id="plotValues" type="Foreach">
    <binding name="source" expression="plotValues"/>
    <binding name="value" expression="plotValue"/>
    <static-binding name="element" value="tr"/>
  </component>

  <component id="inputName" type="ValidField">
  	<static-binding name="displayName" value="Name"/>
  	<binding name="value" expression="plotValue.name"/>
  	<binding name="validator" expression="beans.required"/>
  </component>

  <component id="inputValue" type="ValidField">	
  	<static-binding name="displayName" value="Value"/>
  	<binding name="value" expression="plotValue.value"/>
  	<binding name="validator" expression="beans.intValidator"/>
  	<static-binding name="type" value="int"/>
  </component>
  
  <component id="inputMarked" type="Checkbox">
    <binding name="selected" expression="markedForDeletion"/>
  </component>
  
  <component id="add" type="Submit">
  	<binding name="listener" expression="listeners.add"/>
  	<static-binding name="label" value="Update and Add"/>
  </component>
  
  <component id="delete" type="Submit">	
  	<binding name="listener" expression="listeners.delete"/>
  	<static-binding name="label" value="Delete Selected"/>
  </component>

</page-specification>

