CVS: Tapestry/examples/Vlib/context/WEB-INF Matches.page,NONE,1.1.2.1 EditProfile.page,NONE,1.1.2.1 Register.page,NONE,1.1.2.1 ConfirmBookDelete.page,NONE,1.1.2.1 ViewPerson.page,NONE,1.1.2.1 web.xml,NONE,1.1.2.1 BorrowedBooks.page,NONE,1.1.2.1 ViewBook.page,NONE,1.1.2.1 Home.page,NONE,1.1.2.1 MyLibrary.page,NONE,1.1.2.1 ApplicationUnavailable.page,NONE,1.1.2.1 EditBook.page,NONE,1.1.2.1 NewBook.page,NONE,1.1.2.1 Login.page,NONE,1.1.2.1

Howard Lewis Ship <[email protected]>
Newsgroups gmane.comp.java.tapestry.cvs
Message-ID <[email protected]>
Update of /cvsroot/tapestry/Tapestry/examples/Vlib/context/WEB-INF
In directory sc8-pr-cvs1:/tmp/cvs-serv29950/examples/Vlib/context/WEB-INF

Added Files:
      Tag: hship-2-3
	Matches.page EditProfile.page Register.page 
	ConfirmBookDelete.page ViewPerson.page web.xml 
	BorrowedBooks.page ViewBook.page Home.page MyLibrary.page 
	ApplicationUnavailable.page EditBook.page NewBook.page 
	Login.page 
Log Message:
Reorganize the Vlib example to move templates into context, and specifications into WEB-INF.

--- NEW FILE: Matches.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: Matches.page,v 1.1.2.1 2002/12/16 19:12:11 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC 
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
	
<page-specification class="net.sf.tapestry.vlib.pages.Matches">

  <component id="border" type="Border">
    <static-binding name="title">Matching Books</static-binding>
  </component>
  
  <component id="insertMatchCount" type="Insert">
    <binding name="value" expression="components.browser.resultCount"/>
  </component>
  
  <component id="browser" type="Browser">
  	<binding name="query" expression="bookQuery"/>
  </component>
  
  <component id="e" type="Foreach">
    <binding name="source" expression="components.browser.pageResults"/>
    <binding name="value" expression="currentMatch"/>
    <static-binding name="element">tr</static-binding>
  </component>
  
  <component id="bookLink" type="BookLink">
    <binding name="book" expression="currentMatch"/>
  </component>
  
  <component id="insertAuthor" type="Insert">
    <binding name="value" expression="currentMatch.author"/>
  </component>
  
  <component id="insertPublisherName" type="Insert">
    <binding name="value" expression="currentMatch.publisherName"/>
  </component>
  
  <component id="ownerLink" type="PersonLink">
    <binding name="primaryKey" expression="currentMatch.ownerPrimaryKey"/>
    <binding name="name" expression="currentMatch.ownerName"/>
    <static-binding name="class">clsDataBlue</static-binding>
  </component>
  
  <component id="holderLink" type="PersonLink">
    <binding name="primaryKey" expression="currentMatch.holderPrimaryKey"/>
    <binding name="name" expression="currentMatch.holderName"/>
    <binding name="omit" expression="omitHolderLink"/>
    <static-binding name="class">clsDataBlue</static-binding>
  </component>
  
  <component id="borrow" type="Borrow">
    <binding name="book" expression="currentMatch"/>
  </component>

</page-specification>

--- NEW FILE: EditProfile.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: EditProfile.page,v 1.1.2.1 2002/12/16 19:12:13 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
	
