You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by fr...@apache.org on 2006/12/23 05:39:02 UTC

svn commit: r489853 - in /tapestry/tapestry5/tapestry-workbench/trunk: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/tapestry/ src/main/java/org/apache/tapestry/workbench/ src/main/java/org/apach...

Author: freemant
Date: Fri Dec 22 20:39:00 2006
New Revision: 489853

URL: http://svn.apache.org/viewvc?view=rev&rev=489853
Log:
Moved the files into the right location in subversion.

Added:
    tapestry/tapestry5/tapestry-workbench/trunk/.classpath   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/.project   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/pom.xml
    tapestry/tapestry5/tapestry-workbench/trunk/src/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Any.java   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Border.java   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Img.java   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Fields.java   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Home.java   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/services/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/services/AppModule.java   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.html   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.properties   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Fields.html   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home.html   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home_de.html   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/WEB-INF/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/WEB-INF/web.xml
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/exception.css   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/workbench.css   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_de.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_fr.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_it.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_de.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_fr.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_it.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_de.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_fr.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_it.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Continue.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Update.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Warning-small.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Warning.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/minus.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/nodeimage.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/plus.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-left.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-mid.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-right.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-left.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-mid.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-right.gif   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/testng.xml
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/webdefault-nojsp.xml   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/SeleniumClientFactory.java   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/TabLinksTest.java   (with props)
    tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/WorkbenchLauncher.java   (with props)
Modified:
    tapestry/tapestry5/tapestry-workbench/trunk/   (props changed)

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Fri Dec 22 20:39:00 2006
@@ -0,0 +1,2 @@
+
+target

