Delete old directories that contained code prior to move to Maven

git-svn-id: https://svn.apache.org/repos/asf/tapestry/tapestry3/trunk@681443 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/contrib/.cvsignore b/contrib/.cvsignore
deleted file mode 100644
index 602053d..0000000
--- a/contrib/.cvsignore
+++ /dev/null
@@ -1,3 +0,0 @@
-classes

-*.log

-target

diff --git a/contrib/build.xml b/contrib/build.xml
deleted file mode 100644
index 35337d7..0000000
--- a/contrib/build.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!-- $Id$ -->
-<project name="Tapestry Contrib Framework" default="install">
-	<property name="root.dir" value=".."/>
-	<property file="${root.dir}/config/Version.properties"/>
-	<property file="${root.dir}/config/build.properties"/>
-	<property file="${root.dir}/config/common.properties"/>
-	<path id="jetty.classpath">
-		<fileset dir="${jetty.dir}">
-			<include name="**/javax.*.jar"/>
-		</fileset>
-	</path>
-	<path id="project.classpath">
-		<fileset dir="${root.lib.dir}">
-			<include name="${framework.jar}"/>
-			<include name="${ext.dir}/*.jar"/>
-			<include name="${j2ee.dir}/*.jar"/>
-		</fileset>
-	</path>
-	<target name="init">
-		<mkdir dir="${classes.dir}"/>
-	</target>
-	<target name="clean">
-		<delete dir="${classes.dir}"/>
-	</target>
-
-	<target name="compile" depends="init"
-		description="Compile all classes in the framework.">
-		<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="on"
-			target="1.1" source="1.3">
-			<classpath refid="project.classpath"/>
-		</javac>
-	</target>
-
-	<target name="install" depends="compile"
-		description="Compile all classes and build the installed JAR including all package resources."
-		>
-		<jar jarfile="${root.lib.dir}/${contrib.jar}">
-			<fileset dir="${classes.dir}"/>
-			<fileset dir="${src.dir}">
-				<exclude name="**/*.java"/>
-				<exclude name="**/package.html"/>
-			</fileset>
-		</jar>
-	</target>
-</project>
diff --git a/contrib/src/org/apache/tapestry/contrib/Contrib.library b/contrib/src/org/apache/tapestry/contrib/Contrib.library
deleted file mode 100644
index fb5b813..0000000
--- a/contrib/src/org/apache/tapestry/contrib/Contrib.library
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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 library-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<library-specification>
-
-  <component-type type="InspectorButton" specification-path="inspector/InspectorButton.jwc"/>
-  <page name="Inspector" specification-path="inspector/Inspector.page"/>
-
-  <library id="inspector" specification-path="inspector/Inspector.library"/>
-
-  <component-type type="Choose" specification-path="components/Choose.jwc"/>
-  <component-type type="When" specification-path="components/When.jwc"/>
-  <component-type type="Otherwise" specification-path="components/Otherwise.jwc"/>
-
-  <component-type type="Palette" specification-path="palette/Palette.jwc"/>
-  <component-type type="MultiplePropertySelection" specification-path="form/MultiplePropertySelection.jwc"/>
-  <component-type type="DateField" specification-path="valid/DateField.jwc"/>
-  <component-type type="MaskEdit" specification-path="form/MaskEdit.jwc"/>
-  <component-type type="NumericField" specification-path="valid/NumericField.jwc"/>
-  <component-type type="ValidatingTextField" specification-path="valid/ValidatingTextField.jwc"/>
-  <component-type type="FormConditional" specification-path="form/FormConditional.jwc"/>
-
-  <component-type type="InheritInformalAny" specification-path="informal/InheritInformalAny.jwc"/>
-
-  <component-type type="Table" specification-path="table/components/Table.jwc"/>
-  <component-type type="TableColumns" specification-path="table/components/TableColumns.jwc"/>
-  <component-type type="TablePages" specification-path="table/components/TablePages.jwc"/>
-  <component-type type="TableRows" specification-path="table/components/TableRows.jwc"/>
-  <component-type type="TableValues" specification-path="table/components/TableValues.jwc"/>
-  <component-type type="TableView" specification-path="table/components/TableView.jwc"/>
-  <component-type type="FormTable" specification-path="table/components/FormTable.jwc"/>
-  <component-type type="TableFormRows" specification-path="table/components/TableFormRows.jwc"/>
-  <component-type type="TableFormPages" specification-path="table/components/TableFormPages.jwc"/>
-
-  <page name="SimpleTableColumnPage" specification-path="table/components/inserted/SimpleTableColumnPage.page"/>
-  <component-type type="SimpleTableColumnComponent" specification-path="table/components/inserted/SimpleTableColumnComponent.jwc"/>
-  <component-type type="SimpleTableColumnFormComponent" specification-path="table/components/inserted/SimpleTableColumnFormComponent.jwc"/>
-
-  <component-type type="PopupLink" specification-path="popup/PopupLink.jwc"/>
-
-    <component-type type="Tree"
-        specification-path="/org/apache/tapestry/contrib/tree/components/Tree.jwc"/>
-    <component-type type="TreeDataView"
-        specification-path="/org/apache/tapestry/contrib/tree/components/TreeDataView.jwc"/>
-    <component-type type="TreeNodeView"
-        specification-path="/org/apache/tapestry/contrib/tree/components/TreeNodeView.jwc"/>
-    <component-type type="TreeView"
-        specification-path="/org/apache/tapestry/contrib/tree/components/TreeView.jwc"/>
-    <component-type type="TreeTableDataView"
-        specification-path="/org/apache/tapestry/contrib/tree/components/table/TreeTableDataView.jwc"/>
-    <component-type type="TreeTable"
-        specification-path="/org/apache/tapestry/contrib/tree/components/table/TreeTable.jwc"/>
-    <component-type type="TreeTableNodeViewDelegator"
-        specification-path="/org/apache/tapestry/contrib/tree/components/table/TreeTableNodeViewDelegator.jwc"/>
-    <page name="TreeNodeViewPage" specification-path="/org/apache/tapestry/contrib/tree/components/TreeNodeViewPage.page"/>
-
-    <page name="TreeTableNodeViewPage" specification-path="/org/apache/tapestry/contrib/tree/components/table/TreeTableNodeViewPage.page"/>
-</library-specification>
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/components/Choose.java b/contrib/src/org/apache/tapestry/contrib/components/Choose.java
deleted file mode 100644
index 20c41f4..0000000
--- a/contrib/src/org/apache/tapestry/contrib/components/Choose.java
+++ /dev/null
@@ -1,62 +0,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.
-
-package org.apache.tapestry.contrib.components;
-
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.components.Conditional;
-
-/**
- *  This component is a container for {@link When} or Otherwise components;
- *  it provides the context for mutually exclusive conditional evaluation.
- *
- *  [<a href="../../../../../../ComponentReference/contrib.Choose.html">Component Reference</a>]
- *
- *  @author David Solis
- *  @version $Id$
- * 
- **/
-public abstract class Choose extends Conditional {
-
-
-	public void addBody(IRender element)
-	{
-		super.addBody(element);
-		if (element instanceof When)
-			((When) element).setChoose(this);	
-	}
-	
-	protected void cleanupAfterRender(IRequestCycle cycle)
-	{
-		setConditionMet(false);
-		super.cleanupAfterRender(cycle);
-	}
-	
-	protected boolean evaluateCondition()
-	{
-		return getCondition();
-	}
-
-	public boolean getInvert()
-	{
-		// This component doesn't require invert parameter.
-		return false;
-	}
-
-	public abstract boolean getCondition();
-	
-	public abstract boolean isConditionMet();
-	public abstract void setConditionMet(boolean value);
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/components/Choose.jwc b/contrib/src/org/apache/tapestry/contrib/components/Choose.jwc
deleted file mode 100644
index e3a522c..0000000
--- a/contrib/src/org/apache/tapestry/contrib/components/Choose.jwc
+++ /dev/null
@@ -1,44 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-  
-<component-specification class="org.apache.tapestry.contrib.components.Choose">
-
-  <description>
-  Provides the context for mutually exclusive conditional evaluation.
-  </description>
-
-  <parameter name="condition" type="boolean" direction="in" default-value="true">
-    <description>
-    The condition to evaluate.
-    </description>
-  </parameter>
-
-  <parameter name="element" type="java.lang.String" direction="in">
-  	<description>
-  	The element to emulate.
-  	</description>
-  </parameter>
-
-  <reserved-parameter name="invert"/>
-  
-  <property-specification name="conditionMet" type="boolean" initial-value="false"/>
-  
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/components/Otherwise.jwc b/contrib/src/org/apache/tapestry/contrib/components/Otherwise.jwc
deleted file mode 100644
index 3beb4f9..0000000
--- a/contrib/src/org/apache/tapestry/contrib/components/Otherwise.jwc
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-  
-<component-specification class="org.apache.tapestry.contrib.components.When">
-  <description>
-  Otherwise is just a When component that always tries to render its body and/or emulate an element 
-  and its attributes (if element is specified) .
-  </description>
-  
-  <parameter name="element" type="java.lang.String" direction="in">
-  	<description>
-  	The element to emulate.
-  	</description>
-  </parameter>
-
-  <reserved-parameter name="condition"/>
-
-  <reserved-parameter name="invert"/>
-
-  <property-specification name="condition" type="boolean" initial-value="true"/>
-  
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/components/When.java b/contrib/src/org/apache/tapestry/contrib/components/When.java
deleted file mode 100644
index 9bcc3fa..0000000
--- a/contrib/src/org/apache/tapestry/contrib/components/When.java
+++ /dev/null
@@ -1,91 +0,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.
-
-package org.apache.tapestry.contrib.components;
-
-import org.apache.tapestry.ApplicationRuntimeException;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.Tapestry;
-import org.apache.tapestry.components.Conditional;
-
-/**
- *  Represents an alternative whithin a {@link Choose} component. 
- *  The default alternative is described by the Otherwise component.
- *
- *  [<a href="../../../../../../ComponentReference/contrib.When.html">Component Reference</a>]
- *
- *  @author David Solis
- *  @version $Id$
- * 
- **/
-public abstract class When extends Conditional
-{
-    /** Parent of this component. */
-
-    private Choose _choose;
-
-    /**
-     *  Renders its wrapped components only if the condition is true and its parent {@link Choose}
-     *  allows it. In addition, if element is specified, can emulate that HTML element.
-     *
-     **/
-
-    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        Choose choose = getChoose();
-
-        if (choose == null)
-            throw new ApplicationRuntimeException(
-                Tapestry.getMessage("When.must-be-contained-by-choose"),
-                this,
-                null,
-                null);
-
-        if (!choose.isConditionMet() && getCondition())
-        {
-            choose.setConditionMet(true);
-            super.renderComponent(writer, cycle);
-        }
-    }
-
-    protected boolean evaluateCondition()
-    {
-        return true;
-    }
-
-    public boolean getInvert()
-    {
-        // This component doesn't require invert parameter.
-        return false;
-    }
-
-    /**
-     *  @return Choose
-     */
-    public Choose getChoose()
-    {
-        return _choose;
-    }
-
-    /**
-     *  Sets the choose.
-     *  @param value The choose to set
-     */
-    public void setChoose(Choose value)
-    {
-        _choose = value;
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/components/When.jwc b/contrib/src/org/apache/tapestry/contrib/components/When.jwc
deleted file mode 100644
index be9b7a8..0000000
--- a/contrib/src/org/apache/tapestry/contrib/components/When.jwc
+++ /dev/null
@@ -1,42 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-  
-<component-specification class="org.apache.tapestry.contrib.components.When">
-  <description>
-  If this is the first When component to evaluate to true within Choose then emulates an element 
-  and its attributes (if element is specified) and/or includes a block of content.
-  </description>
-  
-  <parameter name="condition" type="boolean" direction="in">
-    <description>
-    The condition to evaluate.
-    </description>
-  </parameter>
-  
-  <parameter name="element" type="java.lang.String" direction="in">
-  	<description>
-  	The element to emulate.
-  	</description>
-  </parameter>
-
-  <reserved-parameter name="invert"/>
-  
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/components/package.html b/contrib/src/org/apache/tapestry/contrib/components/package.html
deleted file mode 100644
index 14e9648..0000000
--- a/contrib/src/org/apache/tapestry/contrib/components/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!-- $Id$ -->
-<html>
-<head>
-<title>Tapestry: Web Application Framework</title>
-</head>
-<body>
-
-<p>Contribution of foundational components.
-
-@author David Solis <a href="mailto:dsolis@apache.org">dsolis@apache.org</a>
-
-</body>
-</html>
diff --git a/contrib/src/org/apache/tapestry/contrib/ejb/XCreateException.java b/contrib/src/org/apache/tapestry/contrib/ejb/XCreateException.java
deleted file mode 100644
index 1e8bb86..0000000
--- a/contrib/src/org/apache/tapestry/contrib/ejb/XCreateException.java
+++ /dev/null
@@ -1,54 +0,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.
-
-package org.apache.tapestry.contrib.ejb;
-
-import javax.ejb.CreateException;
-
-/**
- *  Extended version of {@link CreateException} that includes a root cause.
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class XCreateException extends CreateException
-{
-    private Throwable rootCause;
-
-    public XCreateException(String message)
-    {
-        super(message);
-    }
-
-    public XCreateException(String message, Throwable rootCause)
-    {
-        super(message);
-
-        this.rootCause = rootCause;
-    }
-
-    public XCreateException(Throwable rootCause)
-    {
-        super(rootCause.getMessage());
-
-        this.rootCause = rootCause;
-    }
-
-    public Throwable getRootCause()
-    {
-        return rootCause;
-    }
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/ejb/XEJBException.java b/contrib/src/org/apache/tapestry/contrib/ejb/XEJBException.java
deleted file mode 100644
index bd92f4c..0000000
--- a/contrib/src/org/apache/tapestry/contrib/ejb/XEJBException.java
+++ /dev/null
@@ -1,57 +0,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.
-
-package org.apache.tapestry.contrib.ejb;
-
-import javax.ejb.EJBException;
-
-/**
- *  Extended version of {@link EJBException} that includes a root cause.
- *  {@link EJBException} doesn't have quite the right constructor for this ...
- *  it has an equivalent to the rootCause property, (causedByException), but
- *  doesn't have a constructor that allows us to set a custom message.
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class XEJBException extends EJBException
-{
-    private Throwable rootCause;
-
-    public XEJBException(String message)
-    {
-        super(message);
-    }
-
-    public XEJBException(String message, Throwable rootCause)
-    {
-        super(message);
-
-        this.rootCause = rootCause;
-    }
-
-    public XEJBException(Throwable rootCause)
-    {
-        super(rootCause.getMessage());
-
-        this.rootCause = rootCause;
-    }
-
-    public Throwable getRootCause()
-    {
-        return rootCause;
-    }
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/ejb/XFinderException.java b/contrib/src/org/apache/tapestry/contrib/ejb/XFinderException.java
deleted file mode 100644
index a340ee8..0000000
--- a/contrib/src/org/apache/tapestry/contrib/ejb/XFinderException.java
+++ /dev/null
@@ -1,54 +0,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.
-
-package org.apache.tapestry.contrib.ejb;
-
-import javax.ejb.FinderException;
-
-/**
- *  Extended version of {@link FinderException} that includes a root cause.
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class XFinderException extends FinderException
-{
-    private Throwable rootCause;
-
-    public XFinderException(String message)
-    {
-        super(message);
-    }
-
-    public XFinderException(String message, Throwable rootCause)
-    {
-        super(message);
-
-        this.rootCause = rootCause;
-    }
-
-    public XFinderException(Throwable rootCause)
-    {
-        super(rootCause.getMessage());
-
-        this.rootCause = rootCause;
-    }
-
-    public Throwable getRootCause()
-    {
-        return rootCause;
-    }
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/ejb/XRemoveException.java b/contrib/src/org/apache/tapestry/contrib/ejb/XRemoveException.java
deleted file mode 100644
index 92b0132..0000000
--- a/contrib/src/org/apache/tapestry/contrib/ejb/XRemoveException.java
+++ /dev/null
@@ -1,54 +0,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.
-
-package org.apache.tapestry.contrib.ejb;
-
-import javax.ejb.RemoveException;
-
-/**
- *  Extended version of {@link RemoveException} that includes a root cause.
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class XRemoveException extends RemoveException
-{
-    private Throwable rootCause;
-
-    public XRemoveException(String message)
-    {
-        super(message);
-    }
-
-    public XRemoveException(String message, Throwable rootCause)
-    {
-        super(message);
-
-        this.rootCause = rootCause;
-    }
-
-    public XRemoveException(Throwable rootCause)
-    {
-        super(rootCause.getMessage());
-
-        this.rootCause = rootCause;
-    }
-
-    public Throwable getRootCause()
-    {
-        return rootCause;
-    }
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/ejb/package.html b/contrib/src/org/apache/tapestry/contrib/ejb/package.html
deleted file mode 100644
index 1e0fbfb..0000000
--- a/contrib/src/org/apache/tapestry/contrib/ejb/package.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!-- $Id$ -->
-<html>
-<head>
-<title>Tapestry: Web Application Framework</title>
-</head>
-<body>
-
-<p>Subclasses of the EJB exceptions that take an optional, additional, root cause Throwable
-to identify the underlying reason for the exception.  This is less necessary in JDK 1.4, which
-support root cause for all exceptions.
-
-@author Howard Lewis Ship <a href="mailto:hlship@apache.org">hlship@apache.org</a>
-
-</body>
-</html>
diff --git a/contrib/src/org/apache/tapestry/contrib/form/CheckBoxMultiplePropertySelectionRenderer.java b/contrib/src/org/apache/tapestry/contrib/form/CheckBoxMultiplePropertySelectionRenderer.java
deleted file mode 100644
index 3661094..0000000
--- a/contrib/src/org/apache/tapestry/contrib/form/CheckBoxMultiplePropertySelectionRenderer.java
+++ /dev/null
@@ -1,103 +0,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.
-
-package org.apache.tapestry.contrib.form;
-
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.form.IPropertySelectionModel;
-
-/**
- *  Implementation of {@link IMultiplePropertySelectionRenderer} that
- *  produces a table of checkbox (&lt;input type=checkbox&gt;) elements.
- *
- *  @version $Id$
- *  @author Sanjay Munjal
- *
- **/
-
-public class CheckBoxMultiplePropertySelectionRenderer
-    implements IMultiplePropertySelectionRenderer
-{
-
-    /**
-     *  Writes the &lt;table&gt; element.
-     *
-     **/
-
-    public void beginRender(
-        MultiplePropertySelection component,
-        IMarkupWriter writer,
-        IRequestCycle cycle)
-    {
-        writer.begin("table");
-        writer.attribute("border", 0);
-        writer.attribute("cellpadding", 0);
-        writer.attribute("cellspacing", 2);
-    }
-
-    /**
-     *  Closes the &lt;table&gt; element.
-     *
-     **/
-
-    public void endRender(
-        MultiplePropertySelection component,
-        IMarkupWriter writer,
-        IRequestCycle cycle)
-    {
-        writer.end(); // <table>
-    }
-
-    /**
-     *  Writes a row of the table.  The table contains two cells; the first is the checkbox,
-     *  the second is the label for the checkbox.
-     *
-     **/
-
-    public void renderOption(
-        MultiplePropertySelection component,
-        IMarkupWriter writer,
-        IRequestCycle cycle,
-        IPropertySelectionModel model,
-        Object option,
-        int index,
-        boolean selected)
-    {
-        writer.begin("tr");
-        writer.begin("td");
-
-        writer.beginEmpty("input");
-        writer.attribute("type", "checkbox");
-        writer.attribute("name", component.getName());
-        writer.attribute("value", model.getValue(index));
-
-        if (component.isDisabled())
-            writer.attribute("disabled", "disabled");
-
-        if (selected)
-            writer.attribute("checked", "checked");
-
-        writer.end(); // <td>
-
-        writer.println();
-
-        writer.begin("td");
-        writer.print(model.getLabel(index));
-        writer.end(); // <td>
-        writer.end(); // <tr>
-
-        writer.println();
-    }
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/form/FormConditional.java b/contrib/src/org/apache/tapestry/contrib/form/FormConditional.java
deleted file mode 100644
index c76fad0..0000000
--- a/contrib/src/org/apache/tapestry/contrib/form/FormConditional.java
+++ /dev/null
@@ -1,168 +0,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.
-
-package org.apache.tapestry.contrib.form;
-
-import java.io.IOException;
-
-import org.apache.tapestry.ApplicationRuntimeException;
-import org.apache.tapestry.IActionListener;
-import org.apache.tapestry.IBinding;
-import org.apache.tapestry.IForm;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.Tapestry;
-import org.apache.tapestry.form.AbstractFormComponent;
-import org.apache.tapestry.request.RequestContext;
-import org.apache.tapestry.util.io.DataSqueezer;
-
-/**
- *  A conditional element on a page which will render its wrapped elements
- *  zero or one times.
- * 
- * This component is a variant of {@link org.apache.tapestry.components.Conditional}, 
- * but is designed for operation in a form. The component parameters are stored in 
- * hidden fields during rendering and are taken from those fields during the rewind, 
- * thus no StaleLink exceptions occur. 
- *
- *  [<a href="../../../../../ComponentReference/contrib.FormConditional.html">Component Reference</a>]
- *
- *  @author Mindbridge
- *  @version $Id$
- *  @since 3.0
- * 
- **/
-
-public abstract class FormConditional extends AbstractFormComponent
-{
-
-    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        IForm form = getForm(cycle);
-
-        boolean cycleRewinding = cycle.isRewinding();
-
-        // If the cycle is rewinding, but not this particular form,
-        // then do nothing (don't even render the body).
-
-        if (cycleRewinding && !form.isRewinding())
-            return;
-
-        String name = form.getElementId(this);
-
-        boolean condition = getCondition(cycle, form, name);
-
-        // call listener
-        IActionListener listener = getListener();
-        if (listener != null)
-            listener.actionTriggered(this, cycle);
-
-        // render the component body only if the condition is true
-        if (condition) {
-            String element = getElement();
-            
-            boolean render = !cycleRewinding && Tapestry.isNonBlank(element);
-            
-            if (render)
-            {
-                writer.begin(element);
-                renderInformalParameters(writer, cycle);
-            }
-
-            renderBody(writer, cycle);
-            
-            if (render)
-                writer.end(element);
-        }
-    }
-
-    private boolean getCondition(IRequestCycle cycle, IForm form, String name)
-    {
-        boolean condition;
-        
-        if (!cycle.isRewinding())
-        {
-            condition = getCondition();
-            writeValue(form, name, condition);
-        }
-        else
-        {
-            RequestContext context = cycle.getRequestContext();
-            String submittedConditions[] = context.getParameters(name);
-            condition = convertValue(submittedConditions[0]);
-        }
-
-        IBinding conditionValueBinding = getConditionValueBinding();
-        if  (conditionValueBinding != null) 
-            conditionValueBinding.setBoolean(condition);
-        
-        return condition;
-    }
-
-    private void writeValue(IForm form, String name, boolean value)
-    {
-        String externalValue;
-
-        Object booleanValue = new Boolean(value);
-        try
-        {
-            externalValue = getDataSqueezer().squeeze(booleanValue);
-        }
-        catch (IOException ex)
-        {
-            throw new ApplicationRuntimeException(
-                Tapestry.format("FormConditional.unable-to-convert-value", booleanValue),
-                this,
-                null,
-                ex);
-        }
-
-        form.addHiddenValue(name, externalValue);
-    }
-
-    private boolean convertValue(String value)
-    {
-        try
-        {
-            Object booleanValue = getDataSqueezer().unsqueeze(value);
-            return Tapestry.evaluateBoolean(booleanValue);
-        }
-        catch (IOException ex)
-        {
-            throw new ApplicationRuntimeException(
-                Tapestry.format("FormConditional.unable-to-convert-string", value),
-                this,
-                null,
-                ex);
-        }
-    }
-
-    private DataSqueezer getDataSqueezer()
-    {
-        return getPage().getEngine().getDataSqueezer();
-    }
-
-    public boolean isDisabled()
-    {
-        return false;
-    }
-
-    public abstract boolean getCondition();
-    public abstract String getElement();
-
-    public abstract IBinding getConditionValueBinding();
-
-    public abstract IActionListener getListener();
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/form/FormConditional.jwc b/contrib/src/org/apache/tapestry/contrib/form/FormConditional.jwc
deleted file mode 100644
index c2ba3d3..0000000
--- a/contrib/src/org/apache/tapestry/contrib/form/FormConditional.jwc
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-  
-<component-specification class="org.apache.tapestry.contrib.form.FormConditional">
-  <description>
-  Conditionally emulates an element and its attributes (if element is specified) and/or includes a block of content if a condition is met.
-  </description>
-  
-  <parameter name="condition" type="boolean" direction="in" required="yes">
-    <description>
-    The condition to evaluate.
-    </description>
-  </parameter>
-  
-  <parameter name="element" type="java.lang.String" direction="in" required="no">
-  	<description>
-  	The element to emulate.
-  	</description>
-  </parameter>
-
-  <parameter name="listener" type="org.apache.tapestry.IActionListener" direction="in"/>
-
-  <parameter name="conditionValue" type="boolean">
-    <description>
-    The value of the condition. During render this is obtained from
-    the condition parameter. During rewind it is the submitted condition.
-    </description>
-  </parameter>
-
-  <reserved-parameter name="invert"/>
-  
-  <property-specification name="name" type="java.lang.String"/>
-  <property-specification name="form" type="org.apache.tapestry.IForm"/>
-  
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/form/IMultiplePropertySelectionRenderer.java b/contrib/src/org/apache/tapestry/contrib/form/IMultiplePropertySelectionRenderer.java
deleted file mode 100644
index a70af59..0000000
--- a/contrib/src/org/apache/tapestry/contrib/form/IMultiplePropertySelectionRenderer.java
+++ /dev/null
@@ -1,65 +0,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.
-
-package org.apache.tapestry.contrib.form;
-
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.form.IPropertySelectionModel;
-
-/**
- *  Defines an object that works with a {@link MultiplePropertySelection} component
- *  to render the individual elements obtained from the {@link IPropertySelectionModel model}.
- *
- *  @version $Id$
- *  @author Sanjay Munjal
- *
- **/
-
-public interface IMultiplePropertySelectionRenderer
-{
-    /**
-     *  Begins the rendering of the {@link MultiplePropertySelection}.
-     *
-     **/
-
-    public void beginRender(
-        MultiplePropertySelection component,
-        IMarkupWriter writer,
-        IRequestCycle cycle);
-
-    /**
-     *  Invoked for each element obtained from the {@link IPropertySelectionModel model}.
-     *
-     **/
-
-    public void renderOption(
-        MultiplePropertySelection component,
-        IMarkupWriter writer,
-        IRequestCycle cycle,
-        IPropertySelectionModel model,
-        Object option,
-        int index,
-        boolean selected);
-
-    /**
-     *  Ends the rendering of the {@link MultiplePropertySelection}.
-     *
-     **/
-
-    public void endRender(
-        MultiplePropertySelection component,
-        IMarkupWriter writer,
-        IRequestCycle cycle);
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.html b/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.html
deleted file mode 100644
index 3e4b0a5..0000000
--- a/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<input jwcid="maskEdit" type="text"/>
-<input jwcid="maskValue" type="hidden"/>
-<span jwcid="maskEditScript"/>
-
-
diff --git a/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.java b/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.java
deleted file mode 100644
index 7d596b4..0000000
--- a/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.java
+++ /dev/null
@@ -1,113 +0,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.
-
-package org.apache.tapestry.contrib.form;
-
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IBinding;
-
-/**
- * Provides a mask edit HTML &lt;input type="text"&gt; form element.
- * <p>
- * Mask edit field validates the text the user enters against a 
- * mask that encodes the valid forms the text can take. The mask can 
- * also format text that is displayed to the user.
- * <p>
- * <table border="1" cellpadding="2">
- *  <tr>
- *   <th>Mask character</th><th>Meaning in mask</th>
- *  </tr>
- *  <tr>
- *   <td>&nbsp;l</td><td>&nbsp;Mixed case letter character [a..z, A..Z]</td>
- *  </tr>
- *  <tr>
- *   <td>&nbsp;L</td><td>&nbsp;Upper case letter character [A..Z]</td>
- *  </tr>
- *  <tr>
- *   <td>&nbsp;a</td><td>&nbsp;Mixed case alpha numeric character [a..z, A..Z, 0..1]</td>
- *  </tr>
- *  <tr>
- *   <td>&nbsp;A</td><td>&nbsp;Upper case alpha numeric character [A..Z, 0..9]</td>
- *  </tr>
- *  <tr>
- *   <td>&nbsp;#</td><td>&nbsp;Numeric character [0..9]</td>
- *  </tr>
- *  <tr>
- *   <td>&nbsp;_</td><td>&nbsp;Reserved character for display, do not use.</td>
- *  </tr>
- *  <tr>
- *   <td>&nbsp;others</td><td>&nbsp;Non editable character for display.</td>
- *  </tr>
- * </table> 
- * <p>
- * This component requires JavaScript to be enabled in the client browser.
- * <p>
- * [<a href="../../../../../ComponentReference/MaskEdit.html">Component Reference</a>]
- *
- * @author Malcolm Edgar
- * @version $Id$
- * @since 2.3
- *
- **/
-
-public class MaskEdit extends BaseComponent
-{
-    private String _mask;
-    private IBinding _valueBinding;
-    private boolean _disabled;
-
-    public String getMask()
-    {
-        return _mask;
-    }
-
-    public void setMask(String mask)
-    {
-        _mask = mask;
-    }
-    
-    public String getValue()
-    {
-        if (_valueBinding != null) {
-            return _valueBinding.getString();
-        } else {
-            return null;
-        }
-    }
-
-    public void setValue(String value)
-    {
-        _valueBinding.setString(value);
-    }
-
-    public IBinding getValueBinding()
-    {
-        return _valueBinding;
-    }
-
-    public void setValueBinding(IBinding valueBinding)
-    {
-        _valueBinding = valueBinding;
-    }
-
-    public boolean isDisabled()
-    {
-        return _disabled;
-    }
-
-    public void setDisabled(boolean disabled)
-    {
-        _disabled = disabled;
-    }        
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.js b/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.js
deleted file mode 100644
index 9db04c8..0000000
--- a/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.js
+++ /dev/null
@@ -1,420 +0,0 @@
-/**

- *  JavaScript Mask Edit control

- *  Paul Geerts

- *  Oct 2002

- * 

- *  Note:  This probably only works for English

- *  Other languages have been deprecated and will be removed in the 

- *  next version of Speech (TM)

- **/

-

-var dontDoIt;  // hack for Moz because it won't cancel events properly

-var isTab;     // another Moz hack

-

-

-// Init the mask edit field by creating a lookalike DIV

-// and hiding the real one

-function initMask(field, maskField) {

-

-	if (field.disabled == true) {

-	   return;

-	}

-

-    var mask = maskField.value;

-    var val = field.value;

-    

-    if (!val) {  // if there's no val, init it with empty mask

-        val = displayMask(mask);

-        field.value = displayMask(mask);

-    }

-    // create a div and add a bunch of spans

-    // and edits to it.

-    div = document.createElement("div");

-   	div.style.backgroundColor = "white";

-    for (var i = 0 ; i < mask.length ; i++) {

-        var ds = document.createElement("SPAN");

-        var v = val.substr(i,1);

-        var m = mask.substr(i,1);

-        if (v==" ") {

-            v="&nbsp;";

-        }

-        ds.innerHTML = v;

-        ds.index = i;

-        ds.mask = m;

-        ds.div = div;

-        // if we can edit this char

-        // make a little tiny edit field

-        if (isEditChar(m)) {

-            var es = document.createElement("INPUT");

-            es.style.width = "1px";

-            es.style.border="0px";

-            es.index = i;

-            es.field = field;

-            es.mask = m;

-            es.display = ds;

-            ds.editField = es;

-            es.div = div;

-            div.appendChild(es);  // set up some events

-            if (navigator.appName == "Microsoft Internet Explorer") {

-                addEvent("keypress", es, changeBitIE);

-            } else {

-                addEvent("keypress", es, changeBitNS);

-            }

-            addEvent("keydown", es, specialKey); // keydown handles stuff like home, end etc

-            addEvent("click", ds, click);

-        } 

-

-        div.appendChild(ds);

-

-    }

-    

-    // the final edit field on the end

-    var es =document.createElement("INPUT");

-    es.style.width = "1px";

-    es.style.border="0px";

-    es.div = div;

-    div.appendChild(es);

-    if (navigator.appName == "Microsoft Internet Explorer") {

-        addEvent("keypress", es, changeBitIE);

-    } else {

-        addEvent("keypress", es, changeBitNS);

-    }

-    addEvent("keydown", es, specialKey);

-

-    div.noWrap = true; // force single line display

-

-    formatDiv(div, field); // format the DIV to look like an edit box

-    field.style.display = 'none'; 

-    field.parentNode.insertBefore(div, field);

-    addEvent("click", div, divClick);

-}

-

-function formatDiv(div, field) {

-    // make it look like an IE edit

-    if (navigator.appName == "Microsoft Internet Explorer") {

-        div.style.fontFamily="courier"; 

-        div.style.fontSize="10pt";      

-        div.style.width = field.offsetWidth;

-        div.style.height = field.offsetHeight;

-        if (navigator.appVersion.match(/6.0/)) { // IE 6 is different

-            div.style.border = "1px solid #7F9DB9";

-        } else {

-            div.style.borderLeft = "2px solid #606060";

-            div.style.borderTop = "2px solid #606060";

-            div.style.borderRight = "1px solid #aaaaaa";

-            div.style.borderBottom = "1px solid #aaaaaa";

-        }

-

-    } else {

-        // Mozilla edit look-a-like

-        div.style.fontFamily="courier";

-        div.style.fontSize="10pt";

-        div.style.border="2px inset #cccccc";

-        if (field.size) {

-            div.style.widh = 13 * field.size;

-        } else {

-            div.style.width = "130px";

-        }

-    }

-}

-

-

-function isEditChar(c) {  // is this char a meaningful mask char

-    switch (c) {

-    case "_":

-    case "#":

-    case "a":

-    case "A":

-    case "l":

-    case "L":

-        return true;

-    default:

-        return false;

-    }

-    return false;

-}

-

-function displayMaskChar(c) {  // display mask chars as _ 

-    if (isEditChar(c)) {       // otherwise just show normal char

-        return "_";

-    } else {

-        return c;

-    }

-}

-

-function displayMask(mask) {  // display entire mask using about subroutine

-    var d = "";

-    for (var i = 0 ; i < mask.length ; i++) {

-        d+=displayMaskChar(mask.substr(i,1));

-    }

-    return d;

-}

-

-function divClick(e) {     // when the main DIV is clicked, focus the end of the edit

-    var d = getEventObject(e);

-    if (d && d.lastChild) {

-        try {

-           d.lastChild.focus();

-        } catch (e) {

-           // nuffin

-        }

-    }

-}

-

-function specialKey(e) { // deal with special keys like backspace, delete etc

-    var s = getEventObject(e);

-    var code = e.keyCode;

-    dontDoIt = true;  // Moz needs these, as I can't seem to cancel events properly

-    isTab = false;    // Moz can't handle tabs well either

-    switch (code) {

-    case 8:   // backspace

-        var b = getPrevEdit(s);

-        if (b) {

-            b.display.innerHTML = displayMaskChar(b.mask);

-            var i = b.index;

-            b.field.value = b.field.value.substr(0, i) + 

-                displayMaskChar(b.mask) + b.field.value.substr(i+1, b.field.value.length - i);

-            b.focus();

-        }

-        cancelEvent(e);

-        return false;

-    case 46:  // delete

-        if (s.display) {

-            s.display.innerHTML = displayMaskChar(s.mask);

-            var i = s.index;

-            s.field.value = s.field.value.substr(0, i) + displayMaskChar(s.mask) + 

-                s.field.value.substr(i+1, s.field.value.length - i);

-        }

-        cancelEvent(e);

-        return false;

-        break;

-    case 37: // left

-        var p = getPrevEdit(s);

-        if (p) {

-            p.focus();

-        }

-        cancelEvent(e);

-        return false;

-    case 39: // right

-        var n = getNextEdit(s);

-        if (n) {

-            n.focus();

-        }

-        cancelEvent(e);

-        return false;

-    case 36: // home

-        s.div.firstChild.focus();

-        cancelEvent(e);

-        return false;

-    case 35: // end

-        s.div.lastChild.focus();

-        cancelEvent(e);

-        return false;

-    case 9: // tab

-        if (navigator.appName == "Microsoft Internet Explorer") {

-            if (!e.shiftKey) {

-                s.div.lastChild.focus();

-            } else {

-                s.div.firstChild.focus();

-            }

-            return;

-        } else {  // is mozilla/netscape

-            isTab = true;  // best i can do really

-        }

-        break;

-    }

-       

-    dontDoIt = false;

-}

-

-function moveForward(s) { // focus next edit

-    var b = getNextEdit(s);

-    if (b) {

-        b.focus();

-    }

-}

-

-function moveBackward(s) { // focus previous edit

-    var b = getPrevEdit(s);

-    if (b) {

-        b.focus();

-    }

-}

-

-function isInsertOK(code, s) {  // check if you're good to insert a char

-    var mchar = s.mask;

-    switch (mchar) {

-    case "_":

-        return true;

-        break;

-    case "#":

-        return checkDigit(code);

-        break;

-    case "a":

-        return checkAlphaNumeric(code);

-        break;

-    case "A":

-        return checkUpCaseAlphaNumeric(code);

-        break;

-    case "l":

-        return checkAlpha(code);

-        break;

-    case "L":

-        return checkUpCaseAlpha(code);

-        break;

-    }

-    return false;

-}

-

-// functions to check the key code, good ol ASCII

-// fairly straightforward

-

-function checkDigit(code) {

-    if ((code>=48) && (code<=57)) {

-        return code;

-    } else {

-        return null;

-    }

-}

-

-function checkAlpha(code) {

-    if (((code>=65) && (code<=90)) || ((code>=97) && (code<=122))) {

-        return code;

-    } else {

-        return null;

-    }

-}

-

-function checkUpCaseAlpha(code) {

-    if ((code>=65) && (code<=90)) {

-        return code;

-    } else if ((code>=97) && (code<=122)) {

-        return code - 32;

-    } else {

-        return null;

-    }

-}

-

-function checkAlphaNumeric(code) {

-    if (((code>=65) && (code<=90)) || ((code>=97) && (code<=122)) || ((code>=48) && (code<=57))) {

-        return code;

-    } else {

-        return null;

-    }

-}

-

-function checkUpCaseAlphaNumeric(code) {

-    if ((code>=65) && (code<=90)) {

-        return code;

-    } else if ((code>=97) && (code<=122)) {

-        return code - 32;

-    } else if ((code>=48) && (code<=57)) {

-        return code;

-    } else {

-        return null;

-    }

-}

-

-

-function changeBitNS(e) {  // handle key events in NS

-    var es = getEventObject(e);

-    if (!isTab) {

-        if (es.display) {

-            if (!dontDoIt) {

-                var code = e.charCode;

-                if (code = isInsertOK(code, es)) {

-                    var  c = String.fromCharCode(code);

-                    es.display.innerHTML = c

-                        var i = es.index;

-                    es.field.value = es.field.value.substr(0, i) + c + es.field.value.substr(i+1, es.field.value.length - i);

-                    moveForward(es);

-                }

-            }

-            es.value = "";

-            cancelEvent(e);

-        }        

-        return false;

-    }  

-}

-

-function changeBitIE(e) { // handle key events in IE

-    var es = getEventObject(e);

-    if (es.display) {

-        var code = e.keyCode;

-        if (code = isInsertOK(code, es)) {

-            var  c = String.fromCharCode(code);

-            es.display.innerHTML = c;

-            var i = es.index;

-            es.field.value = es.field.value.substr(0, i) + c + es.field.value.substr(i+1, es.field.value.length - i);

-            moveForward(es);

-            es.value = "";

-        }

-    }

-    cancelEvent(e);

-    return false;

-}

-

-function click(e) {  // clicking on a display span focuses the edit

-    var s = getEventObject(e);

-    s.editField.focus();

-    cancelEvent(e);

-    return false;

-}

-

-function getPrevEdit(s) {    // get previous input field 

-    var b = s.previousSibling;

-    while (b && (b.tagName!="INPUT")) {

-        b = b.previousSibling;

-    }

-    return b;

-}

-

-function getNextEdit(s) { // get previous next field 

-    var b = s.nextSibling;

-    while (b && (b.tagName!="INPUT")) {

-        b = b.nextSibling;

-    }

-    return b;

-}

-

-function cancelEvent(e) {   // kill event propagation

-    e.cancelBubble = true;

-    e.cancel = true;

-    if (navigator.appName != "Microsoft Internet Explorer") {

-        e.stopPropagation();  // doesn't seem to work for key events

-        e.preventDefault();

-    }

-}

-

-

-function getEventObject(e) {  // utility function to retrieve object from event

-    if (navigator.appName == "Microsoft Internet Explorer") {

-        return e.srcElement;

-    } else {  // is mozilla/netscape

-        // need to crawl up the tree to get the first "real" element

-        // i.e. a tag, not raw text

-        var o = e.target;

-        while (!o.tagName) {

-            o = o.parentNode;

-        }

-        return o;

-    }

-}

-

-function addEvent(name, obj, funct) { // utility function to add event handlers

-

-    if (navigator.appName == "Microsoft Internet Explorer") {

-        obj.attachEvent("on"+name, funct);

-    } else {  // is mozilla/netscape

-        obj.addEventListener(name, funct, false);

-    }

-}

-

-function deleteEvent(name, obj, funct) { // utility function to delete event handlers

-

-    if (navigator.appName == "Microsoft Internet Explorer") {

-        obj.detachEvent("on"+name, funct);

-    } else {  // is mozilla/netscape

-        obj.removeEventListener(name, funct, false);

-    }

-}

diff --git a/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.jwc b/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.jwc
deleted file mode 100644
index a796fcb..0000000
--- a/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.jwc
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-
-<component-specification class="org.apache.tapestry.contrib.form.MaskEdit" allow-informal-parameters="no">
-
-  <parameter name="mask" direction="in" type="java.lang.String" required="yes"/>
-  <parameter name="value" direction="custom" type="java.lang.String" required="yes"/>
-  <parameter name="disabled" direction="in" type="boolean" required="no"/>
-  
-  <component id="maskEdit" type="TextField">
-    <binding name="value" expression="value"/>
-    <binding name="maxlength" expression="mask.length()"/>
-    <binding name="size" expression="mask.length()"/>        
-    <binding name="disabled" expression="disabled"/>
-  </component>
-
-  <component id="maskValue" type="Hidden">
-    <binding name="value" expression="mask"/>
-    <binding name="encode" expression="false"/>
-  </component>
-
-  <component id="maskEditScript" type="Script">
-    <binding name="maskEdit" expression="components.maskEdit"/>
-    <binding name="maskValue" expression="components.maskValue"/>
-    <binding name="script" expression='"MaskEdit.script"'/>
-  </component>
-        
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.script b/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.script
deleted file mode 100644
index e6c7756..0000000
--- a/contrib/src/org/apache/tapestry/contrib/form/MaskEdit.script
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- $Id$ -->
-<!DOCTYPE script PUBLIC
-	"-//Howard Lewis Ship//Tapestry Script 1.2//EN"
-	"http://tapestry.sf.net/dtd/Script_1_2.dtd">
-  
-<script>
-
-<include-script resource-path="/org/apache/tapestry/contrib/form/MaskEdit.js"/>
-
-<input-symbol key="maskEdit" class="org.apache.tapestry.form.TextField" required="yes"/>
-<input-symbol key="maskValue" class="org.apache.tapestry.form.Hidden" required="yes"/>
-
-<let key="formName">
-  ${maskEdit.form.name}
-</let>
-
-<let key="functionName">
-  ${maskEdit.name}_init
-</let>
-
-
-<body>
-function ${functionName}() {
-  initMask(document.${formName}.${maskEdit.name},
-           document.${formName}.${maskValue.name});
-}
-</body>
-
-<initialization>
-  ${functionName}();
-</initialization>
-
-</script>
-
diff --git a/contrib/src/org/apache/tapestry/contrib/form/MultiplePropertySelection.java b/contrib/src/org/apache/tapestry/contrib/form/MultiplePropertySelection.java
deleted file mode 100644
index 3a412d3..0000000
--- a/contrib/src/org/apache/tapestry/contrib/form/MultiplePropertySelection.java
+++ /dev/null
@@ -1,216 +0,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.
-
-package org.apache.tapestry.contrib.form;
-
-import java.util.List;
-
-import org.apache.tapestry.IBinding;
-import org.apache.tapestry.IForm;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.Tapestry;
-import org.apache.tapestry.form.AbstractFormComponent;
-import org.apache.tapestry.form.IPropertySelectionModel;
-
-/**
- *  A component which uses &lt;input type=checkbox&gt; to
- *  set a property of some object.  Typically, the values for the object
- *  are defined using an {@link org.apache.commons.lang.enum.Enum}.  A MultiplePropertySelection is dependent on
- *  an {link IPropertySelectionModel} to provide the list of possible values.
- *
- *  <p>Often, this is used to select one or more {@link org.apache.commons.lang.enum.Enum} to assign to a property; the
- * {@link org.apache.tapestry.form.EnumPropertySelectionModel} class simplifies this.
- * 
- *  <p>The {@link org.apache.tapestry.contrib.palette.Palette} component
- *  is more powerful, but requires client-side JavaScript and 
- *  is not fully cross-browser compatible.
- *
- *  <p>
- *
- * <table border=1>
- * <tr>
- *    <td>Parameter</td>
- *    <td>Type</td>
- *	  <td>Direction</td>
- *    <td>Required</td>
- *    <td>Default</td>
- *    <td>Description</td>
- * </tr>
- *
- * <tr>
- *		<td>selectedList</td>
- *		<td>java.util.List</td>
- *		<td>in-out</td>
- *		<td>yes</td>
- *		<td>&nbsp;</td>
- *		<td>The property to set.  During rendering, this property is read, and sets
- * the default value of the options in the select.
- * When the form is submitted, list is cleared, then has each
- * selected option added to it. </td> </tr>
- *
- * <tr>
- *		<td>renderer</td>
- *		<td>{@link IMultiplePropertySelectionRenderer}</td>
- *		<td>in</td>
- *		<td>no</td>
- *		<td>shared instance of {@link CheckBoxMultiplePropertySelectionRenderer}</td>
- *		<td>Defines the object used to render this component.  The default
- *  renders a table of checkboxes.</td></tr>
- *
- *  <tr>
- *		<td>model</td>
- *		<td>{@link IPropertySelectionModel}</td>
- *		<td>in</td>
- *		<td>yes</td>
- *		<td>&nbsp;</td>
- *		<td>The model provides a list of possible labels, and matches those labels
- *  against possible values that can be assigned back to the property.</td> </tr>
- *
- *  <tr>
- * 		<td>disabled</td>
- *		<td>boolean</td>
- *		<td>in</td>
- *		<td>no</td>
- *		<td>false</td>
- *		<td>Controls whether the &lt;select&gt; is active or not. A disabled PropertySelection
- * does not update its value parameter.
- *
- *			<p>Corresponds to the <code>disabled</code> HTML attribute.</td>
- *	</tr>
- *
- *	</table>
- *
- * <p>Informal parameters are not allowed.
- *
- *
- *  @version $Id$
- *  @author Sanjay Munjal
- *
- **/
-
-public abstract class MultiplePropertySelection extends AbstractFormComponent
-{
-
-    /**
-     *  A shared instance of {@link CheckBoxMultiplePropertySelectionRenderer}.
-     *
-     **/
-
-    public static final IMultiplePropertySelectionRenderer DEFAULT_CHECKBOX_RENDERER =
-        new CheckBoxMultiplePropertySelectionRenderer();
-
-    public abstract IBinding getSelectedListBinding();
-
-    protected void finishLoad()
-    {
-        setRenderer(DEFAULT_CHECKBOX_RENDERER);
-    }
-
-    /**
-     *  Returns true if the component is disabled (this is relevant to the
-     *  renderer).
-     *
-     **/
-
-    public abstract boolean isDisabled();
-
-    /**
-     *  Renders the component, much of which is the responsiblity
-     *  of the {@link IMultiplePropertySelectionRenderer renderer}.  The possible options,
-     *  their labels, and the values to be encoded in the form are provided
-     *  by the {@link IPropertySelectionModel model}.
-     *
-     **/
-
-    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        IForm form = getForm(cycle);
-
-        boolean rewinding = form.isRewinding();
-
-        String name = form.getElementId(this);
-
-        List selectedList = (List) getSelectedListBinding().getObject("selectedList", List.class);
-
-        if (selectedList == null)
-            throw Tapestry.createRequiredParameterException(this, "selectedList");
-
-        IPropertySelectionModel model = getModel();
-
-        if (model == null)
-            throw Tapestry.createRequiredParameterException(this, "model");
-
-        // Handle the form processing first.
-        if (rewinding)
-        {
-            // If disabled, ignore anything that comes up from the client.
-
-            if (isDisabled())
-                return;
-
-            // get all the values
-            String[] optionValues = cycle.getRequestContext().getParameters(name);
-
-            // Clear the list
-
-            selectedList.clear();
-
-            // Nothing was selected
-            if (optionValues != null)
-            {
-
-                // Go through the array and translate and put back in the list
-                for (int i = 0; i < optionValues.length; i++)
-                {
-                    // Translate the new value
-                    Object selectedValue = model.translateValue(optionValues[i]);
-
-                    // Add this element in the list back
-                    selectedList.add(selectedValue);
-                }
-            }
-
-            return;
-        }
-
-        IMultiplePropertySelectionRenderer renderer = getRenderer();
-
-        // Start rendering
-        renderer.beginRender(this, writer, cycle);
-
-        int count = model.getOptionCount();
-
-        for (int i = 0; i < count; i++)
-        {
-            Object option = model.getOption(i);
-
-            // Try to find the option in the list and if yes, then it is checked.
-            boolean optionSelected = selectedList.contains(option);
-
-            renderer.renderOption(this, writer, cycle, model, option, i, optionSelected);
-        }
-
-        // A PropertySelection doesn't allow a body, so no need to worry about
-        // wrapped components.
-        renderer.endRender(this, writer, cycle);
-    }
-
-    public abstract IPropertySelectionModel getModel();
-
-    public abstract IMultiplePropertySelectionRenderer getRenderer();
-
-    public abstract void setRenderer(IMultiplePropertySelectionRenderer renderer);
-
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/form/MultiplePropertySelection.jwc b/contrib/src/org/apache/tapestry/contrib/form/MultiplePropertySelection.jwc
deleted file mode 100644
index ae91cb2..0000000
--- a/contrib/src/org/apache/tapestry/contrib/form/MultiplePropertySelection.jwc
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.form.MultiplePropertySelection" 
-	allow-body="no" allow-informal-parameters="no">
-	
-  <parameter name="model" 
-  	type="org.apache.tapestry.form.IPropertySelectionModel" required="yes" direction="in"/>
-  	
-  <parameter name="selectedList" type="java.util.List" required="yes"/>
-  
-  <parameter name="disabled" type="boolean" direction="in"/>
-  
-  <parameter name="renderer" 
-  	type="org.apache.tapestry.contrib.form.IMultiplePropertySelectionRenderer"
-  	direction="in"/>
-  	
-  <property-specification name="name" type="java.lang.String"/>
-  <property-specification name="form" type="org.apache.tapestry.IForm"/>
-  
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/informal/InheritInformalAny.java b/contrib/src/org/apache/tapestry/contrib/informal/InheritInformalAny.java
deleted file mode 100644
index f50d4b9..0000000
--- a/contrib/src/org/apache/tapestry/contrib/informal/InheritInformalAny.java
+++ /dev/null
@@ -1,117 +0,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.
-
-package org.apache.tapestry.contrib.informal;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.tapestry.AbstractComponent;
-import org.apache.tapestry.IAsset;
-import org.apache.tapestry.IBinding;
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.spec.IComponentSpecification;
-
-/**
- * 
- *  A version of the Any component that inherits the informal attributes of its parent.
- *  This component has been deprecated in favour of the 'inherit-informal-parameters' 
- *  tag that indicates that a particular component must inherit the informal parameters
- *  of its parent. This tag is available in the page or component specification file.
- * 
- *  @deprecated
- *  @version $Id$
- *  @author mindbridge
- *  @since 2.2
- * 
- **/
-
-public class InheritInformalAny extends AbstractComponent
-{
-    // Bindings
-    private IBinding m_objElementBinding;
-
-    public IBinding getElementBinding()
-    {
-        return m_objElementBinding;
-    }
-
-    public void setElementBinding(IBinding objElementBinding)
-    {
-        m_objElementBinding = objElementBinding;
-    }
-
-    protected void generateParentAttributes(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        String attribute;
-
-        IComponent objParent = getContainer();
-        if (objParent == null)
-            return;
-
-        IComponentSpecification specification = objParent.getSpecification();
-        Map bindings = objParent.getBindings();
-        if (bindings == null)
-            return;
-
-        Iterator i = bindings.entrySet().iterator();
-
-        while (i.hasNext())
-        {
-            Map.Entry entry = (Map.Entry) i.next();
-            String name = (String) entry.getKey();
-
-            // Skip over formal parameters stored in the bindings
-            // Map.  We're just interested in informal parameters.
-
-            if (specification.getParameter(name) != null)
-                continue;
-
-            IBinding binding = (IBinding) entry.getValue();
-
-            Object value = binding.getObject();
-            if (value == null)
-                continue;
-
-            if (value instanceof IAsset)
-            {
-                IAsset asset = (IAsset) value;
-
-                // Get the URL of the asset and insert that.
-                attribute = asset.buildURL(cycle);
-            }
-            else
-                attribute = value.toString();
-
-            writer.attribute(name, attribute);
-        }
-
-    }
-
-    public void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        String strElement = m_objElementBinding.getObject().toString();
-
-        writer.begin(strElement);
-        generateParentAttributes(writer, cycle);
-        renderInformalParameters(writer, cycle);
-
-        renderBody(writer, cycle);
-
-        writer.end();
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/informal/InheritInformalAny.jwc b/contrib/src/org/apache/tapestry/contrib/informal/InheritInformalAny.jwc
deleted file mode 100644
index e9d9eb1..0000000
--- a/contrib/src/org/apache/tapestry/contrib/informal/InheritInformalAny.jwc
+++ /dev/null
@@ -1,24 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-
-<component-specification class="org.apache.tapestry.contrib.informal.InheritInformalAny" allow-body="yes" allow-informal-parameters="yes">
-    <parameter name="element" type="java.lang.String" required="yes" direction="custom"/>
-</component-specification>
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Engine_HRp4.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Engine_HRp4.gif
deleted file mode 100644
index 42ff5ec..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Engine_HRp4.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Engine_Hp3.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Engine_Hp3.gif
deleted file mode 100644
index 5f2860d..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Engine_Hp3.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Engine_NBanner.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Engine_NBanner.gif
deleted file mode 100644
index 0105a1b..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Engine_NBanner.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Engine_NRp2.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Engine_NRp2.gif
deleted file mode 100644
index 8590996..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Engine_NRp2.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Engine_Np1.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Engine_Np1.gif
deleted file mode 100644
index 78ee58c..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Engine_Np1.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.css b/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.css
deleted file mode 100644
index c8852b0..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.css
+++ /dev/null
@@ -1,201 +0,0 @@
-H1  {

-	font-size: 12pt;

-	font-weight: bold;

-

-}

-

-H2  {}

-

-H3  {}

-

-A  {

-	color:#ffffff;

-}

-

-A:Visited  {}

-

-A:Active  {}

-

-A:Hover  {}

-

-SPAN.error

-{

-		color: Red;

-		font-weight: bold;

-	background-color : "#330066"		

-}

-

-BODY  {

-	font-family: "Trebuchet MS", sans-serif;

-	 background-color: #839cd1;

-}

-

-

-TABLE.inspector-data TR.odd TD  {

-	text-align : left;

-	color : Black;

-	background-color : Silver;

-}

-

-

-TABLE.inspector-data TR.even TH

-{

-	text-align : right;

-	font-weight: bold;

-}

-

-TABLE.inspector-data TR.odd TH

-{

-	text-align: right;

-	color : Black;

-	background-color : Silver;

-	font-weight: bold;

-}

-

-TABLE.inspector-data TR.even TD  {

-	text-align : left;

-}

-

-TABLE.inspector-data,

-TABLE.selector

-{

-	font-size: 9pt;

-}

-

-TABLE.selector TD.page-link

-{

-	font-style: italic;

-}

-

-TABLE.selector TD

-{

-	verticle-align: center;

-}

-

-TABLE.inspector-data TR.heading TH,

-TABLE.template TH

-{

-	text-align: center;

-	color : White;

-	background-color : "#330066";

-	font-weight: bold;

-}

-

-TABLE.template TD

-{

-	background-color: Silver;

-	font-size: small;

-}

-

-SPAN.message

-{

-	color : Silver

-	font-size: large;

-}

-

-SPAN.jwc-tag

-{

-	font-weight: bold;

-}

-

-SPAN.jwc-id, SPAN.localized-string

-{

-	font-style: italic;

-}

-

-

-

-TABLE.request-context-border  {

-	border-width : 1;

-	border-color : Black;

-	font-size: 9pt;

-}

-

-SPAN.request-context-object  {

-	font-weight : bold;

-	text-align : left;

-	font-size: 12pt;

-}

-

-TR.request-context-section TH  {

-	text-align : center;

-	color : White;

-	background-color : Blue;

-}

-

-TR.request-context-header TH  {

-	text-align : center;

-	color : White;

-	background-color : Blue;

-}

-

-TABLE.request-context-object TR.odd TD  {

-	text-align : left;

-	color : Black;

-	background-color : Silver;

-}

-

-TABLE.request-context-object TR.odd TH  {

-	color : Black;

-	background-color : Silver;

-	text-align : right;

-}

-

-TABLE.request-context-object TR.even TD  {

-	text-align : left;

-}

-

-TABLE.request-context-object TR.even TH  {

-	text-align : right;

-}

-

-TABLE.request-context-object  {

-	width : 100%;

-	font-size: 9pt;

-}

-

-TABLE.request-context-object TR  {

-	vertical-align : text-top;

-}

-

-TABLE.exception-display TR.even  {

-	top : auto;

-}

-

-TABLE.exception-displaY TD

-{

-	width: 100%;

-}

-

-TABLE.exception-display TR.even TH  {

-	text-align : right;

-	font-weight : bold;

-}

-

-TABLE.exception-display TR.odd TD  {

-	text-align : left;

-	background-color : Silver;

-}

-

-TABLE.exception-display TR.odd TH  {

-	text-align : right;

-	font-weight : bold;

-	background-color : Silver;	

-}

-

-TABLE.exception-display TR.even TD  {

-	text-align : left;

-}

-

-TABLE.exception-display TR.stack-trace  {

-	font-size : small;

-	font-family : sans-serif;

-	text-align : left;

-}

-

-UL 

-{

-	margin-top: 0px;

-	margin-bottom: 0px;

-	margin-left: 20px;

-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.html b/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.html
deleted file mode 100644
index 42d16d6..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!-- $Id$ -->
-<span jwcid="@Shell" title="ognl:inspectorTitle" stylesheet="ognl:assets.stylesheet">
-<body jwcid="@Body">
-
-<span jwcid="@inspector:Selector">
-
-<span jwcid="@inspector:ViewTabs">
-
-<span jwcid="@RenderBlock" block="ognl:blockForView"/>
-
-</span>
-</span>
-
-<span jwcid="specificationBlock@Block">
-<span jwcid="@inspector:ShowSpecification"/>
-</span>
-
-<span jwcid="templateBlock@Block">
-<span jwcid="@inspector:ShowTemplate"/>
-</span>
-
-<span jwcid="propertiesBlock@Block">
-<span jwcid="@inspector:ShowProperties"/>
-</span>
-
-<span jwcid="engineBlock@Block">
-<span jwcid="@inspector:ShowEngine"/>
-</span>
-
-</body>
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.java b/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.java
deleted file mode 100644
index 631e893..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.java
+++ /dev/null
@@ -1,145 +0,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.
-
-package org.apache.tapestry.contrib.inspector;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IPage;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.components.Block;
-import org.apache.tapestry.html.BasePage;
-
-/**
- *  The Tapestry Inspector page.
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- **/
-
-public abstract class Inspector extends BasePage
-{
-    private Map _blocks = new HashMap();
-
-    protected void finishLoad()
-    {
-        _blocks.put(View.TEMPLATE, getComponent("templateBlock"));
-        _blocks.put(View.SPECIFICATION, getComponent("specificationBlock"));
-        _blocks.put(View.ENGINE, getComponent("engineBlock"));
-        _blocks.put(View.PROPERTIES, getComponent("propertiesBlock"));
-    }
-
-    public abstract View getView();
-
-    public abstract void setView(View value);
-
-    public abstract String getInspectedPageName();
-    
-    public abstract void setInspectedPageName(String value);
-
-    public abstract String getInspectedIdPath();
-
-    public abstract void setInspectedIdPath(String value);
-
-    /** 
-     *  Invoked to change the component being inspected within the current
-     *  page.
-     *
-     *  @since 1.0.6
-     **/
-
-    public void selectComponent(String idPath)
-    {
-        setInspectedIdPath(idPath);
-    }
-
-    /**
-     *  Method invoked by the {@link InspectorButton} component, 
-     *  to begin inspecting a page.
-     *
-     **/
-
-    public void inspect(String pageName, IRequestCycle cycle)
-    {
-        setInspectedPageName(pageName);
-        selectComponent((String) null);
-
-        cycle.activate(this);
-    }
-
-    /**
-     *  Listener for the component selection, which allows a particular component.  
-     *  
-     *  <p>The context is a single string,
-     *  the id path of the component to be selected (or null to inspect
-     *  the page itself).  This invokes
-     *  {@link #selectComponent(String)}.
-     *
-     **/
-
-    public void selectComponent(IRequestCycle cycle)
-    {
-        Object[] parameters = cycle.getServiceParameters();
-
-        String newIdPath;
-
-        // The up button may generate a null context.
-
-        if (parameters == null)
-            newIdPath = null;
-        else
-            newIdPath = (String) parameters[0];
-
-        selectComponent(newIdPath);
-    }
-
-    /**
-     *  Returns the {@link IPage} currently inspected by the Inspector, as determined
-     *  from the inspectedPageName property.
-     *
-     **/
-
-    public IPage getInspectedPage()
-    {
-        return getRequestCycle().getPage(getInspectedPageName());
-    }
-
-    /**
-     *  Returns the {@link IComponent} current inspected; this is determined
-     *  from the inspectedPageName and inspectedIdPath properties.
-     *
-     **/
-
-    public IComponent getInspectedComponent()
-    {
-        return getInspectedPage().getNestedComponent(getInspectedIdPath());
-    }
-
-    public String getInspectorTitle()
-    {
-        return "Tapestry Inspector: " + getEngine().getSpecification().getName();
-    }
-
-    /**
-     *  Returns the {@link Block} for the currently selected view.
-     *
-     **/
-
-    public Block getBlockForView()
-    {
-        return (Block) _blocks.get(getView());
-    }
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.library b/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.library
deleted file mode 100644
index 17e172a..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.library
+++ /dev/null
@@ -1,22 +0,0 @@
-<?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.
--->
-<!-- Inspector.library,v 1.1 2002/08/24 16:07:50 hship Exp -->
-<!DOCTYPE library-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<library-specification/>
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.page b/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.page
deleted file mode 100644
index 03b88a4..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Inspector.page
+++ /dev/null
@@ -1,32 +0,0 @@
-<?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.contrib.inspector.Inspector">
-
-  <property-specification name="view" type="org.apache.tapestry.contrib.inspector.View"
-  		persistent="yes"
-  		initial-value="@org.apache.tapestry.contrib.inspector.View@SPECIFICATION"/>
-  <property-specification name="inspectedPageName" type="java.lang.String" persistent="yes"/>
-  <property-specification name="inspectedIdPath" type="java.lang.String" persistent="yes"/>
-  
-  <private-asset name="stylesheet" resource-path="Inspector.css"/>
-
-</page-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.html b/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.html
deleted file mode 100644
index aa38e55..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<div id="tapestryInspector" style="position:absolute; border-color:black; border-width:2px; border-style:solid; padding:3px; background-color:#839cd1;">
-<a jwcid="link"><img jwcid="rollover"/></a>
-</div>
-
-</span>
-
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.java b/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.java
deleted file mode 100644
index 9fd512d..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.java
+++ /dev/null
@@ -1,133 +0,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.
-
-package org.apache.tapestry.contrib.inspector;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.tapestry.ApplicationRuntimeException;
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IDirect;
-import org.apache.tapestry.IEngine;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.IResourceLocation;
-import org.apache.tapestry.IScript;
-import org.apache.tapestry.Tapestry;
-import org.apache.tapestry.engine.IEngineService;
-import org.apache.tapestry.engine.ILink;
-import org.apache.tapestry.engine.IScriptSource;
-import org.apache.tapestry.html.Body;
-
-/**
- *  Component that can be placed into application pages that will launch
- *  the inspector in a new window.
- * 
- *  [<a href="../../../../../../ComponentReference/InspectorButton.html">Component Reference</a>]
- *
- *  <p>Because the InspectorButton component is implemented using a {@link org.apache.tapestry.html.Rollover},
- *  the containing page must use a {@link Body} component instead of
- *  a &lt;body&gt; tag.
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class InspectorButton extends BaseComponent implements IDirect
-{
-    private boolean _disabled = false;
-
-    /**
-     *  Gets the listener for the link component.
-     *
-     *  @since 1.0.5
-     **/
-
-    public void trigger(IRequestCycle cycle)
-    {
-        String name = getNamespace().constructQualifiedName("Inspector");
-
-        Inspector inspector = (Inspector) cycle.getPage(name);
-
-        inspector.inspect(getPage().getPageName(), cycle);
-    }
-
-    /**
-     *  Renders the script, then invokes the normal implementation.
-     *
-     *  @since 1.0.5
-     **/
-
-    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        if (_disabled || cycle.isRewinding())
-            return;
-
-        IEngine engine = getPage().getEngine();
-        IScriptSource source = engine.getScriptSource();
-
-        IResourceLocation scriptLocation =
-            getSpecification().getSpecificationLocation().getRelativeLocation(
-                "InspectorButton.script");
-
-        IScript script = source.getScript(scriptLocation);
-
-        Map symbols = new HashMap();
-
-        IEngineService service = engine.getService(Tapestry.DIRECT_SERVICE);
-        ILink link = service.getLink(cycle, this, null);
-
-        symbols.put("URL", link.getURL());
-
-        Body body = Body.get(cycle);
-
-        if (body == null)
-            throw new ApplicationRuntimeException(
-                Tapestry.getMessage("InspectorButton.must-be-contained-by-body"),
-                this,
-                null,
-                null);
-
-        script.execute(cycle, body, symbols);
-
-        // Now, go render the rest from the template.
-
-        super.renderComponent(writer, cycle);
-    }
-
-    public boolean isDisabled()
-    {
-        return _disabled;
-    }
-
-    public void setDisabled(boolean disabled)
-    {
-        _disabled = disabled;
-    }
-
-    /**
-     *  Always returns false.
-     * 
-     *  @since 2.3
-     * 
-     **/
-
-    public boolean isStateful()
-    {
-        return false;
-    }
-
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.jwc b/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.jwc
deleted file mode 100644
index cccf00d..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.jwc
+++ /dev/null
@@ -1,47 +0,0 @@
-<?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 component-specification PUBLIC
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-
-<component-specification class="org.apache.tapestry.contrib.inspector.InspectorButton" 
-	allow-body="no" 
-	allow-informal-parameters="no">
-
-    <description>
-<![CDATA[
-Includes the Inspector button on the page (which dynamically positions itself in the
-lower right corner).  Clicking the button raises the Tapestry Inspector in a pop-up
-window.
-]]>
-    </description>
-
-  <parameter name="disabled" type="boolean" direction="in"/>
-
-    <component id="link" type="GenericLink">
-        <static-binding name="href">javascript:ti_raiseInspector();</static-binding>
-    </component>
-
-    <component id="rollover" type="Rollover">
-    	<binding name="image" expression="assets.logo"/>
-    	<binding name="focus" expression="assets.inspector"/>
-    </component>
-
-    <private-asset name="logo" resource-path="tapestry-logo.gif"/>
-    <private-asset name="inspector" resource-path="inspector-rollover.gif"/>
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.script b/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.script
deleted file mode 100644
index a0e1f31..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/InspectorButton.script
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- $Id$ -->
-<!DOCTYPE script PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Script 1.2//EN"
-	"http://tapestry.sf.net/dtd/Script_1_2.dtd">
-<!--
-
-Adds scripting support for the ShowInspector component.
-
-Prefixes all variables and functions with "ti_" (for Tapestry Inspector).
-
-Expects that the Inspector is inside a <div> named "tapestryInspector".
-
-Input symbols:
- URL - The complete URL needed for to raise the Inspector
- 
--->
-<script>
-
-<include-script resource-path="/org/apache/tapestry/html/PracticalBrowserSniffer.js"/>
-
-<input-symbol key="URL" class="java.lang.String" required="yes"/>
-
-<body>
-var ti = new Object();
-
-ti.oldX = 0;
-ti.oldY = 0;
-
-function ti_positionInspector()
-{
-  var object;
-  var width;
-  var height;
-
-  if (navigator.family == "nn4")
-  {
-    object = document.tapestryInspector;
-    width = innerWidth + pageXOffset;  <!-- Doesn't properly account for scrollbars! -->
-    height = innerHeight + pageYOffset;
-  }
-  else
-  {
-    object = document.getElementById("tapestryInspector");
-    
-	if (navigator.OS == "mac")
-	{
-	  width = document.body.offsetWidth;
-	  height = document.body.offsetWidth;
-	}
-	else if (navigator.family == "gecko")
-	{
-      width = innerWidth + pageXOffset; 
-      height = innerHeight + pageYOffset;
-	}
-	else
-	{
-	  // IE 5, 6? on PC
-	  width = document.body.clientWidth  + document.body.scrollLeft;
-	  height = document.body.clientHeight + document.body.scrollTop;
-	}
-  }
-   	
-  // The width/height of the animation, plus
-  // a couple of pixels of border.
-  
-  var indent = 65;
-  
-  var x = width - indent;
-  var y = height - indent;
-
-  if (navigator.family == "nn4")
-  {
-    if (x != ti.oldX || y != ti.oldY)
-    {
-      object.moveTo(x, y);
-      object.visibility = "visible";
-    }
-  }
-  else
-  {
-    if (x != ti.oldX)
-    {
-       object.style.left = x + "px";
-       ti.oldX = x;
-    }
-    if (y != ti.oldY)
-    {
-    	object.style.top = y + "px";
-    	ti.oldY = y;
-    }
-
- 	object.style.visibility = "visible";  
-  }
-
-
-    
-  // Reposition it every quarter second.
-  
-  window.setTimeout("ti_positionInspector()", 250);
-}
-
-function ti_raiseInspector()
-{
-  var newWindow = window.open(
-  	"${URL}",
-  	"TapestryInspector",
-  	"titlebar,resizable,scrollbars,width=700,height=600");
-  	
-  newWindow.focus();
-}
-</body>
-
-<initialization>
-ti_positionInspector();
-</initialization>
-
-</script>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Properties_HRp4.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Properties_HRp4.gif
deleted file mode 100644
index e2fe821..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Properties_HRp4.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Properties_Hp3.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Properties_Hp3.gif
deleted file mode 100644
index 8aa25cb..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Properties_Hp3.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Properties_NBanner.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Properties_NBanner.gif
deleted file mode 100644
index 5fa7f5b..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Properties_NBanner.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Properties_NRp2.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Properties_NRp2.gif
deleted file mode 100644
index 12b13a1..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Properties_NRp2.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Properties_Np1.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Properties_Np1.gif
deleted file mode 100644
index 917436a..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Properties_Np1.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Reset_NRp2.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Reset_NRp2.gif
deleted file mode 100644
index 371cba0..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Reset_NRp2.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Reset_Np1.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Reset_Np1.gif
deleted file mode 100644
index eb87bf4..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Reset_Np1.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Reset_Np1_disabled.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Reset_Np1_disabled.gif
deleted file mode 100644
index 0cfdd51..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Reset_Np1_disabled.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Restart_NRp2.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Restart_NRp2.gif
deleted file mode 100644
index 8fed715..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Restart_NRp2.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Restart_Np1.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Restart_Np1.gif
deleted file mode 100644
index dda92b0..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Restart_Np1.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Selector.html b/contrib/src/org/apache/tapestry/contrib/inspector/Selector.html
deleted file mode 100644
index 15ecbf7..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Selector.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!-- $Id$ -->
-
-<table class="selector">
-	<tr valign=center>
-		<td>
-			<form jwcid="form">
-				<select jwcid="selectPage"/>
-			</form>
-		</td>
-		<td class="page-link">
-			<a jwcid="page">page</a>
-		</td>
-<span jwcid="e">
-		<td>&gt;&gt;</td>
-		<td>
-		<a jwcid="component"><span jwcid="insertId"/></a>
-		</td>
-</span>
-	</tr>
-</table>
-
-<span jwcid="renderBody"/>
-
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Selector.java b/contrib/src/org/apache/tapestry/contrib/inspector/Selector.java
deleted file mode 100644
index 158025d..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Selector.java
+++ /dev/null
@@ -1,150 +0,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.
-
-package org.apache.tapestry.contrib.inspector;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.INamespace;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.engine.ISpecificationSource;
-import org.apache.tapestry.form.IPropertySelectionModel;
-import org.apache.tapestry.form.StringPropertySelectionModel;
-
-/**
- *  Component of the {@link Inspector} page used to select the page and "crumb trail"
- *  of the inspected component.
- *
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class Selector extends BaseComponent
-{
-    /**
-     *  When the form is submitted,
-     *  the inspectedPageName of the {@link Inspector} page will be updated,
-     *  but we need to reset the inspectedIdPath as well.
-     *
-     **/
-
-    public void formSubmit(IRequestCycle cycle)
-    {
-        Inspector inspector = (Inspector) getPage();
-
-        inspector.selectComponent((String) null);
-    }
-
-    /**
-     *  Returns an {IPropertySelectionModel} used to select the name of the page
-     *  to inspect.  The page names are sorted.
-     *
-     **/
-
-    public IPropertySelectionModel getPageModel()
-    {
-        return new StringPropertySelectionModel(getPageNames());
-    }
-
-    /**
-     *  The crumb trail is all the components from the inspected component up to
-     *  (but not including) the page.
-     *
-     **/
-
-    public List getCrumbTrail()
-    {
-        List result = null;
-
-        Inspector inspector = (Inspector) getPage();
-        IComponent component = inspector.getInspectedComponent();
-        IComponent container = null;
-
-        while (true)
-        {
-            container = component.getContainer();
-            if (container == null)
-                break;
-
-            if (result == null)
-                result = new ArrayList();
-
-            result.add(component);
-
-            component = container;
-        }
-
-        if (result == null)
-            return null;
-
-        // Reverse the list, such that the inspected component is last, and the
-        // top-most container is first.
-
-        Collections.reverse(result);
-
-        return result;
-    }
-
-    private String[] getPageNames()
-    {
-        Set names = new HashSet();
-
-        ISpecificationSource source = getPage().getEngine().getSpecificationSource();
-
-        addPageNames(names, source.getFrameworkNamespace());
-        addPageNames(names, source.getApplicationNamespace());
-
-        List l = new ArrayList(names);
-        Collections.sort(l);
-
-        return (String[]) l.toArray(new String[l.size()]);
-    }
-
-    private void addPageNames(Set names, INamespace namespace)
-    {
-        String idPrefix = namespace.getExtendedId();
-
-        List pageNames = namespace.getPageNames();
-        int count = pageNames.size();
-
-        for (int i = 0; i < count; i++)
-        {
-            String name = (String) pageNames.get(i);
-
-            if (idPrefix == null)
-                names.add(name);
-            else
-                names.add(idPrefix + ":" + name);
-        }
-
-        List ids = namespace.getChildIds();
-        count = ids.size();
-
-        for (int i = 0; i < count; i++)
-        {
-            String id = (String) ids.get(i);
-
-            addPageNames(names, namespace.getChildNamespace(id));
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Selector.jwc b/contrib/src/org/apache/tapestry/contrib/inspector/Selector.jwc
deleted file mode 100644
index dee4b40..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Selector.jwc
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.inspector.Selector">
-
-  <component id="form" type="Form">
-    <binding name="listener" expression="listeners.formSubmit"/>
-  </component>
-
-  <component id="selectPage" type="PropertySelection">
-    <binding name="value" expression="page.inspectedPageName"/>
-    <binding name="model" expression="pageModel"/>
-    <binding name="submitOnChange" expression="true"/>
-  </component>
-
-  <component id="page" type="DirectLink">
-    <binding name="listener" expression="page.listeners.selectComponent"/>
-  </component>
-
-  <component id="e" type="Foreach">
-    <binding name="source" expression="crumbTrail"/>
-  </component>
-
-  <component id="component" type="DirectLink">
-    <binding name="parameters" expression="components.e.value.idPath"/>
-    <binding name="listener" expression="page.listeners.selectComponent"/>
-  </component>
-
-  <component id="insertId" type="Insert">
-    <binding name="value" expression="components.e.value.id"/>
-  </component>
-
-  <component id="renderBody" type="RenderBody"/>
-
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowDescription.html b/contrib/src/org/apache/tapestry/contrib/inspector/ShowDescription.html
deleted file mode 100644
index 917e59c..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowDescription.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-<span jwcid="ifDescription"><img jwcid="descriptionImage"/></span>
-</span>
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowDescription.jwc b/contrib/src/org/apache/tapestry/contrib/inspector/ShowDescription.jwc
deleted file mode 100644
index 28466ca..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowDescription.jwc
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-
-<component-specification class="org.apache.tapestry.BaseComponent" 
-	allow-body="no" 
-	allow-informal-parameters="no">
-	
-	<parameter name="description" required="yes"/>
-	
-	<component id="ifDescription" type="Conditional">
-	  <inherited-binding name="condition" parameter-name="description"/>
-	</component>
-	
-	<component id="descriptionImage" type="Image">
-	  <binding name="image" expression="assets.info"/>
-	  <inherited-binding name="alt" parameter-name="description"/>
-	</component>
-	
-	<private-asset name="info" resource-path="info.gif"/>
-	
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowEngine.html b/contrib/src/org/apache/tapestry/contrib/inspector/ShowEngine.html
deleted file mode 100644
index 797c8ff..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowEngine.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!-- $Id$ -->
-
-<table class="inspector-data">
-
-	<tr class="heading">
-		<th colspan=2>Engine/Application Properties</th>
-	</tr>
-	
-	<tr class="heading">
-		<th>Name</th> <th>Property</th>
-	</tr>
-	
-	<tr class="even">
-		<th>Tapestry Framework Version</th>
-		<td><span jwcid="insertFrameworkVersion"/></td>
-	</tr>
-	
-	<tr class="odd">
-		<th>Application Name</th>
-		<td><span jwcid="insertApplicationName"/></td>
-	</tr>
-
-	<tr class="even">
-		<th>Context Path</th>
-		<td><span jwcid="insertContextPath"/></td>
-	</tr>
-
-	<tr class="odd">
-		<th>Servlet Path</th>
-		<td><span jwcid="insertServletPath"/></td>
-	</tr>
-
-	<tr class="even">
-		<th>Engine Class</th>
-		<td><span jwcid="insertEngineClass"/></td>
-	</tr>
-	
-	<tr class="odd">
-		<th>Locale</th>
-		<td><span jwcid="insertLocale"/></td>
-	</tr>
-
-	<tr class="even">
-		<th>Visit</th>
-		<td>
-<span jwcid="ifNoVisit">
-<em>none</em>
-</span>
-
-<span jwcid="ifVisit">
-<span jwcid="insertVisit"/>
-</span>
-		</td>
-	</tr>
-
-</table>
-
-<h1>Operations</h1>
-
-<table class="inspector-data">
-
-	<tr class="even">
-		<td><a jwcid="restart" target="_new"><img jwcid="restartButton"/></a>
-		</td>
-		<td>Restart the application (in a new window).
-		</td>
-	</tr>
-
-	<tr class="even">
-		<td><a jwcid="reset"><img jwcid="resetButton"/></a>
-		</td>
-		<td>
-		Reset the application, discarding all cached specifications, assets
-		and templates.
-		</td>
-	</tr>
-</table>
-
-<h1>Serialized Engine</h1>
-
-<p>The serialized state of the application engine (the size of this is relevant
-for application servers which support clustering).
-
-<p><span jwcid="insertByteCount"/> bytes:
-<pre><span jwcid="insertSerializedEngine"/></pre>
-
-<h1>Request Context</h1>
-
-<span jwcid="insertRequest"/>
-
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowEngine.java b/contrib/src/org/apache/tapestry/contrib/inspector/ShowEngine.java
deleted file mode 100644
index 0b9dc71..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowEngine.java
+++ /dev/null
@@ -1,186 +0,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.
-
-package org.apache.tapestry.contrib.inspector;
-
-import java.io.ByteArrayOutputStream;
-import java.io.CharArrayWriter;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-
-import org.apache.tapestry.ApplicationRuntimeException;
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.Tapestry;
-import org.apache.tapestry.event.PageDetachListener;
-import org.apache.tapestry.event.PageEvent;
-import org.apache.tapestry.util.io.BinaryDumpOutputStream;
-
-/**
- *  Component of the {@link Inspector} page used to display
- *  the properties of the {@link org.apache.tapestry.IEngine} as well as a serialized view of it.
- *  Also, the {@link org.apache.tapestry.request.RequestContext} is dumped out.
- *
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class ShowEngine extends BaseComponent implements PageDetachListener
-{
-    private byte[] serializedEngine;
-
-    public void pageDetached(PageEvent event)
-    {
-        serializedEngine = null;
-    }
-
-    /**
-     *  Workaround for OGNL limitation --- OGNL can't dereference
-     *  past class instances.
-     * 
-     *  @since 2.2
-     * 
-     **/
-
-    public String getEngineClassName()
-    {
-        return getPage().getEngine().getClass().getName();
-    }
-
-    private byte[] getSerializedEngine()
-    {
-        if (serializedEngine == null)
-            buildSerializedEngine();
-
-        return serializedEngine;
-    }
-
-    private void buildSerializedEngine()
-    {
-        ByteArrayOutputStream bos = null;
-        ObjectOutputStream oos = null;
-
-        try
-        {
-            bos = new ByteArrayOutputStream();
-            oos = new ObjectOutputStream(bos);
-
-            // Write the application object to the stream.
-
-            oos.writeObject(getPage().getEngine());
-
-            // Extract the application as an array of bytes.
-
-            serializedEngine = bos.toByteArray();
-        }
-        catch (IOException ex)
-        {
-            throw new ApplicationRuntimeException(
-                Tapestry.getMessage("ShowEngine.could-not-serialize"),
-                ex);
-        }
-        finally
-        {
-            close(oos);
-            close(bos);
-        }
-
-        // It would be nice to deserialize the application object now, but in
-        // practice, that fails due to class loader problems.
-    }
-
-    private void close(OutputStream stream)
-    {
-        if (stream == null)
-            return;
-
-        try
-        {
-            stream.close();
-        }
-        catch (IOException ex)
-        {
-            // Ignore.
-        }
-    }
-
-    public int getEngineByteCount()
-    {
-        return getSerializedEngine().length;
-    }
-
-    public IRender getEngineDumpDelegate()
-    {
-        return new IRender()
-        {
-            public void render(IMarkupWriter writer, IRequestCycle cycle)
-            {
-                dumpSerializedEngine(writer);
-            }
-        };
-    }
-
-    private void dumpSerializedEngine(IMarkupWriter responseWriter)
-    {
-        CharArrayWriter writer = null;
-        BinaryDumpOutputStream bos = null;
-
-        try
-        {
-            // Because IReponseWriter doesn't implement the
-            // java.io.Writer interface, we have to buffer this
-            // stuff then pack it in all at once.  Kind of a waste!
-
-            writer = new CharArrayWriter();
-
-            bos = new BinaryDumpOutputStream(writer);
-            bos.setBytesPerLine(32);
-
-            bos.write(getSerializedEngine());
-            bos.close();
-
-            responseWriter.print(writer.toString());
-        }
-        catch (IOException ex)
-        {
-            // Ignore.
-        }
-        finally
-        {
-            if (bos != null)
-            {
-                try
-                {
-                    bos.close();
-                }
-                catch (IOException ex)
-                {
-                    // Ignore.
-                }
-            }
-
-            if (writer != null)
-            {
-                writer.reset();
-                writer.close();
-            }
-        }
-    }
-
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowEngine.jwc b/contrib/src/org/apache/tapestry/contrib/inspector/ShowEngine.jwc
deleted file mode 100644
index b181816..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowEngine.jwc
+++ /dev/null
@@ -1,97 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.inspector.ShowEngine" allow-body="no" allow-informal-parameters="no">
-
-  <component id="insertFrameworkVersion" type="Insert">
-  	<binding name="value" expression="@org.apache.tapestry.Tapestry@VERSION"/>
-  </component>
-  
-  <component id="insertApplicationName" type="Insert">
-    <binding name="value" expression="page.engine.specification.name"/>
-  </component>
-  
-  <component id="insertContextPath" type="Insert">
-    <binding name="value" expression="page.engine.contextPath"/>
-  </component>
-  
-  <component id="insertServletPath" type="Insert">
-    <binding name="value" expression="page.engine.servletPath"/>
-  </component>
-  
-  <component id="insertEngineClass" type="Insert">
-    <binding name="value" expression="engineClassName"/>
-  </component>
-  
-  <component id="insertLocale" type="Insert">
-    <binding name="value" expression="page.engine.locale.displayName"/>
-  </component>
-  
-  <component id="ifNoVisit" type="Conditional">
-    <binding name="condition" expression="! page.engine.hasVisit"/>
-  </component>
-  
-  <component id="insertVisit" type="Insert">
-    <binding name="value" expression="page.engine.visit"/>
-  </component>
-  
-  <component id="ifVisit" type="Conditional">
-    <binding name="condition" expression="page.engine.hasVisit"/>
-  </component>
-  
-  <component id="restart" type="ServiceLink">
-    <binding name="service" expression="@org.apache.tapestry.Tapestry@RESTART_SERVICE"/>
-  </component>
-  
-  <component id="restartButton" type="Rollover">
-    <binding name="image" expression="assets.restart"/>
-    <binding name="focus" expression="assets.restartFocus"/>
-  </component>
-  
-  <component id="reset" type="ServiceLink">
-    <binding name="service" expression="@org.apache.tapestry.Tapestry@RESET_SERVICE"/>
-    <binding name="disabled" expression="! page.engine.resetServiceEnabled"/>
-  </component>
-  
-  <component id="resetButton" type="Rollover">
-    <binding name="image" expression="assets.reset"/>
-    <binding name="focus" expression="assets.resetFocus"/>
-    <binding name="disabled" expression="assets.resetDisabled"/>
-  </component>
-  
-  <component id="insertByteCount" type="Insert">
-    <binding name="value" expression="engineByteCount"/>
-  </component>
-  
-  <component id="insertSerializedEngine" type="Delegator">
-    <binding name="delegate" expression="engineDumpDelegate"/>
-  </component>
-  
-  <component id="insertRequest" type="Delegator">
-    <binding name="delegate" expression="page.requestCycle.requestContext"/>
-  </component>
-  
-  <private-asset name="reset" resource-path="Reset_Np1.gif"/>
-  <private-asset name="resetFocus" resource-path="Reset_NRp2.gif"/>
-  <private-asset name="resetDisabled" resource-path="Reset_Np1_disabled.gif"/>
-  <private-asset name="restart" resource-path="Restart_Np1.gif"/>
-  <private-asset name="restartFocus" resource-path="Restart_NRp2.gif"/>
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowProperties.html b/contrib/src/org/apache/tapestry/contrib/inspector/ShowProperties.html
deleted file mode 100644
index 1aa67d8..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowProperties.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="ifNoProperties">
-<span class="message">Page contains no persistent properties.</span>
-</span>
-
-<span jwcid="ifHasProperties">
-<table class="inspector-data">
-	<tr class="heading">
-		<th>Component</th> <th>Property Name</th> <th>Value Class</th> <th>Value</th>
-	</tr>
-
-	<tr jwcid="e">
-		<td>
-			<a jwcid="selectComponent"><span jwcid="insertPath"/></a>
-		</td>
-		<td>
-			<span jwcid="insertPersistPropertyName"/>
-		</td>
-		<td>
-			<span jwcid="insertPersistValueClass"/>
-		</td>
-		<td>
-			<span jwcid="insertPersistValue"/>
-		</td>
-	</tr>
-
-</table>
-
-
-</span>
-
-
-
-	
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowProperties.java b/contrib/src/org/apache/tapestry/contrib/inspector/ShowProperties.java
deleted file mode 100644
index 6b96c2c..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowProperties.java
+++ /dev/null
@@ -1,142 +0,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.
-
-package org.apache.tapestry.contrib.inspector;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IEngine;
-import org.apache.tapestry.IPage;
-import org.apache.tapestry.engine.IPageRecorder;
-import org.apache.tapestry.event.PageEvent;
-import org.apache.tapestry.event.PageRenderListener;
-import org.apache.tapestry.record.IPageChange;
-
-/**
- *  Component of the {@link Inspector} page used to display
- *  the persisent properties of the page.
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class ShowProperties extends BaseComponent implements PageRenderListener
-{
-    private List _properties;
-    private IPageChange _change;
-    private IPage _inspectedPage;
-
-    /**
-     *  Does nothing.
-     *
-     *  @since 1.0.5
-     *
-     **/
-
-    public void pageBeginRender(PageEvent event)
-    {
-    }
-
-    /**
-     *  @since 1.0.5
-     *
-     **/
-
-    public void pageEndRender(PageEvent event)
-    {
-        _properties = null;
-        _change = null;
-        _inspectedPage = null;
-    }
-
-    private void buildProperties()
-    {
-        Inspector inspector = (Inspector) getPage();
-
-        _inspectedPage = inspector.getInspectedPage();
-
-        IEngine engine = getPage().getEngine();
-        IPageRecorder recorder =
-            engine.getPageRecorder(_inspectedPage.getPageName(), inspector.getRequestCycle());
-
-        // No page recorder?  No properties.
-
-        if (recorder == null)
-        {
-            _properties = Collections.EMPTY_LIST;
-            return;
-        }
-
-        if (recorder.getHasChanges())
-            _properties = new ArrayList(recorder.getChanges());
-    }
-
-    /**
-     *  Returns a {@link List} of {@link IPageChange} objects.
-     *
-     *  <p>Sort order is not defined.
-     *
-     **/
-
-    public List getProperties()
-    {
-        if (_properties == null)
-            buildProperties();
-
-        return _properties;
-    }
-
-    public void setChange(IPageChange value)
-    {
-        _change = value;
-    }
-
-    public IPageChange getChange()
-    {
-        return _change;
-    }
-
-    /**
-     *  Returns the name of the value's class, if the value is non-null.
-     *
-     **/
-
-    public String getValueClassName()
-    {
-        Object value;
-
-        value = _change.getNewValue();
-
-        if (value == null)
-            return "<null>";
-
-        return convertClassToName(value.getClass());
-    }
-
-    private String convertClassToName(Class cl)
-    {
-        // TODO: This only handles one-dimensional arrays
-        // property.
-
-        if (cl.isArray())
-            return "array of " + cl.getComponentType().getName();
-
-        return cl.getName();
-    }
-
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowProperties.jwc b/contrib/src/org/apache/tapestry/contrib/inspector/ShowProperties.jwc
deleted file mode 100644
index 4bde6af..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowProperties.jwc
+++ /dev/null
@@ -1,64 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.inspector.ShowProperties">
-
-  <bean name="persistPropertyClass" class="org.apache.tapestry.bean.EvenOdd"/>
-  <bean name="propertyClass" class="org.apache.tapestry.bean.EvenOdd"/>
-  
-  <component id="ifNoProperties" type="Conditional">
-    <binding name="condition" expression="!properties"/>
-  </component>
-  
-  <component id="ifHasProperties" type="Conditional">
-    <binding name="condition" expression="properties"/>
-  </component>
-  
-  <component id="e" type="Foreach">
-    <binding name="source" expression="properties"/>
-    <binding name="value" expression="change"/>
-    <static-binding name="element">tr</static-binding>
-    <binding name="class" expression="beans.persistPropertyClass.next"/>
-  </component>
-  
-  <component id="selectComponent" type="DirectLink">
-    <binding name="listener" expression="page.listeners.selectComponent"/>
-    <binding name="parameters" expression="change.componentPath"/>
-    <binding name="disabled" expression="change.componentPath == null"/>
-  </component>
-  
-  <component id="insertPath" type="Insert">
-    <binding name="value" expression="change.componentPath"/>
-  </component>
-  
-  <component id="insertPersistPropertyName" type="Insert">
-    <binding name="value" expression="change.propertyName"/>
-  </component>
-  
-  <component id="insertPersistValueClass" type="Insert">
-    <binding name="value" expression="valueClassName"/>
-  </component>
-  
-  <component id="insertPersistValue" type="Insert">
-    <binding name="value" expression="change.newValue"/>
-  </component>
-  
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowSpecification.html b/contrib/src/org/apache/tapestry/contrib/inspector/ShowSpecification.html
deleted file mode 100644
index 74bdccf..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowSpecification.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!-- $Id$ -->
-
-<table>
-<tr valign=top>
-<td>
-
-<table class="inspector-data" width="100%">
-	<tr class="even">
-		<th>Specification Resource Location</th>
-		<td><span jwcid="@Insert" value="ognl:inspectedSpecification.specificationLocation"/>
-		<span jwcid="@ShowDescription" description="ognl:inspectedSpecification.description"/>
-		</td>
-	</tr>
-	
-	<tr class="odd">
-		<th>Java class</th>
-		<td><span jwcid="@Insert" value="ognl:inspectedComponent.getClass().getName()"/></td>
-	</tr>
-
-<span jwcid="@Conditional" condition="ognl:! inspectedSpecification.pageSpecification">
-
-	<tr class="even">
-		<th>Allow informal parameters</th>
-		<td><span jwcid="@Insert" value="ognl:inspectedSpecification.allowInformalParameters"/></td>
-	</tr>
-
-	<tr class="odd">
-		<th>Allow body</th>
-		<td><span jwcid="@Insert" value="ognl:inspectedSpecification.allowBody"/></td>
-	</tr>
-	
-</span>
-	
-</table>
-
-<span jwcid="@Conditional" condition="ognl:formalParameterNames">
-
-<table class="inspector-data" width="100%">
-	<tr class="heading">
-		<th colspan=4>Formal Parameters</th>
-	</tr>
-	<tr class="heading">
-		<th>Name</th> <th>Required</th> <th>Java type</th> <th>Binding</th>
-	</tr>
-
-	<tr jwcid="e_formal">
-		<td><span jwcid="@Insert" value="ognl:parameterName"/>
-		<span jwcid="@ShowDescription" description="ognl:parameterSpecification.description"/>
-		</td>
-		<td><span jwcid="@Insert" value="ognl:parameterSpecification.required"/></td>
-		<td><span jwcid="@Insert" value="ognl:parameterSpecification.type"/></td>
-		<td><span jwcid="@Insert" value="ognl:binding"/></td>
-	</tr>
-
-</table>
-</span>
-
-<span jwcid="@Conditional" condition="ognl:informalParameterNames">
-
-<table class="inspector-data" width="100%">
-	<tr class="heading">
-		<th colspan=2>Informal Parameters</th>
-	</tr>
-	<tr class="heading">
-		<th>Name</th> <th>Binding</th>
-	</tr>
-
-	<tr jwcid="e_informal">
-		<td><span jwcid="@Insert" value="ognl:parameterName"/></td>
-		<td><span jwcid="@Insert" value="ognl:binding"/></td>
-	</tr>
-
-</table>
-</span>
-
-<span jwcid="@Conditional" condition="ognl:assetNames">
-
-<table class="inspector-data"  width="100%">
-	<tr class="heading">
-		<th colspan=2>Assets</th>
-	</tr>
-	<tr class="heading">
-		<th>Name</th> <th>Asset</th>
-	</tr>
-
-	<tr jwcid="e_asset">
-		<td><span jwcid="@Insert" value="ognl:assetName"/></td>
-		<td><span jwcid="@Insert" value="ognl:asset"/></td>
-	</tr>
-
-
-</table>
-</span>
-
-<span jwcid="@Conditional" condition="ognl:sortedPropertyNames">
-
-<table class="inspector-data" width="100%">
-	<tr class="heading">
-		<th colspan=2>Properties</th>
-	</tr>
-	<tr class="heading">
-		<th>Name</th> <th>Property</th>
-	</tr>
-
-	<tr jwcid="e_property">
-		<th><span jwcid="@Insert" value="ognl:propertyName"/></th>
-		<td><span jwcid="@Insert" value="ognl:propertyValue"/></td>
-	</tr>
-
-</table>
-</span>
-
-<span jwcid="@Conditional" condition="ognl:beanNames">
-
-<table class="inspector-data" width="100%">
-	<tr class="heading">
-		<th colspan=3>Helper Beans</th>
-	</tr>
-	
-	<tr class="heading">
-		<th>Name</th> <th>Class</th> <th>Lifecycle</th>
-	</tr>
-	
-	<tr jwcid="e_bean">
-		<td><span jwcid="@Insert" value="ognl:beanName"/></td>
-		<td><span jwcid="@Insert" value="ognl:beanSpecification.className"/></td>
-		<td><span jwcid="@Insert" value="ognl:beanSpecification.lifecycle.name"/></td>
-	</tr>
-	
-</table>
-</span>
-
-</td>
-
-<td>
-<span jwcid="@Conditional" condition="ognl:sortedComponents">
-
-<table border="0" class="inspector-data">
-
-	<tr class="heading">
-		<th colspan=2>Embedded Components</th>
-	</tr>
-	<tr class="heading">
-		<th>Id</th> <th>Type</th>
-	</tr>
-
-	<tr jwcid="e_components">
-		<td>
-			<a jwcid="selectComponent"><span jwcid="@Insert" value="ognl:component.id"/></a>
-		</td>
-		<td>
-			<span jwcid="@Insert" value="ognl:componentType"/>
-		</td>
-	</tr>
-
-</table>
-</span>
-
-</td>
-</tr>
-</table>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowSpecification.java b/contrib/src/org/apache/tapestry/contrib/inspector/ShowSpecification.java
deleted file mode 100644
index 098a6fa..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowSpecification.java
+++ /dev/null
@@ -1,366 +0,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.
-
-package org.apache.tapestry.contrib.inspector;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IAsset;
-import org.apache.tapestry.IBinding;
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.event.PageEvent;
-import org.apache.tapestry.event.PageRenderListener;
-import org.apache.tapestry.spec.IBeanSpecification;
-import org.apache.tapestry.spec.IComponentSpecification;
-import org.apache.tapestry.spec.IContainedComponent;
-import org.apache.tapestry.spec.IParameterSpecification;
-
-/**
- *  Component of the {@link Inspector} page used to display
- *  the specification, parameters and bindings and assets of the inspected component.
- *
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class ShowSpecification extends BaseComponent implements PageRenderListener
-{
-    private IComponent _inspectedComponent;
-    private IComponentSpecification _inspectedSpecification;
-    private String _parameterName;
-    private String _assetName;
-    private List _sortedComponents;
-    private IComponent _component;
-    private List _assetNames;
-    private List _formalParameterNames;
-    private List _informalParameterNames;
-    private List _sortedPropertyNames;
-    private String _propertyName;
-    private List _beanNames;
-    private String _beanName;
-    private IBeanSpecification _beanSpecification;
-
-    private static class ComponentComparitor implements Comparator
-    {
-        public int compare(Object left, Object right)
-        {
-            IComponent leftComponent;
-            String leftId;
-            IComponent rightComponent;
-            String rightId;
-
-            if (left == right)
-                return 0;
-
-            leftComponent = (IComponent) left;
-            rightComponent = (IComponent) right;
-
-            leftId = leftComponent.getId();
-            rightId = rightComponent.getId();
-
-            return leftId.compareTo(rightId);
-        }
-    }
-
-    /**
-     *  Clears all cached information about the component and such after
-     *  each render (including the rewind phase render used to process
-     *  the tab view).
-     *
-     *  @since 1.0.5
-     *
-     **/
-
-    public void pageEndRender(PageEvent event)
-    {
-        _inspectedComponent = null;
-        _inspectedSpecification = null;
-        _parameterName = null;
-        _assetName = null;
-        _sortedComponents = null;
-        _component = null;
-        _assetNames = null;
-        _formalParameterNames = null;
-        _informalParameterNames = null;
-        _sortedPropertyNames = null;
-        _propertyName = null;
-        _beanNames = null;
-        _beanName = null;
-        _beanSpecification = null;
-    }
-
-    /**
-     *  Gets the inspected component and specification from the {@link Inspector} page.
-     *
-     *  @since 1.0.5
-     **/
-
-    public void pageBeginRender(PageEvent event)
-    {
-        Inspector inspector = (Inspector) getPage();
-
-        _inspectedComponent = inspector.getInspectedComponent();
-        _inspectedSpecification = _inspectedComponent.getSpecification();
-    }
-
-    public IComponent getInspectedComponent()
-    {
-        return _inspectedComponent;
-    }
-
-    public IComponentSpecification getInspectedSpecification()
-    {
-        return _inspectedSpecification;
-    }
-
-    /**
-     *  Returns a sorted list of formal parameter names.
-     *
-     **/
-
-    public List getFormalParameterNames()
-    {
-        if (_formalParameterNames == null)
-            _formalParameterNames = sort(_inspectedSpecification.getParameterNames());
-
-        return _formalParameterNames;
-    }
-
-    /**
-     *  Returns a sorted list of informal parameter names.  This is
-     *  the list of all bindings, with the list of parameter names removed,
-     *  sorted.
-     *
-     **/
-
-    public List getInformalParameterNames()
-    {
-        if (_informalParameterNames != null)
-            return _informalParameterNames;
-
-        Collection names = _inspectedComponent.getBindingNames();
-        if (names != null && names.size() > 0)
-        {
-            _informalParameterNames = new ArrayList(names);
-
-            // Remove the names of any formal parameters.  This leaves
-            // just the names of informal parameters (informal parameters
-            // are any parameters/bindings that don't match a formal parameter
-            // name).
-
-            names = _inspectedSpecification.getParameterNames();
-            if (names != null)
-                _informalParameterNames.removeAll(names);
-
-            Collections.sort(_informalParameterNames);
-        }
-
-        return _informalParameterNames;
-    }
-
-    public String getParameterName()
-    {
-        return _parameterName;
-    }
-
-    public void setParameterName(String value)
-    {
-        _parameterName = value;
-    }
-
-    /**
-     *  Returns the {@link org.apache.tapestry.spec.ParameterSpecification} corresponding to
-     *  the value of the parameterName property.
-     *
-     **/
-
-    public IParameterSpecification getParameterSpecification()
-    {
-        return _inspectedSpecification.getParameter(_parameterName);
-    }
-
-    /**
-     *  Returns the {@link IBinding} corresponding to the value of
-     *  the parameterName property.
-     *
-     **/
-
-    public IBinding getBinding()
-    {
-        return _inspectedComponent.getBinding(_parameterName);
-    }
-
-    public void setAssetName(String value)
-    {
-        _assetName = value;
-    }
-
-    public String getAssetName()
-    {
-        return _assetName;
-    }
-
-    /**
-     *  Returns the {@link IAsset} corresponding to the value
-     *  of the assetName property.
-     *
-     **/
-
-    public IAsset getAsset()
-    {
-        return (IAsset) _inspectedComponent.getAssets().get(_assetName);
-    }
-
-    /**
-     *  Returns a sorted list of asset names, or null if the
-     *  component contains no assets.
-     *
-     **/
-
-    public List getAssetNames()
-    {
-        if (_assetNames == null)
-            _assetNames = sort(_inspectedComponent.getAssets().keySet());
-
-        return _assetNames;
-    }
-
-    public List getSortedComponents()
-    {
-        if (_sortedComponents != null)
-            return _sortedComponents;
-
-        Inspector inspector = (Inspector) getPage();
-        IComponent inspectedComponent = inspector.getInspectedComponent();
-
-        // Get a Map of the components and simply return null if there
-        // are none.
-
-        Map components = inspectedComponent.getComponents();
-
-        _sortedComponents = new ArrayList(components.values());
-
-        Collections.sort(_sortedComponents, new ComponentComparitor());
-
-        return _sortedComponents;
-    }
-
-    public void setComponent(IComponent value)
-    {
-        _component = value;
-    }
-
-    public IComponent getComponent()
-    {
-        return _component;
-    }
-
-    /**
-     *  Returns the type of the component, as specified in the container's
-     *  specification (i.e., the component alias if known).
-     *
-     **/
-
-    public String getComponentType()
-    {
-        IComponent container = _component.getContainer();
-
-        IComponentSpecification containerSpecification = container.getSpecification();
-
-        String id = _component.getId();
-        IContainedComponent contained = containerSpecification.getComponent(id);
-
-        // Temporary:  An implicit component will not be in the containing
-        // component's specification as a ContainedComponent.
-
-        if (contained == null)
-            return null;
-
-        return contained.getType();
-    }
-
-    /**
-     *  Returns a list of the properties for the component
-     *  (from its specification), or null if the component
-     *  has no properties.
-     *
-     **/
-
-    public List getSortedPropertyNames()
-    {
-        if (_sortedPropertyNames == null)
-            _sortedPropertyNames = sort(_inspectedSpecification.getPropertyNames());
-
-        return _sortedPropertyNames;
-    }
-
-    public void setPropertyName(String value)
-    {
-        _propertyName = value;
-    }
-
-    public String getPropertyName()
-    {
-        return _propertyName;
-    }
-
-    public String getPropertyValue()
-    {
-        return _inspectedSpecification.getProperty(_propertyName);
-    }
-
-    public List getBeanNames()
-    {
-        if (_beanNames == null)
-            _beanNames = sort(_inspectedSpecification.getBeanNames());
-
-        return _beanNames;
-    }
-
-    public void setBeanName(String value)
-    {
-        _beanName = value;
-        _beanSpecification = _inspectedSpecification.getBeanSpecification(_beanName);
-    }
-
-    public String getBeanName()
-    {
-        return _beanName;
-    }
-
-    public IBeanSpecification getBeanSpecification()
-    {
-        return _beanSpecification;
-    }
-
-    private List sort(Collection c)
-    {
-        if (c == null || c.size() == 0)
-            return null;
-
-        List result = new ArrayList(c);
-
-        Collections.sort(result);
-
-        return result;
-    }
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowSpecification.jwc b/contrib/src/org/apache/tapestry/contrib/inspector/ShowSpecification.jwc
deleted file mode 100644
index fa9c420..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowSpecification.jwc
+++ /dev/null
@@ -1,80 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd" > 
-  
-<component-specification class="org.apache.tapestry.contrib.inspector.ShowSpecification">
-
-  <bean name="formalClass" class="org.apache.tapestry.bean.EvenOdd"/>           
-  <bean name="informalClass" class="org.apache.tapestry.bean.EvenOdd"/>
-  <bean name="assetClass" class="org.apache.tapestry.bean.EvenOdd"/>
-  <bean name="propertyClass" class="org.apache.tapestry.bean.EvenOdd"/>
-  <bean name="componentClass" class="org.apache.tapestry.bean.EvenOdd"/>
-  <bean name="beanClass" class="org.apache.tapestry.bean.EvenOdd"/>
-        
-  <component id="e_formal" type="Foreach">
-    <binding name="source" expression="formalParameterNames"/>
-    <binding name="value" expression="parameterName"/>
-    <static-binding name="element">tr</static-binding>
-    <binding name="class" expression="beans.formalClass.next"/>
-  </component>
-     
-  
-  <component id="e_informal" type="Foreach"> 
-    <binding name="source" expression="informalParameterNames"/>
-    <binding name="value" expression="parameterName"/>
-    <static-binding name="element">tr</static-binding>
-    <binding name="class" expression="beans.informalClass.next"/>
-  </component>
-
-  <component id="e_asset" type="Foreach">
-    <binding name="source" expression="assetNames"/>
-    <binding name="value" expression="assetName"/>
-    <static-binding name="element">tr</static-binding>
-    <binding name="class" expression="beans.assetClass.next"/>
-  </component>
-  
-  <component id="e_components" type="Foreach">
-    <binding name="source" expression="sortedComponents"/>
-    <binding name="value" expression="component"/>
-    <static-binding name="element">tr</static-binding>
-    <binding name="class" expression="beans.componentClass.next"/>
-  </component>
-
-  <component id="selectComponent" type="DirectLink">
-    <binding name="listener" expression="page.listeners.selectComponent"/>
-    <binding name="parameters" expression="component.idPath"/>
-  </component>
-
-  <component id="e_property" type="Foreach">
-    <binding name="source" expression="sortedPropertyNames"/>
-    <binding name="value" expression="propertyName"/>
-    <static-binding name="element">tr</static-binding>
-    <binding name="class" expression="beans.propertyClass.next"/>
-  </component>
-      
-  <component id="e_bean" type="Foreach">
-  	<binding name="source" expression="beanNames"/>
-  	<binding name="value" expression="beanName"/>
-  	<static-binding name="element">tr</static-binding>
-  	<binding name="class" expression="beans.beanClass.next"/>
-  </component>
-  	
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowTemplate.html b/contrib/src/org/apache/tapestry/contrib/inspector/ShowTemplate.html
deleted file mode 100644
index 2673368..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowTemplate.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="ifNoTemplate">
-<span class="message">Component does not have a template.
-</span>
-</span>
-
-<span jwcid="ifTemplate">
-<table class="template">
-	<tr>
-		<td><span jwcid="insertTemplate"/></td>
-	</tr>
-</table>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowTemplate.java b/contrib/src/org/apache/tapestry/contrib/inspector/ShowTemplate.java
deleted file mode 100644
index 65a8c13..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowTemplate.java
+++ /dev/null
@@ -1,333 +0,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.
-
-package org.apache.tapestry.contrib.inspector;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IDirect;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.Tapestry;
-import org.apache.tapestry.engine.IEngineService;
-import org.apache.tapestry.engine.ILink;
-import org.apache.tapestry.engine.ITemplateSource;
-import org.apache.tapestry.parse.CloseToken;
-import org.apache.tapestry.parse.ComponentTemplate;
-import org.apache.tapestry.parse.LocalizationToken;
-import org.apache.tapestry.parse.OpenToken;
-import org.apache.tapestry.parse.TemplateAttribute;
-import org.apache.tapestry.parse.TemplateToken;
-import org.apache.tapestry.parse.TextToken;
-import org.apache.tapestry.parse.TokenType;
-
-/**
- *  Component of the {@link Inspector} page used to display
- *  the ids and types of all embedded components.
- *
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class ShowTemplate extends BaseComponent implements IDirect
-{
-
-    public boolean getHasTemplate()
-    {
-        Inspector inspector;
-
-        inspector = (Inspector) getPage();
-
-        // Components that inherit from BaseComponent have templates,
-        // others do not.
-
-        return inspector.getInspectedComponent() instanceof BaseComponent;
-    }
-
-    public IRender getTemplateDelegate()
-    {
-        return new IRender()
-        {
-            public void render(IMarkupWriter writer, IRequestCycle cycle)
-            {
-                writeTemplate(writer, cycle);
-            }
-        };
-    }
-
-    /**
-     *  Writes the HTML template for the component.  When &lt;jwc&gt; tags are
-     *  written, the id is made a link (that selects the named component).  We
-     *  use some magic to accomplish this, creating links as if we were a
-     *  {@link DirectLink} component, and attributing those links
-     *  to the captive {@link DirectLink} component embedded here.
-     *
-     **/
-
-    private void writeTemplate(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        IComponent inspectedComponent = getInspectedComponent();
-        ComponentTemplate template = null;
-        ITemplateSource source = getPage().getEngine().getTemplateSource();
-
-        try
-        {
-            template = source.getTemplate(cycle, inspectedComponent);
-        }
-        catch (Exception ex)
-        {
-            return;
-        }
-
-        writer.begin("pre");
-
-        int count = template.getTokenCount();
-
-        for (int i = 0; i < count; i++)
-        {
-            TemplateToken token = template.getToken(i);
-            TokenType type = token.getType();
-
-            if (type == TokenType.TEXT)
-            {
-                write(writer, (TextToken) token);
-                continue;
-            }
-
-            if (type == TokenType.CLOSE)
-            {
-                write(writer, (CloseToken) token);
-
-                continue;
-            }
-
-            if (token.getType() == TokenType.LOCALIZATION)
-            {
-
-                write(writer, (LocalizationToken) token);
-                continue;
-            }
-
-            if (token.getType() == TokenType.OPEN)
-            {
-                boolean nextIsClose =
-                    (i + 1 < count) && (template.getToken(i + 1).getType() == TokenType.CLOSE);
-
-                write(writer, nextIsClose, (OpenToken) token);
-
-                if (nextIsClose)
-                    i++;
-
-                continue;
-            }
-
-            // That's all the types known at this time.
-        }
-
-        writer.end(); // <pre>        
-    }
-
-    /** @since 3.0 **/
-
-    private IComponent getInspectedComponent()
-    {
-        Inspector page = (Inspector) getPage();
-
-        return page.getInspectedComponent();
-    }
-
-    /** @since 3.0 **/
-
-    private void write(IMarkupWriter writer, TextToken token)
-    {
-        int start = token.getStartIndex();
-        int end = token.getEndIndex();
-
-        // Print the section of the template ... print() will
-        // escape and invalid characters as HTML entities.  Also,
-        // we show the full stretch of text, not the trimmed version.
-
-        writer.print(token.getTemplateData(), start, end - start + 1);
-    }
-
-    /** @since 3.0 **/
-
-    private void write(IMarkupWriter writer, CloseToken token)
-    {
-        writer.begin("span");
-        writer.attribute("class", "jwc-tag");
-
-        writer.print("</");
-        writer.print(token.getTag());
-        writer.print(">");
-
-        writer.end(); // <span>
-    }
-
-    /** @since 3.0 **/
-
-    private void write(IMarkupWriter writer, LocalizationToken token)
-    {
-        IComponent component = getInspectedComponent();
-
-        writer.begin("span");
-        writer.attribute("class", "jwc-tag");
-
-        writer.print("<span key=\"");
-        writer.print(token.getKey());
-        writer.print('"');
-
-        Map attributes = token.getAttributes();
-        if (attributes != null && !attributes.isEmpty())
-        {
-            Iterator it = attributes.entrySet().iterator();
-            while (it.hasNext())
-            {
-                Map.Entry entry = (Map.Entry) it.next();
-                String attributeName = (String) entry.getKey();
-                String attributeValue = (String) entry.getValue();
-
-                writer.print(' ');
-                writer.print(attributeName);
-                writer.print("=\"");
-                writer.print(attributeValue);
-                writer.print('"');
-
-            }
-        }
-
-        writer.print('>');
-        writer.begin("span");
-        writer.attribute("class", "localized-string");
-
-        writer.print(component.getMessages().getMessage(token.getKey()));
-        writer.end(); // <span>
-
-        writer.print("</span>");
-
-        writer.end(); // <span>
-    }
-
-    /** @since 3.0 **/
-
-    private void write(IMarkupWriter writer, boolean nextIsClose, OpenToken token)
-    {
-        IComponent component = getInspectedComponent();
-        IEngineService service = getPage().getEngine().getService(Tapestry.DIRECT_SERVICE);
-        String[] context = new String[1];
-
-        // Each id references a component embedded in the inspected component.
-        // Get that component.
-
-        String id = token.getId();
-        IComponent embedded = component.getComponent(id);
-        context[0] = embedded.getIdPath();
-
-        // Build a URL to select that component, as if by the captive
-        // component itself (it's a Direct).
-
-        ILink link = service.getLink(getPage().getRequestCycle(), this, context);
-
-        writer.begin("span");
-        writer.attribute("class", "jwc-tag");
-
-        writer.print("<");
-        writer.print(token.getTag());
-
-        writer.print(" jwcid=\"");
-
-        writer.begin("span");
-        writer.attribute("class", "jwc-id");
-
-        writer.begin("a");
-        writer.attribute("href", link.getURL());
-        writer.print(id);
-
-        writer.end(); // <a>
-        writer.end(); // <span>
-        writer.print('"');
-
-        Map attributes = token.getAttributesMap();
-
-        if (attributes != null)
-        {
-            Iterator ii = attributes.entrySet().iterator();
-
-            while (ii.hasNext())
-            {
-                Map.Entry e = (Map.Entry) ii.next();
-                
-                TemplateAttribute attribute = (TemplateAttribute)e.getValue();               
-                
-                writer.print(' ');
-                writer.print(e.getKey().toString());
-                writer.print("=\"");
-                
-                // TODO: Fix this to output something appropriate for each type
-                // of attribute (literal, expression, string).
-                
-                writer.print(attribute.getValue());
-                writer.print('"');
-            }
-        }
-
-        // Collapse an open & close down to a single tag.
-
-        if (nextIsClose)
-            writer.print('/');
-
-        writer.print('>');
-        writer.end(); // <span>
-    }
-
-    /**
-     *  Invoked when a component id is clicked.
-     *
-     **/
-
-    public void trigger(IRequestCycle cycle)
-    {
-        Inspector inspector = (Inspector) getPage();
-
-        Object[] parameters = cycle.getServiceParameters();
-
-        inspector.selectComponent((String) parameters[0]);
-
-        IComponent newComponent = inspector.getInspectedComponent();
-
-        // If the component is not a BaseComponent then it won't have
-        // a template, so switch to the specification view.
-
-        if (!(newComponent instanceof BaseComponent))
-            inspector.setView(View.SPECIFICATION);
-    }
-
-    /**
-     *  Always returns true.
-     * 
-     *  @since 2.3
-     * 
-     **/
-
-    public boolean isStateful()
-    {
-        return true;
-    }
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ShowTemplate.jwc b/contrib/src/org/apache/tapestry/contrib/inspector/ShowTemplate.jwc
deleted file mode 100644
index 266a467..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ShowTemplate.jwc
+++ /dev/null
@@ -1,34 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.inspector.ShowTemplate">
-  <component id="ifNoTemplate" type="Conditional">
-    <binding name="condition" expression="! hasTemplate"/>
-  </component>
-  
-  <component id="ifTemplate" type="Conditional">
-    <binding name="condition" expression="hasTemplate"/>
-  </component>
-  
-  <component id="insertTemplate" type="Delegator">
-    <binding name="delegate" expression="templateDelegate"/>
-  </component>
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Specification_HRp4.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Specification_HRp4.gif
deleted file mode 100644
index 7b695d0..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Specification_HRp4.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Specification_Hp3.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Specification_Hp3.gif
deleted file mode 100644
index 33062cb..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Specification_Hp3.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Specification_NBanner.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Specification_NBanner.gif
deleted file mode 100644
index 896f81b..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Specification_NBanner.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Specification_NRp2.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Specification_NRp2.gif
deleted file mode 100644
index 6700d10..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Specification_NRp2.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Specification_Np1.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Specification_Np1.gif
deleted file mode 100644
index 5f8b7db..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Specification_Np1.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Template_HRp4.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Template_HRp4.gif
deleted file mode 100644
index 16e1792..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Template_HRp4.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Template_Hp3.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Template_Hp3.gif
deleted file mode 100644
index 2bc30ee..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Template_Hp3.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Template_NBanner.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Template_NBanner.gif
deleted file mode 100644
index e250138..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Template_NBanner.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Template_NRp2.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Template_NRp2.gif
deleted file mode 100644
index b7e2175..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Template_NRp2.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/Template_Np1.gif b/contrib/src/org/apache/tapestry/contrib/inspector/Template_Np1.gif
deleted file mode 100644
index a83fb37..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/Template_Np1.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/View.java b/contrib/src/org/apache/tapestry/contrib/inspector/View.java
deleted file mode 100644
index 6aac890..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/View.java
+++ /dev/null
@@ -1,68 +0,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.
-
-package org.apache.tapestry.contrib.inspector;
-
-import org.apache.commons.lang.enum.Enum;
-
-/**
- *  Identifies different views for the inspector.
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class View extends Enum
-{
-    /**
-     *  View that displays the basic specification information, plus
-     *  formal and informal parameters (and related bindings), and 
-     *  assets.
-     *
-     **/
-
-    public static final View SPECIFICATION = new View("SPECIFICATION");
-
-    /**
-     *  View that displays the HTML template for the component, if one
-     *  exists.
-     *
-     **/
-
-    public static final View TEMPLATE = new View("TEMPLATE");
-
-    /**
-     *  View that shows the persistent properties of the page containing
-     *  the inspected component.
-     *
-     **/
-
-    public static final View PROPERTIES = new View("PROPERTIES");
-
-    /**
-     *  View that shows information about the 
-     *  {@link org.apache.tapestry.IEngine}.
-     *
-     **/
-
-    public static final View ENGINE = new View("ENGINE");
-
-
-    private View(String name)
-    {
-        super(name);
-    }
-
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ViewTabs.html b/contrib/src/org/apache/tapestry/contrib/inspector/ViewTabs.html
deleted file mode 100644
index 6d3a970..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ViewTabs.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!-- $Id$ -->
-
-<table border=0 cellpadding=0 cellspacing=2>
-	<tr>
-		<td>
-<span jwcid="@Foreach" source="ognl:views" value="ognl:view">
-			<a jwcid="select@ActionLink" listener="ognl:listeners.selectTab"><img 
-				jwcid="@Rollover" image="ognl:viewImage" focus="ognl:focusImage"
-				width="120" height="19"/></a>
-</span>
-		</td>
-	</tr>
-	<tr>
-		<td><img jwcid="@Image" image="ognl:bannerImage"/></td>
-	</tr>
-	<tr>
-		<td><span jwcid="@RenderBody"/></td>
-	</tr>
-</table>
-
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ViewTabs.java b/contrib/src/org/apache/tapestry/contrib/inspector/ViewTabs.java
deleted file mode 100644
index 3251d35..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ViewTabs.java
+++ /dev/null
@@ -1,92 +0,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.
-
-package org.apache.tapestry.contrib.inspector;
-
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IAsset;
-import org.apache.tapestry.IRequestCycle;
-
-/**
- *  Component of the {@link Inspector} page used to select the view.
- *
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public abstract class ViewTabs extends BaseComponent
-{
-    private static View[] _views =
-        {
-            View.SPECIFICATION,
-            View.TEMPLATE,
-            View.PROPERTIES,
-            View.ENGINE };
-
-     public View[] getViews()
-    {
-        return _views;
-    }
-
-    public abstract void setView(View value);
-
-    public abstract View getView();
-
-    private IAsset getImageForView(boolean focus)
-    {
-        Inspector inspector = (Inspector) getPage();
-		View view = getView();
-		
-        boolean selected = (view == inspector.getView());
-
-        StringBuffer buffer = new StringBuffer(view.getName());
-
-        if (selected)
-            buffer.append("_selected");
-
-        if (focus)
-            buffer.append("_focus");
-
-        String key = buffer.toString();
-
-        return (IAsset) getAssets().get(key);
-    }
-
-    public IAsset getViewImage()
-    {
-        return getImageForView(false);
-    }
-
-    public IAsset getFocusImage()
-    {
-        return getImageForView(true);
-    }
-
-    public IAsset getBannerImage()
-    {
-         Inspector inspector = (Inspector) getPage();
-        View selectedView = inspector.getView();
-        String key = selectedView.getName() + "_banner";
-
-        return (IAsset) getAssets().get(key);
-    }
-
-    public void selectTab(IRequestCycle cycle)
-    {
-        Inspector inspector = (Inspector) getPage();
-        inspector.setView(getView());
-    }
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/ViewTabs.jwc b/contrib/src/org/apache/tapestry/contrib/inspector/ViewTabs.jwc
deleted file mode 100644
index 1e03bad..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/ViewTabs.jwc
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.inspector.ViewTabs">
-  
-  <property-specification name="view" type="org.apache.tapestry.contrib.inspector.View"/>
-  
-  <private-asset name="SPECIFICATION" resource-path="Specification_Np1.gif"/>
-  <private-asset name="SPECIFICATION_selected" resource-path="Specification_Hp3.gif"/>
-  <private-asset name="SPECIFICATION_focus" resource-path="Specification_NRp2.gif"/>
-  <private-asset name="SPECIFICATION_selected_focus" resource-path="Specification_HRp4.gif"/>
-  <private-asset name="SPECIFICATION_banner" resource-path="Specification_NBanner.gif"/>
-  <private-asset name="TEMPLATE" resource-path="Template_Np1.gif"/>
-  <private-asset name="TEMPLATE_selected" resource-path="Template_Hp3.gif"/>
-  <private-asset name="TEMPLATE_focus" resource-path="Template_NRp2.gif"/>
-  <private-asset name="TEMPLATE_selected_focus" resource-path="Template_HRp4.gif"/>
-  <private-asset name="TEMPLATE_banner" resource-path="Template_NBanner.gif"/>
-  <private-asset name="PROPERTIES" resource-path="Properties_Np1.gif"/>
-  <private-asset name="PROPERTIES_selected" resource-path="Properties_Hp3.gif"/>
-  <private-asset name="PROPERTIES_focus" resource-path="Properties_NRp2.gif"/>
-  <private-asset name="PROPERTIES_selected_focus" resource-path="Properties_HRp4.gif"/>
-  <private-asset name="PROPERTIES_banner" resource-path="Properties_NBanner.gif"/>
-  <private-asset name="ENGINE" resource-path="Engine_Np1.gif"/>
-  <private-asset name="ENGINE_selected" resource-path="Engine_Hp3.gif"/>
-  <private-asset name="ENGINE_focus" resource-path="Engine_NRp2.gif"/>
-  <private-asset name="ENGINE_selected_focus" resource-path="Engine_HRp4.gif"/>
-  <private-asset name="ENGINE_banner" resource-path="Engine_NBanner.gif"/>
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/info.gif b/contrib/src/org/apache/tapestry/contrib/inspector/info.gif
deleted file mode 100644
index be3d1d1..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/info.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/inspector-rollover.gif b/contrib/src/org/apache/tapestry/contrib/inspector/inspector-rollover.gif
deleted file mode 100644
index df0d3ef..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/inspector-rollover.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/package.html b/contrib/src/org/apache/tapestry/contrib/inspector/package.html
deleted file mode 100644
index 7610fdb..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/package.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!-- $Id$ -->
-<html>
-<head>
-<title>Tapestry: Web Application Framework</title>
-</head>
-<body>
-
-<p>Implementation of the Tapestry <em>Inspector</em>, a specialized page
-used to dynamically introspect the construction of an application while
-it runs.  The {@link org.apache.tapestry.contrib.inspector.InspectorButton} component
-creates an icon on the page that raises the Inspector in a seperate window.
-
-@author Howard Lewis Ship <a href="mailto:hlship@apache.org">hlship@apache.org</a>
-
-</body>
-</html>
diff --git a/contrib/src/org/apache/tapestry/contrib/inspector/tapestry-logo.gif b/contrib/src/org/apache/tapestry/contrib/inspector/tapestry-logo.gif
deleted file mode 100644
index 82ad636..0000000
--- a/contrib/src/org/apache/tapestry/contrib/inspector/tapestry-logo.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/BooleanParameter.java b/contrib/src/org/apache/tapestry/contrib/jdbc/BooleanParameter.java
deleted file mode 100644
index 80fc31d..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/BooleanParameter.java
+++ /dev/null
@@ -1,57 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-/**
- *  Wrapper around a boolean parameter.
- *
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- *  @since 2.3
- *
- **/
-
-public class BooleanParameter implements IParameter
-{
-    private boolean _value;
-
-    public static final BooleanParameter TRUE = new BooleanParameter(true);
-
-    public static final BooleanParameter FALSE = new BooleanParameter(false);
-
-    private BooleanParameter(boolean value)
-    {
-        _value = value;
-    }
-
-    public void set(PreparedStatement statement, int index) throws SQLException
-    {
-        statement.setBoolean(index, _value);
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer = new StringBuffer("Boolean<");
-        buffer.append(_value);
-        buffer.append('>');
-
-        return buffer.toString();
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/DoubleParameter.java b/contrib/src/org/apache/tapestry/contrib/jdbc/DoubleParameter.java
deleted file mode 100644
index e9f6d65..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/DoubleParameter.java
+++ /dev/null
@@ -1,52 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-/**
- *  A wrapper around a double parameter.
- *
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- *  @since 2.3
- * 
- **/
-
-public class DoubleParameter implements IParameter
-{
-    private double _value;
-
-    public DoubleParameter(double value)
-    {
-        _value = value;
-    }
-
-    public void set(PreparedStatement statement, int index) throws SQLException
-    {
-        statement.setDouble(index, _value);
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer = new StringBuffer("Double<");
-        buffer.append(_value);
-        buffer.append('>');
-
-        return buffer.toString();
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/FloatParameter.java b/contrib/src/org/apache/tapestry/contrib/jdbc/FloatParameter.java
deleted file mode 100644
index b2eb348..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/FloatParameter.java
+++ /dev/null
@@ -1,52 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-/**
- *  A wrapper around a float parameter.
- *
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- *  @since 2.3
- * 
- **/
-
-public class FloatParameter implements IParameter
-{
-    private float _value;
-
-    public FloatParameter(float value)
-    {
-        _value = value;
-    }
-
-    public void set(PreparedStatement statement, int index) throws SQLException
-    {
-        statement.setFloat(index, _value);
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer = new StringBuffer("Float<");
-        buffer.append(_value);
-        buffer.append('>');
-
-        return buffer.toString();
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/IParameter.java b/contrib/src/org/apache/tapestry/contrib/jdbc/IParameter.java
deleted file mode 100644
index 2032a00..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/IParameter.java
+++ /dev/null
@@ -1,41 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-/**
- *  Represents a parameter within a dynamically generated SQL statement.
- *
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- *  @since 2.3
- *  @see org.apache.tapestry.contrib.jdbc.ParameterizedStatement
- * 
- **/
-
-public interface IParameter
-{
-    /**
-     *  Invokes the appropriate setXXX() method on the 
-     *  {@link java.sql.PreparedStatement}.
-     * 
-     **/
-    
-    public void set(PreparedStatement statement, int index)
-    throws SQLException;
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/IStatement.java b/contrib/src/org/apache/tapestry/contrib/jdbc/IStatement.java
deleted file mode 100644
index c9f2544..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/IStatement.java
+++ /dev/null
@@ -1,70 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-/**
- *  A wrapper around {@link java.sql.Statement} or 
- *  {@link java.sql.PreparedStatement} which hides the differences
- *  between the two.  
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *  @see org.apache.tapestry.contrib.jdbc.StatementAssembly#createStatement(Connection)
- * 
- **/
-
-public interface IStatement
-{
-    /**
-     * Returns the SQL associated with this statement.
-     *
-     **/
-
-    public String getSQL();
-
-    /**
-     *  Returns the underlying {@link java.sql.Statement} 
-     *  (or {@link java.sql.PreparedStatement}).
-     *
-     **/
-
-    public Statement getStatement();
-
-    /**
-     *  Closes the underlying statement, and nulls the reference to it.
-     *
-     **/
-
-    public void close() throws SQLException;
-
-    /**
-     *  Executes the statement as a query, returning a {@link ResultSet}.
-     *
-     **/
-
-    public ResultSet executeQuery() throws SQLException;
-
-    /**
-     *  Executes the statement as an update, returning the number of rows
-     *  affected.
-     *
-     **/
-
-    public int executeUpdate() throws SQLException;
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/IntegerParameter.java b/contrib/src/org/apache/tapestry/contrib/jdbc/IntegerParameter.java
deleted file mode 100644
index 9148201..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/IntegerParameter.java
+++ /dev/null
@@ -1,52 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-/**
- *  A wrapper around an integer parameter.
- *
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- *  @since 2.3
- * 
- **/
-
-public class IntegerParameter implements IParameter
-{
-    private int _value;
-
-    public IntegerParameter(int value)
-    {
-        _value = value;
-    }
-
-    public void set(PreparedStatement statement, int index) throws SQLException
-    {
-        statement.setInt(index, _value);
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer = new StringBuffer("Integer<");
-        buffer.append(_value);
-        buffer.append('>');
-
-        return buffer.toString();
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/LongParameter.java b/contrib/src/org/apache/tapestry/contrib/jdbc/LongParameter.java
deleted file mode 100644
index 847e8a0..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/LongParameter.java
+++ /dev/null
@@ -1,52 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-/**
- *  Wrapper around long parameter.
- *
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- *  @since 2.3
- * 
- **/
-
-public class LongParameter implements IParameter
-{
-    private long _value;
-
-    public LongParameter(long value)
-    {
-        _value = value;
-    }
-
-    public void set(PreparedStatement statement, int index) throws SQLException
-    {
-        statement.setLong(index, _value);
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer = new StringBuffer("Long<");
-        buffer.append(_value);
-        buffer.append('>');
-
-        return buffer.toString();
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/ObjectParameter.java b/contrib/src/org/apache/tapestry/contrib/jdbc/ObjectParameter.java
deleted file mode 100644
index 25be80f..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/ObjectParameter.java
+++ /dev/null
@@ -1,52 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-/**
- *  An arbitrary object parameter.
- *
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- *  @since 2.3
- * 
- **/
-
-public class ObjectParameter implements IParameter
-{
-    private Object _value;
-
-    public ObjectParameter(Object value)
-    {
-        _value = value;
-    }
-
-    public void set(PreparedStatement statement, int index) throws SQLException
-    {
-        statement.setObject(index, _value);
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer = new StringBuffer("Object<");
-        buffer.append(_value);
-        buffer.append('>');
-
-        return buffer.toString();
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/ParameterizedStatement.java b/contrib/src/org/apache/tapestry/contrib/jdbc/ParameterizedStatement.java
deleted file mode 100644
index 3d37cca..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/ParameterizedStatement.java
+++ /dev/null
@@ -1,152 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- *  A wrapper around {@link PreparedStatement}.
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- * 
- **/
-
-public class ParameterizedStatement implements IStatement
-{
-    private static final Log LOG = LogFactory.getLog(ParameterizedStatement.class);
-
-    private String _SQL;
-    private PreparedStatement _statement;
-    private IParameter[] _parameters;
-
-    /**
-     *  Create a new instance; the parameters list is copied.
-     * 
-     *  @param SQL the SQL to execute (see {@link Connection#prepareStatement(java.lang.String)})
-     *  @param connection the JDBC connection to use
-     *  @param parameters list of {@link IParameter}
-     * 
-     **/
-    
-    public ParameterizedStatement(String SQL, Connection connection, List parameters) throws SQLException
-    {
-        _SQL = SQL;
-
-        _statement = connection.prepareStatement(SQL);
-
-        _parameters = (IParameter[]) parameters.toArray(new IParameter[parameters.size()]);
-
-        for (int i = 0; i < _parameters.length; i++)
-        {
-            // JDBC numbers things from 1, not 0.
-
-            _parameters[i].set(_statement, i + 1);
-        }
-    }
-
-    /**
-     * Returns the SQL associated with this statement.
-     *
-     **/
-
-    public String getSQL()
-    {
-        return _SQL;
-    }
-
-    /**
-     *  Returns the underlying or {@link PreparedStatement}.
-     *
-     **/
-
-    public Statement getStatement()
-    {
-        return _statement;
-    }
-
-    /**
-     *  Closes the underlying statement, and nulls the reference to it.
-     *
-     **/
-
-    public void close() throws SQLException
-    {
-        _statement.close();
-
-        _statement = null;
-        _SQL = null;
-    }
-
-    /**
-     *  Executes the statement as a query, returning a {@link ResultSet}.
-     *
-     **/
-
-    public ResultSet executeQuery() throws SQLException
-    {
-        if (LOG.isDebugEnabled())
-            LOG.debug("Executing query: " + this);
-
-        return _statement.executeQuery();
-    }
-
-    /**
-     *  Executes the statement as an update, returning the number of rows
-     *  affected.
-     *
-     **/
-
-    public int executeUpdate() throws SQLException
-    {
-        if (LOG.isDebugEnabled())
-            LOG.debug("Executing update: " + this);
-
-        return _statement.executeUpdate();
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer = new StringBuffer("ParameterizedStatement@");
-        buffer.append(Integer.toHexString(hashCode()));
-        buffer.append("[SQL=\n<");
-        buffer.append(_SQL);
-        buffer.append("\n>");
-
-        for (int i = 0; i < _parameters.length; i++)
-        {
-            IParameter parameter = _parameters[i];
-
-            buffer.append(" ?");
-            buffer.append(i + 1);
-            buffer.append('=');
-
-            buffer.append(parameter);
-        }
-
-        buffer.append(']');
-
-        return buffer.toString();
-    }
-
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/ShortParameter.java b/contrib/src/org/apache/tapestry/contrib/jdbc/ShortParameter.java
deleted file mode 100644
index 31cfea7..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/ShortParameter.java
+++ /dev/null
@@ -1,53 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-/**
- *  A wrapper around a short parameter.  
- *
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- *  @since 2.3
- * 
- **/
-
-public class ShortParameter implements IParameter
-{
-    private short _value;
-
-    public ShortParameter(short value)
-    {
-        _value = value;
-    }
-
-    public void set(PreparedStatement statement, int index) throws SQLException
-    {
-        statement.setShort(index, _value);
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer = new StringBuffer("Short<");
-        buffer.append(_value);
-        buffer.append('>');
-
-        return buffer.toString();
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/SimpleStatement.java b/contrib/src/org/apache/tapestry/contrib/jdbc/SimpleStatement.java
deleted file mode 100644
index 16df20f..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/SimpleStatement.java
+++ /dev/null
@@ -1,127 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- *  A wrapper around {@link Statement}.
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class SimpleStatement implements IStatement
-{
-    private static final Log LOG = LogFactory.getLog(SimpleStatement.class);
-
-    private String _sql;
-    private Statement _statement;
-
-    public SimpleStatement(String SQL, Connection connection) throws SQLException
-    {
-        _sql = SQL;
-        _statement = connection.createStatement();
-    }
-
-    public SimpleStatement(String SQL, Connection connection, int resultSetType, int resultSetConcurrency)
-        throws SQLException
-    {
-        _sql = SQL;
-        _statement = connection.createStatement(resultSetType, resultSetConcurrency);
-    }
-
-    /**
-     * Returns the SQL associated with this statement.
-     *
-     **/
-
-    public String getSQL()
-    {
-        return _sql;
-    }
-
-    /**
-     *  Returns the underlying {@link Statement}.
-     *
-     **/
-
-    public Statement getStatement()
-    {
-        return _statement;
-    }
-
-    /**
-     *  Closes the underlying statement, and nulls the reference to it.
-     *
-     **/
-
-    public void close() throws SQLException
-    {
-        _statement.close();
-
-        _statement = null;
-        _sql = null;
-    }
-
-    /**
-     *  Executes the statement as a query, returning a {@link ResultSet}.
-     *
-     **/
-
-    public ResultSet executeQuery() throws SQLException
-    {
-        if (LOG.isDebugEnabled())
-            LOG.debug("Executing query: " + this);
-
-        return _statement.executeQuery(_sql);
-    }
-
-    /**
-     *  Executes the statement as an update, returning the number of rows
-     *  affected.
-     *
-     **/
-
-    public int executeUpdate() throws SQLException
-    {
-        if (LOG.isDebugEnabled())
-            LOG.debug("Executing update: " + this);
-
-        return _statement.executeUpdate(_sql);
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer;
-
-        buffer = new StringBuffer("SimpleStatement@");
-        buffer.append(Integer.toHexString(hashCode()));
-
-        buffer.append("[SQL=<\n");
-        buffer.append(_sql);
-        buffer.append("\n>]");
-
-        return buffer.toString();
-    }
-
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/StatementAssembly.java b/contrib/src/org/apache/tapestry/contrib/jdbc/StatementAssembly.java
deleted file mode 100644
index 112e740..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/StatementAssembly.java
+++ /dev/null
@@ -1,480 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-
-/**
- *  Class for creating and executing JDBC statements.  Allows statements to be assembled
- *  incrementally (like a {@link StringBuffer}), but also tracks parameters, shielding
- *  the developer from the differences between constructing and 
- *  using a JDBC 
- *  {@link java.sql.Statement} and 
- *  a JDBC {@link java.sql.PreparedStatement}.  This class is somewhat skewed towards
- *  Oracle, which works more efficiently with prepared staments than
- *  simple SQL.
- * 
- *  <p>In addition, implements {@link #toString()} in a useful way (you can see the
- *  SQL and parameters), which is invaluable when debugging.
- * 
- *  <p>{@link #addParameter(int)} (and all overloaded versions of it for scalar types)
- *  adds a "?" to the statement and records the parameter value.
- * 
- *  <p>{@link #addParameter(Integer)} (and all overloaded version of it for wrapper
- *  types) does the same ... unless the value is null, in which case "NULL" is
- *  inserted into the statement.
- * 
- *  <p>{@link #addParameterList(int[], String)} (and all overloaded versions of it)
- *  simply invokes the appropriate {@link #addParameter(int)}, adding the
- *  separator in between parameters.
- *
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class StatementAssembly
-{
-    private StringBuffer _buffer = new StringBuffer();
-
-    private static final String NULL = "NULL";
-
-    public static final String SEP = ", ";
-
-    /**
-     *  List of {@link IParameter}
-     * 
-     **/
-
-    private List _parameters;
-
-    private int _lineLength;
-    private int _maxLineLength = 80;
-    private int _indent = 5;
-
-    /**
-     *  Default constructor; uses a maximum line length of 80 and an indent of 5.
-     *
-     **/
-
-    public StatementAssembly()
-    {
-    }
-
-    public StatementAssembly(int maxLineLength, int indent)
-    {
-        _maxLineLength = maxLineLength;
-        _indent = indent;
-    }
-
-    /**
-     *  Clears the assembly, preparing it for re-use.
-     * 
-     *  @since 1.0.7
-     * 
-     **/
-
-    public void clear()
-    {
-        _buffer.setLength(0);
-        _lineLength = 0;
-
-        if (_parameters != null)
-            _parameters.clear();
-    }
-
-    /**
-     *  Maximum length of a line.
-     *
-     **/
-
-    public int getMaxLineLength()
-    {
-        return _maxLineLength;
-    }
-
-    /**
-     *  Number of spaces to indent continuation lines by.
-     *
-     **/
-
-    public int getIndent()
-    {
-        return _indent;
-    }
-
-    /**
-     *  Adds text to the current line, unless that would make the line too long, in
-     *  which case a new line is started (and indented) before adding the text.
-     *
-     *  <p>Text is added as-is, with no concept of quoting.  To add arbitrary strings
-     *  (such as in a where clause), use {@link #addParameter(String)}.
-     *
-     *
-     **/
-
-    public void add(String text)
-    {
-        int textLength;
-
-        textLength = text.length();
-
-        if (_lineLength + textLength > _maxLineLength)
-        {
-            _buffer.append('\n');
-
-            for (int i = 0; i < _indent; i++)
-                _buffer.append(' ');
-
-            _lineLength = _indent;
-        }
-
-        _buffer.append(text);
-        _lineLength += textLength;
-    }
-    
-    public void add(short value)
-    {
-        add(Short.toString(value));
-    }
-    
-    public void add(int value)
-    {
-        add(Integer.toString(value));
-    }
-    
-    public void add(long value)
-    {
-        add(Long.toString(value));
-    }
-    
-    public void add(float value)
-    {
-        add(Float.toString(value));
-    }
-    
-    public void add(double value)
-    {
-        add(Double.toString(value));
-    }
-
-    /**
-     *  Adds a date value to a {@link StatementAssembly} converting
-     *  it to a {@link java.sql.Timestamp} first.
-     *
-     **/
-
-    public void addParameter(Date date)
-    {
-        if (date == null)
-        {
-            add("NULL");
-            return;
-        }
-
-        Calendar calendar = GregorianCalendar.getInstance();
-
-        calendar.setTime(date);
-        calendar.set(Calendar.MILLISECOND, 0);
-
-        Date adjusted = calendar.getTime();
-
-        Timestamp timestamp = new Timestamp(adjusted.getTime());
-
-        addParameter(timestamp);
-    }
-
-    /** 
-     *  Adds a separator (usually a comma and a space) to the current line, regardless
-     *  of line length.  This is purely aesthetic ... it just looks odd if a separator
-     *  gets wrapped to a new line by itself.
-     *
-     **/
-
-    public void addSep(String text)
-    {
-        _buffer.append(text);
-        _lineLength += text.length();
-    }
-
-    /**
-     *  Starts a new line, without indenting.
-     *
-     **/
-
-    public void newLine()
-    {
-        if (_buffer.length() != 0)
-            _buffer.append('\n');
-
-        _lineLength = 0;
-    }
-
-    /**
-     * Starts a new line, then adds the given text.
-     *
-     **/
-
-    public void newLine(String text)
-    {
-        if (_buffer.length() != 0)
-            _buffer.append('\n');
-
-        _buffer.append(text);
-
-        _lineLength = text.length();
-    }
-
-    public void addList(String[] items, String separator)
-    {
-        for (int i = 0; i < items.length; i++)
-        {
-            if (i > 0)
-                addSep(separator);
-
-            add(items[i]);
-        }
-    }
-
-    public void addParameterList(int[] items, String separator)
-    {
-        for (int i = 0; i < items.length; i++)
-        {
-            if (i > 0)
-                addSep(separator);
-
-            addParameter(items[i]);
-        }
-    }
-
-    public void addParameterList(Integer[] items, String separator)
-    {
-        for (int i = 0; i < items.length; i++)
-        {
-            if (i > 0)
-                addSep(separator);
-
-            addParameter(items[i]);
-        }
-    }
-
-    public void addParameterList(long[] items, String separator)
-    {
-        for (int i = 0; i < items.length; i++)
-        {
-            if (i > 0)
-                addSep(separator);
-
-            addParameter(items[i]);
-        }
-    }
-
-    public void addParameterList(Long[] items, String separator)
-    {
-        for (int i = 0; i < items.length; i++)
-        {
-            if (i > 0)
-                addSep(separator);
-
-            addParameter(items[i]);
-        }
-    }
-
-    public void addParameterList(String[] items, String separator)
-    {
-        for (int i = 0; i < items.length; i++)
-        {
-            if (i > 0)
-                addSep(separator);
-
-            addParameter(items[i]);
-        }
-    }
-
-    public void addParameterList(double[] items, String separator)
-    {
-        for (int i = 0; i < items.length; i++)
-        {
-            if (i > 0)
-                addSep(separator);
-
-            addParameter(items[i]);
-        }
-    }
-
-    public void addParameter(Object value)
-    {
-        if (value == null)
-            add(NULL);
-        else
-            addParameter(new ObjectParameter(value));
-    }
-
-    public void addParameter(Timestamp timestamp)
-    {
-        if (timestamp == null)
-            add(NULL);
-        else
-            addParameter(new TimestampParameter(timestamp));
-    }
-
-    public void addParameter(String value)
-    {
-        if (value == null)
-            add(NULL);
-        else
-            addParameter(new StringParameter(value));
-    }
-
-    public void addParameter(int value)
-    {
-        addParameter(new IntegerParameter(value));
-    }
-
-    public void addParameter(Integer value)
-    {
-        if (value == null)
-            add(NULL);
-        else
-            addParameter(value.intValue());
-    }
-
-    public void addParameter(long value)
-    {
-        addParameter(new LongParameter(value));
-    }
-
-    public void addParameter(Long value)
-    {
-        if (value == null)
-            add(NULL);
-        else
-            addParameter(value.longValue());
-    }
-
-    public void addParameter(float value)
-    {
-        addParameter(new FloatParameter(value));
-    }
-
-    public void addParameter(Float value)
-    {
-        if (value == null)
-            add(NULL);
-        else
-            addParameter(value.floatValue());
-    }
-
-    public void addParameter(double value)
-    {
-        addParameter(new DoubleParameter(value));
-    }
-
-    public void addParameter(Double value)
-    {
-        if (value == null)
-            add(NULL);
-        else
-            addParameter(value.doubleValue());
-    }
-
-    public void addParameter(short value)
-    {
-        addParameter(new ShortParameter(value));
-    }
-
-    public void addParameter(Short value)
-    {
-        if (value == null)
-            add(NULL);
-        else
-            addParameter(value.shortValue());
-    }
-
-    public void addParameter(boolean value)
-    {
-        addParameter(value ? BooleanParameter.TRUE : BooleanParameter.FALSE);
-    }
-
-    public void addParameter(Boolean value)
-    {
-        if (value == null)
-            add(NULL);
-        else
-            addParameter(value.booleanValue());
-    }
-
-    private void addParameter(IParameter parameter)
-    {
-        if (_parameters == null)
-            _parameters = new ArrayList();
-
-        _parameters.add(parameter);
-
-        add("?");
-    }
-
-    /**
-     *  Creates and returns an {@link IStatement} based on the SQL and parameters
-     *  acquired.
-     *
-     **/
-
-    public IStatement createStatement(Connection connection) throws SQLException
-    {
-        String sql = _buffer.toString();
-
-        if (_parameters == null || _parameters.isEmpty())
-            return new SimpleStatement(sql, connection);
-
-        return new ParameterizedStatement(sql, connection, _parameters);
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer = new StringBuffer("StatementAssembly@");
-
-        buffer.append(Integer.toHexString(hashCode()));
-        buffer.append("[SQL=\n<");
-        buffer.append(_buffer);
-        buffer.append("\n>");
-
-        if (_parameters != null)
-        {
-            int count = _parameters.size();
-            for (int i = 0; i < count; i++)
-            {
-                Object parameter = _parameters.get(i);
-
-                buffer.append(" ?");
-                buffer.append(i + 1);
-                buffer.append('=');
-
-                buffer.append(parameter);
-            }
-        }
-
-        buffer.append(']');
-
-        return buffer.toString();
-    }
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/StringParameter.java b/contrib/src/org/apache/tapestry/contrib/jdbc/StringParameter.java
deleted file mode 100644
index 088a2d7..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/StringParameter.java
+++ /dev/null
@@ -1,55 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.sql.Types;
-
-/**
- *  Used with String parameters.
- *
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- *
- **/
-
-public class StringParameter implements IParameter
-{
-    private String _value;
-
-    public StringParameter(String value)
-    {
-        _value = value;
-    }
-
-    public void set(PreparedStatement statement, int index) throws SQLException
-    {
-        if (_value == null)
-            statement.setNull(index, Types.VARCHAR);
-        else
-            statement.setString(index, _value);
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer = new StringBuffer("String<");
-        buffer.append(_value);
-        buffer.append('>');
-
-        return buffer.toString();
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/TimestampParameter.java b/contrib/src/org/apache/tapestry/contrib/jdbc/TimestampParameter.java
deleted file mode 100644
index c5bd8fc..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/TimestampParameter.java
+++ /dev/null
@@ -1,56 +0,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.
-
-package org.apache.tapestry.contrib.jdbc;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.sql.Timestamp;
-import java.sql.Types;
-
-/**
- *  Used with Timestamp parameters.
- *
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- *
- **/
-
-public class TimestampParameter implements IParameter
-{
-    private Timestamp _timestamp;
-
-    public TimestampParameter(Timestamp timestamp)
-    {
-        _timestamp = timestamp;
-    }
-
-    public void set(PreparedStatement statement, int index) throws SQLException
-    {
-        if (_timestamp == null)
-            statement.setNull(index, Types.TIMESTAMP);
-        else
-            statement.setTimestamp(index, _timestamp);
-    }
-
-    public String toString()
-    {
-        StringBuffer buffer = new StringBuffer("Timestamp<");
-        buffer.append(_timestamp);
-        buffer.append('>');
-
-        return buffer.toString();
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/jdbc/package.html b/contrib/src/org/apache/tapestry/contrib/jdbc/package.html
deleted file mode 100644
index 13983ad..0000000
--- a/contrib/src/org/apache/tapestry/contrib/jdbc/package.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<!-- $Id$ -->
-<html>
-<head>
-<title>Tapestry: Web Application Framework</title>
-</head>
-
-
-<body>
-
-<p>A set of classes that assist with dynamically generating JDBC SQL queries.  Importantly,
-they help hide the difference between a {@link java.sql.Statement} and
-{@link java.sql.PreparedStatement} ... in fact, using a
-{@link org.apache.tapestry.contrib.jdbc.StatementAssembly} you don't know in advance which
-you'll get, which is very handy when generating truly dynamic SQL.
-
-@author Howard Lewis Ship <a href="mailto:hlship@apache.org">hlship@apache.org</a>
-
-</body>
-</html>
diff --git a/contrib/src/org/apache/tapestry/contrib/link/AreaLinkRenderer.java b/contrib/src/org/apache/tapestry/contrib/link/AreaLinkRenderer.java
deleted file mode 100644
index d27f12a..0000000
--- a/contrib/src/org/apache/tapestry/contrib/link/AreaLinkRenderer.java
+++ /dev/null
@@ -1,46 +0,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.
-
-package org.apache.tapestry.contrib.link;
-
-import org.apache.tapestry.link.DefaultLinkRenderer;
-import org.apache.tapestry.link.ILinkRenderer;
-
-/**
- *  A subclass of {@link org.apache.tapestry.link.DefaultLinkRenderer} for
- *  the HTML area element.
- *
- *  @author David Solis
- *  @version $Id$
- *  @since 3.0
- **/
-public class AreaLinkRenderer extends DefaultLinkRenderer 
-{
-
-	/**
-	 *  A singleton for the area link. 
-	 **/
-
-	public static final ILinkRenderer SHARED_INSTANCE = new AreaLinkRenderer();
-
-	public String getElement() 
-	{
-		return "area";
-	}
-
-	public boolean getHasBody() 
-	{
-		return false;
-	}
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/link/PopupLinkRenderer.java b/contrib/src/org/apache/tapestry/contrib/link/PopupLinkRenderer.java
deleted file mode 100644
index b079b6d..0000000
--- a/contrib/src/org/apache/tapestry/contrib/link/PopupLinkRenderer.java
+++ /dev/null
@@ -1,88 +0,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.
-
-package org.apache.tapestry.contrib.link;
-
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.engine.ILink;
-import org.apache.tapestry.link.DefaultLinkRenderer;
-
-/**
- *  This renderer emits javascript to launch the link in a window.
- *
- *  @author David Solis
- *  @version $Id$
- *  @since 3.0.1
- **/
-public class PopupLinkRenderer extends DefaultLinkRenderer
-{
-
-	private String _windowName;
-
-	private String _features;
-
-	public PopupLinkRenderer()
-	{
-	}
-
-	/**
-	 * Initializes the name and features for javascript window.open function.
-	 *
-	 * @param windowName the window name
-	 * @param features   the window features
-	 */
-	public PopupLinkRenderer(String windowName, String features)
-	{
-		_windowName = windowName;
-		_features = features;
-	}
-
-	/**
-	 * @see DefaultLinkRenderer#constructURL(org.apache.tapestry.engine.ILink, String, org.apache.tapestry.IRequestCycle)
-	 */
-	protected String constructURL(ILink link, String anchor, IRequestCycle cycle)
-	{
-      if (cycle.isRewinding()) {
-        return null;
-      }
-      
-		String url = link.getURL(anchor, true);
-		return "javascript: w = window.open(" + normalizeString(url) + ", " + normalizeString(getWindowName()) + ", " + normalizeString(getFeatures()) + "); w.focus();";
-	}
-
-	private String normalizeString(String str)
-	{
-		return str == null ? "''" : "'" + str + "'";
-	}
-
-	public String getWindowName()
-	{
-		return _windowName;
-	}
-
-	public void setWindowName(String windowName)
-	{
-		_windowName = windowName;
-	}
-
-	public String getFeatures()
-	{
-		return _features;
-	}
-
-	public void setFeatures(String features)
-	{
-		_features = features;
-	}
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/Palette.html b/contrib/src/org/apache/tapestry/contrib/palette/Palette.html
deleted file mode 100644
index 85e5095..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/Palette.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-<table jwcid="@Any" element="table" class="ognl:tableClass">
-  <tr>
-  	<th class="available-header">
- <span jwcid="@RenderBlock" block="ognl:availableTitleBlock"/>
- <span jwcid="defaultAvailableTitleBlock@Block"><span key="title.available"/></span>
-</th>
-  	<td element="td" class="controls" rowspan="2">
-  	    <a jwcid="@Any" 
-  	    	element="a" 
-  	    	href="ognl:symbols.selectOnClickScript"><img jwcid="@Image"
-  	    		image="ognl:selectImage"
-  	    		name="ognl:symbols.selectImageName"
-  	    		alt="message:tooltip.select"/></a>
-
-    <a jwcid="@Any" element="a"
-    	href="ognl:symbols.deselectOnClickScript"><img jwcid="@Image"
-    		image="ognl:deselectImage"
-    		name="ognl:symbols.deselectImageName"
-    		alt="message:tooltip.deselect"/></a>
-    
-    <span jwcid="@Conditional" condition="ognl:sortUser">
-
-    <a jwcid="@Any" element="a"
-    	href="ognl:symbols.upOnClickScript"><img jwcid="@Image" 
-    		image="ognl:upImage"
-    		name="ognl:symbols.upImageName"
-    		alt="message:tooltip.moveup"/></a>
-
-    <a jwcid="@Any" element="a"
-    	href="ognl:symbols.downOnClickScript"><img jwcid="@Image"
-    		image="ognl:downImage"
-    		name="ognl:symbols.downImageName"
-    		alt="message:tooltip.movedown"/></a>
-    </span>
-
-    </td>
-  	<th class="selected-header">
- <span jwcid="@RenderBlock" block="ognl:selectedTitleBlock"/>
- <span jwcid="defaultSelectedTitleBlock@Block"><span key="title.selected"/></span>
-    </th>
-  </tr>
-  <tr>
-    <td class="available-cell"><select jwcid="@Delegator" delegate="ognl:availableColumn"/></td>
-    <td class="selected-cell"><select jwcid="@Delegator" delegate="ognl:selectedColumn"/></td>
-  </tr>
-</table>
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/Palette.java b/contrib/src/org/apache/tapestry/contrib/palette/Palette.java
deleted file mode 100644
index 330c312..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/Palette.java
+++ /dev/null
@@ -1,583 +0,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.
-
-package org.apache.tapestry.contrib.palette;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry.ApplicationRuntimeException;
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IAsset;
-import org.apache.tapestry.IEngine;
-import org.apache.tapestry.IForm;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.IResourceLocation;
-import org.apache.tapestry.IScript;
-import org.apache.tapestry.Tapestry;
-import org.apache.tapestry.components.Block;
-import org.apache.tapestry.engine.IScriptSource;
-import org.apache.tapestry.form.Form;
-import org.apache.tapestry.form.FormEventType;
-import org.apache.tapestry.form.IFormComponent;
-import org.apache.tapestry.form.IPropertySelectionModel;
-import org.apache.tapestry.html.Body;
-import org.apache.tapestry.request.RequestContext;
-import org.apache.tapestry.valid.IValidationDelegate;
-
-/**
- *  A component used to make a number of selections from a list.  The general look
- *  is a pair of &lt;select&gt; elements.  with a pair of buttons between them.
- *  The right element is a list of values that can be selected.  The buttons move
- *  values from the right column ("available") to the left column ("selected").
- *
- *  <p>This all takes a bit of JavaScript to accomplish (quite a bit), which means
- *  a {@link Body} component must wrap the Palette. If JavaScript is not enabled
- *  in the client browser, then the user will be unable to make (or change) any selections.
- *
- *  <p>Cross-browser compatibility is not perfect.  In some cases, the 
- *  {@link org.apache.tapestry.contrib.form.MultiplePropertySelection} component
- *  may be a better choice.
- * 
- *  <p><table border=1>
- * <tr>
- *    <td>Parameter</td>
- *    <td>Type</td>
- *    <td>Direction </td>
- *    <td>Required</td>
- *    <td>Default</td>
- *    <td>Description</td>
- * </tr>
- *
- *  <tr>
- *    <td>selected</td>
- *  <td>{@link List}</td>
- *  <td>in</td>
- *  <td>yes</td>
- *  <td>&nbsp;</td>
- *  <td>A List of selected values.  Possible selections are defined by the model; this
- *  should be a subset of the possible values.  This may be null when the
- *  component is renderred.  When the containing form is submitted,
- *  this parameter is updated with a new List of selected objects.
- *
- *  <p>The order may be set by the user, as well, depending on the
- *  sortMode parameter.</td> </tr>
- *
- * <tr>
- * <td>model</td>
- *  <td>{@link IPropertySelectionModel}</td>
- *  <td>in</td>
- *  <td>yes</td>
- *  <td>&nbsp;</td>
- *  <td>Works, as with a {@link org.apache.tapestry.form.PropertySelection} component, to define the
- *  possible values.
- *  </td> </tr>
- *
- *  <tr>
- *  <td>sort</td> 
- *  <td>{@link SortMode}</td> 
- *  <td>in</td>
- *  <td>no</td> 
- *  <td>{@link SortMode#NONE}</td>
- *  <td>
- *  Controls automatic sorting of the options. </td>
- *  </tr>
- *
- * <tr>
- *  <td>rows</td>
- *  <td>int</td> 
- *  <td>in</td> 
- *  <td>no</td> 
- *  <td>10</td>
- *  <td>The number of rows that should be visible in the Pallete's &lt;select&gt;
- *  elements.
- *  </td> </tr>
- *
- * <tr>
- *  <td>tableClass</td>
- *  <td>{@link String}</td> 
- *  <td>in</td>
- *  <td>no</td> 
- *  <td>tapestry-palette</td>
- *  <td>The CSS class for the table which surrounds the other elements of
- *  the Palette.</td> </tr>
- *
- * <tr>
- *  <td>selectedTitleBlock</td>
- *  <td>{@link Block}</td>
- *  <td>in</td> 
- *  <td>no</td> 
- *  <td>"Selected"</td>
- *  <td>If specified, allows a {@link Block} to be placed within
- *  the &lt;th&gt; reserved for the title above the selected items
- *  &lt;select&gt; (on the right).  This allows for images or other components to
- *  be placed there.  By default, the simple word <code>Selected</code>
- *  is used.</td> </tr>
- *
- * <tr>
- *  <td>availableTitleBlock</td>
- *  <td>{@link Block}</td>
- *  <td>in</td> 
- *  <td>no</td> 
- *  <td>"Available"</td>
- *  <td>As with selectedTitleBlock, but for the left column, of items
- *  which are available to be selected.  The default is the word
- *  <code>Available</code>. </td> </tr>
- *
- *  <tr>
- *  <td>selectImage
- * <br>selectDisabledImage
- * <br>deselectImage
- * <br>deselectDisabledImage
- * <br>upImage
- * <br>upDisabledImage
- * <br>downImage
- * <br>downDisabledImage
- *  </td>
- *  <td>{@link IAsset}</td>
- *  <td>in</td>
- *  <td>no</td> <td>&nbsp;</td>
- *  <td>If any of these are specified then they override the default images provided
- *  with the component.  This allows the look and feel to be customized relatively easily.
- *
- *  <p>The most common reason to replace the images is to deal with backgrounds.  The default
- *  images are anti-aliased against a white background.  If a colored or patterned background
- *  is used, the default images will have an ugly white fringe.  Until all browsers have full
- *  support for PNG (which has a true alpha channel), it is necessary to customize the images
- *  to match the background.
- *
- *      </td> </tr>
- *
- * </table>
- *
- * <p>A Palette requires some CSS entries to render correctly ... especially
- * the middle column, which contains the two or four buttons for moving selections
- * between the two columns.  The width and alignment of this column must be set
- * using CSS.  Additionally, CSS is commonly used to give the Palette columns
- * a fixed width, and to dress up the titles.  Here is an example of some CSS
- * you can use to format the palette component:
- * 
- * <pre>
- * TABLE.tapestry-palette TH
- * {
- *   font-size: 9pt;
- *   font-weight: bold;
- *   color: white;
- *   background-color: #330066;
- *   text-align: center;
- * }
- *
- * TD.available-cell SELECT
- * {
- *   font-weight: normal;
- *   background-color: #FFFFFF;
- *   width: 200px;
- * }
- * 
- * TD.selected-cell SELECT
- * {
- *   font-weight: normal;
- *   background-color: #FFFFFF;
- *   width: 200px;
- * }
- * 
- * TABLE.tapestry-palette TD.controls
- * {
- *   text-align: center;
- *   vertical-align: middle;
- *   width: 60px;
- * }
- *  </pre>
- *
- *  @author Howard Lewis Ship
- */
-
-public abstract class Palette extends BaseComponent implements IFormComponent
-{
-    private static final int DEFAULT_ROWS = 10;
-    private static final int MAP_SIZE = 7;
-    private static final String DEFAULT_TABLE_CLASS = "tapestry-palette";
-
-    /**
-     *  A set of symbols produced by the Palette script.  This is used to
-     *  provide proper names for some of the HTML elements (&lt;select&gt; and
-     *  &lt;button&gt; elements, etc.).
-     *
-     */
-
-    private Map _symbols;
-
-    /**
-     *  A cached copy of the script used with the component.
-     *
-     */
-
-    private IScript _script;
-
-    /** @since 3.0 **/
-    public abstract void setAvailableColumn(PaletteColumn column);
-
-    /** @since 3.0 **/
-    public abstract void setSelectedColumn(PaletteColumn column);
-
-    protected void finishLoad()
-    {
-        setSelectedTitleBlock((Block) getComponent("defaultSelectedTitleBlock"));
-        setAvailableTitleBlock((Block) getComponent("defaultAvailableTitleBlock"));
-
-        setSelectImage(getAsset("Select"));
-        setSelectDisabledImage(getAsset("SelectDisabled"));
-        setDeselectImage(getAsset("Deselect"));
-        setDeselectDisabledImage(getAsset("DeselectDisabled"));
-        setUpImage(getAsset("Up"));
-        setUpDisabledImage(getAsset("UpDisabled"));
-        setDownImage(getAsset("Down"));
-        setDownDisabledImage(getAsset("DownDisabled"));
-
-        setTableClass(DEFAULT_TABLE_CLASS);
-        setRows(DEFAULT_ROWS);
-        setSort(SortMode.NONE);
-    }
-
-    public abstract String getName();
-    public abstract void setName(String name);
-
-    public abstract IForm getForm();
-    public abstract void setForm(IForm form);
-
-    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        IForm form = Form.get(getPage().getRequestCycle());
-
-        if (form == null)
-            throw new ApplicationRuntimeException(
-                "Palette component must be wrapped by a Form.",
-                this,
-                null,
-                null);
-
-        setForm(form);
-
-        IValidationDelegate delegate = form.getDelegate();
-
-        if (delegate != null)
-            delegate.setFormComponent(this);
-
-        setName(form.getElementId(this));
-
-        if (form.isRewinding())
-            handleSubmission(cycle);
-
-        // Don't do any additional work if rewinding
-        // (some other action or form on the page).
-
-        if (!cycle.isRewinding())
-        {
-            // Lots of work to produce JavaScript and HTML for this sucker.
-
-            _symbols = new HashMap(MAP_SIZE);
-
-            runScript(cycle);
-
-            // Output symbol 'formSubmitFunctionName' is the name
-            // of a JavaScript function to execute when the form
-            // is submitted.  This is also key to the operation
-            // of the PropertySelection.
-
-            form.addEventHandler(
-                FormEventType.SUBMIT,
-                (String) _symbols.get("formSubmitFunctionName"));
-
-            constructColumns();
-        }
-
-        super.renderComponent(writer, cycle);
-    }
-
-    protected void cleanupAfterRender(IRequestCycle cycle)
-    {
-        _symbols = null;
-
-        setAvailableColumn(null);
-        setSelectedColumn(null);
-
-        super.cleanupAfterRender(cycle);
-    }
-
-    /**
-     *  Executes the associated script, which generates all the JavaScript to
-     *  support this Palette.
-     *
-     */
-    private void runScript(IRequestCycle cycle)
-    {
-        // Get the script, if not already gotten.  Scripts are re-entrant, so it is
-        // safe to share this between instances of Palette.
-
-        if (_script == null)
-        {
-            IEngine engine = getPage().getEngine();
-            IScriptSource source = engine.getScriptSource();
-
-            IResourceLocation scriptLocation =
-                getSpecification().getSpecificationLocation().getRelativeLocation("Palette.script");
-
-            _script = source.getScript(scriptLocation);
-        }
-
-        Body body = Body.get(cycle);
-        if (body == null)
-            throw new ApplicationRuntimeException(
-                "Palette component must be wrapped by a Body.",
-                this,
-                null,
-                null);
-
-        setImage(body, cycle, "selectImage", getSelectImage());
-        setImage(body, cycle, "selectDisabledImage", getSelectDisabledImage());
-        setImage(body, cycle, "deselectImage", getDeselectImage());
-        setImage(body, cycle, "deselectDisabledImage", getDeselectDisabledImage());
-
-        if (isSortUser())
-        {
-            setImage(body, cycle, "upImage", getUpImage());
-            setImage(body, cycle, "upDisabledImage", getUpDisabledImage());
-            setImage(body, cycle, "downImage", getDownImage());
-            setImage(body, cycle, "downDisabledImage", getDownDisabledImage());
-        }
-
-        _symbols.put("palette", this);
-
-        _script.execute(cycle, body, _symbols);
-    }
-
-    /**
-     *  Extracts its asset URL, sets it up for
-     *  preloading, and assigns the preload reference as a script symbol.
-     *
-     */
-    private void setImage(Body body, IRequestCycle cycle, String symbolName, IAsset asset)
-    {
-        String URL = asset.buildURL(cycle);
-        String reference = body.getPreloadedImageReference(URL);
-
-        _symbols.put(symbolName, reference);
-    }
-
-    public Map getSymbols()
-    {
-        return _symbols;
-    }
-
-    /**
-     *  Constructs a pair of {@link PaletteColumn}s: the available and selected options.
-     *
-     */
-    private void constructColumns()
-    {
-        // Build a Set around the list of selected items.
-
-        List selected = getSelected();
-
-        if (selected == null)
-            selected = Collections.EMPTY_LIST;
-
-        SortMode sortMode = getSort();
-
-        boolean sortUser = sortMode == SortMode.USER;
-
-        List selectedOptions = null;
-
-        if (sortUser)
-        {
-            int count = selected.size();
-            selectedOptions = new ArrayList(count);
-
-            for (int i = 0; i < count; i++)
-                selectedOptions.add(null);
-        }
-
-        PaletteColumn availableColumn =
-            new PaletteColumn((String) _symbols.get("availableName"), getRows());
-        PaletteColumn selectedColumn = new PaletteColumn(getName(), getRows());
-
-        // Each value specified in the model will go into either the selected or available
-        // lists.
-
-        IPropertySelectionModel model = getModel();
-
-        int count = model.getOptionCount();
-
-        for (int i = 0; i < count; i++)
-        {
-            Object optionValue = model.getOption(i);
-
-            PaletteOption o = new PaletteOption(model.getValue(i), model.getLabel(i));
-
-            int index = selected.indexOf(optionValue);
-            boolean isSelected = index >= 0;
-
-            if (sortUser && isSelected)
-            {
-                selectedOptions.set(index, o);
-                continue;
-            }
-
-            PaletteColumn c = isSelected ? selectedColumn : availableColumn;
-
-            c.addOption(o);
-        }
-
-        if (sortUser)
-        {
-            Iterator i = selectedOptions.iterator();
-            while (i.hasNext())
-            {
-                PaletteOption o = (PaletteOption) i.next();
-                selectedColumn.addOption(o);
-            }
-        }
-
-        if (sortMode == SortMode.VALUE)
-        {
-            availableColumn.sortByValue();
-            selectedColumn.sortByValue();
-        }
-        else
-            if (sortMode == SortMode.LABEL)
-            {
-                availableColumn.sortByLabel();
-                selectedColumn.sortByLabel();
-            }
-
-        setAvailableColumn(availableColumn);
-        setSelectedColumn(selectedColumn);
-    }
-
-    private void handleSubmission(IRequestCycle cycle)
-    {
-        RequestContext context = cycle.getRequestContext();
-        String[] values = context.getParameters(getName());
-
-        int count = Tapestry.size(values);
-
-        // Build a new ArrayList and fill it with the selected 
-        // objects, if any. 
-
-        List selected = new ArrayList(count);
-        IPropertySelectionModel model = getModel();
-
-        for (int i = 0; i < count; i++)
-        {
-            String value = values[i];
-            Object option = model.translateValue(value);
-
-            selected.add(option);
-        }
-
-        setSelected(selected);
-    }
-
-    public boolean isSortUser()
-    {
-        return getSort() == SortMode.USER;
-    }
-
-    /**
-     *  Returns null, but may make sense to implement a displayName parameter.
-     * 
-     */
-    public String getDisplayName()
-    {
-        return null;
-    }
-
-    public abstract Block getAvailableTitleBlock();
-
-    public abstract void setAvailableTitleBlock(Block availableTitleBlock);
-
-    public abstract IAsset getDeselectDisabledImage();
-
-    public abstract void setDeselectDisabledImage(IAsset deselectDisabledImage);
-
-    public abstract IAsset getDeselectImage();
-
-    public abstract void setDeselectImage(IAsset deselectImage);
-
-    public abstract IAsset getDownDisabledImage();
-
-    public abstract void setDownDisabledImage(IAsset downDisabledImage);
-
-    public abstract IAsset getDownImage();
-
-    public abstract void setDownImage(IAsset downImage);
-
-    public abstract IPropertySelectionModel getModel();
-
-    public abstract int getRows();
-
-    public abstract void setRows(int rows);
-
-    public abstract IAsset getSelectDisabledImage();
-
-    public abstract void setSelectDisabledImage(IAsset selectDisabledImage);
-
-    public abstract Block getSelectedTitleBlock();
-
-    public abstract void setSelectedTitleBlock(Block selectedTitleBlock);
-
-    public abstract IAsset getSelectImage();
-
-    public abstract void setSelectImage(IAsset selectImage);
-
-    public abstract SortMode getSort();
-
-    public abstract void setSort(SortMode sort);
-
-    public abstract void setTableClass(String tableClass);
-
-    public abstract IAsset getUpDisabledImage();
-
-    public abstract void setUpDisabledImage(IAsset upDisabledImage);
-
-    public abstract IAsset getUpImage();
-
-    public abstract void setUpImage(IAsset upImage);
-
-    /**
-     *  Returns false.  Palette components are never disabled.
-     * 
-     *  @since 2.2
-     * 
-     */
-
-    public boolean isDisabled()
-    {
-        return false;
-    }
-
-    /** @since 2.2 **/
-
-    public abstract List getSelected();
-
-    /**  @since 2.2 **/
-
-    public abstract void setSelected(List selected);
-
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/Palette.jwc b/contrib/src/org/apache/tapestry/contrib/palette/Palette.jwc
deleted file mode 100644
index 8b130c9..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/Palette.jwc
+++ /dev/null
@@ -1,88 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.palette.Palette" 
-	allow-body="no" allow-informal-parameters="no">
-	
-  <description>
-  A complex component used to manage multiple selection of items from a list.
-  </description>
-  
-  <parameter name="selectedTitleBlock" 
-  	type="org.apache.tapestry.components.Block" 
-  	required="no"
-  	direction="in"/>
-  
-  <parameter name="availableTitleBlock" 
-   	type="org.apache.tapestry.components.Block" 
-   	required="no"
-   	direction="in"/>
-   	
-  <parameter name="model" 
-  	type="org.apache.tapestry.form.IPropertySelectionModel" 
-  	required="yes"
-  	direction="in"/>
-  
-  <parameter name="selected" type="java.util.List" 
-  	required="yes" direction="form"/>
-  
-  <parameter name="sort" 
-  	type="org.apache.tapestry.contrib.palette.SortMode" 
-  	required="no"
-  	direction="in"/>
-  
-  <parameter name="rows" 
-   	type="int" 
-   	required="no"
-   	direction="in"/>
-  
-  <parameter name="tableClass" 
-  	type="java.lang.String" 
-  	required="no"
-  	direction="in"/>
-  
-  
-  <parameter name="selectImage" type="org.apache.tapestry.IAsset" direction="in"/>
-  <parameter name="selectDisabledImage" type="org.apache.tapestry.IAsset" direction="in"/>
-  <parameter name="deselectImage" type="org.apache.tapestry.IAsset" direction="in"/>
-  <parameter name="deselectDisabledImage" type="org.apache.tapestry.IAsset" direction="in"/>
-  <parameter name="upImage" type="org.apache.tapestry.IAsset" direction="in"/>
-  <parameter name="upDisabledImage" type="org.apache.tapestry.IAsset" direction="in"/>
-  <parameter name="downImage" type="org.apache.tapestry.IAsset" direction="in"/>
-  <parameter name="downDisabledImage" type="org.apache.tapestry.IAsset" direction="in"/>
-    
-  <property-specification name="name" type="java.lang.String"/>
-  <property-specification name="form" type="org.apache.tapestry.IForm"/>
-  
-  <property-specification name="selectedColumn" type="org.apache.tapestry.contrib.palette.PaletteColumn"/>
-  <property-specification name="availableColumn" type="org.apache.tapestry.contrib.palette.PaletteColumn"/>
-  
-  
-  <private-asset name="Select" resource-path="select_right.gif"/>
-  <private-asset name="SelectDisabled" resource-path="select_right_off.gif"/>
-  <private-asset name="Deselect" resource-path="deselect_left.gif"/>
-  <private-asset name="DeselectDisabled" resource-path="deselect_left_off.gif"/>
-  <private-asset name="Up" resource-path="move_up.gif"/>
-  <private-asset name="UpDisabled" resource-path="move_up_off.gif"/>
-  <private-asset name="Down" resource-path="move_down.gif"/>
-  <private-asset name="DownDisabled" resource-path="move_down_off.gif"/>
-  
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/Palette.properties b/contrib/src/org/apache/tapestry/contrib/palette/Palette.properties
deleted file mode 100644
index 6056da7..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/Palette.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-# $Id$
-title.available=Available
-title.selected=Selected
-
-tooltip.select=Select
-tooltip.deselect=Deselect
-tooltip.moveup=Move Up
-tooltip.movedown=Move Down
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/Palette.script b/contrib/src/org/apache/tapestry/contrib/palette/Palette.script
deleted file mode 100644
index 848346c..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/Palette.script
+++ /dev/null
@@ -1,349 +0,0 @@
-<?xml version="1.0"?>
-<!-- $Id$ -->
-<!DOCTYPE script PUBLIC
-	"-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
-	"http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd">
-<script>
-<!-- 
-
-input symbols:
-  palette - the Palette instance
-  selectImage - reference to the select image
-  selectDisabledImage - referece to the disabled select image  
-  deselectImage - reference to the deselect image
-  deselectDisabledImage - reference to the disbled deselect image
-  upImage - reference to the move up image
-  upDisabledImage - reference to the disabled move up image
-  downImage - reference to the move down image
-  downDisabledImage - reference to the disabled move down image
-
-Note: "reference" means the result of Body.getPreloadedImageReference().  The
-up and down images are only needed if user sorting is enabled.
-
-output symbols:
-  formSubmitFunctionName - name of a function to be executed when the form submits
-  availableName - the name of the available element
-  selectImageName - the name to use for the select image (inside the select link)
-  selectOnClickScript - the script to assign to the select link's onclick attribute
-  deselectOnClickScript - the script to assign to the deselect link's onclick attribute
-  deselectImageName - the name to use for the deselect image (inside the deselect link)
-  upImageName - the name of the up image (inside the up link)
-  downImageName the name of the move down image (inside the down link)
-  upOnClickScript - the script to assign to the up link's onclick attribute
-  downOnClickScript - the script to assign to the down link's onclick attribute
--->
-
-<include-script resource-path="/org/apache/tapestry/html/PracticalBrowserSniffer.js"/>
-<include-script resource-path="/org/apache/tapestry/contrib/palette/PaletteFunctions.js"/>
-
-<input-symbol key="palette" class="org.apache.tapestry.contrib.palette.Palette" required="yes"/>
-<input-symbol key="selectImage" class="java.lang.String" required="yes"/>
-<input-symbol key="selectDisabledImage" class="java.lang.String" required="yes"/>
-<input-symbol key="deselectImage" class="java.lang.String" required="yes"/>
-<input-symbol key="deselectDisabledImage" class="java.lang.String" required="yes"/>
-<input-symbol key="upImage" class="java.lang.String"/>
-<input-symbol key="upDisabledImage" class="java.lang.String"/>
-<input-symbol key="downImage" class="java.lang.String"/>
-<input-symbol key="downDisabledImage" class="java.lang.String"/>
-
-<set key="formName" expression="palette.form.name"/>
-<set key="name" expression="palette.name"/>
-<set key="sortLabel" expression="palette.sort == @org.apache.tapestry.contrib.palette.SortMode@LABEL"/>
-<set key="sortValue" expression="palette.sort == @org.apache.tapestry.contrib.palette.SortMode@VALUE"/>
-<set key="sortUser" expression="palette.sort == @org.apache.tapestry.contrib.palette.SortMode@USER"/>
-
-
-<!-- baseName - base name from which other names are generated -->
-
-<let key="baseName" unique="yes">
-  ${name}
-</let>
-
-<let key="buttons">
-  ${baseName}$buttons
-</let>
-
-<let key="selectDisabled">
-  ${buttons}.selectDisabled
-</let>
-
-<let key="deselectDisabled">
-  ${buttons}.deselectDisabled
-</let>
-
-<let key="upDisabled">
-  ${buttons}.upDisabled
-</let>
-
-<let key="downDisabled">
-  ${buttons}.downDisabled
-</let>
-
-<let key="availableName">
-  ${name}$avail
-</let>
-
-<let key="updateFunctionName">
-  update_${baseName}
-</let>
-
-<let key="selectFunctionName">
-  select_${baseName}
-</let>
-
-<let key="selectOnClickScript">
-  javascript:${selectFunctionName}();
-</let>
-
-<let key="deselectFunctionName">
-  deselect_${baseName}
-</let>
-
-<let key="deselectOnClickScript">
-  javascript:${deselectFunctionName}();
-</let>
-
-<let key="formSubmitFunctionName">
-  onsubmit_${baseName}
-</let>
-
-<let key="selectImageName">
-  ${baseName}$selectImage
-</let>
-
-<let key="selectImagePath">
-  document.${selectImageName}
-</let>
-
-<let key="deselectImageName">
-  ${baseName}$deselectImage
-</let>
-
-<let key="deselectImagePath">
-  document.${deselectImageName}
-</let>
-
-<let key="formPath">
-  document.${formName}
-</let>
-
-<let key="selectedPath">
-  ${formPath}.${name}
-</let>
-
-<let key="selectedChangeFunctionName">
-  onChange_${baseName}_selected
-</let>
-
-<let key="availablePath">
-  ${formPath}.${availableName}
-</let>
-
-<let key="availableChangeFunctionName">
-  onChange_${baseName}_available
-</let>
-
-
-<let key="upImageName">
-  ${baseName}$upimage
-</let>
-
-<let key="upImagePath">
-  document.${upImageName}
-</let>
-
-<let key="downImageName">
-  ${baseName}$downimage
-</let>
-
-<let key="downImagePath">
-  document.${downImageName}
-</let>
-
-<let key="moveUpFunctionName">
-  moveup_${baseName}
-</let>
-
-<let key="upOnClickScript">
-  javascript:${moveUpFunctionName}();
-</let>
-
-<let key="moveDownFunctionName">
-  movedown_${baseName}
-</let>
-
-<let key="downOnClickScript">
-  javascript:${moveDownFunctionName}();
-</let>
-
-
-<body>
-
-<!-- A variable that is used to track which of the buttons are enabled
-     or disabled. All of the buttons are disabled until the page finishes
-     loading, at which point the update function will determine which
-     can be used. -->
-     
-var ${buttons} = new Object();
-${selectDisabled} = true;
-${deselectDisabled} = true;
-<if expression="sortUser">
-${upDisabled} = true;
-${downDisabled} = true;
-</if>
-
-function ${updateFunctionName}()
-{
-  var disabled = ${availablePath}.selectedIndex &lt; 0;
-  
-  ${selectDisabled} = disabled;
- 
-  if (document.images)
-    ${selectImagePath}.src =
-      disabled ? ${selectDisabledImage}
-               : ${selectImage};
-
-  var selected = ${selectedPath};
-  var index = selected.selectedIndex;
-
-  disabled = index &lt; 0;
-  ${deselectDisabled} = disabled;
- 
-  if (document.images)
-    ${deselectImagePath}.src =
-      disabled ? ${deselectDisabledImage}
-               : ${deselectImage};   
-<if expression="sortUser">
-  var upImage = ${upImagePath};
-  var downImage = ${downImagePath};
-  
-  ${upDisabled} = true;
-  ${downDisabled} = true;
-  
-  if (document.images)
-  {
-    upImage.src = ${upDisabledImage};
-    downImage.src = ${downDisabledImage};
-  }
-  
-  <!-- If there's no selection in the "selected" column, then leave
-       both buttons disabled. -->
-       
-  if (disabled)
-    return;
- 
-  <!-- Search for a second selected item -->
-  
-  for (var i = index + 1; i &lt; selected.options.length; i++)
-  {
-    <!-- Found a second selected option, so leave buttons disabled. -->
-    if (selected.options[i].selected)
-    return;
-  }
-  
-  ${upDisabled} = (index == 0);
-  ${downDisabled} = (index == selected.options.length - 1);  
-  
-  if (document.images)
-  {
-    if (!${upDisabled})
-      upImage.src = ${upImage};
-
-    if (!${downDisabled})
-      downImage.src = ${downImage};
-  }
-</if>  
-}
-
-function ${selectFunctionName}()
-{
- if (${selectDisabled})
-    return;
-    
-  var source = ${availablePath};
-  var target = ${selectedPath};
-     
-  palette_transfer_selections(source, target);
-<if expression="sortLabel">
-  palette_sort_by_label(target);
-</if>
-<if expression="sortValue">
-  palette_sort_by_value(target);
-</if>
-  ${updateFunctionName}();
-}
-
-function ${deselectFunctionName}()
-{
-  if (${deselectDisabled})
-    return;
-  
-  var source = ${selectedPath};
-  var target = ${availablePath};
-  
-  palette_transfer_selections(source, target);
-<if expression="sortLabel">
-  palette_sort_by_label(target);
-</if>
-<if expression="sortValue">
-  palette_sort_by_value(target);
-</if>
-  ${updateFunctionName}();  
-}
-
-function ${formSubmitFunctionName}()
-{
-  palette_clear_selections(${availablePath});
-  palette_select_all(${selectedPath});
-  
-  return true;
-}
-<if expression="sortUser">
-function ${moveUpFunctionName}()
-{
-  if (${upDisabled})
-    return;
-    
-  var element = ${selectedPath};
-  var options = element.options;
-    
-  palette_swap_options(options, element.selectedIndex, element.selectedIndex - 1);
-  
-  ${updateFunctionName}();
-}
-
-function ${moveDownFunctionName}()
-{
-  if (${downDisabled})
-    return;
-    
-  var element = ${selectedPath};
-  var options = element.options;
-  
-  palette_swap_options(options, element.selectedIndex, element.selectedIndex + 1);
-  
-  ${updateFunctionName}();
-}
-</if>
-function ${selectedChangeFunctionName}()
-{
-  palette_clear_selections(${availablePath});
-  ${updateFunctionName}();
-}
-
-function ${availableChangeFunctionName}()
-{
-  palette_clear_selections(${selectedPath});
-  ${updateFunctionName}();
-}
-</body>
-
-<initialization>
-
-${selectedPath}.onchange = ${selectedChangeFunctionName};
-${selectedPath}.ondblclick = ${deselectFunctionName};
-${availablePath}.onchange = ${availableChangeFunctionName};
-${availablePath}.ondblclick = ${selectFunctionName};
-
-</initialization>
-</script>
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/PaletteColumn.java b/contrib/src/org/apache/tapestry/contrib/palette/PaletteColumn.java
deleted file mode 100644
index 89aae9a..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/PaletteColumn.java
+++ /dev/null
@@ -1,118 +0,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.
-
-package org.apache.tapestry.contrib.palette;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-
-/**
- * One of the two columns in a Palette component: the left column lists
- * available options, the right column lists the selected columns.
- *
- * @author Howard Lewis Ship
- * @version $Id$
- */
-public class PaletteColumn implements IRender
-{
-    private String _name;
-    private int _rows;
-    private List _options = new ArrayList();
-
-    private static class ValueComparator implements Comparator
-    {
-        public int compare(Object o1, Object o2)
-        {
-            PaletteOption option1 = (PaletteOption) o1;
-            PaletteOption option2 = (PaletteOption) o2;
-
-            return option1.getValue().compareTo(option2.getValue());
-        }
-    }
-
-    private static class LabelComparator implements Comparator
-    {
-        public int compare(Object o1, Object o2)
-        {
-            PaletteOption option1 = (PaletteOption) o1;
-            PaletteOption option2 = (PaletteOption) o2;
-
-            return option1.getLabel().compareTo(option2.getLabel());
-        }
-    }
-
-	/**
-	 * @param name the name of the column (the name attribute of the &lt;select&gt;)
-	 * @param rows the number of visible rows (the size attribute of the &lt;select&gt;)
-	 */
-	public PaletteColumn(String name, int rows)
-	{
-		_name = name;
-		_rows = rows;
-	}
-
-    public void addOption(PaletteOption option)
-    {
-        _options.add(option);
-    }
-
-    /**
-     * Sorts the options by value (the hidden value for the option
-     * that represents the object value). This should be invoked
-     * before rendering this PaletteColumn.
-     */
-    public void sortByValue()
-    {
-        Collections.sort(_options, new ValueComparator());
-    }
-
-    /**
-     * Sorts the options by the label visible to the user. This should be invoked
-     * before rendering this PaletteColumn.
-     */
-    public void sortByLabel()
-    {
-        Collections.sort(_options, new LabelComparator());
-    }
-
-    /**
-     * Renders the &lt;select&gt; and &lt;option&gt; tags for
-     * this column.
-     */
-    public void render(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        writer.begin("select");
-        writer.attribute("multiple", "multiple");
-        writer.attribute("name", _name);
-        writer.attribute("size", _rows);
-        writer.println();
-
-        int count = _options.size();
-        for (int i = 0; i < count; i++)
-        {
-            PaletteOption o = (PaletteOption) _options.get(i);
-
-            o.render(writer, cycle);
-        }
-
-        writer.end();
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/PaletteFunctions.js b/contrib/src/org/apache/tapestry/contrib/palette/PaletteFunctions.js
deleted file mode 100644
index 4973536..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/PaletteFunctions.js
+++ /dev/null
@@ -1,178 +0,0 @@
-// $Id: PaletteFunctions.js,v 1.3 2002/05/03 20:03:06 hship Exp $

-// Requires: /org/apache/tapestry/html/PracticalBrowserSniffer.js

-

-function palette_clear_selections(element)

-{

-  var options = element.options;

-  

-  for (var i = 0; i < options.length; i++)

-    options[i].selected = false;

-}

-

-function palette_select_all(element)

-{

-  var options = element.options;

-

-  for (var i = 0; i < options.length; i++)

-    options[i].selected = true;

-}

-

-function palette_sort(element, sorter)

-{

-  var options = element.options;

-  var list = new Array();

-  var index = 0;

-  var isNavigator = (navigator.family == "nn4" || navigator.family == "gecko");

-  

-  while (options.length > 0)

-  {

-    var option = options[0];

-        

-    if (isNavigator)

-    {

-      // Can't transfer option in nn4, nn6

-      

-     if (navigator.family == 'gecko')

-      	var copy = document.createElement("OPTION");

-     else

-        var copy = new Option(option.text, option.value);

-

-      	copy.text = option.text;

-      	copy.value = option.value;

-      	copy.selected = options.selected;

-      	

-      list[index++] = copy;

-    }

-    else

-      list[index++] = option;

-

-    

-    options[0] = null;

-  }

-  

-  list.sort(sorter);

-  

-  for (var i = 0; i < list.length; i++)

-  {

-    options[i] = list[i]; 

-  }

-

-

-}

-

-function palette_label_sorter(a, b)

-{

-  var a_text = a.text;

-  var b_text = b.text;

-  

-  if (a_text == b_text)

-    return 0;

-    

-  if (a_text < b.text)

-    return -1;

-    

-  return 1;

-}

-

-function palette_sort_by_label(element)

-{

-  palette_sort(element, palette_label_sorter);

-}

-

-function palette_value_sorter(a, b)

-{

-  var a_value = a.value;

-  var b_value = b.value;

-  

-  if (a_value == b_value)

-    return 0;

-    

-  if (a_value < b_value)

-    return -1;

-    

-  return 1;

-}

-

-function palette_sort_by_value(element)

-{

-  palette_sort(element, palette_value_sorter);

-}

-  

-function palette_transfer_selections(source, target)

-{

-  var sourceOptions = source.options;

-  var targetOptions = target.options;

-  

-  var targetIndex = target.selectedIndex;

-  var offset = 0;

-  

-  palette_clear_selections(target);

-  

-  for (var i = 0; i < sourceOptions.length; i++)

-  {

-    var option = sourceOptions[i];

-    

-    if (option.selected)

-    {

-

-       if (navigator.family == 'nn4' || navigator.family == 'gecko')

-       {

-           // Can't share options between selects in NN4

-           

-           var newOption = new Option(option.text, option.value, false, true);

- 

-           sourceOptions[i] = null;

-      

-          // Always added to end in NN4

-                     

-          targetOptions[targetOptions.length] = newOption;

-       }

-       else

-       {  

-         sourceOptions.remove(i);

-         

-         if (targetIndex < 0)

-           targetOptions.add(option);

-         else

-           targetOptions.add(option, targetIndex + offset++);

-      }

-    

-      i--;

-    }

-  }

-

-}

-

-function palette_swap_options(options, selectedIndex, targetIndex)

-{

-  var option = options[selectedIndex];

-

-  // It's very hard to reorder options in NN4

-  

-  if (navigator.family == 'nn4' || navigator.family == 'gecko')

-  {

-    var swap = options[targetIndex];

-    

-    var hold = swap.text;

-    swap.text = option.text;

-    option.text = hold;

-    

-    hold = swap.value;

-    swap.value = option.value;

-    option.value = hold;

-    

-    hold = swap.selected;

-    swap.selected = option.selected;

-    option.selected = hold;

-    

-    // defaultSelected isn't relevant to the Palette

-    

-    return;

-  }

-  

-  // Sensible browsers ...

-  

-  options.remove(selectedIndex);

-  options.add(option, targetIndex);

-}

-

diff --git a/contrib/src/org/apache/tapestry/contrib/palette/PaletteOption.java b/contrib/src/org/apache/tapestry/contrib/palette/PaletteOption.java
deleted file mode 100644
index 4c2d478..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/PaletteOption.java
+++ /dev/null
@@ -1,58 +0,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.
-
-package org.apache.tapestry.contrib.palette;
-
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-
-/**
- * Used to hold options editable by a Palette component, so that they may
- * be sorted into an appropriate order.
- *
- * @author Howard Lewis Ship
- * @version $Id$
- */
-public class PaletteOption implements IRender
-{
-    private String _value;
-    private String _label;
-
-    public PaletteOption(String value, String label)
-    {
-        _value = value;
-        _label = label;
-    }
-
-    public void render(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        writer.begin("option");
-        writer.attribute("value", _value);
-        writer.print(_label);
-        writer.end(); // <option>
-        writer.println();
-    }
-
-    public String getLabel()
-    {
-        return _label;
-    }
-
-    public String getValue()
-    {
-        return _value;
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/SortMode.java b/contrib/src/org/apache/tapestry/contrib/palette/SortMode.java
deleted file mode 100644
index ab8c082..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/SortMode.java
+++ /dev/null
@@ -1,64 +0,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.
-
-package org.apache.tapestry.contrib.palette;
-
-import org.apache.commons.lang.enum.Enum;
-
-/**
- *  Defines different sorting strategies for the {@link Palette} component.
- *
- *  @author Howard Lewis Ship
- *  @version $Id$
- * 
- **/
-
-public class SortMode extends Enum
-{
-    /**
-     *  Sorting is not relevant and no sort controls should be visible.
-     *
-     **/
-
-    public static final SortMode NONE = new SortMode("NONE");
-
-    /**
-     * Options should be sorted by their label.
-     *
-     **/
-
-    public static final SortMode LABEL = new SortMode("LABEL");
-
-    /**
-     *  Options should be sorted by thier value.
-     *
-     **/
-
-    public static final SortMode VALUE = new SortMode("VALUE");
-
-    /**
-     *  The user controls sort order; additional controls are added
-     *  to allow the user to control the order of options in the
-     *  selected list.
-     *
-     **/
-
-    public static final SortMode USER = new SortMode("USER");
-
-    private SortMode(String name)
-    {
-        super(name);
-    }
-
-}
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/deselect_left.gif b/contrib/src/org/apache/tapestry/contrib/palette/deselect_left.gif
deleted file mode 100644
index 2940e01..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/deselect_left.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/deselect_left_off.gif b/contrib/src/org/apache/tapestry/contrib/palette/deselect_left_off.gif
deleted file mode 100644
index 84dc945..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/deselect_left_off.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/move_down.gif b/contrib/src/org/apache/tapestry/contrib/palette/move_down.gif
deleted file mode 100644
index 8fb0088..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/move_down.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/move_down_off.gif b/contrib/src/org/apache/tapestry/contrib/palette/move_down_off.gif
deleted file mode 100644
index 174baeb..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/move_down_off.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/move_up.gif b/contrib/src/org/apache/tapestry/contrib/palette/move_up.gif
deleted file mode 100644
index 711c86a..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/move_up.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/move_up_off.gif b/contrib/src/org/apache/tapestry/contrib/palette/move_up_off.gif
deleted file mode 100644
index e23a43f..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/move_up_off.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/select_right.gif b/contrib/src/org/apache/tapestry/contrib/palette/select_right.gif
deleted file mode 100644
index 74e90c3..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/select_right.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/palette/select_right_off.gif b/contrib/src/org/apache/tapestry/contrib/palette/select_right_off.gif
deleted file mode 100644
index 452ce50..0000000
--- a/contrib/src/org/apache/tapestry/contrib/palette/select_right_off.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/popup/PopupLink.html b/contrib/src/org/apache/tapestry/contrib/popup/PopupLink.html
deleted file mode 100644
index 63d5ed5..0000000
--- a/contrib/src/org/apache/tapestry/contrib/popup/PopupLink.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<!-- $Id$ -->
-<span jwcid="popoutScript"/>
-<span jwcid="link"><span jwcid="wrapped"/></span>
diff --git a/contrib/src/org/apache/tapestry/contrib/popup/PopupLink.java b/contrib/src/org/apache/tapestry/contrib/popup/PopupLink.java
deleted file mode 100644
index 6810077..0000000
--- a/contrib/src/org/apache/tapestry/contrib/popup/PopupLink.java
+++ /dev/null
@@ -1,128 +0,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.
-
-package org.apache.tapestry.contrib.popup;
-
-import java.io.UnsupportedEncodingException;
-
-import org.apache.commons.codec.net.URLCodec;
-import org.apache.tapestry.ApplicationRuntimeException;
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IBinding;
-import org.apache.tapestry.Tapestry;
-
-/**
- * This component provides a popup link to launch a new window using a given
- * href, windowName and windowFeatures for the javascript function:
- * <tt>window.open(URL, windowName, windowFeatures)</tt>.
- *
- *  [<a href="../../../../../../ComponentReference/contrib.PopupLink.html">Component Reference</a>]
- * 
- * @version $Id$ 
- * @author Joe Panico
- */
-public class PopupLink extends BaseComponent
-{
-	/** The default popup window name 'popuplink_window'. */
-	public static final String DEFAULT_WINDOW_NAME = "popuplink_window";
-    private static final URLCodec _urlCodec = new URLCodec();
-
-	//	Instance variables
-	private IBinding _hrefBinding;
-	private IBinding _windowNameBinding;
-	private IBinding _featuresBinding;
-
-	public IBinding getHrefBinding()
-	{
-		return _hrefBinding;
-	}
-
-	public void setHrefBinding(IBinding hrefBinding)
-	{
-		_hrefBinding = hrefBinding;
-	}
-
-	public IBinding getWindowNameBinding()
-	{
-		return _windowNameBinding;
-	}
-
-	public void setWindowNameBinding(IBinding windowNameBinding)
-	{
-		_windowNameBinding = windowNameBinding;
-	}
-
-	public IBinding getFeaturesBinding()
-	{
-		return _featuresBinding;
-	}
-
-	public void setFeaturesBinding(IBinding featuresBinding)
-	{
-		_featuresBinding = featuresBinding;
-	}
-
-	public String getHref()
-	{
-		IBinding aHrefBinding = getHrefBinding();
-
-		if (aHrefBinding != null)
-		{
-            String encoding = getPage().getEngine().getOutputEncoding();
-            try
-            {
-                return _urlCodec.encode(aHrefBinding.getString(), encoding);
-            }
-            catch (UnsupportedEncodingException e)
-            {
-                throw new ApplicationRuntimeException(
-                    Tapestry.format("illegal-encoding", encoding),
-                    e);
-            }
-		}
-
-		return null;
-	}
-
-	public String getWindowName()
-	{
-		IBinding aWindowNameBinding = getWindowNameBinding();
-		if (aWindowNameBinding != null)
-		{
-			return aWindowNameBinding.getString();
-		}
-		else
-		{
-			return DEFAULT_WINDOW_NAME;
-		}
-	}
-
-	public String getFeatures()
-	{
-		IBinding aFeaturesBinding = getFeaturesBinding();
-		if (aFeaturesBinding != null)
-		{
-			return aFeaturesBinding.getString();
-		}
-		else
-		{
-			return "";
-		}
-	}
-    
-    public String getPopupFunctionName()
-    {
-        return getIdPath().replace('.', '_') + "_popup";
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/popup/PopupLink.jwc b/contrib/src/org/apache/tapestry/contrib/popup/PopupLink.jwc
deleted file mode 100644
index 21e9fc4..0000000
--- a/contrib/src/org/apache/tapestry/contrib/popup/PopupLink.jwc
+++ /dev/null
@@ -1,43 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-
-<component-specification class="org.apache.tapestry.contrib.popup.PopupLink" allow-body="yes" allow-informal-parameters="yes">
-
-	<parameter name="href" type="String" direction="custom" required="yes"/>
-	<parameter name="windowName" type="String" direction="custom" required="no"/>
-	<parameter name="features" type="String" direction="custom" required="no"/>
-
-	<component id="popoutScript" type="Script">
-		<binding name="script" expression='"popup.script"'/>
-		<binding name="popupFunctionName" expression="popupFunctionName"/>
-        <binding name="url" expression="href"/>
-		<binding name="windowName" expression="windowName"/>
-        <binding name="features" expression="features"/>
-	</component>
-
-  	<component id="link" type="Any" inherit-informal-parameters="yes">
-        <binding name="element" expression='"a"'/>
-        <binding name="href" expression='"javascript:" + popupFunctionName + "();"'/>
-  	</component>
-
-	<component id="wrapped" type="RenderBody"/>
-
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/popup/popup.script b/contrib/src/org/apache/tapestry/contrib/popup/popup.script
deleted file mode 100644
index 7035669..0000000
--- a/contrib/src/org/apache/tapestry/contrib/popup/popup.script
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-<!-- $Id$ -->
-<!DOCTYPE script PUBLIC 
-	"-//Howard Ship//Tapestry Script 1.1//EN"
-	"http://tapestry.sf.net/dtd/Script_1_1.dtd">
-
-<script>
-
-<body>
-function ${popupFunctionName}()
-{
-	aWindow = window.open('${url}', '${windowName}', '${features}', false);
-	aWindow.focus();
-}
-</body>
-
-</script>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/AbstractTableRowComponent.java b/contrib/src/org/apache/tapestry/contrib/table/components/AbstractTableRowComponent.java
deleted file mode 100644
index 1501177..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/AbstractTableRowComponent.java
+++ /dev/null
@@ -1,51 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import org.apache.tapestry.ApplicationRuntimeException;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.model.ITableRowSource;
-
-/**
- * The base implementation for a component that is wrapped by 
- * the TableRows component. Provides a utility method for getting 
- * a pointer to TableRows. 
- * 
- * @author mindbridge
- * @version $Id$
- *
- */
-public class AbstractTableRowComponent extends AbstractTableViewComponent
-{
-    public ITableRowSource getTableRowSource()
-    {
-        IRequestCycle objCycle = getPage().getRequestCycle();
-
-        Object objSourceObj = objCycle.getAttribute(ITableRowSource.TABLE_ROW_SOURCE_ATTRIBUTE);
-        ITableRowSource objSource = (ITableRowSource) objSourceObj;
-
-        if (objSource == null)
-            throw new ApplicationRuntimeException(
-                "The component "
-                    + getId()
-                    + " must be contained within an ITableRowSource component, such as TableRows",
-                this,
-                null,
-                null);
-
-        return objSource;
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/AbstractTableViewComponent.java b/contrib/src/org/apache/tapestry/contrib/table/components/AbstractTableViewComponent.java
deleted file mode 100644
index bd6456d..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/AbstractTableViewComponent.java
+++ /dev/null
@@ -1,53 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import org.apache.tapestry.ApplicationRuntimeException;
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.model.ITableModelSource;
-
-/**
- * The base implementation for a component that is wrapped by 
- * the TableView component. Provides a utility method for getting 
- * a pointer to TableView. 
- * 
- * @author mindbridge
- * @version $Id$
- *
- */
-public class AbstractTableViewComponent extends BaseComponent
-{
-    public ITableModelSource getTableModelSource()
-    {
-        IRequestCycle objCycle = getPage().getRequestCycle();
-
-        ITableModelSource objSource =
-            (ITableModelSource) objCycle.getAttribute(
-                ITableModelSource.TABLE_MODEL_SOURCE_ATTRIBUTE);
-
-        if (objSource == null)
-            throw new ApplicationRuntimeException(
-                "The component "
-                    + getId()
-                    + " must be contained within an ITableModelSource component, such as TableView",
-                this,
-                null,
-                null);
-
-        return objSource;
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.html b/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.html
deleted file mode 100644
index a4bef19..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<span jwcid="tableView">
-	<span jwcid="condPages"><span jwcid="tablePages"/></span>
-	<table jwcid="tableElement">
-		<tr><span jwcid="tableColumns"/></tr>
-		<tr jwcid="tableRows"><td jwcid="tableValues"/></tr>
-	</table>
-</span>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.java b/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.java
deleted file mode 100644
index 75dc316..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.java
+++ /dev/null
@@ -1,47 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import org.apache.tapestry.contrib.table.model.ITableModelSource;
-
-/**
- * A modified version of the facade component in the Table family. 
- * FormTable allows you to present a sortable and pagable table 
- * within a form by using only this one component.
- * 
- *  [<a href="../../../../../../../ComponentReference/contrib.FormTable.html">Component Reference</a>]
- * 
- * @author mindbridge
- * @version $Id$
- *
- */
-public abstract class FormTable extends Table implements ITableModelSource
-{
-    // parameters
-    public abstract Object getColumns();
-
-    /**
-     *  If the columns are defined via a String, make sure they use 
-     *  the form-specific column headers.
-     */
-    public Object getFormColumns()
-    {
-        Object objColumns = getColumns();
-        if (objColumns instanceof String)
-            objColumns = "*" + objColumns;
-        return objColumns;
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.jwc
deleted file mode 100644
index 2003fb3..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.jwc
+++ /dev/null
@@ -1,245 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.table.components.FormTable" 
-	allow-body="yes" allow-informal-parameters="yes">
-
-    <description>
-        The main Table component that is implemented using the lower-level 
-        Table components such as TableView and TableRows.
-        The component does not render its body, which makes it a good place
-        to declare Blocks defining the column appearances.
-    </description>
-    
-    <parameter name="tableModel" 
-        type="org.apache.tapestry.contrib.table.model.ITableModel" 
-        required="no">
-        <description>
-            The model describing the data to be presented by the Table component.
-            This parameter is optional, but either the 'tableModel' or both
-            'source' and 'columns' parameters must be provided.
-        </description>
-    </parameter>
-    
-    <parameter name="source" type="java.lang.Object" required="no">
-        <description>
-            The data to be displayed by the component. This parameter is available as
-            an alternative to tableModel and must be used in combination with the
-            'columns' parameter. 
-            The parameter must be an array of values, a collection, an iterator, 
-            or an object implementing the IBasicTableModel interface.
-        </description>
-    </parameter>
-    
-    <parameter name="columns" type="java.lang.Object" required="no" direction="auto" default-value="null">
-        <description>
-            The table columns to be displayed. 
-            The parameter must be an array, a list, or an Iterator of ITableColumn objects,
-            an ITableColumnModel, or a String describing the columns (see documentation).
-        </description>
-    </parameter>
-    
-	<parameter name="pageSize" 
-		type="int" 
-		required="no">
-        <description>
-            The number of records displayed per page when source/columns are used.
-            The page size is 10 by default.
-        </description>
-    </parameter>
-  
-	<parameter name="initialSortColumn" 
-		type="java.lang.String" 
-		required="no">
-        <description>
-            The id of the column to initially sort the table by.
-            The column is set to null by default, i.e. there is no sorting.
-        </description>
-    </parameter>
-  
-	<parameter name="initialSortOrder" 
-		type="boolean" 
-		required="no">
-        <description>
-            The order of the initial sorting.
-            Set this parameter to 'false' to sort in an ascending order
-            and to 'true' to sort in a descending one.
-        </description>
-    </parameter>
-  
-    <parameter name="tableSessionStateManager" 
-        type="org.apache.tapestry.contrib.table.model.ITableSessionStateManager" 
-        required="no">
-        <description>
-            The manager that controls what part of the table model will be stored in 
-            the session.
-        </description>
-    </parameter>
-    
-    <parameter name="tableSessionStoreManager" 
-        type="org.apache.tapestry.contrib.table.model.ITableSessionStoreManager" 
-        required="no">
-        <description>
-            The manager that controls where the session data will be stored.
-        </description>
-    </parameter>
-    
-    <parameter name="columnSettingsContainer"
-        type="org.apache.tapestry.IComponent"
-        required="no"
-        default-value="container">
-        <description>
-            The component where Block and messages are pulled from when using source/columns.
-        </description>
-    </parameter>
-
-    <parameter name="convertor"
-    	type="org.apache.tapestry.contrib.table.model.IPrimaryKeyConvertor"
-    	required="no"
-    	direction="auto"
-    	default-value="null">
-        <description>
-        An interface defining how the items iterated upon by this component 
-        will be stored in the form as Hidden values. This interface allows only 
-        the primary key of the items to be stored, rather than the whole item.
-        </description>
-    </parameter>
-
-	<parameter name="pagesDisplayed" 
-		type="int" 
-		required="no">
-        <description>
-            The maximum number of pages that will be displayed in the list of table pages.
-            By default, only seven of the pages around the current one are shown.
-        </description>
-    </parameter>
-  
-	<parameter name="column" 
-		type="org.apache.tapestry.contrib.table.model.ITableColumn" 
-		required="no">
-        <description>
-            The column that is being rendered. This value is updated when both 
-            the column headers and column values are rendered.
-        </description>
-    </parameter>
-
-	<parameter name="row" 
-		type="Object" 
-		required="no"
-		direction="custom">
-        <description>
-            The row that is being rendered. This value is null when 
-            the column headers are rendered.
-        </description>
-    </parameter>
-
-	<parameter name="arrowUpAsset" 
-		type="org.apache.tapestry.IAsset" 
-		required="no"
-		direction="in">
-        <description>
-            The image to use to describe a column sorted in an ascending order.
-        </description>
-    </parameter>
-
-	<parameter name="arrowDownAsset" 
-		type="org.apache.tapestry.IAsset" 
-		required="no"
-		direction="in">
-        <description>
-            The image to use to describe a column sorted in a descending order.
-        </description>
-    </parameter>
-
-	<parameter name="pagesClass" 
-		type="java.lang.String" 
-		required="no"
-		direction="custom">
-        <description>The CSS class of the table pages</description>
-    </parameter>
-  
-	<parameter name="columnsClass" 
-		type="java.lang.String" 
-		required="no"
-		direction="custom">
-        <description>The CSS class of the table columns</description>
-    </parameter>
-  
-	<parameter name="rowsClass" 
-		type="java.lang.String" 
-		required="no"
-		direction="custom">
-        <description>The CSS class of the table rows</description>
-    </parameter>
-  
-	<parameter name="valuesClass" 
-		type="java.lang.String" 
-		required="no"
-		direction="custom">
-        <description>The CSS class of the table values</description>
-    </parameter>
-    
-
-	<component id="tableElement" type="Any" inherit-informal-parameters="yes">
-		<static-binding name="element">table</static-binding>
-	</component>
-
-	<component id="condPages" type="FormConditional">
-		<binding name="condition" expression="tableModel.pageCount > 1"/>
-	</component>
-
-	<component id="tableView" type="TableView">
-		<inherited-binding name="tableModel" parameter-name="tableModel"/>
-		<inherited-binding name="source" parameter-name="source"/>
-		<binding name="columns" expression="formColumns"/>
-		<inherited-binding name="pageSize" parameter-name="pageSize"/>
-		<inherited-binding name="initialSortColumn" parameter-name="initialSortColumn"/>
-		<inherited-binding name="initialSortOrder" parameter-name="initialSortOrder"/>
-		<inherited-binding name="tableSessionStateManager" parameter-name="tableSessionStateManager"/>
-		<inherited-binding name="tableSessionStoreManager" parameter-name="tableSessionStoreManager"/>
-		<inherited-binding name="columnSettingsContainer" parameter-name="columnSettingsContainer"/>
-		<static-binding name="element">span</static-binding>
-	</component>
-
-	<component id="tablePages" type="TableFormPages">
-		<inherited-binding name="pagesDisplayed" parameter-name="pagesDisplayed"/>
-		<inherited-binding name="class" parameter-name="pagesClass"/>
-	</component>
-
-	<component id="tableColumns" type="TableColumns">
-		<inherited-binding name="column" parameter-name="column"/>
-		<inherited-binding name="class" parameter-name="columnsClass"/>
-        <inherited-binding name="arrowUpAsset" parameter-name="arrowUpAsset"/>
-        <inherited-binding name="arrowDownAsset" parameter-name="arrowDownAsset"/>
-	</component>
-
-	<component id="tableRows" type="TableFormRows">
-		<inherited-binding name="row" parameter-name="row"/>
-		<inherited-binding name="class" parameter-name="rowsClass"/>
-    <inherited-binding name="convertor" expression="convertor"/>
-	</component>
-
-	<component id="tableValues" type="TableValues">
-		<inherited-binding name="column" parameter-name="column"/>
-		<inherited-binding name="class" parameter-name="valuesClass"/>
-	</component>
-  
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/Table.html b/contrib/src/org/apache/tapestry/contrib/table/components/Table.html
deleted file mode 100644
index a4bef19..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/Table.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<span jwcid="tableView">
-	<span jwcid="condPages"><span jwcid="tablePages"/></span>
-	<table jwcid="tableElement">
-		<tr><span jwcid="tableColumns"/></tr>
-		<tr jwcid="tableRows"><td jwcid="tableValues"/></tr>
-	</table>
-</span>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/Table.java b/contrib/src/org/apache/tapestry/contrib/table/components/Table.java
deleted file mode 100644
index c02b913..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/Table.java
+++ /dev/null
@@ -1,111 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.ITableModel;
-import org.apache.tapestry.contrib.table.model.ITableModelSource;
-
-/**
- * The facade component in the Table family. Table allows you to present 
- * a sortable and pagable table simply and easily by using only this one component.
- * Please see the Component Reference for details on how to use this component. 
- * 
- *  [<a href="../../../../../../../ComponentReference/contrib.Table.html">Component Reference</a>]
- * 
- * @author mindbridge
- * @version $Id$
- *
- */
-public class Table extends BaseComponent implements ITableModelSource
-{
-    /**
-     * @see org.apache.tapestry.contrib.table.model.ITableModelSource#getTableModel()
-     */
-    public ITableModel getTableModel()
-    {
-        return getTableViewComponent().getTableModel();
-    }
-
-    /**
-     * Indicates that the table model has changed and it may need to saved.
-     * This method has to be invoked if modifications are made to the model.
-     *  
-     * @see org.apache.tapestry.contrib.table.model.ITableModelSource#fireObservedStateChange()
-     */
-    public void fireObservedStateChange()
-    {
-        getTableViewComponent().fireObservedStateChange();
-    }
-
-    /**
-     * Resets the state of the component and forces it to load a new
-     * TableModel from the tableModel binding the next time it renders.
-     */
-    public void reset()
-    {
-        getTableViewComponent().reset();
-    }
-
-    /**
-     * Returns the currently rendered table column. 
-     * You can call this method to obtain the current column.
-     *  
-     * @return ITableColumn the current table column
-     */
-    public ITableColumn getTableColumn()
-    {
-        Object objCurrentRow = getTableRow();
-
-        // if the current row is null, then we are most likely rendering TableColumns
-        if (objCurrentRow == null)
-            return getTableColumnsComponent().getTableColumn();
-        else
-            return getTableValuesComponent().getTableColumn();
-    }
-
-    /**
-     * Returns the currently rendered table row or null 
-     * if the rows are not rendered at the moment.
-     * You can call this method to obtain the current row.
-     *  
-     * @return Object the current table row 
-     */
-    public Object getTableRow()
-    {
-        return getTableRowsComponent().getTableRow();
-    }
-
-    protected TableView getTableViewComponent()
-    {
-        return (TableView) getComponent("tableView");
-    }
-
-    protected TableColumns getTableColumnsComponent()
-    {
-        return (TableColumns) getComponent("tableColumns");
-    }
-
-    protected TableRows getTableRowsComponent()
-    {
-        return (TableRows) getComponent("tableRows");
-    }
-
-    protected TableValues getTableValuesComponent()
-    {
-        return (TableValues) getComponent("tableValues");
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/Table.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/Table.jwc
deleted file mode 100644
index 06b0360..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/Table.jwc
+++ /dev/null
@@ -1,233 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.table.components.Table" 
-	allow-body="yes" allow-informal-parameters="yes">
-
-    <description>
-        The main Table component that is implemented using the lower-level 
-        Table components such as TableView and TableRows.
-        The component does not render its body, which makes it a good place
-        to declare Blocks defining the column appearances.
-    </description>
-    
-    <parameter name="tableModel" 
-        type="org.apache.tapestry.contrib.table.model.ITableModel" 
-        required="no">
-        <description>
-            The model describing the data to be presented by the Table component.
-            This parameter is optional, but either the 'tableModel' or both
-            'source' and 'columns' parameters must be provided.
-        </description>
-    </parameter>
-    
-    <parameter name="source" type="java.lang.Object" required="no">
-        <description>
-            The data to be displayed by the component. This parameter is available as
-            an alternative to tableModel and must be used in combination with the
-            'columns' parameter. 
-            The parameter must be an array of values, a collection, an iterator, 
-            or an object implementing the IBasicTableModel interface.
-        </description>
-    </parameter>
-    
-    <parameter name="columns" type="java.lang.Object" required="no">
-        <description>
-            The table columns to be displayed. 
-            The parameter must be an array, a list, or an Iterator of ITableColumn objects,
-            an ITableColumnModel, or a String describing the columns (see documentation).
-        </description>
-    </parameter>
-    
-	<parameter name="pageSize" 
-		type="int" 
-		required="no">
-        <description>
-            The number of records displayed per page when source/columns are used.
-            The page size is 10 by default.
-        </description>
-    </parameter>
-  
-	<parameter name="initialSortColumn" 
-		type="java.lang.String" 
-		required="no">
-        <description>
-            The id of the column to initially sort the table by.
-            The column is set to null by default, i.e. there is no sorting.
-        </description>
-    </parameter>
-  
-	<parameter name="initialSortOrder" 
-		type="boolean" 
-		required="no">
-        <description>
-            The order of the initial sorting.
-            Set this parameter to 'false' to sort in an ascending order
-            and to 'true' to sort in a descending one.
-        </description>
-    </parameter>
-  
-    <parameter name="tableSessionStateManager" 
-        type="org.apache.tapestry.contrib.table.model.ITableSessionStateManager" 
-        required="no">
-        <description>
-            The manager that controls what part of the table model will be stored in 
-            the session.
-        </description>
-    </parameter>
-    
-    <parameter name="tableSessionStoreManager" 
-        type="org.apache.tapestry.contrib.table.model.ITableSessionStoreManager" 
-        required="no">
-        <description>
-            The manager that controls where the session data will be stored.
-        </description>
-    </parameter>
-    
-    <parameter name="columnSettingsContainer"
-        type="org.apache.tapestry.IComponent"
-        required="no"
-        default-value="container">
-        <description>
-            The component where Block and messages are pulled from when using source/columns.
-        </description>
-    </parameter>
-
-	<parameter name="pagesDisplayed" 
-		type="int" 
-		required="no">
-        <description>
-            The maximum number of pages that will be displayed in the list of table pages.
-            By default, only seven of the pages around the current one are shown.
-        </description>
-    </parameter>
-  
-	<parameter name="column" 
-		type="org.apache.tapestry.contrib.table.model.ITableColumn" 
-		required="no">
-        <description>
-            The column that is being rendered. This value is updated when both 
-            the column headers and column values are rendered.
-        </description>
-    </parameter>
-
-	<parameter name="row" 
-		type="Object" 
-		required="no"
-		direction="custom">
-        <description>
-            The row that is being rendered. This value is null when 
-            the column headers are rendered.
-        </description>
-    </parameter>
-
-	<parameter name="arrowUpAsset" 
-		type="org.apache.tapestry.IAsset" 
-		required="no"
-		direction="in">
-        <description>
-            The image to use to describe a column sorted in an ascending order.
-        </description>
-    </parameter>
-
-	<parameter name="arrowDownAsset" 
-		type="org.apache.tapestry.IAsset" 
-		required="no"
-		direction="in">
-        <description>
-            The image to use to describe a column sorted in a descending order.
-        </description>
-    </parameter>
-
-	<parameter name="pagesClass" 
-		type="java.lang.String" 
-		required="no"
-		direction="custom">
-        <description>The CSS class of the table pages</description>
-    </parameter>
-  
-	<parameter name="columnsClass" 
-		type="java.lang.String" 
-		required="no"
-		direction="custom">
-        <description>The CSS class of the table columns</description>
-    </parameter>
-  
-	<parameter name="rowsClass" 
-		type="java.lang.String" 
-		required="no"
-		direction="custom">
-        <description>The CSS class of the table rows</description>
-    </parameter>
-  
-	<parameter name="valuesClass" 
-		type="java.lang.String" 
-		required="no"
-		direction="custom">
-        <description>The CSS class of the table values</description>
-    </parameter>
-  
-
-	<component id="tableElement" type="Any" inherit-informal-parameters="yes">
-		<static-binding name="element">table</static-binding>
-	</component>
-
-	<component id="condPages" type="Conditional">
-		<binding name="condition" expression="tableModel.pageCount > 1"/>
-	</component>
-
-
-	<component id="tableView" type="TableView">
-		<inherited-binding name="tableModel" parameter-name="tableModel"/>
-		<inherited-binding name="source" parameter-name="source"/>
-		<inherited-binding name="columns" parameter-name="columns"/>
-		<inherited-binding name="pageSize" parameter-name="pageSize"/>
-		<inherited-binding name="initialSortColumn" parameter-name="initialSortColumn"/>
-		<inherited-binding name="initialSortOrder" parameter-name="initialSortOrder"/>
-		<inherited-binding name="tableSessionStateManager" parameter-name="tableSessionStateManager"/>
-		<inherited-binding name="tableSessionStoreManager" parameter-name="tableSessionStoreManager"/>
-		<inherited-binding name="columnSettingsContainer" parameter-name="columnSettingsContainer"/>
-		<static-binding name="element">span</static-binding>
-	</component>
-
-	<component id="tablePages" type="TablePages">
-		<inherited-binding name="pagesDisplayed" parameter-name="pagesDisplayed"/>
-		<inherited-binding name="class" parameter-name="pagesClass"/>
-	</component>
-
-	<component id="tableColumns" type="TableColumns">
-		<inherited-binding name="column" parameter-name="column"/>
-		<inherited-binding name="class" parameter-name="columnsClass"/>
-        <inherited-binding name="arrowUpAsset" parameter-name="arrowUpAsset"/>
-        <inherited-binding name="arrowDownAsset" parameter-name="arrowDownAsset"/>
-	</component>
-
-	<component id="tableRows" type="TableRows">
-		<inherited-binding name="row" parameter-name="row"/>
-		<inherited-binding name="class" parameter-name="rowsClass"/>
-	</component>
-
-	<component id="tableValues" type="TableValues">
-		<inherited-binding name="column" parameter-name="column"/>
-		<inherited-binding name="class" parameter-name="valuesClass"/>
-	</component>
-  
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableColumns.html b/contrib/src/org/apache/tapestry/contrib/table/components/TableColumns.html
deleted file mode 100644
index 21360fd..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableColumns.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<span jwcid="iterColumns">
-	<th jwcid="informal"><span jwcid="insertColumnRenderer"/></th>
-</span>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableColumns.java b/contrib/src/org/apache/tapestry/contrib/table/components/TableColumns.java
deleted file mode 100644
index 06c90e8..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableColumns.java
+++ /dev/null
@@ -1,149 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import java.util.Iterator;
-
-import org.apache.tapestry.IAsset;
-import org.apache.tapestry.IBinding;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.ITableColumnModel;
-
-/**
- * A low level Table component that renders the column headers in the table.
- * This component must be wrapped by {@link org.apache.tapestry.contrib.table.components.TableView}.
- * <p>
- * The component iterates over all column objects in the
- * {@link org.apache.tapestry.contrib.table.model.ITableColumnModel} and renders
- * a header for each one of them using the renderer provided by the
- * getColumnRender() method in {@link org.apache.tapestry.contrib.table.model.ITableColumn}.
- * The headers are wrapped in 'th' tags by default.
- * <p>
- * Please see the Component Reference for details on how to use this component. 
- * 
- *  [<a href="../../../../../../../ComponentReference/contrib.TableColumns.html">Component Reference</a>]
- * 
- * @author mindbridge
- * @version $Id$
- *
- */
-public abstract class TableColumns extends AbstractTableViewComponent
-{
-    public static final String TABLE_COLUMN_ARROW_UP_ATTRIBUTE =
-        "org.apache.tapestry.contrib.table.components.TableColumns.arrowUp";
-
-    public static final String TABLE_COLUMN_ARROW_DOWN_ATTRIBUTE =
-        "org.apache.tapestry.contrib.table.components.TableColumns.arrowDown";
-
-    public static final String TABLE_COLUMN_CSS_CLASS_SUFFIX = "ColumnHeader";
-
-    // Bindings
-    public abstract IBinding getColumnBinding();
-    public abstract IBinding getClassBinding();
-    public abstract IAsset getArrowDownAsset();
-    public abstract IAsset getArrowUpAsset();
-
-    // Transient
-    private ITableColumn m_objTableColumn = null;
-
-    /**
-     * Returns the currently rendered table column. 
-     * You can call this method to obtain the current column.
-     *  
-     * @return ITableColumn the current table column
-     */
-    public ITableColumn getTableColumn()
-    {
-        return m_objTableColumn;
-    }
-
-    /**
-     * Sets the currently rendered table column. 
-     * This method is for internal use only.
-     * 
-     * @param tableColumn The current table column
-     */
-    public void setTableColumn(ITableColumn tableColumn)
-    {
-        m_objTableColumn = tableColumn;
-
-        IBinding objColumnBinding = getColumnBinding();
-        if (objColumnBinding != null)
-            objColumnBinding.setObject(tableColumn);
-    }
-
-    /**
-     * Get the list of all table columns to be displayed.
-     * 
-     * @return an iterator of all table columns
-     */
-    public Iterator getTableColumnIterator()
-    {
-        ITableColumnModel objColumnModel = getTableModelSource().getTableModel().getColumnModel();
-        return objColumnModel.getColumns();
-    }
-
-    /**
-     * Returns the renderer to be used to generate the header of the current column
-     * 
-     * @return the header renderer of the current column
-     */
-    public IRender getTableColumnRenderer()
-    {
-        return getTableColumn().getColumnRenderer(
-            getPage().getRequestCycle(),
-            getTableModelSource());
-    }
-
-    /**
-     * Returns the CSS class of the generated table cell.
-     * It uses the class parameter if it has been bound, or
-     * the default value of "[column name]ColumnHeader" otherwise.
-     * 
-     * @return the CSS class of the cell
-     */
-    public String getColumnClass()
-    {
-        IBinding objClassBinding = getClassBinding();
-        if (objClassBinding != null)
-            return objClassBinding.getString();
-        else
-            return getTableColumn().getColumnName() + TABLE_COLUMN_CSS_CLASS_SUFFIX;
-    }
-
-    /**
-     * @see org.apache.tapestry.BaseComponent#renderComponent(IMarkupWriter, IRequestCycle)
-     */
-    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        Object oldValueUp = cycle.getAttribute(TABLE_COLUMN_ARROW_UP_ATTRIBUTE);
-        Object oldValueDown = cycle.getAttribute(TABLE_COLUMN_ARROW_DOWN_ATTRIBUTE);
-
-        cycle.setAttribute(TABLE_COLUMN_ARROW_UP_ATTRIBUTE, getArrowUpAsset());
-        cycle.setAttribute(TABLE_COLUMN_ARROW_DOWN_ATTRIBUTE, getArrowDownAsset());
-
-        super.renderComponent(writer, cycle);
-
-        cycle.setAttribute(TABLE_COLUMN_ARROW_UP_ATTRIBUTE, oldValueUp);
-        cycle.setAttribute(TABLE_COLUMN_ARROW_DOWN_ATTRIBUTE, oldValueDown);
-
-        // set the current column to null when the component is not active
-        m_objTableColumn = null;
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableColumns.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/TableColumns.jwc
deleted file mode 100644
index 37e5757..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableColumns.jwc
+++ /dev/null
@@ -1,80 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.table.components.TableColumns" 
-	allow-body="yes" allow-informal-parameters="yes">
-	
-	<description>
-        A low level Table component that renders the column headers in the table. 
-        This component must be wrapped by TableView. 
-	</description>
-  
-	<parameter name="column" 
-		type="org.apache.tapestry.contrib.table.model.ITableColumn" 
-		required="no"
-		direction="custom">
-        <description>The column currently being rendered [out]</description>
-    </parameter>
-
-	<parameter name="element" 
-		type="java.lang.String" 
-		required="no"
-		direction="auto"
-    	default-value="'th'">
-        <description>The tag to use to wrap the column headers.</description>
-    </parameter>
-
-	<parameter name="arrowUpAsset" 
-		type="org.apache.tapestry.IAsset" 
-		required="no"
-		direction="in">
-        <description>The image to use to describe a column sorted in an ascending order.</description>
-    </parameter>
-
-	<parameter name="arrowDownAsset" 
-		type="org.apache.tapestry.IAsset" 
-		required="no"
-		direction="in">
-        <description>The image to use to describe a column sorted in a descending order.</description>
-    </parameter>
-
-    <parameter name="class"
-        type="java.lang.String"
-        required="no"
-        direction="custom">
-        <description>The CSS class of the table columns</description>
-    </parameter>
-    
-	<component id="iterColumns" type="Foreach">
-		<binding name="source" expression="tableColumnIterator"/>
-		<binding name="value" expression="tableColumn"/>
-	</component>
-  
-	<component id="informal" type="Any" inherit-informal-parameters="yes">
-		<binding name="element" expression="element"/>
-        <binding name="class" expression="columnClass"/>
-	</component>
-  
-	<component id="insertColumnRenderer" type="Delegator">
-		<binding name="delegate" expression="tableColumnRenderer"/>
-	</component>
-
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormPages.html b/contrib/src/org/apache/tapestry/contrib/table/components/TableFormPages.html
deleted file mode 100644
index 1d98cd8..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormPages.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<span jwcid="informal">
-
-  <span jwcid="hiddenCurrentPage"/>
-  <span jwcid="hiddenPageCount"/>
-  <span jwcid="hiddenStartPage"/>
-  <span jwcid="hiddenStopPage"/>
-
-  <a jwcid="linkFirst">&lt;&lt;</a>  
-  <a jwcid="linkBack">&lt;</a> 
-
-  <span jwcid="iterPage">
-
-	  <span jwcid="condCurrent">
-		  <b><span jwcid="insertCurrentPage"/></b>
-	  </span>
-
-    <span jwcid="condOther">
-		  <a jwcid="linkPage"><span jwcid="insertOtherPage"/></a>
-	  </span>
-
-  </span>
-
-  <a jwcid="linkFwd">&gt;</a>
-  <a jwcid="linkLast">&gt;&gt;</a>
-
-</span>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormPages.java b/contrib/src/org/apache/tapestry/contrib/table/components/TableFormPages.java
deleted file mode 100644
index 2043799..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormPages.java
+++ /dev/null
@@ -1,173 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.model.ITableModelSource;
-import org.apache.tapestry.event.PageDetachListener;
-import org.apache.tapestry.event.PageEvent;
-import org.apache.tapestry.event.PageRenderListener;
-
-/**
- * A low level Table component that renders the pages in the table.
- * 
- * This component is a variant of {@link org.apache.tapestry.contrib.table.components.TablePages}, 
- * but is designed for operation in a form. The necessary page data is stored 
- * in hidden fields, so that no StaleLink exceptions occur during a rewind. 
- * The links also submit the form, which ensures that the data in the other 
- * form fields is preserved even when the page chages.
- *  
- * The component must be wrapped by {@link org.apache.tapestry.contrib.table.components.TableView}.
- * <p>
- * The component generates a list of pages in the Table centered around the 
- * current one and allows you to navigate to other pages.
- * <p> 
- * Please see the Component Reference for details on how to use this component. 
- * 
- *  [<a href="../../../../../../../ComponentReference/contrib.TableFormPages.html">Component Reference</a>]
- * 
- * @author mindbridge
- * @version $Id$
- *
- */
-public abstract class TableFormPages extends TablePages 
-    implements PageDetachListener, PageRenderListener
-{
-    private int m_nCurrentPage;
-    private int m_nPageCount;
-    private int m_nStartPage;
-    private int m_nStopPage;    
-
-    public TableFormPages()
-    {
-        initialize();
-    }
-
-    /**
-     * @see org.apache.tapestry.event.PageDetachListener#pageDetached(org.apache.tapestry.event.PageEvent)
-     */
-    public void pageDetached(PageEvent event)
-    {
-        initialize();
-    }
-    
-    /**
-     * @see org.apache.tapestry.event.PageRenderListener#pageBeginRender(org.apache.tapestry.event.PageEvent)
-     */
-    public void pageBeginRender(PageEvent event)
-    {
-        // values set during rewind are removed
-        initialize();
-    }
-
-    /**
-     * Initialize the values and return the object to operation identical
-     * to that of the super class.
-     */
-    private void initialize()
-    {
-        m_nCurrentPage = -1;
-        m_nPageCount = -1;
-        m_nStartPage = -1;
-        m_nStopPage = -1;
-    }
-
-    // This would ideally be a delayed invocation -- called after the form rewind
-    public void changePage(IRequestCycle objCycle)
-    {
-        ITableModelSource objSource = getTableModelSource(); 
-        setCurrentPage(objSource, getSelectedPage());
-
-        // ensure that the change is saved
-        objSource.fireObservedStateChange();
-    }
-
-    // defined in the JWC file
-    public abstract int getSelectedPage();
-
-
-    /**
-     * @return the current page
-     */
-    public int getCurrentPage()
-    {
-        if (m_nCurrentPage < 0)
-            m_nCurrentPage = super.getCurrentPage();
-        return m_nCurrentPage;
-    }
-
-    /**
-     * @return number of all pages to display
-     */
-    public int getPageCount()
-    {
-        if (m_nPageCount < 0)
-            m_nPageCount = super.getPageCount();
-        return m_nPageCount;
-    }
-
-    /**
-     * @return the first page to display
-     */
-    public int getStartPage()
-    {
-        if (m_nStartPage < 0)
-            m_nStartPage = super.getStartPage();
-        return m_nStartPage;
-    }
-
-    /**
-     * @return the last page to display
-     */
-    public int getStopPage()
-    {
-        if (m_nStopPage < 0)
-            m_nStopPage = super.getStopPage();
-        return m_nStopPage;
-    }
-
-    /**
-     * @param i the current page
-     */
-    public void setCurrentPage(int i)
-    {
-        m_nCurrentPage = i;
-    }
-
-    /**
-     * @param i number of all pages to display
-     */
-    public void setPageCount(int i)
-    {
-        m_nPageCount = i;
-    }
-
-    /**
-     * @param i the first page to display
-     */
-    public void setStartPage(int i)
-    {
-        m_nStartPage = i;
-    }
-
-    /**
-     * @param i the last page to display
-     */
-    public void setStopPage(int i)
-    {
-        m_nStopPage = i;
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormPages.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/TableFormPages.jwc
deleted file mode 100644
index b5be311..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormPages.jwc
+++ /dev/null
@@ -1,117 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.table.components.TableFormPages" 
-	allow-body="no" allow-informal-parameters="yes">
-	
-	<description>
-        A version of TablePages that is designed for operation in a form. 
-        It is a low level Table component that renders the pages in the table. 
-        This component must be wrapped by TableView. 
-	</description>
-  
-	<component id="informal" type="Any" inherit-informal-parameters="yes"/>
-  
-	<parameter name="pagesDisplayed" 
-		type="int" 
-		required="no"
-		direction="auto"
-    	default-value="7">
-		<description>
-            Determines the maximum number of pages to be displayed in the page list 
-            when the table has more than one page. 
-        </description>
-    </parameter>
-  
-	<property-specification name="selectedPage" type="int"/>
-  
-	<component id="hiddenCurrentPage" type="Hidden">
-		<binding name="value" expression="currentPage"/>
-	</component>
-  
-	<component id="hiddenPageCount" type="Hidden">
-		<binding name="value" expression="pageCount"/>
-	</component>
-  
-	<component id="hiddenStartPage" type="Hidden">
-		<binding name="value" expression="startPage"/>
-	</component>
-  
-	<component id="hiddenStopPage" type="Hidden">
-		<binding name="value" expression="stopPage"/>
-	</component>
-  
-	<component id="condCurrent" type="Conditional">
-		<binding name="condition" expression="condCurrent"/>
-	</component>
-  
-	<component id="condOther" type="Conditional">
-		<binding name="condition" expression="!condCurrent"/>
-	</component>
-  
-	<component id="iterPage" type="Foreach">
-		<binding name="source" expression="pageList"/>
-		<binding name="value" expression="displayPage"/>
-	</component>
-
-	<component id="insertCurrentPage" type="Insert">
-	    <binding name="value" expression="displayPage"/>
-	</component>
-
-	<component id="insertOtherPage" type="Insert">
-	    <binding name="value" expression="displayPage"/>
-	</component>
-
-	<component id="linkPage" type="LinkSubmit">
-	    <binding name="listener" expression="listeners.changePage"/>
-	    <binding name="tag" expression="displayPage"/>
-	    <binding name="selected" expression="selectedPage"/>
-	</component>
-
-	<component id="linkFirst" type="LinkSubmit">
-	    <binding name="listener" expression="listeners.changePage"/>
-	    <binding name="tag" expression="1"/>
-	    <binding name="selected" expression="selectedPage"/>
-	    <binding name="disabled" expression="!condBack"/>
-	</component>
-
-	<component id="linkBack" type="LinkSubmit">
-	    <binding name="listener" expression="listeners.changePage"/>
-	    <binding name="tag" expression="currentPage - 1"/>
-	    <binding name="selected" expression="selectedPage"/>
-	    <binding name="disabled" expression="!condBack"/>
-	</component>
-
-	<component id="linkFwd" type="LinkSubmit">
-	    <binding name="listener" expression="listeners.changePage"/>
-	    <binding name="tag" expression="currentPage + 1"/>
-	    <binding name="selected" expression="selectedPage"/>
-	    <binding name="disabled" expression="!condFwd"/>
-	</component>
-	
-	<component id="linkLast" type="LinkSubmit">
-	    <binding name="listener" expression="listeners.changePage"/>
-	    <binding name="tag" expression="pageCount"/>
-	    <binding name="selected" expression="selectedPage"/>
-	    <binding name="disabled" expression="!condFwd"/>
-	</component>
-
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormRows.html b/contrib/src/org/apache/tapestry/contrib/table/components/TableFormRows.html
deleted file mode 100644
index 53b492a..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormRows.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<tr jwcid="iterRows">
-	<span jwcid="@RenderBody"/>
-</tr>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormRows.java b/contrib/src/org/apache/tapestry/contrib/table/components/TableFormRows.java
deleted file mode 100644
index f33dae9..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormRows.java
+++ /dev/null
@@ -1,134 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.model.*;
-
-
-/**
- * A low level Table component that generates the rows of the current page in the table.
- * 
- * This component is a variant of {@link org.apache.tapestry.contrib.table.components.TablePages},
- * but is designed for operation in a form. The displayed rows are stored in 
- * hidden form fields, which are then read during a rewind. This ensures that
- * the form will rewind in exactly the same was as it was rendered even if the 
- * TableModel has changed and no StaleLink exceptions will occur. 
- * 
- * The component must be wrapped by {@link org.apache.tapestry.contrib.table.components.TableView}.
- * 
- * <p>
- * The component iterates over the rows of the current page in the table. 
- * The rows are wrapped in 'tr' tags by default. 
- * You can define columns manually within, or
- * you can use {@link org.apache.tapestry.contrib.table.components.TableValues} 
- * to generate the columns automatically.
- * <p> 
- * Please see the Component Reference for details on how to use this component. 
- * 
- *  [<a href="../../../../../../../ComponentReference/contrib.TableFormRows.html">Component Reference</a>]
- * 
- * @author mindbridge
- * @version $Id$
- *
- */
-public abstract class TableFormRows extends TableRows
-{
-    public abstract IPrimaryKeyConvertor getConvertor();
-    public abstract IPrimaryKeyConvertor getConvertorCache();
-    public abstract void setConvertorCache(IPrimaryKeyConvertor convertor);
-    public abstract Map getConvertedValues();
-
-    /**
-     * Returns the PK convertor cached within the realm of the current request cycle.
-     *  
-     * @return the cached PK convertor
-     */
-    public IPrimaryKeyConvertor getCachedConvertor()
-    {
-        IPrimaryKeyConvertor objConvertor = getConvertorCache();
-        
-        if (objConvertor == null) {
-            objConvertor = getConvertor();
-            setConvertorCache(objConvertor);
-        }
-        
-        return objConvertor;
-    }
-
-    /**
-     * Get the list of all table rows to be displayed on this page, converted 
-     * using the PK.convertor.
-     * 
-     * @return an iterator of all converted table rows
-     */    
-    public Iterator getConvertedTableRowsIterator()
-    {
-        final Iterator objTableRowsIterator = getTableRowsIterator(); 
-        final IPrimaryKeyConvertor objConvertor = getCachedConvertor();
-        if (objConvertor == null)
-            return objTableRowsIterator;
-            
-        return new Iterator()
-        {
-            public boolean hasNext()
-            {
-                return objTableRowsIterator.hasNext();
-            }
-
-            public Object next()
-            {
-                Object objValue = objTableRowsIterator.next();
-                Object objPrimaryKey = objConvertor.getPrimaryKey(objValue);
-                Map mapConvertedValues = getConvertedValues(); 
-                mapConvertedValues.put(objPrimaryKey, objValue);
-                return objPrimaryKey;
-            }
-
-            public void remove()
-            {
-                objTableRowsIterator.remove();
-            }
-        };
-    }
-
-    /**
-     * Sets the current table row PK and invokes {@link #setTableRow(Object)} as a result.
-     * This method is for internal use only.
-     * 
-     * @param objConvertedTableRow The current converted table row (PK)
-     */
-    public void setConvertedTableRow(Object objConvertedTableRow)
-    {
-        Object objValue = objConvertedTableRow;
-
-        IPrimaryKeyConvertor objConvertor = getCachedConvertor();
-        if (objConvertor != null) {
-            IRequestCycle objCycle = getPage().getRequestCycle();
-            if (objCycle.isRewinding()) {
-                objValue = objConvertor.getValue(objConvertedTableRow);  
-            }
-            else {
-                Map mapConvertedValues = getConvertedValues(); 
-                objValue = mapConvertedValues.get(objConvertedTableRow);
-            }
-        }
-
-        setTableRow(objValue);
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormRows.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/TableFormRows.jwc
deleted file mode 100644
index 30d5992..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableFormRows.jwc
+++ /dev/null
@@ -1,68 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.table.components.TableFormRows" 
-	allow-body="yes" allow-informal-parameters="yes">
-	
-	<description>
-        A version of the TableRows designed for operation in a form. 
-        This is a low level Table component that generates the rows of 
-        the current page in the table. Each row is stored as a hidden value 
-        in the form, which eliminates the chance of a stale link during rewinding. 
-        This component must be wrapped by TableView. 
-	</description>
-  
-	<parameter name="row" 
-		type="Object" 
-		required="no"
-		direction="custom">
-        <description>The value object of the row currently being rendered.</description>
-    </parameter>
-
-    <parameter name="convertor"
-    	type="org.apache.tapestry.contrib.table.model.IPrimaryKeyConvertor"
-    	required="no"
-    	direction="auto"
-    	default-value="null">
-        <description>
-        An interface defining how the items iterated upon by this component 
-        will be stored in the form as Hidden values. This interface allows only 
-        the primary key of the items to be stored, rather than the whole item.
-        </description>
-    </parameter>
-    
-	<parameter name="element" 
-		type="java.lang.String" 
-		required="no"
-		default-value='"tr"'>
-        <description>The tag to use to wrap the rows in, 'tr' by default.</description>
-    </parameter>
-
-	<component id="iterRows" type="ListEdit" inherit-informal-parameters="yes">
-		<binding name="source" expression="convertedTableRowsIterator"/>
-		<binding name="value" expression="convertedTableRow"/>
-        <inherited-binding name="element" parameter-name="element"/>
-	</component>
-
-    <property-specification name="convertedValues" type="java.util.Map" initial-value="new java.util.HashMap()"/>
-    <property-specification name="convertorCache" type="org.apache.tapestry.contrib.table.model.IPrimaryKeyConvertor" initial-value="null"/>
-      
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TablePages.html b/contrib/src/org/apache/tapestry/contrib/table/components/TablePages.html
deleted file mode 100644
index ecf98ec..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TablePages.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<span jwcid="informal">
-
-	<a jwcid="linkFirst">&lt;&lt;</a>  
-	<a jwcid="linkBack">&lt;</a> 
-	
-	<span jwcid="iterPage">
-	
-		<span jwcid="condCurrent">
-			<b><span jwcid="insertCurrentPage"/></b>
-		</span>
-	
-		<span jwcid="condOther">
-			<a jwcid="linkPage"><span jwcid="insertOtherPage"/></a>
-		</span>
-	
-	</span>
-	
-	<a jwcid="linkFwd">&gt;</a>
-	<a jwcid="linkLast">&gt;&gt;</a>
-
-</span>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TablePages.java b/contrib/src/org/apache/tapestry/contrib/table/components/TablePages.java
deleted file mode 100644
index 6aee51f..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TablePages.java
+++ /dev/null
@@ -1,195 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.model.ITableModelSource;
-import org.apache.tapestry.util.ComponentAddress;
-
-/**
- * A low level Table component that renders the pages in the table.
- * This component must be wrapped by {@link org.apache.tapestry.contrib.table.components.TableView}.
- * <p>
- * The component generates a list of pages in the Table centered around the 
- * current one and allows you to navigate to other pages.
- * <p> 
- * Please see the Component Reference for details on how to use this component. 
- * 
- *  [<a href="../../../../../../../ComponentReference/contrib.TablePages.html">Component Reference</a>]
- * 
- * @author mindbridge
- * @version $Id$
- *
- */
-public abstract class TablePages extends AbstractTableViewComponent
-{
-    // Bindings    
-    public abstract int getPagesDisplayed();
-
-    // Transient
-    private int m_nDisplayPage;
-
-    /**
-     * Returns the displayPage.
-     * @return int
-     */
-    public int getDisplayPage()
-    {
-        return m_nDisplayPage;
-    }
-
-    /**
-     * Sets the displayPage.
-     * @param displayPage The displayPage to set
-     */
-    public void setDisplayPage(int displayPage)
-    {
-        m_nDisplayPage = displayPage;
-    }
-
-    public int getCurrentPage()
-    {
-        return getTableModelSource().getTableModel().getPagingState().getCurrentPage() + 1;
-    }
-
-    public int getPageCount()
-    {
-        return getTableModelSource().getTableModel().getPageCount();
-    }
-
-    public boolean getCondBack()
-    {
-        return getCurrentPage() > 1;
-    }
-
-    public boolean getCondFwd()
-    {
-        return getCurrentPage() < getPageCount();
-    }
-
-    public boolean getCondCurrent()
-    {
-        return getDisplayPage() == getCurrentPage();
-    }
-
-    public int getStartPage()
-    {
-        int nCurrent = getCurrentPage();
-        int nPagesDisplayed = getPagesDisplayed();
-
-        int nRightMargin = nPagesDisplayed / 2;
-        int nStop = nCurrent + nRightMargin;
-        int nLastPage = getPageCount();
-
-        int nLeftAddon = 0;
-        if (nStop > nLastPage)
-            nLeftAddon = nStop - nLastPage;
-
-        int nLeftMargin = (nPagesDisplayed - 1) / 2 + nLeftAddon;
-        int nStart = nCurrent - nLeftMargin;
-        int nFirstPage = 1;
-        if (nStart < nFirstPage)
-            nStart = nFirstPage;
-        return nStart;
-    }
-
-    public int getStopPage()
-    {
-        int nCurrent = getCurrentPage();
-        int nPagesDisplayed = getPagesDisplayed();
-
-        int nLeftMargin = (nPagesDisplayed - 1) / 2;
-        int nStart = nCurrent - nLeftMargin;
-        int nFirstPage = 1;
-
-        int nRightAddon = 0;
-        if (nStart < nFirstPage)
-            nRightAddon = nFirstPage - nStart;
-
-        int nRightMargin = nPagesDisplayed / 2 + nRightAddon;
-        int nStop = nCurrent + nRightMargin;
-        int nLastPage = getPageCount();
-        if (nStop > nLastPage)
-            nStop = nLastPage;
-        return nStop;
-    }
-
-    public Integer[] getPageList()
-    {
-        int nStart = getStartPage();
-        int nStop = getStopPage();
-
-        Integer[] arrPages = new Integer[nStop - nStart + 1];
-        for (int i = nStart; i <= nStop; i++)
-            arrPages[i - nStart] = new Integer(i);
-
-        return arrPages;
-    }
-
-    public Object[] getFirstPageContext()
-    {
-        ComponentAddress objAddress = new ComponentAddress(getTableModelSource());
-        return new Object[] { objAddress, new Integer(1)};
-    }
-
-    public Object[] getLastPageContext()
-    {
-        ComponentAddress objAddress = new ComponentAddress(getTableModelSource());
-        return new Object[] { objAddress, new Integer(getPageCount())};
-    }
-
-    public Object[] getBackPageContext()
-    {
-        ComponentAddress objAddress = new ComponentAddress(getTableModelSource());
-        return new Object[] { objAddress, new Integer(getCurrentPage() - 1)};
-    }
-
-    public Object[] getFwdPageContext()
-    {
-        ComponentAddress objAddress = new ComponentAddress(getTableModelSource());
-        return new Object[] { objAddress, new Integer(getCurrentPage() + 1)};
-    }
-
-    public Object[] getDisplayPageContext()
-    {
-        ComponentAddress objAddress = new ComponentAddress(getTableModelSource());
-        return new Object[] { objAddress, new Integer(m_nDisplayPage)};
-    }
-
-    public void changePage(IRequestCycle objCycle)
-    {
-        Object[] arrParameters = objCycle.getServiceParameters();
-        if (arrParameters.length != 2
-            && !(arrParameters[0] instanceof ComponentAddress)
-            && !(arrParameters[1] instanceof Integer))
-        {
-            // error
-            return;
-        }
-
-        ComponentAddress objAddress = (ComponentAddress) arrParameters[0];
-        ITableModelSource objSource = (ITableModelSource) objAddress.findComponent(objCycle);
-        setCurrentPage(objSource, ((Integer) arrParameters[1]).intValue());
-
-        // ensure that the change is saved
-        objSource.fireObservedStateChange();
-    }
-
-    public void setCurrentPage(ITableModelSource objSource, int nPage)
-    {
-        objSource.getTableModel().getPagingState().setCurrentPage(nPage - 1);
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TablePages.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/TablePages.jwc
deleted file mode 100644
index 98640de..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TablePages.jwc
+++ /dev/null
@@ -1,94 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.table.components.TablePages" 
-	allow-body="no" allow-informal-parameters="yes">
-	
-	<description>
-        A low level Table component that renders the pages in the table. 
-        This component must be wrapped by TableView. 
-	</description>
-  
-	<parameter name="pagesDisplayed" 
-		type="int" 
-		required="no"
-		direction="auto"
-    	default-value="7">
-		<description>
-            Determines the maximum number of pages to be displayed in the page list 
-            when the table has more than one page. 
-        </description>
-    </parameter>
-
-	<component id="informal" type="Any" inherit-informal-parameters="yes"/>
-  
-	<component id="condCurrent" type="Conditional">
-		<binding name="condition" expression="condCurrent"/>
-	</component>
-  
-	<component id="condOther" type="Conditional">
-		<binding name="condition" expression="condCurrent"/>
-		<static-binding name="invert">true</static-binding>
-	</component>
-  
-	<component id="iterPage" type="Foreach">
-		<binding name="source" expression="pageList"/>
-		<binding name="value" expression="displayPage"/>
-	</component>
-
-	<component id="insertCurrentPage" type="Insert">
-	    <binding name="value" expression="displayPage"/>
-	</component>
-
-	<component id="insertOtherPage" type="Insert">
-	    <binding name="value" expression="displayPage"/>
-	</component>
-
-	<component id="linkPage" type="DirectLink">
-	    <binding name="listener" expression="listeners.changePage"/>
-	    <binding name="parameters" expression="displayPageContext"/>
-	</component>
-
-	<component id="linkFirst" type="DirectLink">
-	    <binding name="listener" expression="listeners.changePage"/>
-	    <binding name="parameters" expression="firstPageContext"/>
-	    <binding name="disabled" expression="!condBack"/>
-	</component>
-
-	<component id="linkBack" type="DirectLink">
-	    <binding name="listener" expression="listeners.changePage"/>
-	    <binding name="parameters" expression="backPageContext"/>
-	    <binding name="disabled" expression="!condBack"/>
-	</component>
-
-	<component id="linkFwd" type="DirectLink">
-	    <binding name="listener" expression="listeners.changePage"/>
-	    <binding name="parameters" expression="fwdPageContext"/>
-	    <binding name="disabled" expression="!condFwd"/>
-	</component>
-	
-	<component id="linkLast" type="DirectLink">
-	    <binding name="listener" expression="listeners.changePage"/>
-	    <binding name="parameters" expression="lastPageContext"/>
-	    <binding name="disabled" expression="!condFwd"/>
-	</component>
-	
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableRows.html b/contrib/src/org/apache/tapestry/contrib/table/components/TableRows.html
deleted file mode 100644
index 8a73f34..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableRows.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<span jwcid="iterRows">
-	<tr jwcid="informal">
-		<span jwcid="wrapped"/>
-	</tr>
-</span>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableRows.java b/contrib/src/org/apache/tapestry/contrib/table/components/TableRows.java
deleted file mode 100644
index b96b427..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableRows.java
+++ /dev/null
@@ -1,106 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import java.util.Iterator;
-
-import org.apache.tapestry.IBinding;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.model.ITableModel;
-import org.apache.tapestry.contrib.table.model.ITableRowSource;
-
-/**
- * A low level Table component that generates the rows of the current page in the table.
- * This component must be wrapped by {@link org.apache.tapestry.contrib.table.components.TableView}.
- * 
- * <p>
- * The component iterates over the rows of the current page in the table. 
- * The rows are wrapped in 'tr' tags by default. 
- * You can define columns manually within, or
- * you can use {@link org.apache.tapestry.contrib.table.components.TableValues} 
- * to generate the columns automatically.
- * 
- * <p> 
- * Please see the Component Reference for details on how to use this component. 
- * 
- *  [<a href="../../../../../../../ComponentReference/contrib.TableRows.html">Component Reference</a>]
- * 
- * @author mindbridge
- * @version $Id$
- *
- */
-public abstract class TableRows extends AbstractTableViewComponent implements ITableRowSource
-{
-    // Parameters
-    public abstract IBinding getRowBinding();
-
-    // Transient
-    private Object m_objTableRow = null;
-
-    /**
-     * Returns the currently rendered table row.
-     * You can call this method to obtain the current row.
-     *  
-     * @return Object the current table row
-     */
-    public Object getTableRow()
-    {
-        return m_objTableRow;
-    }
-
-    /**
-     * Sets the currently rendered table row. 
-     * This method is for internal use only.
-     * 
-     * @param tableRow The current table row
-     */
-    public void setTableRow(Object tableRow)
-    {
-        m_objTableRow = tableRow;
-
-        IBinding objRowBinding = getRowBinding();
-        if (objRowBinding != null)
-            objRowBinding.setObject(tableRow);
-    }
-
-    /**
-     * Get the list of all table rows to be displayed on this page.
-     * 
-     * @return an iterator of all table rows
-     */
-    public Iterator getTableRowsIterator()
-    {
-        ITableModel objTableModel = getTableModelSource().getTableModel();
-        return objTableModel.getCurrentPageRows();
-    }
-
-    /**
-     * @see org.apache.tapestry.BaseComponent#renderComponent(IMarkupWriter, IRequestCycle)
-     */
-    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        Object objOldValue = cycle.getAttribute(ITableRowSource.TABLE_ROW_SOURCE_ATTRIBUTE);
-        cycle.setAttribute(ITableRowSource.TABLE_ROW_SOURCE_ATTRIBUTE, this);
-
-        super.renderComponent(writer, cycle);
-
-        cycle.setAttribute(ITableRowSource.TABLE_ROW_SOURCE_ATTRIBUTE, objOldValue);
-
-        // set the current row to null when the component is not active
-        m_objTableRow = null;
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableRows.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/TableRows.jwc
deleted file mode 100644
index 0220ff7..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableRows.jwc
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.table.components.TableRows" 
-	allow-body="yes" allow-informal-parameters="yes">
-	
-	<description>
-        A low level Table component that generates the rows of the current page in the table. 
-        This component must be wrapped by TableView. 
-	</description>
-  
-	<parameter name="row" 
-		type="Object" 
-		required="no"
-		direction="custom">
-        <description>The current row being rendered.</description>
-    </parameter>
-
-	<parameter name="element" 
-		type="java.lang.String" 
-		required="no"
-		direction="auto"
-    	default-value="'tr'">
-        <description>The tag to use to wrap the rows in, 'tr' by default.</description>
-    </parameter>
-
-	<component id="iterRows" type="Foreach">
-		<binding name="source" expression="tableRowsIterator"/>
-		<binding name="value" expression="tableRow"/>
-	</component>
-  
-	<component id="informal" type="Any" inherit-informal-parameters="yes">
-		<inherited-binding name="element" parameter-name="element"/>
-	</component>
-  
-	<component id="wrapped" type="RenderBody"/>
-  
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableStrings.properties b/contrib/src/org/apache/tapestry/contrib/table/components/TableStrings.properties
deleted file mode 100644
index 71b81e5..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableStrings.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# $Id$
-
-missing-table-model=Either the 'tableModel' parameter or both 'source' and 'columns' parameters must be specified by component {0}
-columns-only-please=The 'columns' parameter of component {0} must contain a list of ITableColumn objects only
-not-a-column=The expression '{1}' in the 'columns' parameter of component {0} does not evaluate to an ITableColumn
-invalid-table-source=The source parameter of component {0} is of type {1}, but must be of type Object[], Collection, Iterator, or IBasicTableModel
-invalid-table-columns=The columns parameter of component {0} is of type {1}, but must be of type String, ITableColumnModel, ITableColumn[], List, or Iterator
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableUtils.java b/contrib/src/org/apache/tapestry/contrib/table/components/TableUtils.java
deleted file mode 100644
index c7b5bb7..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableUtils.java
+++ /dev/null
@@ -1,191 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.ResourceBundle;
-import java.util.StringTokenizer;
-
-import org.apache.tapestry.ApplicationRuntimeException;
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IResourceResolver;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.ITableColumnModel;
-import org.apache.tapestry.contrib.table.model.ognl.ExpressionTableColumn;
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableColumn;
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableColumnModel;
-import org.apache.tapestry.util.prop.OgnlUtils;
-
-/**
- *  A placeholder for a static methods related to the Table component
- *
- *  @since 3.0
- *  @version $Id$
- *  @author Mindbridge
- **/
-public class TableUtils
-{
-
-    /**
-     *  Contains strings loaded from TableStrings.properties.
-     *
-     **/
-
-    private static ResourceBundle s_objStrings = null;
-
-    /**
-     *  Gets a string from the TableStrings resource bundle.
-     *
-     **/
-
-    public static String format(String key, Object[] args)
-    {
-            synchronized (TableUtils.class) {
-                if (s_objStrings == null)
-                    s_objStrings = ResourceBundle.getBundle("org.apache.tapestry.contrib.table.components.TableStrings");
-            }
-
-        String pattern = s_objStrings.getString(key);
-
-        if (args == null)
-            return pattern;
-
-        return MessageFormat.format(pattern, args);
-    }
-
-    /**
-     *  Convienience method for invoking {@link #format(String, Object[])}.
-     **/
-
-    public static String getMessage(String key)
-    {
-        return format(key, null);
-    }
-
-    /**
-     *  Convienience method for invoking {@link #format(String, Object[])}.
-     **/
-
-    public static String format(String key, Object arg)
-    {
-        return format(key, new Object[] { arg });
-    }
-
-    /**
-     *  Convienience method for invoking {@link #format(String, Object[])}.
-     **/
-
-    public static String format(String key, Object arg1, Object arg2)
-    {
-        return format(key, new Object[] { arg1, arg2 });
-    }
-
-    /**
-     *  Convienience method for invoking {@link #format(String, Object[])}.
-     **/
-
-    public static String format(String key, Object arg1, Object arg2, Object arg3)
-    {
-        return format(key, new Object[] { arg1, arg2, arg3 });
-    }
-
-    /**
-     *  Generate a table column model out of the description string provided.
-     *  Entries in the description string are separated by commas.
-     *  Each column entry is of the format name, name:expression, 
-     *  or name:displayName:expression.
-     *  An entry prefixed with ! represents a non-sortable column.
-     *  If the whole description string is prefixed with *, it represents
-     *  columns to be included in a Form. 
-     * 
-     *  @param strDesc the description of the column model to be generated
-     *  @param objComponent the component ordering the generation
-     *  @param objColumnSettingsContainer the component containing the column settings
-     *  @return a table column model based on the provided parameters
-     */
-    public static ITableColumnModel generateTableColumnModel(String strDesc, IComponent objComponent, IComponent objColumnSettingsContainer)
-    {
-        if (strDesc == null)
-            return null;
-
-        List arrColumns = new ArrayList();
-
-        boolean bFormColumns = false;
-        while (strDesc.startsWith("*"))
-        {
-            strDesc = strDesc.substring(1);
-            bFormColumns = true;
-        }
-
-        StringTokenizer objTokenizer = new StringTokenizer(strDesc, ",");
-        while (objTokenizer.hasMoreTokens())
-        {
-            String strToken = objTokenizer.nextToken().trim();
-
-            if (strToken.startsWith("="))
-            {
-                String strColumnExpression = strToken.substring(1);
-                IResourceResolver objResolver = objColumnSettingsContainer.getPage().getEngine().getResourceResolver();
-
-                Object objColumn =
-                    OgnlUtils.get(strColumnExpression, objResolver, objColumnSettingsContainer);
-                if (!(objColumn instanceof ITableColumn))
-                    throw new ApplicationRuntimeException(
-                        format("not-a-column", objComponent.getExtendedId(), strColumnExpression));
-
-                arrColumns.add(objColumn);
-                continue;
-            }
-
-            boolean bSortable = true;
-            if (strToken.startsWith("!"))
-            {
-                strToken = strToken.substring(1);
-                bSortable = false;
-            }
-
-            StringTokenizer objColumnTokenizer = new StringTokenizer(strToken, ":");
-
-            String strName = "";
-            if (objColumnTokenizer.hasMoreTokens())
-                strName = objColumnTokenizer.nextToken();
-
-            String strExpression = strName;
-            if (objColumnTokenizer.hasMoreTokens())
-                strExpression = objColumnTokenizer.nextToken();
-
-            String strDisplayName = strName;
-            if (objColumnTokenizer.hasMoreTokens())
-            {
-                strDisplayName = strExpression;
-                strExpression = objColumnTokenizer.nextToken();
-            }
-
-            ExpressionTableColumn objColumn =
-                new ExpressionTableColumn(strName, strDisplayName, strExpression, bSortable);
-            if (bFormColumns)
-                objColumn.setColumnRendererSource(SimpleTableColumn.FORM_COLUMN_RENDERER_SOURCE);
-            if (objColumnSettingsContainer != null)
-                objColumn.loadSettings(objColumnSettingsContainer);
-
-            arrColumns.add(objColumn);
-        }
-
-        return new SimpleTableColumnModel(arrColumns);
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableValues.html b/contrib/src/org/apache/tapestry/contrib/table/components/TableValues.html
deleted file mode 100644
index 29e6927..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableValues.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<span jwcid="iterColumns">
-	<td jwcid="informal"><span jwcid="insertValueRenderer"/></td>
-</span>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableValues.java b/contrib/src/org/apache/tapestry/contrib/table/components/TableValues.java
deleted file mode 100644
index a316d31..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableValues.java
+++ /dev/null
@@ -1,136 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import java.util.Iterator;
-
-import org.apache.tapestry.IBinding;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.ITableColumnModel;
-
-/**
- * A low level Table component that generates the columns in the current row in the table.
- * This component must be wrapped by {@link org.apache.tapestry.contrib.table.components.TableRows}.
- * 
- * <p>
- * The component iterates over the columns in the table and 
- * automatically renders the column values for the current table row. 
- * The columns are wrapped in 'td' tags by default. <br>
- * The column values are rendered using the renderer returned by the 
- * getValueRenderer() method in {@link org.apache.tapestry.contrib.table.model.ITableColumn}.
- * 
- * <p> 
- * Please see the Component Reference for details on how to use this component. 
- * 
- *  [<a href="../../../../../../../ComponentReference/contrib.TableValues.html">Component Reference</a>]
- * 
- * @author mindbridge
- * @version $Id$
- *
- */
-public abstract class TableValues extends AbstractTableRowComponent
-{
-    public static final String TABLE_VALUE_CSS_CLASS_SUFFIX = "ColumnValue";
-
-    // Bindings
-    public abstract IBinding getColumnBinding();
-    public abstract IBinding getClassBinding();
-
-	// Transient
-	private ITableColumn m_objTableColumn;
-
-    /**
-     * Get the list of all table columns to be displayed.
-     * 
-     * @return an iterator of all table columns
-     */
-	public Iterator getTableColumnIterator()
-	{
-		ITableColumnModel objColumnModel =
-			getTableModelSource().getTableModel().getColumnModel();
-		return objColumnModel.getColumns();
-	}
-
-    /**
-     * Returns the currently rendered table column. 
-     * You can call this method to obtain the current column.
-     *  
-     * @return ITableColumn the current table column
-     */
-	public ITableColumn getTableColumn()
-	{
-		return m_objTableColumn;
-	}
-
-    /**
-     * Sets the currently rendered table column. 
-     * This method is for internal use only.
-     * 
-     * @param tableColumn The current table column
-     */
-	public void setTableColumn(ITableColumn tableColumn)
-	{
-		m_objTableColumn = tableColumn;
-        
-        IBinding objColumnBinding = getColumnBinding();
-        if (objColumnBinding != null)
-            objColumnBinding.setObject(tableColumn);
-	}
-
-    /**
-     * Returns the renderer to be used to generate the appearance of the current column
-     * 
-     * @return the value renderer of the current column
-     */
-	public IRender getTableValueRenderer()
-	{
-		Object objRow = getTableRowSource().getTableRow();
-		return getTableColumn().getValueRenderer(
-			getPage().getRequestCycle(),
-			getTableModelSource(),
-			objRow);
-	}
-
-    /**
-     * Returns the CSS class of the generated table cell.
-     * It uses the class parameter if it has been bound, or
-     * the default value of "[column name]ColumnValue" otherwise.
-     * 
-     * @return the CSS class of the cell
-     */
-    public String getValueClass()
-    {
-        IBinding objClassBinding = getClassBinding();
-        if (objClassBinding != null)
-            return objClassBinding.getString();
-        else
-            return getTableColumn().getColumnName() + TABLE_VALUE_CSS_CLASS_SUFFIX;
-    }
-
-    /**
-     * @see org.apache.tapestry.BaseComponent#renderComponent(org.apache.tapestry.IMarkupWriter, org.apache.tapestry.IRequestCycle)
-     */
-    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        super.renderComponent(writer, cycle);
-
-        // set the current column to null when the component is not active
-        m_objTableColumn = null;
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableValues.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/TableValues.jwc
deleted file mode 100644
index 66c4702..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableValues.jwc
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.table.components.TableValues" 
-	allow-body="yes" allow-informal-parameters="yes">
-	
-	<description>
-        A low level Table component that generates the columns for the current row in the table. 
-        This component must be wrapped by TableRows. 
-	</description>
-  
-	<parameter name="column" 
-		type="org.apache.tapestry.contrib.table.model.ITableColumn" 
-		required="no"
-		direction="custom">
-        <description>The current column being rendered</description>
-    </parameter>
-
-	<parameter name="element" 
-		type="java.lang.String" 
-		required="no"
-		direction="auto"
-    	default-value="'td'">
-        <description>The tag to use to wrap the values in, 'td' by default.</description>
-    </parameter>
-
-    <parameter name="class"
-        type="java.lang.String"
-        required="no"
-        direction="custom">
-        <description>The CSS class of the table values</description>
-    </parameter>
-    
-	<component id="iterColumns" type="Foreach">
-		<binding name="source" expression="tableColumnIterator"/>
-		<binding name="value" expression="tableColumn"/>
-	</component>
-  
-	<component id="informal" type="Any" inherit-informal-parameters="yes">
-		<inherited-binding name="element" parameter-name="element"/>
-        <binding name="class" expression="valueClass"/>
-	</component>
-  
-	<component id="insertValueRenderer" type="Delegator">
-		<binding name="delegate" expression="tableValueRenderer"/>
-	</component>
-  
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableView.html b/contrib/src/org/apache/tapestry/contrib/table/components/TableView.html
deleted file mode 100644
index 331d131..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableView.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<table jwcid="table">
-	<span jwcid="insertWrapped"/>
-</table>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableView.java b/contrib/src/org/apache/tapestry/contrib/table/components/TableView.java
deleted file mode 100644
index 7b60608..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableView.java
+++ /dev/null
@@ -1,477 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.tapestry.ApplicationRuntimeException;
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IBinding;
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IMarkupWriter;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.model.IBasicTableModel;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.ITableColumnModel;
-import org.apache.tapestry.contrib.table.model.ITableDataModel;
-import org.apache.tapestry.contrib.table.model.ITableModel;
-import org.apache.tapestry.contrib.table.model.ITableModelSource;
-import org.apache.tapestry.contrib.table.model.ITablePagingState;
-import org.apache.tapestry.contrib.table.model.ITableSessionStateManager;
-import org.apache.tapestry.contrib.table.model.ITableSessionStoreManager;
-import org.apache.tapestry.contrib.table.model.common.BasicTableModelWrap;
-import org.apache.tapestry.contrib.table.model.simple.SimpleListTableDataModel;
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableColumnModel;
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableModel;
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableState;
-import org.apache.tapestry.event.PageDetachListener;
-import org.apache.tapestry.event.PageEvent;
-import org.apache.tapestry.event.PageRenderListener;
-
-/**
- * A low level Table component that wraps all other low level Table components.
- * This component carries the {@link org.apache.tapestry.contrib.table.model.ITableModel}
- * that is used by the other Table components. Please see the documentation of
- * {@link org.apache.tapestry.contrib.table.model.ITableModel} if you need to know more
- * about how a table is represented.
- * <p>
- * This component also handles the saving of the state of the model using an 
- * {@link org.apache.tapestry.contrib.table.model.ITableSessionStateManager}
- * to determine what part of the model is to be saved and an 
- * {@link  org.apache.tapestry.contrib.table.model.ITableSessionStoreManager}
- * to determine how to save it.
- * <p>
- * Upon the beginning of a new request cycle when the table model is first needed,
- * the model is obtained using the following process:
- * <ul>
- * <li>The persistent state of the table is loaded.
- * If the tableSessionStoreManager binding has not been bound, the state is loaded 
- * from a persistent property within the component (it is null at the beginning). 
- * Otherwise the supplied
- * {@link  org.apache.tapestry.contrib.table.model.ITableSessionStoreManager} is used
- * to load the persistent state.
- * <li>The table model is recreated using the 
- * {@link org.apache.tapestry.contrib.table.model.ITableSessionStateManager} that
- * could be supplied using the tableSessionStateManager binding 
- * (but has a default value and is therefore not required).
- * <li>If the {@link org.apache.tapestry.contrib.table.model.ITableSessionStateManager}
- * returns null, then a table model is taken from the tableModel binding. Thus, if
- * the {@link org.apache.tapestry.contrib.table.model.common.NullTableSessionStateManager}
- * is used, the table model would be taken from the tableModel binding every time.
- * </ul>
- * Just before the rendering phase the persistent state of the model is saved in
- * the session. This process occurs in reverse:
- * <ul>
- * <li>The persistent state of the model is taken via the 
- * {@link org.apache.tapestry.contrib.table.model.ITableSessionStateManager}.
- * <li>If the tableSessionStoreManager binding has not been bound, the persistent
- * state is saved as a persistent page property. Otherwise the supplied
- * {@link  org.apache.tapestry.contrib.table.model.ITableSessionStoreManager} is used
- * to save the persistent state. Use of the 
- * {@link  org.apache.tapestry.contrib.table.model.ITableSessionStoreManager} 
- * is usually necessary when tables with the same model have to be used across 
- * multiple pages, and hence the state has to be saved in the Visit, rather than
- * in a persistent component property.
- * </ul>
- * <p>
- * 
- * <p> 
- * Please see the Component Reference for details on how to use this component. 
- * 
- *  [<a href="../../../../../../../ComponentReference/contrib.TableView.html">Component Reference</a>]
- * 
- * @author mindbridge
- * @version $Id$
- */
-public abstract class TableView
-    extends BaseComponent
-    implements PageDetachListener, PageRenderListener, ITableModelSource
-{
-    // Component properties
-    private ITableSessionStateManager m_objDefaultSessionStateManager = null;
-    private ITableColumnModel m_objColumnModel = null;
-
-    // Transient objects
-    private ITableModel m_objTableModel;
-    private ITableModel m_objCachedTableModelValue;
-
-    // enhanced parameter methods
-    public abstract ITableModel getTableModelValue();
-    public abstract Object getSource();
-    public abstract Object getColumns();
-    public abstract IBinding getColumnsBinding();
-    public abstract IBinding getPageSizeBinding();
-    public abstract String getInitialSortColumn();
-    public abstract boolean getInitialSortOrder();
-    public abstract ITableSessionStateManager getTableSessionStateManager();
-    public abstract ITableSessionStoreManager getTableSessionStoreManager();
-    public abstract IComponent getColumnSettingsContainer();
-
-    // enhanced property methods
-    public abstract Serializable getSessionState();
-    public abstract void setSessionState(Serializable sessionState);
-
-    /**
-     *  The component constructor. Invokes the component member initializations. 
-     */
-    public TableView()
-    {
-        initialize();
-    }
-
-    /**
-     *  Invokes the component member initializations.
-     *  
-     *  @see org.apache.tapestry.event.PageDetachListener#pageDetached(PageEvent)
-     */
-    public void pageDetached(PageEvent objEvent)
-    {
-        initialize();
-    }
-
-    /**
-     *  Initialize the component member variables.
-     */
-    private void initialize()
-    {
-        m_objTableModel = null;
-        m_objCachedTableModelValue = null;
-    }
-
-    /**
-     *  Resets the table by removing any stored table state. 
-     *  This means that the current column to sort on and the current page will be
-     *  forgotten and all data will be reloaded.
-     */
-    public void reset()
-    {
-		initialize();
-        storeSessionState(null);
-    }
-
-    public ITableModel getCachedTableModelValue()
-    {
-        if (m_objCachedTableModelValue == null)
-            m_objCachedTableModelValue = getTableModelValue();
-        return m_objCachedTableModelValue;
-    }
-
-    /**
-     *  Returns the tableModel.
-     * 
-     *  @return ITableModel the table model used by the table components
-     */
-    public ITableModel getTableModel()
-    {
-        // if null, first try to recreate the model from the session state
-        if (m_objTableModel == null)
-        {
-            Serializable objState = loadSessionState();
-            m_objTableModel = getTableSessionStateManager().recreateTableModel(objState);
-        }
-
-        // if the session state does not help, get the model from the binding
-        if (m_objTableModel == null)
-            m_objTableModel = getCachedTableModelValue();
-
-        // if the model from the binding is null, build a model from source and columns
-        if (m_objTableModel == null)
-            m_objTableModel = generateTableModel(null);
-
-        if (m_objTableModel == null)
-            throw new ApplicationRuntimeException(
-                TableUtils.format("missing-table-model", getExtendedId()));
-
-        return m_objTableModel;
-    }
-
-    /**
-     *  Generate a table model using the 'source' and 'columns' parameters.
-     * 
-     *  @return the newly generated table model
-     */
-    protected ITableModel generateTableModel(SimpleTableState objState)
-    {
-        // create a new table state if none is passed
-        if (objState == null)
-        {
-            objState = new SimpleTableState();
-            objState.getSortingState().setSortColumn(getInitialSortColumn(), getInitialSortOrder());
-        }
-
-        // update the page size if set in the parameter
-        IBinding objPageSizeBinding = getPageSizeBinding();
-        if (objPageSizeBinding != null)
-            objState.getPagingState().setPageSize(objPageSizeBinding.getInt());
-
-        // get the column model. if not possible, return null.
-        ITableColumnModel objColumnModel = getTableColumnModel();
-        if (objColumnModel == null)
-            return null;
-
-        Object objSourceValue = getSource();
-        if (objSourceValue == null)
-            return null;
-
-        // if the source parameter is of type {@link IBasicTableModel}, 
-        // create and return an appropriate wrapper
-        if (objSourceValue instanceof IBasicTableModel)
-            return new BasicTableModelWrap(
-                (IBasicTableModel) objSourceValue,
-                objColumnModel,
-                objState);
-
-        // otherwise, the source parameter must contain the data to be displayed
-        ITableDataModel objDataModel = null;
-        if (objSourceValue instanceof Object[])
-            objDataModel = new SimpleListTableDataModel((Object[]) objSourceValue);
-        else if (objSourceValue instanceof List)
-            objDataModel = new SimpleListTableDataModel((List) objSourceValue);
-        else if (objSourceValue instanceof Collection)
-            objDataModel = new SimpleListTableDataModel((Collection) objSourceValue);
-        else if (objSourceValue instanceof Iterator)
-            objDataModel = new SimpleListTableDataModel((Iterator) objSourceValue);
-
-        if (objDataModel == null)
-            throw new ApplicationRuntimeException(
-                TableUtils.format(
-                    "invalid-table-source",
-                    getExtendedId(),
-                    objSourceValue.getClass()));
-
-        return new SimpleTableModel(objDataModel, objColumnModel, objState);
-    }
-
-    /**
-     *  Returns the table column model as specified by the 'columns' binding.
-     *  If the value of the 'columns' binding is of a type different than
-     *  ITableColumnModel, this method makes the appropriate conversion. 
-     * 
-     *  @return The table column model as specified by the 'columns' binding
-     */
-    protected ITableColumnModel getTableColumnModel()
-    {
-        Object objColumns = getColumns();
-
-        if (objColumns == null)
-            return null;
-
-        if (objColumns instanceof ITableColumnModel)
-        {
-            return (ITableColumnModel) objColumns;
-        }
-
-        if (objColumns instanceof Iterator)
-        {
-            // convert to List
-            Iterator objColumnsIterator = (Iterator) objColumns;
-            List arrColumnsList = new ArrayList();
-            CollectionUtils.addAll(arrColumnsList, objColumnsIterator);
-            objColumns = arrColumnsList;
-        }
-
-        if (objColumns instanceof List)
-        {
-            // validate that the list contains only ITableColumn instances
-            List arrColumnsList = (List) objColumns;
-            int nColumnsNumber = arrColumnsList.size();
-            for (int i = 0; i < nColumnsNumber; i++)
-            {
-                if (!(arrColumnsList.get(i) instanceof ITableColumn))
-                    throw new ApplicationRuntimeException(
-                        TableUtils.format("columns-only-please", getExtendedId()));
-            }
-            //objColumns = arrColumnsList.toArray(new ITableColumn[nColumnsNumber]);
-            return new SimpleTableColumnModel(arrColumnsList);
-        }
-
-        if (objColumns instanceof ITableColumn[])
-        {
-            return new SimpleTableColumnModel((ITableColumn[]) objColumns);
-        }
-
-        if (objColumns instanceof String)
-        {
-            String strColumns = (String) objColumns;
-            if (getColumnsBinding().isInvariant())
-            {
-                // if the binding is invariant, create the columns only once
-                if (m_objColumnModel == null)
-                    m_objColumnModel = generateTableColumnModel(strColumns);
-                return m_objColumnModel;
-            }
-
-            // if the binding is not invariant, create them every time
-            return generateTableColumnModel(strColumns);
-        }
-
-        throw new ApplicationRuntimeException(
-            TableUtils.format("invalid-table-columns", getExtendedId(), objColumns.getClass()));
-    }
-
-    /**
-     *  Generate a table column model out of the description string provided.
-     *  Entries in the description string are separated by commas.
-     *  Each column entry is of the format name, name:expression, 
-     *  or name:displayName:expression.
-     *  An entry prefixed with ! represents a non-sortable column.
-     *  If the whole description string is prefixed with *, it represents
-     *  columns to be included in a Form. 
-     * 
-     *  @param strDesc the description of the column model to be generated
-     *  @return a table column model based on the provided description
-     */
-    protected ITableColumnModel generateTableColumnModel(String strDesc)
-    {
-        IComponent objColumnSettingsContainer = getColumnSettingsContainer();
-        return TableUtils.generateTableColumnModel(strDesc, this, objColumnSettingsContainer);
-    }
-
-    /**
-     *  The default session state manager to be used in case no such manager
-     *  is provided by the corresponding parameter.
-     * 
-     *  @return the default session state manager
-     */
-    public ITableSessionStateManager getDefaultTableSessionStateManager()
-    {
-        if (m_objDefaultSessionStateManager == null)
-            m_objDefaultSessionStateManager = new TableViewSessionStateManager(this);
-        return m_objDefaultSessionStateManager;
-    }
-
-    /**
-     *  Invoked when there is a modification of the table state and it needs to be saved
-     *  
-     *  @see org.apache.tapestry.contrib.table.model.ITableModelSource#fireObservedStateChange()
-     */
-    public void fireObservedStateChange()
-    {
-        saveSessionState();
-    }
-
-    /**
-     *  Ensures that the table state is saved before the render phase begins 
-     *  in case there are modifications for which {@link #fireObservedStateChange()} 
-     *  has not been invoked.
-     * 
-     * @see org.apache.tapestry.event.PageRenderListener#pageBeginRender(org.apache.tapestry.event.PageEvent)
-     */
-    public void pageBeginRender(PageEvent event)
-    {
-        // 'suspenders': save the table model if it has been already loaded.
-        // this means that if a change has been made explicitly in a listener, 
-        // it will be saved. this is the last place before committing the changes 
-        // where a save can occur  
-        if (m_objTableModel != null)
-            saveSessionState();
-    }
-
-    /**
-     *  @see org.apache.tapestry.event.PageRenderListener#pageEndRender(PageEvent)
-     */
-    public void pageEndRender(PageEvent objEvent)
-    {
-    }
-
-    /**
-     *  Saves the table state using the SessionStateManager to determine 
-     *  what to save and the SessionStoreManager to determine where to save it.  
-     *
-     */
-    protected void saveSessionState()
-    {
-        ITableModel objModel = getTableModel();
-        Serializable objState = getTableSessionStateManager().getSessionState(objModel);
-        storeSessionState(objState);
-    }
-
-    /**
-     *  Loads the table state using the SessionStoreManager.
-     * 
-     *  @return the stored table state
-     */
-    protected Serializable loadSessionState()
-    {
-        ITableSessionStoreManager objManager = getTableSessionStoreManager();
-        if (objManager != null)
-            return objManager.loadState(getPage().getRequestCycle());
-        return getSessionState();
-    }
-
-    /**
-     *  Stores the table state using the SessionStoreManager.
-     * 
-     *  @param objState the table state to store
-     */
-    protected void storeSessionState(Serializable objState)
-    {
-        ITableSessionStoreManager objManager = getTableSessionStoreManager();
-        if (objManager != null)
-            objManager.saveState(getPage().getRequestCycle(), objState);
-        else
-            setSessionState(objState);
-    }
-
-    /**
-     *  Make sure that the values stored in the model are useable and correct.
-     *  The changes made here are not saved.  
-     */
-    protected void validateValues()
-    {
-        ITableModel objModel = getTableModel();
-
-        // make sure current page is within the allowed range
-        ITablePagingState objPagingState = objModel.getPagingState();
-        int nCurrentPage = objPagingState.getCurrentPage();
-        int nPageCount = objModel.getPageCount();
-        if (nCurrentPage >= nPageCount)
-        {
-            // the current page is greater than the page count. adjust.
-            nCurrentPage = nPageCount - 1;
-            objPagingState.setCurrentPage(nCurrentPage);
-        }
-        if (nCurrentPage < 0)
-        {
-            // the current page is before the first page. adjust.
-            nCurrentPage = 0;
-            objPagingState.setCurrentPage(nCurrentPage);
-        }
-    }
-
-    /**
-     *  Stores a pointer to this component in the Request Cycle while rendering
-     *  so that wrapped components have access to it.
-     * 
-     *  @see org.apache.tapestry.BaseComponent#renderComponent(IMarkupWriter, IRequestCycle)
-     */
-    protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
-    {
-        Object objOldValue = cycle.getAttribute(ITableModelSource.TABLE_MODEL_SOURCE_ATTRIBUTE);
-        cycle.setAttribute(ITableModelSource.TABLE_MODEL_SOURCE_ATTRIBUTE, this);
-
-        initialize();
-        validateValues();
-        super.renderComponent(writer, cycle);
-
-        cycle.setAttribute(ITableModelSource.TABLE_MODEL_SOURCE_ATTRIBUTE, objOldValue);
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableView.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/TableView.jwc
deleted file mode 100644
index b2324fc..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableView.jwc
+++ /dev/null
@@ -1,139 +0,0 @@
-<?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 component-specification PUBLIC 
-    "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-    "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-
-<component-specification class="org.apache.tapestry.contrib.table.components.TableView" 
-    allow-body="yes" allow-informal-parameters="yes">
-    
-    <description>
-        The main lower-level Table component.
-        This component should wrap all other lower-level Table components such as 
-        TablePages and TableRows, as it provides the data they use.
-    </description>
-    
-    <parameter name="tableModel" 
-        type="org.apache.tapestry.contrib.table.model.ITableModel" 
-        property-name="tableModelValue"
-        required="no" 
-        direction="auto"
-        default-value="null">
-        <description>
-            The model describing the data to be presented by the table components.
-            This parameter is optional, but either the 'tableModel' or both
-            'source' and 'columns' parameters must be provided.
-        </description>
-    </parameter>
-    
-    <parameter name="source" type="java.lang.Object" required="no" direction="auto" default-value="null">
-        <description>
-            The data to be displayed by the component. This parameter is available as
-            an alternative to tableModel and must be used in combination with the
-            'columns' parameter. 
-            The parameter must be an array of values, a collection, an iterator, 
-            or an object implementing the IBasicTableModel interface.
-        </description>
-    </parameter>
-    
-    <parameter name="columns" type="java.lang.Object" required="no" direction="auto" default-value="null">
-        <description>
-            The table columns to be displayed. 
-            The parameter must be an array, a list, or an Iterator of ITableColumn objects,
-            an ITableColumnModel, or a String describing the columns (see documentation).
-        </description>
-    </parameter>
-    
-	<parameter name="pageSize" 
-		type="int" 
-		required="no">
-        <description>
-            The number of records displayed per page when source/columns are used.
-            The page size is 10 by default.
-        </description>
-    </parameter>
-  
-	<parameter name="initialSortColumn" 
-		type="java.lang.String" 
-		required="no"
-        direction="auto"
-        default-value="null">
-        <description>
-            The id of the column to initially sort the table by.
-            The column is set to null by default, i.e. there is no sorting.
-        </description>
-    </parameter>
-  
-	<parameter name="initialSortOrder" 
-		type="boolean" 
-		required="no"
-        direction="auto"
-        default-value="false">
-        <description>
-            The order of the initial sorting.
-            Set this parameter to 'false' to sort in an ascending order
-            and to 'true' to sort in a descending one.
-        </description>
-    </parameter>
-  
-    <parameter name="tableSessionStateManager" 
-        type="org.apache.tapestry.contrib.table.model.ITableSessionStateManager" 
-        required="no"
-        direction="auto"
-        default-value="defaultTableSessionStateManager">
-        <description>
-            The manager defining what part of the table model will be stored in 
-            the session.
-        </description>
-    </parameter>
-    
-    <parameter name="tableSessionStoreManager" 
-        type="org.apache.tapestry.contrib.table.model.ITableSessionStoreManager" 
-        required="no"
-        direction="auto"
-        default-value="null">
-        <description>
-            The manager defining where the session data will be stored.
-        </description>
-    </parameter>
-    
-    <parameter name="columnSettingsContainer" 
-        type="org.apache.tapestry.IComponent" 
-        required="no" 
-        direction="auto" 
-        default-value="container">
-        <description>
-            The component where Block and messages are pulled from when using source/columns.
-        </description>
-    </parameter>
-    
-    <parameter name="element" type="java.lang.String" required="no" default-value="'table'">
-        <description>
-            The tag with which the component will be inserted in the generated content.
-        </description>
-    </parameter>
-    
-    <property-specification name="sessionState" type="java.io.Serializable" persistent="yes"/>
-    
-    <component id="table" type="Any" inherit-informal-parameters="yes">
-        <inherited-binding name="element" parameter-name="element"/>
-    </component>
-    
-    <component id="insertWrapped" type="RenderBody"/>
-    
-</component-specification>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableViewSessionStateManager.java b/contrib/src/org/apache/tapestry/contrib/table/components/TableViewSessionStateManager.java
deleted file mode 100644
index b54ec2c..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableViewSessionStateManager.java
+++ /dev/null
@@ -1,69 +0,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.
-
-package org.apache.tapestry.contrib.table.components;
-
-import java.io.Serializable;
-
-import org.apache.tapestry.contrib.table.model.ITableModel;
-import org.apache.tapestry.contrib.table.model.ITableSessionStateManager;
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableState;
-
-/**
- *  Acts like {@link org.apache.tapestry.contrib.table.model.common.FullTableSessionStateManager} 
- *  if the model is provided via the tableModel parameter; 
- *  saves only the model state otherwise. 
- * 
- *  @author mindbridge
- *  @version $Id$
- */
-public class TableViewSessionStateManager implements ITableSessionStateManager
-{
-    private TableView m_objView;
-
-    public TableViewSessionStateManager(TableView objView)
-    {
-        m_objView = objView;
-    }
-    
-    /**
-     * @see org.apache.tapestry.contrib.table.model.ITableSessionStateManager#getSessionState(org.apache.tapestry.contrib.table.model.ITableModel)
-     */
-    public Serializable getSessionState(ITableModel objModel)
-    {
-        // if the model is provided using the 'tableModel' parameter, 
-        // emulate FullTableSessionStateManager and save everything
-        // (backward compatibility)
-        if (m_objView.getCachedTableModelValue() != null)
-            return (Serializable) objModel;
-            
-        // otherwise save only the state
-        return new SimpleTableState(objModel.getPagingState(), objModel.getSortingState());
-    }
-
-    /**
-     * @see org.apache.tapestry.contrib.table.model.ITableSessionStateManager#recreateTableModel(java.io.Serializable)
-     */
-    public ITableModel recreateTableModel(Serializable objState)
-    {
-        // if the state implements ITableModel, return itself
-        // (backward compatibility)
-        if (objState instanceof ITableModel)
-            return (ITableModel) objState;
-            
-        // otherwise have the component re-generate the model using the provided state
-        return m_objView.generateTableModel((SimpleTableState) objState);
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnComponent.html b/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnComponent.html
deleted file mode 100644
index 6dcb718..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnComponent.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<span jwcid="condSorted">
-	<table border=0 cellspacing=0 cellpadding=0 align="center">
-	<tr>
-	<td><a jwcid="linkColumn"><span jwcid="insertSortedColumn"/></a></td>
-	<span jwcid="condSort"><td>&nbsp;<span jwcid="imageSort" align="center"/></td></span>
-	</tr>
-	</table>
-</span>
-
-<span jwcid="condNotSorted">
-	<span jwcid="insertNotSortedColumn"/>
-</span>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnComponent.java b/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnComponent.java
deleted file mode 100644
index 9b83796..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnComponent.java
+++ /dev/null
@@ -1,164 +0,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.
-
-package org.apache.tapestry.contrib.table.components.inserted;
-
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IAsset;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.components.TableColumns;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.ITableModel;
-import org.apache.tapestry.contrib.table.model.ITableModelSource;
-import org.apache.tapestry.contrib.table.model.ITableRendererListener;
-import org.apache.tapestry.contrib.table.model.ITableSortingState;
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableColumn;
-import org.apache.tapestry.event.PageDetachListener;
-import org.apache.tapestry.event.PageEvent;
-import org.apache.tapestry.util.ComponentAddress;
-
-/**
- * A component that renders the default column header.
- * 
- * If the current column is sortable, it renders the header as a link.
- * Clicking on the link causes the table to be sorted on that column.
- * Clicking on the link again causes the sorting order to be reversed.
- * 
- * @version $Id$
- * @author mindbridge
- */
-public class SimpleTableColumnComponent
-	extends BaseComponent
-	implements ITableRendererListener, PageDetachListener
-{
-	// transient
-	private ITableColumn m_objColumn;
-	private ITableModelSource m_objModelSource;
-
-	public SimpleTableColumnComponent()
-	{
-		init();
-	}
-
-	/**
-	 * @see org.apache.tapestry.event.PageDetachListener#pageDetached(PageEvent)
-	 */
-	public void pageDetached(PageEvent arg0)
-	{
-		init();
-	}
-
-	private void init()
-	{
-		m_objColumn = null;
-		m_objModelSource = null;
-	}
-
-
-    /**
-     * @see org.apache.tapestry.contrib.table.model.ITableRendererListener#initializeRenderer(IRequestCycle, ITableModelSource, ITableColumn, Object)
-     */
-    public void initializeRenderer(
-        IRequestCycle objCycle,
-        ITableModelSource objSource,
-        ITableColumn objColumn,
-        Object objRow)
-    {
-        m_objModelSource = objSource;
-        m_objColumn = objColumn;
-    }
-
-	public ITableModel getTableModel()
-	{
-		return m_objModelSource.getTableModel();
-	}
-
-	public boolean getColumnSorted()
-	{
-		return m_objColumn.getSortable();
-	}
-
-	public String getDisplayName()
-	{
-        if (m_objColumn instanceof SimpleTableColumn) {
-            SimpleTableColumn objSimpleColumn = (SimpleTableColumn) m_objColumn;
-    		return objSimpleColumn.getDisplayName();
-        }
-        return m_objColumn.getColumnName();
-	}
-
-	public boolean getIsSorted()
-	{
-		ITableSortingState objSortingState = getTableModel().getSortingState();
-		String strSortColumn = objSortingState.getSortColumn();
-		return m_objColumn.getColumnName().equals(strSortColumn);
-	}
-
-	public IAsset getSortImage()
-	{
-		IAsset objImageAsset;
-
-		IRequestCycle objCycle = getPage().getRequestCycle();
-		ITableSortingState objSortingState = getTableModel().getSortingState();
-		if (objSortingState.getSortOrder()
-			== ITableSortingState.SORT_ASCENDING)
-		{
-			objImageAsset =
-				(IAsset) objCycle.getAttribute(
-					TableColumns.TABLE_COLUMN_ARROW_UP_ATTRIBUTE);
-			if (objImageAsset == null)
-				objImageAsset = getAsset("sortUp");
-		}
-		else
-		{
-			objImageAsset =
-				(IAsset) objCycle.getAttribute(
-					TableColumns.TABLE_COLUMN_ARROW_DOWN_ATTRIBUTE);
-			if (objImageAsset == null)
-				objImageAsset = getAsset("sortDown");
-		}
-
-		return objImageAsset;
-	}
-
-	public Object[] getColumnSelectedParameters()
-	{
-		return new Object[] {
-			new ComponentAddress(m_objModelSource),
-			m_objColumn.getColumnName()};
-	}
-
-	public void columnSelected(IRequestCycle objCycle)
-	{
-		Object[] arrArgs = objCycle.getServiceParameters();
-		ComponentAddress objAddr = (ComponentAddress) arrArgs[0];
-		String strColumnName = (String) arrArgs[1];
-
-		ITableModelSource objSource =
-			(ITableModelSource) objAddr.findComponent(objCycle);
-		ITableModel objModel = objSource.getTableModel();
-
-		ITableSortingState objState = objModel.getSortingState();
-		if (strColumnName.equals(objState.getSortColumn()))
-			objState.setSortColumn(strColumnName, !objState.getSortOrder());
-		else
-			objState.setSortColumn(
-				strColumnName,
-				ITableSortingState.SORT_ASCENDING);
-
-		// ensure that the change is saved
-		objSource.fireObservedStateChange();
-	}
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnComponent.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnComponent.jwc
deleted file mode 100644
index 93065bc..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnComponent.jwc
+++ /dev/null
@@ -1,60 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.table.components.inserted.SimpleTableColumnComponent" 
-	allow-informal-parameters="yes">
-	
-	<description>
-	</description>
-	
-	<component id="condSorted" type="Conditional">
-		<binding name="condition" expression="columnSorted"/>
-	</component>
-	
-	<component id="condNotSorted" type="Conditional">
-		<binding name="condition" expression="columnSorted"/>
-		<static-binding name="invert">true</static-binding>
-	</component>
-	
-	<component id="insertSortedColumn" type="Insert">
-		<binding name="value" expression="displayName"/>
-	</component>
-	
-	<component id="insertNotSortedColumn" type="Insert">
-		<binding name="value" expression="displayName"/>
-	</component>
-	
-	<component id="linkColumn" type="DirectLink">
-		<binding name="listener" expression="listeners.columnSelected"/>
-		<binding name="parameters" expression="columnSelectedParameters"/>
-	</component>
-	
-	<component id="imageSort" type="Image">
-		<binding name="image" expression="sortImage"/>
-	</component>
-	
-	<component id="condSort" type="Conditional">
-		<binding name="condition" expression="isSorted"/>
-	</component>
-	
-    <private-asset name="sortDown" resource-path="arrow-down.gif"/>
-    <private-asset name="sortUp" resource-path="arrow-up.gif"/>
-</component-specification>
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.html b/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.html
deleted file mode 100644
index 6dcb718..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-<span jwcid="condSorted">
-	<table border=0 cellspacing=0 cellpadding=0 align="center">
-	<tr>
-	<td><a jwcid="linkColumn"><span jwcid="insertSortedColumn"/></a></td>
-	<span jwcid="condSort"><td>&nbsp;<span jwcid="imageSort" align="center"/></td></span>
-	</tr>
-	</table>
-</span>
-
-<span jwcid="condNotSorted">
-	<span jwcid="insertNotSortedColumn"/>
-</span>
-
-</span>
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.java b/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.java
deleted file mode 100644
index bfd9795..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.java
+++ /dev/null
@@ -1,137 +0,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.
-
-package org.apache.tapestry.contrib.table.components.inserted;
-
-import org.apache.tapestry.BaseComponent;
-import org.apache.tapestry.IAsset;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.components.TableColumns;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.ITableModel;
-import org.apache.tapestry.contrib.table.model.ITableModelSource;
-import org.apache.tapestry.contrib.table.model.ITableRendererListener;
-import org.apache.tapestry.contrib.table.model.ITableSortingState;
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableColumn;
-
-/**
- * A component that renders the default column header in a form.
- * 
- * If the current column is sortable, it renders the header as a link.
- * Clicking on the link causes the table to be sorted on that column.
- * Clicking on the link again causes the sorting order to be reversed.
- * 
- * This component renders links that cause the form to be submitted. 
- * This ensures that the updated data in the other form fields is preserved. 
- * 
- * @version $Id$
- * @author mindbridge
- */
-public abstract class SimpleTableColumnFormComponent
-	extends BaseComponent
-	implements ITableRendererListener
-{
-
-    public abstract ITableColumn getTableColumn();
-    public abstract void setTableColumn(ITableColumn objColumn);
-
-    public abstract ITableModelSource getTableModelSource();
-    public abstract void setTableModelSource(ITableModelSource objSource);
-
-    public abstract String getSelectedColumnName();
-
-    /**
-     * @see org.apache.tapestry.contrib.table.model.ITableRendererListener#initializeRenderer(IRequestCycle, ITableModelSource, ITableColumn, Object)
-     */
-    public void initializeRenderer(
-        IRequestCycle objCycle,
-        ITableModelSource objSource,
-        ITableColumn objColumn,
-        Object objRow)
-    {
-        setTableModelSource(objSource);
-        setTableColumn(objColumn);
-    }
-
-	public ITableModel getTableModel()
-	{
-		return getTableModelSource().getTableModel();
-	}
-
-	public boolean getColumnSorted()
-	{
-		return getTableColumn().getSortable();
-	}
-
-	public String getDisplayName()
-	{
-        ITableColumn objColumn = getTableColumn();
-        
-        if (objColumn instanceof SimpleTableColumn) {
-            SimpleTableColumn objSimpleColumn = (SimpleTableColumn) objColumn;
-    		return objSimpleColumn.getDisplayName();
-        }
-        return objColumn.getColumnName();
-	}
-
-	public boolean getIsSorted()
-	{
-		ITableSortingState objSortingState = getTableModel().getSortingState();
-		String strSortColumn = objSortingState.getSortColumn();
-		return getTableColumn().getColumnName().equals(strSortColumn);
-	}
-
-	public IAsset getSortImage()
-	{
-		IAsset objImageAsset;
-
-		IRequestCycle objCycle = getPage().getRequestCycle();
-		ITableSortingState objSortingState = getTableModel().getSortingState();
-		if (objSortingState.getSortOrder()
-			== ITableSortingState.SORT_ASCENDING)
-		{
-			objImageAsset =
-				(IAsset) objCycle.getAttribute(
-					TableColumns.TABLE_COLUMN_ARROW_UP_ATTRIBUTE);
-			if (objImageAsset == null)
-				objImageAsset = getAsset("sortUp");
-		}
-		else
-		{
-			objImageAsset =
-				(IAsset) objCycle.getAttribute(
-					TableColumns.TABLE_COLUMN_ARROW_DOWN_ATTRIBUTE);
-			if (objImageAsset == null)
-				objImageAsset = getAsset("sortDown");
-		}
-
-		return objImageAsset;
-	}
-
-	public void columnSelected(IRequestCycle objCycle)
-	{
-        String strColumnName = getSelectedColumnName();
-		ITableSortingState objState = getTableModel().getSortingState();
-		if (strColumnName.equals(objState.getSortColumn()))
-			objState.setSortColumn(strColumnName, !objState.getSortOrder());
-		else
-			objState.setSortColumn(
-				strColumnName,
-				ITableSortingState.SORT_ASCENDING);
-
-		// ensure that the change is saved
-		getTableModelSource().fireObservedStateChange();
-	}
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.jwc
deleted file mode 100644
index 7f36541..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnFormComponent.jwc
+++ /dev/null
@@ -1,71 +0,0 @@
-<?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 component-specification PUBLIC 
-  "-//Apache Software Foundation//Tapestry Specification 3.0//EN" 
-  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
-	
-<component-specification class="org.apache.tapestry.contrib.table.components.inserted.SimpleTableColumnFormComponent" 
-	allow-informal-parameters="yes">
-	
-	<description>
-	</description>
-	
-	<property-specification name="tableModelSource" 
-		type="org.apache.tapestry.contrib.table.model.ITableModelSource"
-		initial-value="null"/>
-	
-	<property-specification name="tableColumn" 
-		type="org.apache.tapestry.contrib.table.model.ITableColumn"
-		initial-value="null"/>
-	
-	<property-specification name="selectedColumnName" type="java.lang.String"/>
-	
-	<component id="condSorted" type="FormConditional">
-		<binding name="condition" expression="columnSorted"/>
-	</component>
-	
-	<component id="condNotSorted" type="FormConditional">
-		<binding name="condition" expression="!columnSorted"/>
-	</component>
-	
-	<component id="insertSortedColumn" type="Insert">
-		<binding name="value" expression="displayName"/>
-	</component>
-	
-	<component id="insertNotSortedColumn" type="Insert">
-		<binding name="value" expression="displayName"/>
-	</component>
-	
-	<component id="linkColumn" type="LinkSubmit">
-		<binding name="listener" expression="listeners.columnSelected"/>
-		<binding name="tag" expression="tableColumn.columnName"/>
-		<binding name="selected" expression="selectedColumnName"/>
-	</component>
-	
-	<component id="imageSort" type="Image">
-		<binding name="image" expression="sortImage"/>
-	</component>
-	
-	<component id="condSort" type="FormConditional">
-		<binding name="condition" expression="isSorted"/>
-	</component>
-	
-    <private-asset name="sortDown" resource-path="arrow-down.gif"/>
-    <private-asset name="sortUp" resource-path="arrow-up.gif"/>
-    
-</component-specification>
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnPage.html b/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnPage.html
deleted file mode 100644
index a1d70de..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnPage.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!-- $Id$ -->
-
-<span jwcid="$content$">
-
-	<span jwcid="tableColumnComponent"/>
-	<span jwcid="tableColumnFormComponent"/>
-
-</span>
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnPage.page b/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnPage.page
deleted file mode 100644
index b84772d..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/SimpleTableColumnPage.page
+++ /dev/null
@@ -1,27 +0,0 @@
-<?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>
-
-	<component id="tableColumnComponent" type="SimpleTableColumnComponent"/>
-	<component id="tableColumnFormComponent" type="SimpleTableColumnFormComponent"/>
-
-</page-specification>
\ No newline at end of file
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/arrow-down.gif b/contrib/src/org/apache/tapestry/contrib/table/components/inserted/arrow-down.gif
deleted file mode 100644
index d9339a6..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/arrow-down.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/arrow-up.gif b/contrib/src/org/apache/tapestry/contrib/table/components/inserted/arrow-up.gif
deleted file mode 100644
index b70a479..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/components/inserted/arrow-up.gif
+++ /dev/null
Binary files differ
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/CTableDataModelEvent.java b/contrib/src/org/apache/tapestry/contrib/table/model/CTableDataModelEvent.java
deleted file mode 100644
index c402687..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/CTableDataModelEvent.java
+++ /dev/null
@@ -1,25 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-/**
- * @author mindbridge
- *
- */
-public class CTableDataModelEvent
-{
-    public CTableDataModelEvent() {
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/IBasicTableModel.java b/contrib/src/org/apache/tapestry/contrib/table/model/IBasicTableModel.java
deleted file mode 100644
index aa1ac30..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/IBasicTableModel.java
+++ /dev/null
@@ -1,43 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-import java.util.Iterator;
-
-/**
- * A simplified version of the table model that concerns itself only with
- * providing the data on the current page. 
- * 
- * @version $Id$
- * @author mindbridge
- * @since 3.0
- */
-public interface IBasicTableModel
-{
-    /**
-     *  Returns the number of all records
-     *  @return the number of all rows
-     **/
-    int getRowCount();
-
-    /** 
-     *  Returns the rows on the current page.
-     *  @param nFirst the index of the first item to be dispayed
-     *  @param nPageSize the number of items to be displayed
-     *  @param objSortColumn the column to sort by or null if there is no sorting
-     *  @param bSortOrder determines the sorting order (ascending or descending)
-     **/
-    Iterator getCurrentPageRows(int nFirst, int nPageSize, ITableColumn objSortColumn, boolean bSortOrder);
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/IPrimaryKeyConvertor.java b/contrib/src/org/apache/tapestry/contrib/table/model/IPrimaryKeyConvertor.java
deleted file mode 100644
index ec66178..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/IPrimaryKeyConvertor.java
+++ /dev/null
@@ -1,43 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-/**
- * An interface for converting an object to its primary key and back. 
- * Typically used to determine how to store a given object as a hidden 
- * value when rendering a form.
- * 
- * @version $Id$
- * @author mb
- * @since 3.0
- */
-public interface IPrimaryKeyConvertor
-{
-    /**
-     * Gets the serializable primary key of the given value
-     * 
-     * @param objValue the value for which a primary key needs to be extracted
-     * @return the serializable primary key of the value
-     */
-    Object getPrimaryKey(Object objValue);
-    
-    /**
-     * Gets the value corresponding the given primary key 
-     *  
-     * @param objPrimaryKey the primary key for which a value needs to be generated
-     * @return the generated value corresponding to the given primary key
-     */
-    Object getValue(Object objPrimaryKey); 
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableColumn.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableColumn.java
deleted file mode 100644
index 5ce6c13..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableColumn.java
+++ /dev/null
@@ -1,89 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-import java.util.Comparator;
-
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-
-/**
- * The interface defining a table column. 
- * 
- * A column is responsible for presenting a particular part of the data
- * from the objects in the table. This is done via the getValueRender() method.
- * 
- * A column may be sortable, in which case it defines the way in which the
- * objects in the table must be sorted by providing a Comparator.
- * 
- * @version $Id$
- * @author mindbridge
- */
-public interface ITableColumn
-{
-	/**
-	 * Method getColumnName provides the name of the column. 
-	 *
-	 * The column name must be unique and is generally used for the identification 
-	 * of the column. It does not have to be the same as the display name 
-	 * via which the column is identified to the user (see the getColumnRender() method).
-	 * @return String the name of the column
-	 */
-	String getColumnName();
-
-	/**
-	 * Method getSortable declares whether the column allows sorting.
-	 * If the column allows sorting, it must also return a valid Comparator
-	 * via the getComparator() method.
-	 * @return boolean whether the column is sortable or not
-	 */
-	boolean getSortable();
-
-	/**
-	 * Method getComparator returns the Comparator to be used to sort 
-	 * the data in the table according to this column. The Comparator must
-	 * accept two different rows, compare them according to this column, 
-	 * and return the appropriate value.
-	 * @return Comparator the Comparator used to sort the table data
-	 */
-	Comparator getComparator();
-
-	/**
-	 * Method getColumnRenderer provides a renderer that takes care of rendering 
-	 * the column in the table header. If the column is sortable, the renderer
-	 * may provide a mechanism to sort the table in an ascending or descending 
-	 * manner.
-	 * @param objCycle the current request cycle
-	 * @param objSource a component that can provide the table model (typically TableView)
-	 * @return IRender the renderer to present the column header
-	 */
-	IRender getColumnRenderer(
-		IRequestCycle objCycle,
-		ITableModelSource objSource);
-
-	/**
-	 * Method getValueRenderer provides a renderer for presenting the value of a 
-	 * particular row in the current column.
-	 * 
-	 * @param objCycle the current request cycle
-	 * @param objSource a component that can provide the table model (typically TableView)
-	 * @param objRow the row data
-	 * @return IRender the renderer to present the value of the row in this column
-	 */
-	IRender getValueRenderer(
-		IRequestCycle objCycle,
-		ITableModelSource objSource,
-		Object objRow);
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableColumnModel.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableColumnModel.java
deleted file mode 100644
index 26de305..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableColumnModel.java
+++ /dev/null
@@ -1,45 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-import java.util.Iterator;
-
-/**
- * Defines a list model of ITableColumn objects
- * 
- * @version $Id$
- * @author mindbridge
- */
-public interface ITableColumnModel
-{
-	/**
-	 * Method getColumnCount.
-	 * @return int the number of columns in the model
-	 */
-	int getColumnCount();
-
-	/**
-	 * Method getColumn.
-	 * @param strName the name of the requested column
-	 * @return ITableColumn the column with the given name. null if no such column exists.
-	 */
-	ITableColumn getColumn(String strName);
-
-	/**
-	 * Method getColumns.
-	 * @return Iterator an iterator of all columns in the model
-	 */
-	Iterator getColumns();
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableDataModel.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableDataModel.java
deleted file mode 100644
index 9cfb723..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableDataModel.java
+++ /dev/null
@@ -1,55 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-import java.util.Iterator;
-
-/**
- * A model of the table's data
- * This model need not be used. Implementations may choose to
- * access data via an abstraction.
- * 
- * @version $Id$
- * @author mindbridge
- */
-public interface ITableDataModel
-{
-	/**
-	 * Method getRowCount.
-	 * @return int the number of rows in the model
-	 */
-	int getRowCount();
-
-	/**
-	 * Iterates over all of the rows in the model
-	 * @return Iterator the iterator for access to the data
-	 */
-	Iterator getRows();
-    
-	/**
-	 * Method addTableDataModelListener
-     * Adds a listener that is notified when the data in the model is changed
-	 * @param objListener the listener to add
-	 */
-    void addTableDataModelListener(ITableDataModelListener objListener);
-
-	/**
-	 * Method removeTableDataModelListener.
-     * Removes a listener that is notified when the data in the model is changed
-	 * @param objListener the listener to remove
-	 */
-    void removeTableDataModelListener(ITableDataModelListener objListener);
-    
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableDataModelListener.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableDataModelListener.java
deleted file mode 100644
index 55026d0..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableDataModelListener.java
+++ /dev/null
@@ -1,24 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-/**
- * @author mindbridge
- *
- */
-public interface ITableDataModelListener
-{
-    void tableDataChanged(CTableDataModelEvent objEvent);
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableModel.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableModel.java
deleted file mode 100644
index a244ca7..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableModel.java
+++ /dev/null
@@ -1,54 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-import java.util.Iterator;
-
-/**
- * The main interface defining the abstraction containing the table data and state
- * 
- * @version $Id$
- * @author mindbridge
- */
-public interface ITableModel
-{
-	/**
-	 * Method getColumnModel.
-	 * @return ITableColumnModel the column model of the table
-	 */
-	ITableColumnModel getColumnModel();
-
-	/**
-	 * Method getSortingState.
-	 * @return ITableSortingState the sorting state of the table
-	 */
-	ITableSortingState getSortingState();
-	/**
-	 * Method getPagingState.
-	 * @return ITablePagingState the paging state of the table
-	 */
-	ITablePagingState getPagingState();
-
-	/**
-	 * Method getPageCount.
-	 * @return int the number of pages this table would have given the current data and paging state
-	 */
-	int getPageCount();
-	/**
-	 * Method getCurrentPageRows.
-	 * @return Iterator the rows in the current table page given the current data, sorting, and paging state
-	 */
-	Iterator getCurrentPageRows();
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableModelSource.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableModelSource.java
deleted file mode 100644
index 4b8ce2f..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableModelSource.java
+++ /dev/null
@@ -1,46 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-import org.apache.tapestry.IComponent;
-
-/**
- * A Tapestry component that provides the current table model.
- * This interface is used for obtaining the table model source by
- * components wrapped by it, as well as by external renderers,
- * such as those provided by the column implementations
- * 
- * @version $Id$
- * @author mindbridge
- */
-public interface ITableModelSource extends IComponent
-{
-    final static String TABLE_MODEL_SOURCE_ATTRIBUTE = "org.apache.tapestry.contrib.table.model.ITableModelSource";
-
-	/**
-	 * Returns the table model currently used
-	 * @return ITableModel the current table model
-	 */
-	ITableModel getTableModel();
-
-	/**
-	 * Notifies the model source that the model state has changed, and 
-     * that it should consider saving it.<p>
-     * This method was added to allow using the table within a Block when 
-     * the pageBeginRender() listener of the implementation will not be called
-     * and automatic state storage will therefore be hard to implement.
-	 */
-    void fireObservedStateChange();
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITablePagingState.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITablePagingState.java
deleted file mode 100644
index ecbd8af..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITablePagingState.java
+++ /dev/null
@@ -1,50 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-/**
- * An interface defining the management of the table's paging state.
- * 
- * @version $Id$
- * @author mindbridge
- */
-public interface ITablePagingState
-{
-	/**
-	 * Method getPageSize provides the size of a page in a number of records.
-	 * This value may be meaningless if the model uses a different method for pagination.
-	 * @return int the current page size
-	 */
-	int getPageSize();
-
-	/**
-	 * Method setPageSize updates the size of a page in a number of records.
-	 * This value may be meaningless if the model uses a different method for pagination.
-	 * @param nPageSize the new page size
-	 */
-	void setPageSize(int nPageSize);
-
-	/**
-	 * Gets the currently selected page. The page number is counted from 0.
-	 * @return int the current active page
-	 */
-	int getCurrentPage();
-
-	/**
-	 * Sets the newly selected page. The page number is counted from 0.
-	 * @param nPage the new active page
-	 */
-	void setCurrentPage(int nPage);
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableRendererListener.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableRendererListener.java
deleted file mode 100644
index a24c1a1a..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableRendererListener.java
+++ /dev/null
@@ -1,34 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IRequestCycle;
-
-/**
- * 
- * @see org.apache.tapestry.contrib.table.model.common.AbstractTableColumn
- * @version $Id$
- * @author mindbridge
- * @since 2.3
- */
-public interface ITableRendererListener extends IComponent
-{
-	void initializeRenderer(
-		IRequestCycle objCycle,
-		ITableModelSource objSource,
-		ITableColumn objColumn,
-		Object objRow);
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableRendererSource.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableRendererSource.java
deleted file mode 100644
index c6348f8..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableRendererSource.java
+++ /dev/null
@@ -1,47 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-import java.io.Serializable;
-
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-
-/**
- * This interface provides a renderer to present the data in a table column.
- * It is usually used by the {@link org.apache.tapestry.contrib.table.model.ITableColumn} 
- * implementations via aggregation.
- * 
- * @see org.apache.tapestry.contrib.table.model.common.AbstractTableColumn
- * @version $Id$
- * @author mindbridge
- * @since 2.3
- */
-public interface ITableRendererSource extends Serializable
-{
-	/**
-	 * Returns a renderer to present the data of the row in the given column. <p>
-	 * This method can also be used to return a renderer to present the
-	 * heading of the column. In such a case the row passed would be null.
-	 * 
-	 * @see org.apache.tapestry.contrib.table.model.ITableColumn#getValueRenderer(IRequestCycle, ITableModelSource, Object)
-	 */
-	public IRender getRenderer(
-		IRequestCycle objCycle,
-		ITableModelSource objSource,
-		ITableColumn objColumn,
-		Object objRow);
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableRowSource.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableRowSource.java
deleted file mode 100644
index e358297..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableRowSource.java
+++ /dev/null
@@ -1,34 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-/**
- * A Tapestry component that provides the current row value.
- * This interface is used for obtaining the row source by components 
- * wrapped by the row source
- * 
- * @version $Id$
- * @author mindbridge
- */
-public interface ITableRowSource
-{
-    final static String TABLE_ROW_SOURCE_ATTRIBUTE = "org.apache.tapestry.contrib.table.model.ITableRowSource";
-
-	/**
-	 * Method getTableRow
-	 * @return Object the current table row object
-	 */
-    Object getTableRow();
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableSessionStateManager.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableSessionStateManager.java
deleted file mode 100644
index 2358beb..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableSessionStateManager.java
+++ /dev/null
@@ -1,45 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-import java.io.Serializable;
-
-/**
- * An  interface responsible for determining <b>what</b> data would be stored 
- * in the session between requests. 
- * It could be only the table state, it could be entire table including the data,
- * or it could be nothing at all. 
- * It is all determined by the implemention of this interface.
- * 
- * @version $Id$
- * @author mindbridge
- */
-public interface ITableSessionStateManager
-{
-
-	/**
-	 * Method getSessionState extracts the "persistent" portion of the table model
-	 * @param objModel the table model to extract the session state from
-	 * @return Object the session state to be saved between the requests
-	 */
-	Serializable getSessionState(ITableModel objModel);
-
-	/**
-	 * Method recreateTableModel recreates a table model from the saved session state
-	 * @param objState the saved session state
-	 * @return ITableModel the recreated table model
-	 */
-	ITableModel recreateTableModel(Serializable objState);
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableSessionStoreManager.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableSessionStoreManager.java
deleted file mode 100644
index 6fb7261..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableSessionStoreManager.java
+++ /dev/null
@@ -1,42 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-import java.io.Serializable;
-
-import org.apache.tapestry.IRequestCycle;
-
-/**
- * An interface responsible for determining <b>where</b> the session state 
- * will be saved between requests.
- *  
- * @version $Id$
- * @author mindbridge
- */
-public interface ITableSessionStoreManager
-{
-	/**
-	 * Method saveState saves the session sate
-	 * @param objCycle the current request cycle
-	 * @param objState the session state to be saved
-	 */
-	void saveState(IRequestCycle objCycle, Serializable objState);
-	/**
-	 * Method loadState loads the session state
-	 * @param objCycle the current request cycle
-	 * @return Object the loaded sessions state
-	 */
-	Serializable loadState(IRequestCycle objCycle);
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ITableSortingState.java b/contrib/src/org/apache/tapestry/contrib/table/model/ITableSortingState.java
deleted file mode 100644
index 2fb8002..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ITableSortingState.java
+++ /dev/null
@@ -1,46 +0,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.
-
-package org.apache.tapestry.contrib.table.model;
-
-/**
- * An interface defining the management of the table's sorting state.
- * 
- * @version $Id$
- * @author mindbridge
- */
-public interface ITableSortingState
-{
-	static final boolean SORT_ASCENDING = false;
-	static final boolean SORT_DESCENDING = true;
-
-	/**
-	 * Method getSortColumn defines the column that the table should be sorted upon
-	 * @return String the name of the sorting column or null if the table is not sorted
-	 */
-	String getSortColumn();
-
-	/**
-	 * Method getSortOrder defines the direction of the table sorting 
-	 * @return boolean the sorting order (see constants)
-	 */
-	boolean getSortOrder();
-
-	/**
-	 * Method setSortColumn updates the table sorting column and order
-	 * @param strName the name of the column to sort by
-	 * @param bOrder the sorting order (see constants)
-	 */
-	void setSortColumn(String strName, boolean bOrder);
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/common/AbstractTableColumn.java b/contrib/src/org/apache/tapestry/contrib/table/model/common/AbstractTableColumn.java
deleted file mode 100644
index 5d69c1d..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/common/AbstractTableColumn.java
+++ /dev/null
@@ -1,232 +0,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.
-
-package org.apache.tapestry.contrib.table.model.common;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-import org.apache.tapestry.IComponent;
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.components.Block;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.ITableModelSource;
-import org.apache.tapestry.contrib.table.model.ITableRendererSource;
-import org.apache.tapestry.valid.RenderString;
-
-/**
- * A base implementation of {@link org.apache.tapestry.contrib.table.model.ITableColumn}
- * that allows renderers to be set via aggregation.
- * 
- * @see org.apache.tapestry.contrib.table.model.ITableRendererSource
- * @version $Id$
- * @author mindbridge
- * @since 2.3
- */
-public class AbstractTableColumn implements ITableColumn, Serializable
-{
-    /**
-     *  The suffix of the name of the Block that will be used as the column renderer
-     *  for this column 
-     */
-    public final static String COLUMN_RENDERER_BLOCK_SUFFIX = "ColumnHeader";
-
-    /**
-     *  The suffix of the name of the Block that will be used as the value renderer 
-     *  for this column 
-     */
-    public final static String VALUE_RENDERER_BLOCK_SUFFIX = "ColumnValue";
-    
-	private String m_strColumnName;
-	private boolean m_bSortable;
-	private Comparator m_objComparator;
-
-	private ITableRendererSource m_objColumnRendererSource;
-	private ITableRendererSource m_objValueRendererSource;
-
-	public AbstractTableColumn()
-	{
-		this("", false, null);
-	}
-
-	public AbstractTableColumn(
-		String strColumnName,
-		boolean bSortable,
-		Comparator objComparator)
-	{
-		this(strColumnName, bSortable, objComparator, null, null);
-	}
-
-	public AbstractTableColumn(
-		String strColumnName,
-		boolean bSortable,
-		Comparator objComparator,
-		ITableRendererSource objColumnRendererSource,
-		ITableRendererSource objValueRendererSource)
-	{
-		setColumnName(strColumnName);
-		setSortable(bSortable);
-		setComparator(objComparator);
-		setColumnRendererSource(objColumnRendererSource);
-		setValueRendererSource(objValueRendererSource);
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableColumn#getColumnName()
-	 */
-	public String getColumnName()
-	{
-		return m_strColumnName;
-	}
-
-	/**
-	 * Sets the columnName.
-	 * @param columnName The columnName to set
-	 */
-	public void setColumnName(String columnName)
-	{
-		m_strColumnName = columnName;
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableColumn#getSortable()
-	 */
-	public boolean getSortable()
-	{
-		return m_bSortable;
-	}
-
-	/**
-	 * Sets whether the column is sortable.
-	 * @param sortable The sortable flag to set
-	 */
-	public void setSortable(boolean sortable)
-	{
-		m_bSortable = sortable;
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableColumn#getComparator()
-	 */
-	public Comparator getComparator()
-	{
-		return m_objComparator;
-	}
-
-	/**
-	 * Sets the comparator.
-	 * @param comparator The comparator to set
-	 */
-	public void setComparator(Comparator comparator)
-	{
-		m_objComparator = comparator;
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableColumn#getColumnRenderer(IRequestCycle, ITableModelSource)
-	 */
-	public IRender getColumnRenderer(
-		IRequestCycle objCycle,
-		ITableModelSource objSource)
-	{
-		ITableRendererSource objRendererSource =
-			getColumnRendererSource();
-		if (objRendererSource == null)
-		{
-			// log error
-			return new RenderString("");
-		}
-
-		return objRendererSource.getRenderer(objCycle, objSource, this, null);
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableColumn#getValueRenderer(IRequestCycle, ITableModelSource, Object)
-	 */
-	public IRender getValueRenderer(
-		IRequestCycle objCycle,
-		ITableModelSource objSource,
-		Object objRow)
-	{
-		ITableRendererSource objRendererSource = getValueRendererSource();
-		if (objRendererSource == null)
-		{
-			// log error
-			return new RenderString("");
-		}
-
-		return objRendererSource.getRenderer(
-			objCycle,
-			objSource,
-			this,
-			objRow);
-	}
-
-	/**
-	 * Returns the columnRendererSource.
-	 * @return ITableColumnRendererSource
-	 */
-	public ITableRendererSource getColumnRendererSource()
-	{
-		return m_objColumnRendererSource;
-	}
-
-	/**
-	 * Sets the columnRendererSource.
-	 * @param columnRendererSource The columnRendererSource to set
-	 */
-	public void setColumnRendererSource(ITableRendererSource columnRendererSource)
-	{
-		m_objColumnRendererSource = columnRendererSource;
-	}
-
-	/**
-	 * Returns the valueRendererSource.
-     * 
-	 * @return the valueRendererSource of this column
-	 */
-	public ITableRendererSource getValueRendererSource()
-	{
-		return m_objValueRendererSource;
-	}
-
-	/**
-	 * Sets the valueRendererSource.
-     * 
-	 * @param valueRendererSource The valueRendererSource to set
-	 */
-	public void setValueRendererSource(ITableRendererSource valueRendererSource)
-	{
-		m_objValueRendererSource = valueRendererSource;
-	}
-
-    /**
-     *  Use the column name to get the column and value renderer sources 
-     *  from the provided component.
-     *   
-     *  @param objSettingsContainer the component from which to get the settings 
-     */
-    public void loadSettings(IComponent objSettingsContainer)
-    {
-        IComponent objColumnRendererSource = (IComponent) objSettingsContainer.getComponents().get(getColumnName() + COLUMN_RENDERER_BLOCK_SUFFIX);
-        if (objColumnRendererSource != null && objColumnRendererSource instanceof Block)
-            setColumnRendererSource(new BlockTableRendererSource((Block) objColumnRendererSource));
-
-        IComponent objValueRendererSource = (IComponent) objSettingsContainer.getComponents().get(getColumnName() + VALUE_RENDERER_BLOCK_SUFFIX);
-        if (objValueRendererSource != null && objValueRendererSource instanceof Block)
-            setValueRendererSource(new BlockTableRendererSource((Block) objValueRendererSource));
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/common/AbstractTableDataModel.java b/contrib/src/org/apache/tapestry/contrib/table/model/common/AbstractTableDataModel.java
deleted file mode 100644
index 23e5477..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/common/AbstractTableDataModel.java
+++ /dev/null
@@ -1,105 +0,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.
-
-package org.apache.tapestry.contrib.table.model.common;
-
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.tapestry.contrib.table.model.CTableDataModelEvent;
-import org.apache.tapestry.contrib.table.model.ITableDataModel;
-import org.apache.tapestry.contrib.table.model.ITableDataModelListener;
-
-/**
- * An implementation of the listener support in the ITableDataModel interface
- * 
- * @version $Id$
- * @author mindbridge
- */
-public abstract class AbstractTableDataModel implements ITableDataModel
-{
-	private List m_arrListeners;
-
-	public AbstractTableDataModel()
-	{
-		m_arrListeners = new ArrayList();
-	}
-
-	/**
-	 * Method fireTableDataModelEvent.
-	 * Fires a change event to all listeners
-	 * @param objEvent the event to pass to the listeners
-	 */
-	protected void fireTableDataModelEvent(CTableDataModelEvent objEvent)
-	{
-        synchronized (m_arrListeners) {
-            List arrEmptyReferences = null;
-        
-    		for (Iterator it = m_arrListeners.iterator(); it.hasNext();)
-    		{
-                WeakReference objRef = (WeakReference) it.next();
-    			ITableDataModelListener objListener =
-    				(ITableDataModelListener) objRef.get();
-                if (objListener != null) 
-                    objListener.tableDataChanged(objEvent);
-                else {
-                    if (arrEmptyReferences == null)
-                        arrEmptyReferences = new ArrayList();
-                    arrEmptyReferences.add(objRef);
-                }
-    		}
-
-            if (arrEmptyReferences != null)
-                m_arrListeners.removeAll(arrEmptyReferences);
-        }
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableDataModel#addTableDataModelListener(ITableDataModelListener)
-	 */
-	public void addTableDataModelListener(ITableDataModelListener objListener)
-	{
-        synchronized (m_arrListeners) {
-    		m_arrListeners.add(new WeakReference(objListener));
-        }
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableDataModel#removeTableDataModelListener(ITableDataModelListener)
-	 */
-	public void removeTableDataModelListener(ITableDataModelListener objListener)
-	{
-        synchronized (m_arrListeners) {
-            List arrEmptyReferences = null;
-        
-            for (Iterator it = m_arrListeners.iterator(); it.hasNext();)
-            {
-                WeakReference objRef = (WeakReference) it.next();
-                ITableDataModelListener objStoredListener =
-                    (ITableDataModelListener) objRef.get();
-                if (objListener == objStoredListener || objStoredListener == null) { 
-                    if (arrEmptyReferences == null)
-                        arrEmptyReferences = new ArrayList();
-                    arrEmptyReferences.add(objRef);
-                }
-            }
-
-            if (arrEmptyReferences != null)
-                m_arrListeners.removeAll(arrEmptyReferences);
-        }
-	}
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/common/AbstractTableModel.java b/contrib/src/org/apache/tapestry/contrib/table/model/common/AbstractTableModel.java
deleted file mode 100644
index a8d964f..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/common/AbstractTableModel.java
+++ /dev/null
@@ -1,85 +0,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.
-
-package org.apache.tapestry.contrib.table.model.common;
-
-import java.io.Serializable;
-
-import org.apache.tapestry.contrib.table.model.ITableModel;
-import org.apache.tapestry.contrib.table.model.ITablePagingState;
-import org.apache.tapestry.contrib.table.model.ITableSortingState;
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableState;
-
-/**
- * A base table model that implements the handling of the model state.
- * Used by most standard ITableModel implementations.
- * 
- * @version $Id$
- * @author mindbridge
- */
-public abstract class AbstractTableModel implements ITableModel, Serializable
-{
-    private SimpleTableState m_objTableState;
-
-    protected AbstractTableModel()
-    {
-        this(new SimpleTableState());
-    }
-
-    protected AbstractTableModel(SimpleTableState objTableState)
-    {
-        m_objTableState = objTableState;
-    }
-    
-    /**
-     * @see org.apache.tapestry.contrib.table.model.ITableModel#getPagingState()
-     */
-    public ITablePagingState getPagingState()
-    {
-        return getState().getPagingState();
-    }
-
-    /**
-     * @see org.apache.tapestry.contrib.table.model.ITableModel#getSortingState()
-     */
-    public ITableSortingState getSortingState()
-    {
-        return getState().getSortingState();
-    }
-
-    /**
-     * Returns the tableState.
-     * @return SimpleTableState
-     */
-    public SimpleTableState getState()
-    {
-        return m_objTableState;
-    }
-
-    protected abstract int getRowCount();
-    
-    public int getPageCount()
-    {
-        int nRowCount = getRowCount();
-        if (nRowCount == 0)
-            return 1;
-
-        int nPageSize = getPagingState().getPageSize();
-        if (nPageSize <= 0)
-            return 1;
-
-        return (nRowCount - 1) / nPageSize + 1;
-    }
-    
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/common/ArrayIterator.java b/contrib/src/org/apache/tapestry/contrib/table/model/common/ArrayIterator.java
deleted file mode 100644
index 950f0dc..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/common/ArrayIterator.java
+++ /dev/null
@@ -1,79 +0,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.
-
-package org.apache.tapestry.contrib.table.model.common;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-/**
- * @version $Id$
- * @author mindbridge
- */
-public class ArrayIterator implements Iterator
-{
-	private Object[] m_arrValues;
-	private int m_nFrom;
-	private int m_nTo;
-	private int m_nCurrent;
-
-	public ArrayIterator(Object[] arrValues)
-	{
-		this(arrValues, 0, arrValues.length);
-	}
-
-	public ArrayIterator(Object[] arrValues, int nFrom, int nTo)
-	{
-		m_arrValues = arrValues;
-		m_nFrom = nFrom;
-		m_nTo = nTo;
-
-		if (m_nFrom < 0)
-			m_nFrom = 0;
-		if (m_nTo < m_nFrom)
-			m_nTo = m_nFrom;
-		if (m_nTo > m_arrValues.length)
-			m_nTo = m_arrValues.length;
-
-		m_nCurrent = m_nFrom;
-	}
-
-	/**
-	 * @see java.util.Iterator#hasNext()
-	 */
-	public boolean hasNext()
-	{
-		return m_nCurrent < m_nTo;
-	}
-
-	/**
-	 * @see java.util.Iterator#next()
-	 */
-	public Object next()
-	{
-		//System.out.println("index: " + m_nCurrent + "   size: " + m_arrValues.length + "  to: " + m_nTo);
-		if (!hasNext())
-			throw new NoSuchElementException();
-		return m_arrValues[m_nCurrent++];
-	}
-
-	/**
-	 * @see java.util.Iterator#remove()
-	 */
-	public void remove()
-	{
-		throw new UnsupportedOperationException();
-	}
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/common/BasicTableModelWrap.java b/contrib/src/org/apache/tapestry/contrib/table/model/common/BasicTableModelWrap.java
deleted file mode 100644
index 30e0118..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/common/BasicTableModelWrap.java
+++ /dev/null
@@ -1,80 +0,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.
-
-package org.apache.tapestry.contrib.table.model.common;
-
-import java.util.Iterator;
-
-import org.apache.tapestry.contrib.table.model.IBasicTableModel;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.ITableColumnModel;
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableState;
-
-/**
- * @version $Id$
- * @author mindbridge
- */
-public class BasicTableModelWrap extends AbstractTableModel 
-{
-    private IBasicTableModel m_objBasicTableModel;
-    private ITableColumnModel m_objTableColumnModel;
-
-    public BasicTableModelWrap(IBasicTableModel objBasicTableModel, ITableColumnModel objColumnModel)
-    {
-        this(objBasicTableModel, objColumnModel, new SimpleTableState());
-    }
-
-    public BasicTableModelWrap(IBasicTableModel objBasicTableModel, ITableColumnModel objColumnModel, SimpleTableState objState)
-    {
-        super(objState);
-        m_objBasicTableModel = objBasicTableModel;
-        m_objTableColumnModel = objColumnModel;
-    }
-
-    /**
-     * @see org.apache.tapestry.contrib.table.model.ITableModel#getColumnModel()
-     */
-    public ITableColumnModel getColumnModel()
-    {
-        return m_objTableColumnModel;
-    }
-
-    /**
-     * @see org.apache.tapestry.contrib.table.model.common.AbstractTableModel#getRowCount()
-     */
-    protected int getRowCount()
-    {
-        return m_objBasicTableModel.getRowCount();
-    }
-
-    /**
-     * @see org.apache.tapestry.contrib.table.model.ITableModel#getCurrentPageRows()
-     */
-    public Iterator getCurrentPageRows()
-    {
-        int nPageSize = getPagingState().getPageSize();
-        if (nPageSize <= 0)
-            nPageSize = getRowCount();
-
-        int nCurrentPage = getPagingState().getCurrentPage();
-        int nFrom = nCurrentPage * nPageSize;
-        
-        String strSortColumn = getSortingState().getSortColumn();
-        ITableColumn objSortColumn = getColumnModel().getColumn(strSortColumn); 
-        boolean bSortOrder = getSortingState().getSortOrder();
-        
-        return m_objBasicTableModel.getCurrentPageRows(nFrom, nPageSize, objSortColumn, bSortOrder);
-    }
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/common/BlockTableRendererSource.java b/contrib/src/org/apache/tapestry/contrib/table/model/common/BlockTableRendererSource.java
deleted file mode 100644
index 5b2a99a..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/common/BlockTableRendererSource.java
+++ /dev/null
@@ -1,125 +0,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.
-
-package org.apache.tapestry.contrib.table.model.common;
-
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.components.Block;
-import org.apache.tapestry.components.BlockRenderer;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.ITableModelSource;
-import org.apache.tapestry.contrib.table.model.ITableRendererListener;
-import org.apache.tapestry.contrib.table.model.ITableRendererSource;
-import org.apache.tapestry.util.ComponentAddress;
-
-/**
- * 
- * @version $Id$
- * @author mindbridge
- * @since 2.3
- */
-public class BlockTableRendererSource implements ITableRendererSource
-{
-	private ComponentAddress m_objBlockAddress;
-	private ComponentAddress m_objListenerAddress;
-
-	public BlockTableRendererSource(Block objBlock)
-	{
-		this(new ComponentAddress(objBlock));
-	}
-
-	public BlockTableRendererSource(
-		Block objBlock,
-		ITableRendererListener objListener)
-	{
-		this(new ComponentAddress(objBlock), new ComponentAddress(objListener));
-	}
-
-	public BlockTableRendererSource(ComponentAddress objBlockAddress)
-	{
-		this(objBlockAddress, null);
-	}
-
-	public BlockTableRendererSource(
-		ComponentAddress objBlockAddress,
-		ComponentAddress objListenerAddress)
-	{
-		setBlockAddress(objBlockAddress);
-		setListenerAddress(objListenerAddress);
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableRendererSource#getRenderer(IRequestCycle, ITableModelSource, ITableColumn, Object)
-	 */
-	public IRender getRenderer(
-		IRequestCycle objCycle,
-		ITableModelSource objSource,
-		ITableColumn objColumn,
-		Object objRow)
-	{
-		ComponentAddress objListenerAddress = getListenerAddress();
-		if (objListenerAddress != null)
-		{
-			ITableRendererListener objListener =
-				(ITableRendererListener) objListenerAddress.findComponent(
-					objCycle);
-			objListener.initializeRenderer(
-				objCycle,
-				objSource,
-				objColumn,
-				objRow);
-		}
-
-		Block objBlock = (Block) getBlockAddress().findComponent(objCycle);
-		return new BlockRenderer(objBlock);
-	}
-
-	/**
-	 * Returns the blockAddress.
-	 * @return ComponentAddress
-	 */
-	public ComponentAddress getBlockAddress()
-	{
-		return m_objBlockAddress;
-	}
-
-	/**
-	 * Sets the blockAddress.
-	 * @param blockAddress The blockAddress to set
-	 */
-	public void setBlockAddress(ComponentAddress blockAddress)
-	{
-		m_objBlockAddress = blockAddress;
-	}
-
-	/**
-	 * Returns the listenerAddress.
-	 * @return ComponentAddress
-	 */
-	public ComponentAddress getListenerAddress()
-	{
-		return m_objListenerAddress;
-	}
-
-	/**
-	 * Sets the listenerAddress.
-	 * @param listenerAddress The listenerAddress to set
-	 */
-	public void setListenerAddress(ComponentAddress listenerAddress)
-	{
-		m_objListenerAddress = listenerAddress;
-	}
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/common/ComponentTableRendererSource.java b/contrib/src/org/apache/tapestry/contrib/table/model/common/ComponentTableRendererSource.java
deleted file mode 100644
index 4a9c2f1..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/common/ComponentTableRendererSource.java
+++ /dev/null
@@ -1,81 +0,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.
-
-package org.apache.tapestry.contrib.table.model.common;
-
-import org.apache.tapestry.IRender;
-import org.apache.tapestry.IRequestCycle;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.ITableModelSource;
-import org.apache.tapestry.contrib.table.model.ITableRendererListener;
-import org.apache.tapestry.contrib.table.model.ITableRendererSource;
-import org.apache.tapestry.util.ComponentAddress;
-
-/**
- * 
- * @version $Id$
- * @author mindbridge
- * @since 2.3
- */
-public class ComponentTableRendererSource implements ITableRendererSource
-{
-	private ComponentAddress m_objComponentAddress;
-
-	public ComponentTableRendererSource(ITableRendererListener objComponent)
-	{
-		this(new ComponentAddress(objComponent));
-	}
-
-	public ComponentTableRendererSource(ComponentAddress objComponentAddress)
-	{
-		setComponentAddress(objComponentAddress);
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableRendererSource#getRenderer(IRequestCycle, ITableModelSource, ITableColumn, Object)
-	 */
-	public IRender getRenderer(
-		IRequestCycle objCycle,
-		ITableModelSource objSource,
-		ITableColumn objColumn,
-		Object objRow)
-	{
-		ITableRendererListener objComponent =
-			(ITableRendererListener) getComponentAddress().findComponent(
-				objCycle);
-
-		objComponent.initializeRenderer(objCycle, objSource, objColumn, objRow);
-
-		return objComponent;
-	}
-
-	/**
-	 * Returns the listenerAddress.
-	 * @return ComponentAddress
-	 */
-	public ComponentAddress getComponentAddress()
-	{
-		return m_objComponentAddress;
-	}
-
-	/**
-	 * Sets the listenerAddress.
-	 * @param listenerAddress The listenerAddress to set
-	 */
-	public void setComponentAddress(ComponentAddress listenerAddress)
-	{
-		m_objComponentAddress = listenerAddress;
-	}
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/common/FullTableSessionStateManager.java b/contrib/src/org/apache/tapestry/contrib/table/model/common/FullTableSessionStateManager.java
deleted file mode 100644
index 7211bbd..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/common/FullTableSessionStateManager.java
+++ /dev/null
@@ -1,51 +0,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.
-
-package org.apache.tapestry.contrib.table.model.common;
-
-import java.io.Serializable;
-
-import org.apache.tapestry.contrib.table.model.ITableModel;
-import org.apache.tapestry.contrib.table.model.ITableSessionStateManager;
-
-/**
- * A simple ITableSessionStateManager implementation 
- * that saves the entire table model into the session.
- * 
- * @version $Id$
- * @author mindbridge
- */
-public class FullTableSessionStateManager implements ITableSessionStateManager
-{
-
-    public final static FullTableSessionStateManager FULL_STATE_MANAGER =
-        new FullTableSessionStateManager();
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableSessionStateManager#getSessionState(ITableModel)
-	 */
-	public Serializable getSessionState(ITableModel objModel)
-	{
-		return (Serializable) objModel;
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableSessionStateManager#recreateTableModel(Serializable)
-	 */
-	public ITableModel recreateTableModel(Serializable objState)
-	{
-		return (ITableModel) objState;
-	}
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/common/NullTableSessionStateManager.java b/contrib/src/org/apache/tapestry/contrib/table/model/common/NullTableSessionStateManager.java
deleted file mode 100644
index d2921f1..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/common/NullTableSessionStateManager.java
+++ /dev/null
@@ -1,51 +0,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.
-
-package org.apache.tapestry.contrib.table.model.common;
-
-import java.io.Serializable;
-
-import org.apache.tapestry.contrib.table.model.ITableModel;
-import org.apache.tapestry.contrib.table.model.ITableSessionStateManager;
-
-/**
- * A simple ITableSessionStateManager implementation 
- * that saves nothing at all into the session.
- * 
- * @version $Id$
- * @author mindbridge
- */
-public class NullTableSessionStateManager implements ITableSessionStateManager
-{
-    
-    public final static NullTableSessionStateManager NULL_STATE_MANAGER =
-        new NullTableSessionStateManager();
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableSessionStateManager#getSessionState(ITableModel)
-	 */
-	public Serializable getSessionState(ITableModel objModel)
-	{
-		return null;
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableSessionStateManager#recreateTableModel(Serializable)
-	 */
-	public ITableModel recreateTableModel(Serializable objState)
-	{
-		return null;
-	}
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/common/ReverseComparator.java b/contrib/src/org/apache/tapestry/contrib/table/model/common/ReverseComparator.java
deleted file mode 100644
index 4622156..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/common/ReverseComparator.java
+++ /dev/null
@@ -1,41 +0,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.
-
-package org.apache.tapestry.contrib.table.model.common;
-
-import java.util.Comparator;
-
-/**
- * @version $Id$
- * @author mindbridge
- *
- */
-public class ReverseComparator implements Comparator
-{
-	private Comparator m_objComparator;
-
-	public ReverseComparator(Comparator objComparator)
-	{
-		m_objComparator = objComparator;
-	}
-
-	/**
-	 * @see java.util.Comparator#compare(Object, Object)
-	 */
-	public int compare(Object objValue1, Object objValue2)
-	{
-		return -m_objComparator.compare(objValue1, objValue2);
-	}
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ognl/ExpressionTableColumn.java b/contrib/src/org/apache/tapestry/contrib/table/model/ognl/ExpressionTableColumn.java
deleted file mode 100644
index c0beb91..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ognl/ExpressionTableColumn.java
+++ /dev/null
@@ -1,49 +0,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.
-
-package org.apache.tapestry.contrib.table.model.ognl;
-
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableColumn;
-
-/**
- * @author mindbridge
- *
- */
-public class ExpressionTableColumn extends SimpleTableColumn
-{
-    public ExpressionTableColumn(String strColumnName, String strExpression)
-    {
-        this(strColumnName, strExpression, false);
-    }
-
-    public ExpressionTableColumn(String strColumnName, String strExpression, boolean bSortable)
-    {
-        this(strColumnName, strColumnName, strExpression, bSortable);
-    }
-
-    public ExpressionTableColumn(String strColumnName, String strDisplayName, String strExpression)
-    {
-        this(strColumnName, strDisplayName, strExpression, false);
-    }
-
-    public ExpressionTableColumn(
-        String strColumnName,
-        String strDisplayName,
-        String strExpression,
-        boolean bSortable)
-    {
-        super(strColumnName, strDisplayName, bSortable);
-        setEvaluator(new OgnlTableColumnEvaluator(strExpression));
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ognl/ExpressionTableColumnModel.java b/contrib/src/org/apache/tapestry/contrib/table/model/ognl/ExpressionTableColumnModel.java
deleted file mode 100644
index 04e26a9..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ognl/ExpressionTableColumnModel.java
+++ /dev/null
@@ -1,137 +0,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.
-
-package org.apache.tapestry.contrib.table.model.ognl;
-
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.simple.SimpleTableColumnModel;
-
-/**
- * @author mindbridge
- *
- */
-public class ExpressionTableColumnModel extends SimpleTableColumnModel
-{
-    /**
-     * Constructs a table column model containting OGNL expression columns. <br>
-     * The data for the columns is provided in the form of a string array,
-     * where the info of each column is stored in two consecutive fields in
-     * the array, hence its size must be even. The expected info is the following:
-     * <ul>
-     *   <li> Column Name
-     *   <li> OGNL expression
-     * </ul>
-     * @param arrColumnInfo The information to construct the columns from
-     * @param bSorted Whether all columns are sorted or not
-     */
-    public ExpressionTableColumnModel(String[] arrColumnInfo, boolean bSorted)
-    {
-        this(convertToDetailedArray(arrColumnInfo, bSorted));
-    }
-
-    /**
-     * Constructs a table column model containting OGNL expression columns. <br>
-     * The data for the columns is provided in the form of a string array,
-     * where the info of each column is stored in four consecutive fields in
-     * the array, hence its size must be divisible by 4. <br>
-     * The expected info is the following:
-     * <ul>
-     *   <li> Column Name
-     *   <li> Display Name
-     *   <li> OGNL expression
-     *   <li> Sorting of the column. This is either a Boolean, 
-     *        or a String representation of a boolean.
-     * </ul>
-     * @param arrColumnInfo
-     */
-    public ExpressionTableColumnModel(Object[] arrColumnInfo)
-    {
-        super(convertToColumns(arrColumnInfo));
-    }
-
-    /**
-     * Method convertToDetailedArray.
-     * @param arrColumnInfo
-     * @param bSorted
-     * @return Object[]
-     */
-    protected static Object[] convertToDetailedArray(String[] arrColumnInfo, boolean bSorted)
-    {
-        int nColumns = arrColumnInfo.length / 2;
-        int nSize = nColumns * 4;
-        Object[] arrDetailedInfo = new Object[nSize];
-
-        for (int i = 0; i < nColumns; i++)
-        {
-            int nInputBaseIndex = 2 * i;
-            String strColumnName = arrColumnInfo[nInputBaseIndex];
-            String strExpression = arrColumnInfo[nInputBaseIndex + 1];
-
-            int nOutputBaseIndex = 4 * i;
-            arrDetailedInfo[nOutputBaseIndex] = strColumnName;
-            arrDetailedInfo[nOutputBaseIndex + 1] = strColumnName;
-            arrDetailedInfo[nOutputBaseIndex + 2] = strExpression;
-            arrDetailedInfo[nOutputBaseIndex + 3] = bSorted ? Boolean.TRUE : Boolean.FALSE;
-        }
-
-        return arrDetailedInfo;
-    }
-
-    /**
-     * Method convertToColumns.
-     * @param arrDetailedInfo
-     * @return ITableColumn[]
-     */
-    protected static ITableColumn[] convertToColumns(Object[] arrDetailedInfo)
-    {
-        int nColumns = arrDetailedInfo.length / 4;
-        ITableColumn[] arrColumns = new ITableColumn[nColumns];
-
-        for (int i = 0; i < nColumns; i++)
-        {
-            Object objTempValue;
-            int nBaseIndex = 4 * i;
-
-            String strColumnName = "";
-            objTempValue = arrDetailedInfo[nBaseIndex];
-            if (objTempValue != null)
-                strColumnName = objTempValue.toString();
-
-            String strDisplayName = "";
-            objTempValue = arrDetailedInfo[nBaseIndex + 1];
-            if (objTempValue != null)
-                strDisplayName = objTempValue.toString();
-
-            String strExpression = "";
-            objTempValue = arrDetailedInfo[nBaseIndex + 2];
-            if (objTempValue != null)
-                strExpression = objTempValue.toString();
-
-            boolean bSorted = false;
-            objTempValue = arrDetailedInfo[nBaseIndex + 3];
-            if (objTempValue != null)
-            {
-                if (objTempValue instanceof Boolean)
-                    bSorted = ((Boolean) objTempValue).booleanValue();
-                else
-                    bSorted = Boolean.getBoolean(objTempValue.toString());
-            }
-
-            arrColumns[i] =
-                new ExpressionTableColumn(strColumnName, strDisplayName, strExpression, bSorted);
-        }
-
-        return arrColumns;
-    }
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ognl/OgnlTableColumnEvaluator.java b/contrib/src/org/apache/tapestry/contrib/table/model/ognl/OgnlTableColumnEvaluator.java
deleted file mode 100644
index f3f6b3a..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ognl/OgnlTableColumnEvaluator.java
+++ /dev/null
@@ -1,72 +0,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.
-
-package org.apache.tapestry.contrib.table.model.ognl;
-
-import ognl.Ognl;
-import ognl.OgnlException;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-import org.apache.tapestry.contrib.table.model.simple.ITableColumnEvaluator;
-import org.apache.tapestry.util.prop.OgnlUtils;
-
-/**
- * @author mindbridge
- *
- */
-public class OgnlTableColumnEvaluator implements ITableColumnEvaluator
-{
-	private static final Log LOG =
-		LogFactory.getLog(ExpressionTableColumn.class);
-
-	private String m_strExpression;
-	transient private Object m_objParsedExpression = null;
-
-	public OgnlTableColumnEvaluator(String strExpression)
-	{
-		m_strExpression = strExpression;
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.simple.ITableColumnEvaluator#getColumnValue(ITableColumn, Object)
-	 */
-	public Object getColumnValue(ITableColumn objColumn, Object objRow)
-	{
-		// If no expression is given, then this is dummy column. Return something.
-		if (m_strExpression == null || m_strExpression.equals(""))
-			return "";
-
-			synchronized (this)
-			{
-				if (m_objParsedExpression == null)
-					m_objParsedExpression =
-						OgnlUtils.getParsedExpression(m_strExpression);
-			}
-
-		try
-		{
-			Object objValue = Ognl.getValue(m_objParsedExpression, objRow);
-			return objValue;
-		}
-		catch (OgnlException e)
-		{
-			LOG.error(
-				"Cannot use column expression '" + m_strExpression + "' in row",
-				e);
-			return "";
-		}
-	}
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/simple/ColumnComparator.java b/contrib/src/org/apache/tapestry/contrib/table/model/simple/ColumnComparator.java
deleted file mode 100644
index 2002f6e..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/simple/ColumnComparator.java
+++ /dev/null
@@ -1,65 +0,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.
-
-package org.apache.tapestry.contrib.table.model.simple;
-
-import java.util.Comparator;
-
-/**
- * In order to provide more generic behaviour, ITableColumn 
- * has no "column value" concept. The comparator it returns 
- * compares two table rows, rather than values specific to the column. 
- * <p>
- * SimpleTableColumn introduces the concept of "column value" and 
- * allows one to extract that "column value" from the row using 
- * the getColumnValue() method. In practice comparisons are also typically 
- * done between these values rather than the full row objects.
- * <p>
- * This comparator extracts the column values from the rows passed 
- * and uses the provided comparator to compare the values.
- * It therefore allows a comparator designed for comparing column values to be
- * quickly wrapped and used as a comparator comparing rows, which is what
- * ITableColumn is expected to return.
- * <p>
- * Example:
- * <p>
- * objColumn.setComparator(new ColumnComparator(objColumn, objBeanComparator));    
- * 
- * @version $Id$
- * @author mindbridge
- *
- */
-public class ColumnComparator implements Comparator
-{
-    private SimpleTableColumn m_objColumn;
-	private Comparator m_objComparator;
-
-	public ColumnComparator(SimpleTableColumn objColumn, Comparator objComparator)
-	{
-        m_objColumn = objColumn;
-		m_objComparator = objComparator;
-	}
-
-	/**
-	 * @see java.util.Comparator#compare(Object, Object)
-	 */
-	public int compare(Object objRow1, Object objRow2)
-	{
-        Object objValue1 = m_objColumn.getColumnValue(objRow1);
-        Object objValue2 = m_objColumn.getColumnValue(objRow2);
-                
-		return m_objComparator.compare(objValue1, objValue2);
-	}
-
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/simple/ITableColumnEvaluator.java b/contrib/src/org/apache/tapestry/contrib/table/model/simple/ITableColumnEvaluator.java
deleted file mode 100644
index 9eccdb8..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/simple/ITableColumnEvaluator.java
+++ /dev/null
@@ -1,28 +0,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.
-
-package org.apache.tapestry.contrib.table.model.simple;
-
-import java.io.Serializable;
-
-import org.apache.tapestry.contrib.table.model.ITableColumn;
-
-/**
- * @author mindbridge
- *
- */
-public interface ITableColumnEvaluator extends Serializable
-{
-	Object getColumnValue(ITableColumn objColumn, Object objRow);
-}
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/simple/SimpleListTableDataModel.java b/contrib/src/org/apache/tapestry/contrib/table/model/simple/SimpleListTableDataModel.java
deleted file mode 100644
index f9c0983..0000000
--- a/contrib/src/org/apache/tapestry/contrib/table/model/simple/SimpleListTableDataModel.java
+++ /dev/null
@@ -1,143 +0,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.
-
-package org.apache.tapestry.contrib.table.model.simple;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.tapestry.contrib.table.model.CTableDataModelEvent;
-import org.apache.tapestry.contrib.table.model.common.AbstractTableDataModel;
-import org.apache.tapestry.contrib.table.model.common.ArrayIterator;
-
-/**
- * A minimal list implementation of the 
- * {@link org.apache.tapestry.contrib.table.model.ITableDataModel} interface
- * 
- * @version $Id$
- * @author mindbridge
- */
-public class SimpleListTableDataModel extends AbstractTableDataModel implements Serializable
-{
-	private List m_arrRows;
-
-	public SimpleListTableDataModel(Object[] arrRows)
-	{
-		this(Arrays.asList(arrRows));
-	}
-
-	public SimpleListTableDataModel(List arrRows)
-	{
-		m_arrRows = arrRows;
-	}
-
-    public SimpleListTableDataModel(Collection arrRows)
-    {
-        m_arrRows = new ArrayList(arrRows);
-    }
-
-    public SimpleListTableDataModel(Iterator objRows)
-    {
-        m_arrRows = new ArrayList();
-        CollectionUtils.addAll(m_arrRows, objRows);
-    }
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableDataModel#getRowCount()
-	 */
-	public int getRowCount()
-	{
-		return m_arrRows.size();
-	}
-
-	/**
-	 * Returns the row element at the given position
-     * @param nRow the index of the element to return
-	 */
-	public Object getRow(int nRow)
-	{
-		if (nRow < 0 || nRow >= m_arrRows.size())
-		{
-			// error message
-			return null;
-		}
-		return m_arrRows.get(nRow);
-	}
-
-	/**
-	 * Returns an Iterator with the elements from the given range
-     * @param nFrom the start of the range (inclusive)
-     * @param nTo the stop of the range (exclusive)
-	 */
-	public Iterator getRows(int nFrom, int nTo)
-	{
-		return new ArrayIterator(m_arrRows.toArray(), nFrom, nTo);
-	}
-
-	/**
-	 * @see org.apache.tapestry.contrib.table.model.ITableDataModel#getRows()
-	 */
-	public Iterator getRows()
-	{
-		return m_arrRows.iterator();
-	}
-
-	/**
-	 * Method addRow.
-     * Adds a row object to the model at its end
-	 * @param