<page-specification class="net.sf.tapestry.vlib.pages.EditProfile">

  <property name="page-type">library</property>
 
  <bean name="validator" class="net.sf.tapestry.valid.StringValidator" lifecycle="page">
  	<set-property name="required" expression="true"/>
  	<set-property name="clientScriptingEnabled" expression="true"/>
  </bean>
  
  <component id="border" type="Border">
    <static-binding name="title">Edit Profile</static-binding>
  </component>
  
  <component id="showError" type="ShowError"/>
  
  <component id="showValidationError" type="ShowValidationError">
  	<binding name="delegate" expression="validationDelegate"/>
  </component>
  
  <component id="form" type="Form">
    <binding name="listener" expression="listeners.updateProfile"/>
    <binding name="delegate" expression="validationDelegate"/>
  </component>

  <component id="inputFirstName" type="TextField">
    <binding name="displayWidth" expression="30"/>
    <binding name="maximumLength" expression="30"/>
    <binding name="value" expression="attributes.firstName"/>
  </component>

  <component id="labelLastName" type="FieldLabel">
    <binding name="field" expression="components.inputLastName"/>
   </component>

  <component id="inputLastName" type="ValidField">
    <binding name="value" expression="attributes.lastName"/>
    <static-binding name="displayName">Last Name</static-binding>    
    <binding name="displayWidth" expression="30"/>
    <binding name="maximumLength" expression="30"/>  
    <binding name="validator" expression="beans.validator"/>
  </component>

  <component id="labelEmail" type="FieldLabel">
    <binding name="field" expression="components.inputEmail"/>
  </component>

  <component id="inputEmail" type="ValidField">
    <binding name="value" expression="attributes.email"/>
    <static-binding name="displayName">E-Mail</static-binding>    
    <binding name="displayWidth" expression="30"/>
    <binding name="maximumLength" expression="60"/>  
    <binding name="validator" expression="beans.validator"/>
  </component>

  <component id="labelPassword1" type="FieldLabel">
    <binding name="field" expression="components.inputPassword1"/>
  </component>

  <component id="inputPassword1" type="ValidField">
    <binding name="value" expression="password1"/>
    <static-binding name="displayName">Password</static-binding>
    <binding name="displayWidth" expression="20"/>
    <binding name="maximumLength" expression="20"/>  
    <binding name="validator" expression="@net.sf.tapestry.valid.StringValidator@OPTIONAL"/>
    <binding name="hidden" expression="true"/>
  </component>

  <component id="labelPassword2" type="FieldLabel">
    <binding name="field" expression="components.inputPassword2"/>
  </component>

  <component id="inputPassword2" type="ValidField">
    <binding name="value" expression="password2"/>
    <static-binding name="displayName">Password (again)</static-binding>
    <binding name="displayWidth" expression="20"/>
    <binding name="maximumLength" expression="20"/>  
    <binding name="validator" expression="@net.sf.tapestry.valid.StringValidator@OPTIONAL"/>
    <binding name="hidden" expression="true"/>
  </component>
  
</page-specification>

--- NEW FILE: Register.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: Register.page,v 1.1.2.1 2002/12/16 19:12:13 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC 
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
	