Added: tapestry/tapestry5/tapestry-workbench/trunk/.classpath
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/.classpath?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/.classpath (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/.classpath Fri Dec 22 20:39:00 2006
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="src" path="src/test/java"/>
+	<classpathentry kind="src" path="src/main/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/.classpath
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/.project
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/.project?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/.project (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/.project Fri Dec 22 20:39:00 2006
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>tapestry-workbench</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.maven.ide.eclipse.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.maven.ide.eclipse.maven2Nature</nature>
+	</natures>
+</projectDescription>

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/.project
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/pom.xml?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/pom.xml (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/pom.xml Fri Dec 22 20:39:00 2006
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<project>
+	<parent>
+		<artifactId>tapestry-project</artifactId>
+		<groupId>org.apache.tapestry</groupId>
+		<version>5.0.0-SNAPSHOT</version>
+		<relativePath>../tapestry-project/pom.xml</relativePath>
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.apache.tapestry</groupId>
+	<artifactId>tapestry-Workbench</artifactId>
+	<packaging>war</packaging>
+	<name>Tapestry Workbench</name>
+	<version>5.0.0-SNAPSHOT</version>
+	<url>http://tapestry.apache.org/tapestry5/tapestry-core/</url>
+	<inceptionYear>2006</inceptionYear>
+	<scm>
+		<connection>
+			scm:svn:https://svn.apache.org/repos/asf/tapestry/tapestry5/
+			${pom.artifactId}/trunk/
+		</connection>
+		<url>
+			http://svn.apache.org/viewvc/tapestry/tapestry5/${pom.artifactId}/t
+			runk/
+		</url>
+	</scm>
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.tapestry</groupId>
+			<artifactId>tapestry-core</artifactId>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.testng</groupId>
+			<artifactId>testng</artifactId>
+			<version>5.1</version>
+			<classifier>jdk15</classifier>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.openqa.selenium.server</groupId>
+			<artifactId>selenium-server</artifactId>
+			<version>0.8.1</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.openqa.selenium.client-drivers</groupId>
+			<artifactId>selenium-java-client-driver</artifactId>
+			<version>0.8.1</version>
+			<scope>compile</scope>
+		</dependency>
+	</dependencies>
+	<reporting>
+		<plugins>
+			<plugin>
+				<artifactId>maven-surefire-report-plugin</artifactId>
+			</plugin>
+			<plugin>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<configuration>
+					<linksource>true</linksource>
+				</configuration>
+			</plugin>
+		</plugins>
+	</reporting>
+</project>
\ No newline at end of file

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Any.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Any.java?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Any.java (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Any.java Fri Dec 22 20:39:00 2006
@@ -0,0 +1,51 @@
+// Copyright 2006 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.workbench.components;
+
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.annotations.AfterRender;
+import org.apache.tapestry.annotations.BeginRender;
+import org.apache.tapestry.annotations.ComponentClass;
+import org.apache.tapestry.annotations.Mixin;
+import org.apache.tapestry.annotations.Parameter;
+import org.apache.tapestry.corelib.mixins.RenderInformals;
+
+@ComponentClass
+public class Any
+{
+    @Parameter
+    private String element;
+    
+	@BeginRender
+	public void begin(MarkupWriter writer)
+	{
+        //TODO if element is null...
+		writer.element(element);
+	}
+    @AfterRender
+    public void end(MarkupWriter writer)
+    {
+        writer.end();
+    }
+    
+    @SuppressWarnings("unused")
+    @Mixin
+    private RenderInformals renderInformals;
+
+	public boolean beforeRenderBody()
+	{
+		return false;
+	}
+}

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Any.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Border.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Border.java?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Border.java (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Border.java Fri Dec 22 20:39:00 2006
@@ -0,0 +1,111 @@
+package org.apache.tapestry.workbench.components;
+
+import org.apache.tapestry.Asset;
+import org.apache.tapestry.ComponentResources;
+import org.apache.tapestry.annotations.BeginRender;
+import org.apache.tapestry.annotations.Component;
+import org.apache.tapestry.annotations.ComponentClass;
+import org.apache.tapestry.annotations.Inject;
+import org.apache.tapestry.annotations.OnEvent;
+
+@ComponentClass
+public class Border
+{
+	private String pageName;
+
+	@Inject
+	private ComponentResources resources;
+
+	@Inject("context:images/tab-inactive-left.gif")
+	private Asset inactiveLeft;
+
+	@Inject("context:images/tab-inactive-mid.gif")
+	private Asset inactiveMid;
+
+	@Inject("context:images/tab-inactive-right.gif")
+	private Asset inactiveRight;
+
+	@Inject("context:images/tab-active-left.gif")
+	private Asset activeLeft;
+
+	@Inject("context:images/tab-active-mid.gif")
+	private Asset activeMid;
+
+	@Inject("context:images/tab-active-right.gif")
+	private Asset activeRight;
+
+	@Inject("context:css/workbench.css")
+	private Asset stylesheet;
+
+	@SuppressWarnings("unused")
+	@Component(parameters =
+	{ "element=literal:td", "background=midTabAsset" })
+	private Any tabCell;
+
+	private String renderingPageFullName;
+
+	/**
+	 * Returns the logical names of the pages accessible via the navigation bar,
+	 * in appopriate order.
+	 */
+	public String[] getPageTabNames()
+	{
+		return new String[]
+		{ "Home", "localization/Localization", "Fields", "Dates", "Chart",
+				"Palette", "Upload", "Redirect", "ExceptionTab", "Table",
+				"TreeHome" };
+	}
+
+	@BeginRender
+	public void beginRender()
+	{
+		renderingPageFullName = resources.getPage().getClass().getName();
+	}
+
+	private boolean isCurrentPageActive()
+	{
+		return renderingPageFullName.endsWith(pageName);
+	}
+
+	@OnEvent(component = "link")
+	public String onClickPage(String pageName)
+	{
+		return pageName;
+	}
+
+	public String getPageName()
+	{
+		return pageName;
+	}
+
+	public void setPageName(String pageName)
+	{
+		this.pageName = pageName;
+	}
+
+	public String getPageTitle()
+	{
+		return resources.getMessages().get(pageName);
+	}
+
+	public Asset getLeftTabAsset()
+	{
+		return isCurrentPageActive() ? activeLeft : inactiveLeft;
+	}
+
+	public Asset getMidTabAsset()
+	{
+		return isCurrentPageActive() ? activeMid : inactiveMid;
+	}
+
+	public Asset getRightTabAsset()
+	{
+		return isCurrentPageActive() ? activeRight : inactiveRight;
+	}
+
+	public Asset getStylesheet()
+	{
+		return stylesheet;
+	}
+
+}

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Border.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Img.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Img.java?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Img.java (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Img.java Fri Dec 22 20:39:00 2006
@@ -0,0 +1,68 @@
+// Copyright 2006 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.workbench.components;
+
+import org.apache.tapestry.Asset;
+import org.apache.tapestry.ComponentResources;
+import org.apache.tapestry.MarkupWriter;
+import org.apache.tapestry.annotations.AfterRender;
+import org.apache.tapestry.annotations.BeforeRenderBody;
+import org.apache.tapestry.annotations.BeginRender;
+import org.apache.tapestry.annotations.ComponentClass;
+import org.apache.tapestry.annotations.Environmental;
+import org.apache.tapestry.annotations.Inject;
+import org.apache.tapestry.annotations.Mixin;
+import org.apache.tapestry.annotations.Parameter;
+import org.apache.tapestry.corelib.mixins.RenderInformals;
+import org.apache.tapestry.services.PageRenderSupport;
+
+@ComponentClass
+public class Img
+{
+	@Environmental
+	private PageRenderSupport _support;
+
+	@Inject
+	private ComponentResources _resources;
+
+	@Parameter(required = true)
+	private Asset _src;
+
+	@BeginRender
+	void begin(MarkupWriter writer)
+	{
+		String clientId = _support.allocateClientId(_resources.getId());
+
+		writer.element("img", "src", _src, "id", clientId);
+
+		_resources.renderInformalParameters(writer);
+	}
+
+	@SuppressWarnings("unused")
+	@Mixin
+	private RenderInformals _renderInformals;
+
+	@BeforeRenderBody
+	boolean beforeRenderBody()
+	{
+		return false;
+	}
+
+	@AfterRender
+	void after(MarkupWriter writer)
+	{
+		writer.end();
+	}
+}

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/components/Img.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Fields.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Fields.java?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Fields.java (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Fields.java Fri Dec 22 20:39:00 2006
@@ -0,0 +1,8 @@
+package org.apache.tapestry.workbench.pages;
+
+import org.apache.tapestry.annotations.ComponentClass;
+
+@ComponentClass
+public class Fields 
+{
+}

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Fields.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Home.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Home.java?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Home.java (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Home.java Fri Dec 22 20:39:00 2006
@@ -0,0 +1,8 @@
+package org.apache.tapestry.workbench.pages;
+
+import org.apache.tapestry.annotations.ComponentClass;
+
+@ComponentClass
+public class Home 
+{
+}

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/pages/Home.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/services/AppModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/services/AppModule.java?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/services/AppModule.java (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/services/AppModule.java Fri Dec 22 20:39:00 2006
@@ -0,0 +1,15 @@
+package org.apache.tapestry.workbench.services;
+
+import org.apache.tapestry.ioc.MappedConfiguration;
+import org.apache.tapestry.ioc.annotations.Contribute;
+
+public class AppModule
+{
+	@Contribute("tapestry.ioc.ApplicationDefaults")
+	public static void contributeApplicationDefaults(
+			MappedConfiguration<String, String> configuration)
+	{
+		configuration.add("tapestry.supported-locales", "en,de,fr,it");
+	}
+
+}

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/java/org/apache/tapestry/workbench/services/AppModule.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.html?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.html (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.html Fri Dec 22 20:39:00 2006
@@ -0,0 +1,23 @@
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+<head>
+<t:comp type="Any" element="literal:link" rel="literal:stylesheet"
+	href="stylesheet" />
+</head>
+<table class="tabs" cellspacing="0" border="0">
+	<tr>
+		<t:comp type="Loop" source="pageTabNames" value="pageName">
+			<td><t:comp type="Img" src="leftTabAsset" width="2" height="20"
+				alt="''" /></td>
+			<t:comp id="tabCell" align="literal:center">
+				<t:comp id="link" type="ActionLink" context="pageName"
+					class="literal:nav">${pageTitle}</t:comp>
+			</t:comp>
+			<td><t:comp type="Img" src="rightTabAsset" width="13" height="20"
+				alt="''" /></td>
+		</t:comp>
+	</tr>
+</table>
+
+<t:body />
+
+</html>

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.properties?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.properties (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.properties Fri Dec 22 20:39:00 2006
@@ -0,0 +1,28 @@
+# Copyright 2004, 2005 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.
+
+Home=Home
+localization/Localization=L10N
+Fields=Fields
+Palette=Palette
+Upload=Upload
+Chart=Chart
+Redirect=Redirect
+ExceptionTab=Exception
+Dates=Dates
+Table=Table
+TreeHome=Tree
+
+window.title=Tapestry Component Workbench
+prompt.display-request-debug=Display Request Debug Information

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/components/Border.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Fields.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Fields.html?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Fields.html (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Fields.html Fri Dec 22 20:39:00 2006
@@ -0,0 +1,10 @@
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+<head>
+<title>simple document</title>
+</head>
+<body>
+<t:comp type="Border">
+	<p>Fields page</p>
+</t:comp>
+</body>
+</html>

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Fields.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home.html?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home.html (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home.html Fri Dec 22 20:39:00 2006
@@ -0,0 +1,10 @@
+<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+<head>
+<title>simple document</title>
+</head>
+<body>
+<t:comp type="Border">
+	<p>a simple paragraph in English</p>
+</t:comp>
+</body>
+</html>

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home_de.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home_de.html?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home_de.html (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home_de.html Fri Dec 22 20:39:00 2006
@@ -0,0 +1,8 @@
+<html>
+<head>
+<title>simple document</title>
+</head>
+<body>
+<p>a simple paragraph in German</p>
+</body>
+</html>
\ No newline at end of file

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/resources/org/apache/tapestry/workbench/pages/Home_de.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/WEB-INF/web.xml?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/WEB-INF/web.xml (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/WEB-INF/web.xml Fri Dec 22 20:39:00 2006
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!-- 
+   Copyright 2004-2006 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.
+-->
+
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd">
+<web-app>
+  <display-name>Tapestry Workbench Example</display-name>
+    <context-param>
+        <param-name>tapestry.app-package</param-name>
+        <param-value>org.apache.tapestry.workbench</param-value>
+    </context-param>
+    <filter>
+        <filter-name>app</filter-name>
+        <filter-class>org.apache.tapestry.TapestryFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>app</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+</web-app>

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/exception.css
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/exception.css?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/exception.css (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/exception.css Fri Dec 22 20:39:00 2006
@@ -0,0 +1,44 @@
+.exceptionDialog {
+    overflow: auto;
+    display: block;
+    margin-left: 5%;
+    margin-right: 5%;
+    height: 500px;
+    background-color: white;
+    border-left: 2px solid #E07000;
+    border-right: 2px solid #E07000;
+    border-bottom: 2px solid #E07000;
+    -moz-border-radius-bottomright: 10px;
+    -moz-border-radius-bottomleft: 10px;
+}
+
+.exceptionCloseLink {
+    display: block;
+    margin-left: 5%;
+    margin-right: 5%;
+    background-color: ThreeDFace;
+    padding-top: 3px;
+    padding-left: 5px;
+    padding-bottom: 3px;
+    font-weight: bold;
+    color: #000000;
+    cursor: pointer;
+    cursor: hand;
+    border-left: 2px solid #E07000;
+    border-right: 2px solid #E07000;
+    border-top: 2px solid #E07000;
+    -moz-border-radius-topright: 10px;
+    -moz-border-radius-topleft: 10px;
+}
+
+.alertDialog {
+    width: 50%;
+    border: 2px solid #ff660a;
+    padding: 1em;
+    padding-bottom: 1.7em;
+    background: #ffffff;
+}
+
+.alertDialog .dojoButton {
+    float: right;
+}
\ No newline at end of file

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/exception.css
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/workbench.css
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/workbench.css?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/workbench.css (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/workbench.css Fri Dec 22 20:39:00 2006
@@ -0,0 +1,199 @@
+@import url("exception.css");
+
+SPAN.label-error {
+    color: Red;
+}
+
+label.error {
+    color: red;
+    font-style: oblique;
+}
+
+.field-error {
+    color: White;
+    background-color: Red;
+}
+
+TABLE.inputerror TD.message {
+    font-weight: bold;
+    font-size: smaller;
+}
+
+TABLE.content {
+    background-color: #ffffcc;
+    border-color: Black;
+    border-style: solid;
+    border-width: thin;
+    border-top-width: 0px;
+    border-bottom-width: 2px;
+    border-right-width: 2px;
+    border-left-width: 0px;
+    font-size: smaller;
+    clear: all;
+    width: 700px;
+}
+
+TABLE.tabs TD {
+    padding: 0px;
+}
+
+BODY {
+    background-color: #808080;
+    margin: 2px;
+}
+
+body,td,th {
+    font-family: Lucida Grande, Tahoma, Verdana, Arial, sans-serif;
+    font-size: 9pt;
+}
+
+TABLE.requestDebug {
+    width: 700;
+    border-color: Black;
+    border-style: solid;
+    border-width: thin;
+    border-top-width: 0px;
+    border-bottom-width: 2px;
+    border-right-width: 2px;
+    border-left-width: 0px;
+    background-color: #839cd1;
+    padding: 0;
+}
+
+TABLE.requestDebug TR.control {
+    font-weight: bold;
+    font-size: 9pt;
+    color: White;
+    background-color: #330066;
+}
+
+TABLE.requestDebug FORM {
+    margin: 0;
+}
+
+DIV.described-object-title {
+    font-size: large;
+    font-weight: bold;
+    color: white;
+    background-color: black;
+}
+
+TABLE.described-object {
+    border: 1px solid black;
+    width: 100%;
+}
+
+TABLE.described-object TR.section TH {
+    color: white;
+    background-color: black;
+    text-align: center;
+}
+
+TABLE.described-object TR.odd {
+    background-color: silver;
+}
+
+TABLE.described-object TR.even {
+    background-color: #839cd1;
+}
+
+TABLE.described-object TH {
+    text-align: right;
+    width: 1px;
+    //
+    Will
+    stretch
+    to
+    fit.
+}
+
+TABLE.form TR {
+    vertical-align: top;
+}
+
+TABLE.form TH {
+    font-weight: bold;
+    text-align: right;
+}
+
+TABLE.form TR.column-header TH {
+    font-weight: bold;
+    text-align: center;
+}
+
+TABLE.palette TH {
+    font-size: 9pt;
+    font-weight: bold;
+    color: white;
+    background-color: #330066;
+    text-align: center;
+}
+
+TABLE.palette SELECT {
+    font-weight: bold;
+    background-color: #839cd1;
+    width: 200px;
+}
+
+TABLE.palette TD.controls {
+    text-align: center;
+    vertical-align: middle;
+    width: 60px;
+}
+
+TABLE.form {
+    font-size: 9pt;
+}
+
+A.nav {
+    font-family: Trebuchet MS, sans-serif;
+    text-decoration: none;
+    font-size: 12px;
+    font-weight: bold;
+    color: black;
+}
+
+A.nav:hover {
+    text-decoration: underline;
+}
+
+PRE {
+    font-size: 12pt;
+}
+
+UL {
+    margin-top: 0px;
+    margin-bottom: 0px;
+    margin-left: 20px;
+}
+
+IMG {
+    border: none;
+}
+
+.fieldMissing {
+    background: #bedef4;
+}
+
+.fieldInvalid {
+    background: #ffaf7e;
+    font-weight: bold;
+}
+
+.missingList, .invalidList {
+    padding: 0.6em;
+    padding-top: 0.2em;
+}
+
+.missingList {
+    border-top: 4px solid #bedef4;
+}
+
+.invalidList {
+    border-top: 4px solid #ffaf7e;
+}
+
+.missingList li, .invalidList li {
+    list-style:none;
+    font-style:italic;
+}
\ No newline at end of file

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/css/workbench.css
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_de.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_de.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_de.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_fr.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_fr.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_fr.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_it.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_it.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back-focus_it.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_de.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_de.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_de.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_fr.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_fr.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_fr.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_it.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_it.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Back_it.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_de.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_de.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_de.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_fr.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_fr.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_fr.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_it.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_it.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Change_it.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Continue.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Continue.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Continue.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Update.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Update.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Update.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Warning-small.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Warning-small.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Warning-small.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Warning.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Warning.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/Warning.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/minus.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/minus.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/minus.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/nodeimage.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/nodeimage.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/nodeimage.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/plus.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/plus.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/plus.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-left.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-left.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-left.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-mid.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-mid.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-mid.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-right.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-right.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-active-right.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-left.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-left.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-left.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-mid.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-mid.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-mid.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-right.gif
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-right.gif?view=auto&rev=489853
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/main/webapp/images/tab-inactive-right.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/testng.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/testng.xml?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/testng.xml (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/testng.xml Fri Dec 22 20:39:00 2006
@@ -0,0 +1,23 @@
+<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
+<!-- 
+   Copyright 2006 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.
+-->
+<suite name="Tapestry Workbench" parallel="false" annotations="1.5" verbose="2">
+  <test name="Tapestry Workbench">
+    <packages>
+       <package name="org.apache.tapestry.workbench.test" />
+    </packages>
+  </test>
+</suite>

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/webdefault-nojsp.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/webdefault-nojsp.xml?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/webdefault-nojsp.xml (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/webdefault-nojsp.xml Fri Dec 22 20:39:00 2006
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- 
+   Copyright 2006 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.
+-->
+
+<web-app 
+   xmlns="http://java.sun.com/xml/ns/j2ee" 
+   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+   xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
+   version="2.4"> 
+
+  <description>
+    Default web.xml file.  
+    This file is applied to a Web application before it's own WEB_INF/web.xml file
+  </description>
+
+
+
+  <!-- ==================================================================== -->
+  <!-- Context params to control Session Cookies                            -->
+  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
+  <!-- UNCOMMENT TO ACTIVATE
+  <context-param>
+    <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
+    <param-value>127.0.0.1</param-value>
+  </context-param>
+
+  <context-param>
+    <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
+    <param-value>/</param-value>
+  </context-param>
+
+  <context-param>
+    <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
+    <param-value>-1</param-value>
+  </context-param>
+  -->
+
+
+
+  <!-- ==================================================================== -->
+  <!-- The default servlet.                                                 -->
+  <!-- This servlet, normally mapped to /, provides the handling for static -->
+  <!-- content, OPTIONS and TRACE methods for the context.                  -->
+  <!-- The following initParameters are supported:                          -->
+  <!--                                                                      -->
+  <!--   acceptRanges     If true, range requests and responses are         -->
+  <!--                    supported                                         -->
+  <!--                                                                      -->
+  <!--   dirAllowed       If true, directory listings are returned if no    -->
+  <!--                    welcome file is found. Else 403 Forbidden.        -->
+  <!--                                                                      -->
+  <!--   putAllowed       If true, the PUT method is allowed                -->
+  <!--                                                                      -->
+  <!--   delAllowed       If true, the DELETE method is allowed             -->
+  <!--                                                                      -->
+  <!--   redirectWelcome  If true, redirect welcome file requests           -->
+  <!--                    else use request dispatcher forwards              -->
+  <!--                                                                      -->
+  <!--   minGzipLength    If set to a positive integer, then static content -->
+  <!--                    larger than this will be served as gzip content   -->
+  <!--                    encoded if a matching resource is found ending    -->
+  <!--                    with ".gz"                                        -->
+  <!--                                                                      -->
+  <!--   resoureBase      Can be set to replace the context resource base   -->
+  <!--                                                                      -->
+  <!--   relativeResourceBase                                               -->
+  <!--                    Set with a pathname relative to the base of the   -->
+  <!--                    servlet context root. Useful for only serving     -->
+  <!--                    static content from only specific subdirectories. -->
+  <!--                                                                      -->
+  <!-- The MOVE method is allowed if PUT and DELETE are allowed             -->
+  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
+  <servlet>
+    <servlet-name>default</servlet-name>
+    <servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
+    <init-param>
+      <param-name>acceptRanges</param-name>
+      <param-value>true</param-value>
+    </init-param>
+    <init-param>
+      <param-name>dirAllowed</param-name>
+      <param-value>true</param-value>
+    </init-param>
+    <init-param>
+      <param-name>putAllowed</param-name>
+      <param-value>false</param-value>
+    </init-param>
+    <init-param>
+      <param-name>delAllowed</param-name>
+      <param-value>false</param-value>
+    </init-param>
+    <init-param>
+      <param-name>redirectWelcome</param-name>
+      <param-value>false</param-value>
+    </init-param>
+    <init-param>
+      <param-name>minGzipLength</param-name>
+      <param-value>8192</param-value>
+    </init-param>
+    <load-on-startup>0</load-on-startup>
+  </servlet> 
+
+
+  <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
+
+  <!-- ==================================================================== -->
+  <session-config>
+    <session-timeout>30</session-timeout>
+  </session-config>
+
+
+  <!-- ==================================================================== -->
+  <welcome-file-list>
+    <welcome-file>index.html</welcome-file>
+    <welcome-file>index.htm</welcome-file>
+  </welcome-file-list>
+
+  <!-- ==================================================================== -->
+  <locale-encoding-mapping-list>
+    <locale-encoding-mapping><locale>ar</locale><encoding>ISO-8859-6</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>be</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>bg</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>ca</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>cs</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>da</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>de</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>el</locale><encoding>ISO-8859-7</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>en</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>es</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>et</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>fi</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>fr</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>hr</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>hu</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>is</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>it</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>iw</locale><encoding>ISO-8859-8</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>ja</locale><encoding>Shift_JIS</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>ko</locale><encoding>EUC-KR</encoding></locale-encoding-mapping>     
+    <locale-encoding-mapping><locale>lt</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>lv</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>mk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>nl</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>no</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>pl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>pt</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>ro</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>ru</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sh</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sk</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sl</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sq</locale><encoding>ISO-8859-2</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sr</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>sv</locale><encoding>ISO-8859-1</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>tr</locale><encoding>ISO-8859-9</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>uk</locale><encoding>ISO-8859-5</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>zh</locale><encoding>GB2312</encoding></locale-encoding-mapping>
+    <locale-encoding-mapping><locale>zh_TW</locale><encoding>Big5</encoding></locale-encoding-mapping>   
+  </locale-encoding-mapping-list>
+
+  
+
+</web-app>
+

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/test/conf/webdefault-nojsp.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/SeleniumClientFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/SeleniumClientFactory.java?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/SeleniumClientFactory.java (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/SeleniumClientFactory.java Fri Dec 22 20:39:00 2006
@@ -0,0 +1,17 @@
+package org.apache.tapestry.workbench.test;
+
+import org.openqa.selenium.server.SeleniumServer;
+
+import com.thoughtworks.selenium.DefaultSelenium;
+import com.thoughtworks.selenium.Selenium;
+
+public class SeleniumClientFactory
+{
+	public static Selenium makeClient()
+	{
+		Selenium seleniumClient = new DefaultSelenium("localhost",
+				SeleniumServer.DEFAULT_PORT, "*firefox", WorkbenchLauncher.BASE_URL);
+		seleniumClient.start();
+		return seleniumClient;
+	}
+}

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/SeleniumClientFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/TabLinksTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/TabLinksTest.java?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/TabLinksTest.java (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/TabLinksTest.java Fri Dec 22 20:39:00 2006
@@ -0,0 +1,78 @@
+package org.apache.tapestry.workbench.test;
+
+import org.testng.annotations.AfterTest;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+
+import com.thoughtworks.selenium.Selenium;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
+
+@Test(timeOut = 50000)
+public class TabLinksTest
+{
+	private static final String PAGE_LOAD_TIMEOUT = "600000";
+
+	private Selenium seleniumClient;
+
+	@BeforeTest
+	public void setUp()
+	{
+		seleniumClient = SeleniumClientFactory.makeClient();
+		openHome();
+	}
+
+	@AfterTest
+	public void tearDown()
+	{
+		seleniumClient.close();
+	}
+
+	public void testTabLinks()
+	{
+		assertLinkExists("Home");
+		assertLinkExists("L10N");
+		assertLinkExists("Fields");
+	}
+
+	public void testHighlightCurrentPageLink()
+	{
+		clickAndWait("link=Fields");
+		assertTabLinkActive(0, false);
+		assertTabLinkActive(1, false);
+		assertTabLinkActive(2, true);
+		assertTabLinkActive(3, false);
+	}
+
+	private void assertTabLinkActive(int tabIndex, boolean isActive)
+	{
+		String expectedImgURLFragment = String.format("-%s-",
+				isActive ? "active" : "inactive");
+		int tdTagIndexForLink = 3 * tabIndex + 1;
+		String imageForFieldsPage = seleniumClient.getText(String.format(
+				"//td[%d]/@background", zeroToOneBase(tdTagIndexForLink)));
+		assertTrue(imageForFieldsPage.indexOf(expectedImgURLFragment) != -1);
+	}
+
+	private int zeroToOneBase(int index)
+	{
+		return index + 1;
+	}
+
+	private void openHome()
+	{
+		seleniumClient.open(WorkbenchLauncher.BASE_URL + "/Home.html");
+	}
+
+	private void assertLinkExists(String text)
+	{
+		assertEquals(seleniumClient.getText("link=" + text), text);
+	}
+
+	private void clickAndWait(String link)
+	{
+		seleniumClient.click(link);
+		seleniumClient.waitForPageToLoad(PAGE_LOAD_TIMEOUT);
+	}
+}

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/TabLinksTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/WorkbenchLauncher.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/WorkbenchLauncher.java?view=auto&rev=489853
==============================================================================
--- tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/WorkbenchLauncher.java (added)
+++ tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/WorkbenchLauncher.java Fri Dec 22 20:39:00 2006
@@ -0,0 +1,58 @@
+package org.apache.tapestry.workbench.test;
+
+import java.io.IOException;
+
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.servlet.WebApplicationContext;
+import org.mortbay.util.InetAddrPort;
+import org.openqa.selenium.server.SeleniumServer;
+import org.testng.annotations.AfterSuite;
+import org.testng.annotations.BeforeSuite;
+
+public class WorkbenchLauncher
+{
+	private static final int JETTY_PORT = 9999;
+
+    private static final String CONTEXT = "/myapp";
+
+	public static final String BASE_URL = String.format(
+			"http://localhost:%s%s", JETTY_PORT, CONTEXT);
+
+	private Server jetty;
+
+	private SeleniumServer seleniumServer;
+
+	@BeforeSuite
+	public void start() throws Exception
+	{
+		startJetty();
+		startSeleniumServer();
+	}
+
+	private void startJetty() throws IOException, Exception
+	{
+		jetty = new Server();
+		jetty.addListener(new InetAddrPort(JETTY_PORT));
+		WebApplicationContext context = jetty.addWebApplication(CONTEXT,
+				"src/main/webapp");
+		context.setDefaultsDescriptor("src/test/conf/webdefault-nojsp.xml");
+		jetty.start();
+	}
+
+	private void startSeleniumServer() throws Exception
+	{
+		seleniumServer = new SeleniumServer();
+		seleniumServer.start();
+	}
+
+	@AfterSuite
+	public void stop() throws InterruptedException
+	{
+		seleniumServer.stop();
+		jetty.stop();
+	}
+	public static void main(String[] args) throws Exception
+	{
+		new WorkbenchLauncher().start();
+	}
+}

Propchange: tapestry/tapestry5/tapestry-workbench/trunk/src/test/java/org/apache/tapestry/workbench/test/WorkbenchLauncher.java
------------------------------------------------------------------------------
    svn:eol-style = native