<page-specification class="net.sf.tapestry.vlib.pages.Register">

  <property name="page-type">login</property>

  <bean name="validator" class="net.sf.tapestry.valid.StringValidator" lifecycle="page">
  	<set-property name="required" expression="true"/>
  	<set-property name="clientScriptingEnabled" expression="true"/>
  </bean>

  <component id="border" type="Border">
    <static-binding name="title">Register</static-binding>
  </component>

  <component id="showError" type="ShowError"/>

  <component id="showValidationError" type="ShowValidationError">
  	<binding name="delegate" expression="validationDelegate"/>
  </component>
  
  <component id="form" type="Form">
    <binding name="listener" expression="listeners.attemptRegister"/>
    <binding name="delegate" expression="validationDelegate"/>
    <binding name="stateful" expression="false"/>
  </component>
  
  <component id="inputFirstName" type="TextField">
    <binding name="displayWidth" expression="30"/>
    <binding name="maximumLength" expression="30"/>
    <binding name="value" expression="firstName"/>
  </component>
  
  <component id="labelLastName" type="FieldLabel">
    <binding name="field" expression="components.inputLastName"/>
 </component>
  
  <component id="inputLastName" type="ValidField">
    <binding name="value" expression="lastName"/>
    <binding name="displayWidth" expression="30"/>
    <binding name="maximumLength" expression="30"/>
    <static-binding name="displayName">Last Name</static-binding>
    <binding name="validator" expression="beans.validator"/>
  </component>
  
  <component id="labelEmail" type="FieldLabel">
    <binding name="field" expression="components.inputEmail"/>
  </component>
  
  <component id="inputEmail" type="ValidField">
    <binding name="value" expression="email"/>
    <binding name="validator" expression="beans.validator"/>
    <binding name="displayWidth" expression="30"/>
    <binding name="maximumLength" expression="60"/>
    <static-binding name="displayName">E-Mail</static-binding>
  </component>
  
  <component id="labelPassword1" type="FieldLabel">
    <binding name="field" expression="components.inputPassword1"/>
  </component>
  
  <component id="inputPassword1" type="ValidField">
    <binding name="value" expression="password1"/>
    <binding name="displayWidth" expression="20"/>
    <binding name="maximumLength" expression="20"/>
    <static-binding name="displayName">Password</static-binding>
    <binding name="validator" expression="beans.validator"/>
    <binding name="hidden" expression="true"/>
  </component>
  
  <component id="labelPassword2" type="FieldLabel">
    <binding name="field" expression="components.inputPassword2"/>
  </component>
  
  <component id="inputPassword2" type="ValidField">
    <binding name="value" expression="password2"/>
    <binding name="displayWidth" expression="20"/>
    <binding name="maximumLength" expression="20"/>
    <static-binding name="displayName">Password (again)</static-binding>
    <binding name="validator" expression="beans.validator"/>
    <binding name="hidden" expression="true"/>
  </component>

</page-specification>

--- NEW FILE: ConfirmBookDelete.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: ConfirmBookDelete.page,v 1.1.2.1 2002/12/16 19:12:13 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC 
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
	
<page-specification class="net.sf.tapestry.vlib.pages.ConfirmBookDelete">
 
  <property name="page-type">library</property>
   
  <component id="border" type="Border">
    <static-binding name="title">Delete Book</static-binding>
   </component>
  
  <component id="insertBookTitle" type="Insert">
    <binding name="value" expression="bookTitle"/>
  </component>
  
  <component id="yes" type="DirectLink">
    <binding name="listener" expression="listeners.deleteBook"/>
    <binding name="parameters" expression="bookPrimaryKey"/>
  </component>
  
  <component id="no" type="PageLink">
    <static-binding name="page">MyLibrary</static-binding>
  </component>
  
  
</page-specification>

--- NEW FILE: ViewPerson.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: ViewPerson.page,v 1.1.2.1 2002/12/16 19:12:13 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC 
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
	
<page-specification class="net.sf.tapestry.vlib.pages.ViewPerson">

  <property name="page-type">search</property>
  
  <component id="border" type="Border">
    <static-binding name="title">Book Inventory</static-binding>
    <binding name="subtitle" expression="person.naturalName"/>
  </component>
  
  <component id="insertName" type="Insert">
    <binding name="value" expression="person.naturalName"/>
  </component>
  
  <component id="emailLink" type="Any">
    <static-binding name="element">a</static-binding>
    <binding name="href" expression="emailURL"/>
  </component>
  
  <component id="insertEmail" type="Insert">
    <binding name="value" expression="person.email"/>
  </component>
  
  <component id="insertCount" type="Insert">
    <binding name="value" expression="components.browser.resultCount"/>
  </component>
  
  <component id="ifOwnsNoBooks" type="Conditional">
    <binding name="condition" expression="components.browser.resultCount &lt;= 0"/>
  </component>
  
  <component id="ifOwnsBooks" type="Conditional">
    <binding name="condition" expression="components.browser.resultCount &gt; 0"/>
  </component>

  <component id="browser" type="Browser">
    <binding name="query" expression="query"/>
  </component>
  
  <component id="e" type="Foreach">
    <binding name="source" expression="components.browser.pageResults"/>
    <binding name="value" expression="currentMatch"/>
    <static-binding name="element">tr</static-binding>
  </component>

  <component id="bookLink" type="BookLink">
    <binding name="book" expression="currentMatch"/>
  </component>
  
  <component id="insertAuthor" type="Insert">
    <binding name="value" expression="currentMatch.author"/>
  </component>
  
  <component id="insertPublisherName" type="Insert">
    <binding name="value" expression="currentMatch.publisherName"/>
  </component>
  
  <component id="holderLink" type="PersonLink">
    <binding name="primaryKey" expression="currentMatch.holderPrimaryKey"/>
    <binding name="name" expression="currentMatch.holderName"/>
    <static-binding name="class">clsDataBlue</static-binding>
    <binding name="omit" expression="omitHolderLink"/>
  </component>

  <component id="borrow" type="Borrow">
    <binding name="book" expression="currentMatch"/>
  </component>
 
</page-specification>

--- NEW FILE: web.xml ---
<?xml version="1.0"?>
<!-- $Id: web.xml,v 1.1.2.1 2002/12/16 19:12:13 hship Exp $ -->
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
 "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
  <display-name>Tapestry Virtual Library Demo</display-name>
  <servlet>
    <servlet-name>vlib</servlet-name>
    <servlet-class>net.sf.tapestry.ApplicationServlet</servlet-class>
    <init-param>
    	<param-name>net.sf.tapestry.application-specification</param-name>
    	<param-value>/net/sf/tapestry/vlib/Vlib.application</param-value>
    </init-param>
  	<load-on-startup>0</load-on-startup>
  </servlet>
  
  <!-- The single mapping used for the Virtual Library application -->

  <servlet-mapping>
    <servlet-name>vlib</servlet-name>
    <url-pattern>/app</url-pattern>
  </servlet-mapping>
  
  <session-config>
  	<session-timeout>15</session-timeout>
  </session-config>
    
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

--- NEW FILE: BorrowedBooks.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: BorrowedBooks.page,v 1.1.2.1 2002/12/16 19:12:13 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC 
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">

<page-specification class="net.sf.tapestry.vlib.pages.BorrowedBooks">

  <property name="page-type">library</property>
  
  <component id="border" type="Border">
    <static-binding name="title">Borrowed Books</static-binding>
  </component>

  <component id="showError" type="ShowError"/>

  <component id="showMessage" type="ShowMessage"/>

  <component id="ifNoBooks" type="Conditional">
    <binding name="condition" expression="components.browser.resultCount"/>
    <field-binding name="invert" field-name="Boolean.TRUE"/>
  </component>
  
  <component id="ifBooks" type="Conditional">
    <binding name="condition" expression="components.browser.resultCount"/>
  </component>
  

  <component id="browser" type="Browser">
  	<binding name="query" expression="borrowedQuery"/>
  </component>
  
  <component id="insertResultCount" type="Insert">
  	<binding name="value" expression="components.browser.resultCount"/>
  </component>
  
  <component id="e" type="Foreach">
    <binding name="source" expression="components.browser.pageResults"/>
    <binding name="value" expression="currentBook"/>
    <static-binding name="element">tr</static-binding>
  </component>
  
  <component id="bookLink" type="BookLink">
    <binding name="book" expression="currentBook"/>
  </component>
  
  <component id="insertAuthor" type="Insert">
    <binding name="value" expression="currentBook.author"/>
  </component>
  
  <component id="insertPublisher" type="Insert">
    <binding name="value" expression="currentBook.publisherName"/>
  </component>
  
  <component id="ownerLink" type="PersonLink">
    <binding name="name" expression="currentBook.ownerName"/>
    <binding name="primaryKey" expression="currentBook.ownerPrimaryKey"/>
    <static-binding name="class">clsDataBlue</static-binding>
  </component>
  
  <component id="return" type="DirectLink">
    <binding name="parameters" expression="currentBook.primaryKey"/>
    <binding name="listener" expression="listeners.returnBook"/>
  </component>
  
</page-specification>

--- NEW FILE: ViewBook.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: ViewBook.page,v 1.1.2.1 2002/12/16 19:12:14 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC 
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN"
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
	
<page-specification class="net.sf.tapestry.vlib.pages.ViewBook">

  <component id="border" type="Border">
    <static-binding name="title">View Book</static-binding>
    <binding name="subtitle" expression="book.title"/>
  </component>
  
  <component id="insertTitle" type="Insert">
    <binding name="value" expression="book.title"/>
  </component>
  
  <component id="insertAuthor" type="Insert">
    <binding name="value" expression="book.author"/>
  </component>
  
  <component id="insertPublisherName" type="Insert">
    <binding name="value" expression="book.publisherName"/>
  </component>
  
  <component id="insertISBN" type="Insert">
    <binding name="value" expression="book.ISBN"/>
  </component>
  
  <component id="ownerLink" type="PersonLink">
    <binding name="primaryKey" expression="book.ownerPrimaryKey"/>
    <binding name="name" expression="book.ownerName"/>
  </component>

  <component id="insertDateAdded" type="Insert">
  	<binding name="value" expression="book.dateAdded"/>
  	<binding name="format" expression="dateFormat"/>
  </component>

  <component id="insertDescription" type="InsertText">
    <binding name="value" expression="book.description"/>
  </component>
  
  <component id="ifShowHolder" type="Conditional">
    <binding name="condition" expression="showHolder"/>
  </component>
  
  <component id="holderLink" type="PersonLink">
    <binding name="primaryKey" expression="book.holderPrimaryKey"/>
    <binding name="name" expression="book.holderName"/>
    <static-binding name="class">clsDataBlue</static-binding>
  </component>

  <component id="ifNotLendable" type="Conditional">
    <binding name="condition" expression="!book.lendable"/>
  </component>
		
  <component id="borrow" type="Borrow">
    <binding name="book" expression="book"/>
  </component>

</page-specification>

--- NEW FILE: Home.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: Home.page,v 1.1.2.1 2002/12/16 19:12:14 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
	
<page-specification class="net.sf.tapestry.vlib.pages.Home">

  <component id="border" type="Border">
    <static-binding name="title">Virtual Library</static-binding>
  </component>
  
  <component id="showError" type="ShowError"/>
  <component id="showMessage" type="ShowMessage"/>
  
  <component id="searchForm" type="Form"> 
    <binding name="listener" expression="listeners.search"/>
    <binding name="stateful" expression="false"/>
  </component>
  
  <component id="inputTitle" type="TextField">
    <binding name="value" expression="searchTitle"/>
    <binding name="displayWidth" expression="30"/>
    <binding name="maximumLength" expression="100"/>
  </component>
  
  <component id="inputAuthor" type="TextField">
    <binding name="value" expression="searchAuthor"/>
    <binding name="displayWidth" expression="30"/>
    <binding name="maximumLength" expression="100"/>
  </component>
  
  <component id="inputPublisher" type="PropertySelection">
    <binding name="value" expression="searchPublisherPK"/>
    <binding name="model" expression="engine.publisherModel"/>
  </component>
     
</page-specification>

--- NEW FILE: MyLibrary.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: MyLibrary.page,v 1.1.2.1 2002/12/16 19:12:14 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC 
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">

<page-specification class="net.sf.tapestry.vlib.pages.MyLibrary">

  <property name="page-type">library</property>
  
  <component id="border" type="Border">
    <static-binding name="title">My Library</static-binding>
    <static-binding name="subtitle">My Library</static-binding>
  </component>

  <component id="showError" type="ShowError"/>

  <component id="showMessage" type="ShowMessage"/>

  <component id="ifShowOwnedBooks" type="Conditional">
    <binding name="condition" expression="components.browser.resultCount"/>
  </component>

  <component id="ifNoOwnedBooks" copy-of="ifShowOwnedBooks">
   <binding name="condition" expression="components.browser.resultCount == 0"/>
  </component>
  
  <component id="browser" type="Browser">
  	<binding name="query" expression="ownedQuery"/>
  </component>
  
  <component id="insertResultCount" type="Insert">
  	<binding name="value" expression="components.browser.resultCount"/>
  </component>
  
  <component id="e" type="Foreach">
    <binding name="source" expression="components.browser.pageResults"/>
    <binding name="value" expression="currentBook"/>
    <static-binding name="element">tr</static-binding>
  </component>

  <component id="insertTitle" type="Insert">
    <binding name="value" expression="currentBook.title"/>
  </component>

  <component id="insertAuthor" type="Insert">
    <binding name="value" expression="currentBook.author"/>
  </component>

  <component id="insertPublisher" type="Insert">
    <binding name="value" expression="currentBook.publisherName"/>
  </component>

  <component id="holderLink" type="PersonLink">
    <binding name="primaryKey" expression="currentBook.holderPrimaryKey"/>
    <binding name="name" expression="currentBook.holderName"/>
    <binding name="omit" expression="omitHolderLink"/>
    <static-binding name="class">clsDataBlue</static-binding>
  </component>

  <component id="edit" type="DirectLink">
    <binding name="listener" expression="listeners.editBook"/>
    <binding name="parameters" expression="currentBook.primaryKey"/>
  </component>

  <component id="delete" type="DirectLink">
    <binding name="listener" expression="listeners.deleteBook"/>
    <binding name="parameters" expression="currentBook.primaryKey"/>
  </component>
 
</page-specification>

--- NEW FILE: ApplicationUnavailable.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: ApplicationUnavailable.page,v 1.1.2.1 2002/12/16 19:12:17 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC 
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
	
<page-specification class="net.sf.tapestry.vlib.pages.ApplicationUnavailable">

  <component id="shell" type="Shell">
    <static-binding name="title">Virtual Library: Application Unavailable</static-binding>
    <binding name="stylesheet" expression="assets.stylesheet"/>
  </component>

  <component id="body" type="Body"/>
   
  <component id="showError" type="ShowError"/>
  
  <component id="restart" type="ServiceLink">
    <binding name="service" expression="@net.sf.tapestry.IEngineService@RESTART_SERVICE"/>
  </component>
  
  
  <component id="ifDebug" type="Conditional">
    <binding name="condition" expression="engine.debugEnabled"/>
  </component>
  
  <component id="exceptionDisplay" type="ExceptionDisplay">
    <binding name="exceptions" expression="exceptions"/>
  </component>
  

  
  <component id="showRequest" type="Delegator">
    <binding name="delegate" expression="requestCycle.requestContext"/>
  </component>

  <component id="inspectorButton" type="InspectorButton"/>

  <context-asset name="stylesheet" path="/scripts/style_virtlib_pcIE55.css"/>

  
</page-specification>

--- NEW FILE: EditBook.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: EditBook.page,v 1.1.2.1 2002/12/16 19:12:20 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC
	 "-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	 "http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
<page-specification class="net.sf.tapestry.vlib.pages.EditBook">

  <property name="page-type">library</property>
  
  <bean name="validator" class="net.sf.tapestry.valid.StringValidator" lifecycle="page">
  	<set-property name="required" expression="true"/>
  	<set-property name="clientScriptingEnabled" expression="true"/>
  </bean>
    
  <component id="border" type="Border">
    <static-binding name="title">Edit Book</static-binding>
  </component>
  
  <component id="showError" type="ShowError"/>
  
  <component id="showValidationError" type="ShowValidationError">
  	<binding name="delegate" expression="validationDelegate"/>
  </component>
  
  <component id="form" type="Form">
    <binding name="listener" expression="listeners.formSubmit"/>
    <binding name="delegate" expression="validationDelegate"/>
  </component>
  
  <component id="syncPrimaryKey" type="Hidden">
    <binding name="value" expression="bookPrimaryKey"/>
  </component>
  
  <component id="labelTitle" type="FieldLabel">
    <binding name="field" expression="components.inputTitle"/>
  </component>
  
  <component id="inputTitle" type="ValidField">
    <binding name="value" expression="attributes.title"/>
    <static-binding name="displayName">Title</static-binding>
    <binding name="maximumLength" expression="100"/>
    <binding name="displayWidth" expression="50"/>
    <binding name="validator" expression="beans.validator"/>
  </component>
  
  <component id="labelAuthor" type="FieldLabel">
    <binding name="field" expression="components.inputAuthor"/>
  </component>
  
  <component id="inputAuthor" type="ValidField">
    <binding name="value" expression="attributes.author"/>
    <static-binding name="displayName">Author</static-binding>
    <binding name="maximumLength" expression="60"/>
    <binding name="displayWidth" expression="30"/>
    <binding name="validator" expression="beans.validator"/>
  </component>
  
  <component id="inputISBN" type="TextField">
    <binding name="maximumLength" expression="20"/>
    <binding name="displayWidth" expression="20"/>
    <binding name="value" expression="attributes.ISBN"/>
  </component>
  
  <component id="labelPublisher" type="FieldLabel">
    <binding name="field" expression="components.inputPublisherName"/>
  </component>
  
  <component id="inputPublisher" type="PropertySelection">
    <binding name="value" expression="attributes.publisherPK"/>
    <binding name="model" expression="engine.publisherModel"/>
  </component>
  
  <component id="inputPublisherName" type="ValidField">
    <binding name="maximumLength" expression="40"/>
    <binding name="displayWidth" expression="20"/>
    <binding name="value" expression="publisherName"/>
    <static-binding name="displayName">Publisher</static-binding>
    <binding name="validator" expression="@net.sf.tapestry.valid.StringValidator@OPTIONAL"/>
  </component>
  
  <component id="inputDescription" type="TextArea">
    <binding name="value" expression="attributes.description"/>
    <binding name="columns" expression="35"/>
    <binding name="rows" expression="8"/>
  </component>
  
  <component id="inputHolder" type="PropertySelection">
    <binding name="value" expression="attributes.holderPK"/>
    <binding name="model" expression="engine.personModel"/>
  </component>
  
  <component id="inputHidden" type="Checkbox">
  	<binding name="selected" expression="attributes.hidden"/>
  </component>
  
  <component id="inputLendable" type="Checkbox">
  	<binding name="selected" expression="attributes.lendable"/>
  </component>
  
  <component id="publisherScript" type="Script">
    <static-binding name="script">/net/sf/tapestry/vlib/pages/Publisher.script</static-binding>
    <binding name="select" expression="components.inputPublisher"/>
    <binding name="field" expression="components.inputPublisherName"/>
  </component>

</page-specification>

--- NEW FILE: NewBook.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: NewBook.page,v 1.1.2.1 2002/12/16 19:12:21 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC 
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
	
<page-specification class="net.sf.tapestry.vlib.pages.NewBook">

  <property name="page-type">library</property>
  
  <component id="border" type="Border">
    <static-binding name="title">Add New Book</static-binding>
  </component>
  
  <component id="showError" type="ShowError"/>
  
  <component id="form" type="Form">
    <binding name="listener" expression="listeners.addBook"/>
    <binding name="delegate" expression="validationDelegate"/>
  </component>
  
  <component id="showValidationError" type="ShowValidationError">
  	<binding name="delegate" expression="validationDelegate"/>
  </component>
  
  
  <component id="labelTitle" type="FieldLabel">
    <binding name="field" expression="components.inputTitle"/>
  </component>
  
  <component id="inputTitle" type="ValidField">
    <binding name="value" expression="attributes.title"/>
    <static-binding name="maximumLength">100</static-binding>
    <static-binding name="displayWidth">50</static-binding>
    <static-binding name="displayName">Title</static-binding>
     <field-binding name="validator" field-name="net.sf.tapestry.valid.StringValidator.REQUIRED"/>
  </component>
  
  <component id="labelAuthor" type="FieldLabel">
    <binding name="field" expression="components.inputAuthor"/>
  </component>
  
  <component id="inputAuthor" type="ValidField">
    <binding name="value" expression="attributes.author"/>
    <field-binding name="validator" field-name="net.sf.tapestry.valid.StringValidator.REQUIRED"/>
    <static-binding name="maximumLength">60</static-binding>
    <static-binding name="displayWidth">30</static-binding>
    <static-binding name="displayName">Author</static-binding>
  </component>
  
  <component id="inputISBN" type="TextField">
    <static-binding name="maximumLength">20</static-binding>
    <static-binding name="displayWidth">20</static-binding>
    <binding name="value" expression="attributes.ISBN"/>
    <field-binding name="validator" field-name="net.sf.tapestry.valid.StringValidator.OPTIONAL"/>
  </component>
  
  <component id="labelPublisher" type="FieldLabel">
    <binding name="field" expression="components.inputPublisherName"/>
  </component>
  
  <component id="inputPublisher" type="PropertySelection">
    <binding name="value" expression="attributes.publisherPK"/>
    <binding name="model" expression="engine.publisherModel"/>
  </component>
  
  <component id="inputPublisherName" type="ValidField">
    <static-binding name="maximumLength">40</static-binding>
    <static-binding name="displayWidth">20</static-binding>
    <binding name="value" expression="publisherName"/>
    <field-binding name="validator" field-name="net.sf.tapestry.valid.StringValidator.OPTIONAL"/>
    <static-binding name="displayName">Publisher</static-binding>
  </component>
  
  <component id="inputDescription" type="TextArea">
    <binding name="value" expression="attributes.description"/>
    <static-binding name="columns">35</static-binding>
    <static-binding name="rows">8</static-binding>
  </component>
  
  <component id="inputHidden" type="Checkbox">
  	<binding name="selected" expression="attributes.hidden"/>
  </component>
  
  <component id="inputLendable" type="Checkbox">
  	<binding name="selected" expression="attributes.lendable"/>
  </component>
  
  <component id="publisherScript" type="Script">
    <static-binding name="script">/net/sf/tapestry/vlib/pages/Publisher.script</static-binding>
    <binding name="select" expression="components.inputPublisher"/>
    <binding name="field" expression="components.inputPublisherName"/>
  </component>
    
</page-specification>

--- NEW FILE: Login.page ---
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: Login.page,v 1.1.2.1 2002/12/16 19:12:24 hship Exp $ -->
<!DOCTYPE page-specification PUBLIC 
	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
	
<page-specification class="net.sf.tapestry.vlib.pages.Login">

  <property name="page-type">login</property>

  <bean name="validator" class="net.sf.tapestry.valid.StringValidator" lifecycle="page">
  	<set-property name="required" expression="true"/>
  	<set-property name="clientScriptingEnabled" expression="true"/>
  </bean>

  <component id="border" type="Border">
    <static-binding name="title">Login</static-binding>
  </component>
  
  <component id="form" type="Form">
    <binding name="listener" expression="listeners.attemptLogin"/>
    <binding name="delegate" expression="validationDelegate"/>
    <binding name="stateful" expression="false"/>
  </component>
   
  <component id="showError" type="ShowError"/>
  
  <component id="showValidationError" type="ShowValidationError">
  	<binding name="delegate" expression="validationDelegate"/>
  </component>
  
  <component id="labelEmail" type="FieldLabel">
    <binding name="field" expression="components.inputEmail"/>
  </component>
  
  <component id="inputEmail" type="ValidField">
    <binding name="displayWidth" expression="30"/>
    <binding name="maximumLength" expression="60"/>
    <static-binding name="displayName">Email Address</static-binding>
    <binding name="value" expression="email"/>
    <binding name="validator" expression="beans.validator"/>
  </component>
  
  <component id="labelPassword" type="FieldLabel">
    <binding name="field" expression="components.inputPassword"/>
  </component>
  
  <component id="inputPassword" type="ValidField">
    <binding name="value" expression="password"/>
    <binding name="validator" expression="beans.validator"/>
    <binding name="displayWidth" expression="10"/>
    <binding name="maximumLength" expression="20"/>
    <static-binding name="displayName">Password</static-binding>
    <binding name="hidden" expression="true"/>
  </component>
  
  <component id="register" type="PageLink">
    <static-binding name="page">Register</static-binding>
  </component>

</page-specification>



-------------------------------------------------------
This sf.net email is sponsored by:
With Great Power, Comes Great Responsibility 
Learn to use your power at OSDN's High Performance Computing Channel
http://hpc.devchannel.org/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.