cleaned up


git-svn-id: https://svn.apache.org/repos/asf/incubator/wicket/trunk@457118 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/wicket-examples/src/java/wicket/examples/beanedit/README-WARNING.txt b/wicket-examples/src/java/wicket/examples/beanedit/README-WARNING.txt
new file mode 100644
index 0000000..d103ff6
--- /dev/null
+++ b/wicket-examples/src/java/wicket/examples/beanedit/README-WARNING.txt
@@ -0,0 +1 @@
+Work in progress: users should not depend on this yet!
\ No newline at end of file
diff --git a/wicket-examples/src/java/wicket/examples/customcomponents/Book.java b/wicket-examples/src/java/wicket/examples/customcomponents/Book.java
deleted file mode 100644
index 96d3c34..0000000
--- a/wicket-examples/src/java/wicket/examples/customcomponents/Book.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.customcomponents;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * A book.
- * @author Eelco Hillenius
- */
-public class Book implements Serializable
-{
-	private String title = "Action Wicket";
-
-	private String author = "Fritz Fritzl";
-
-	private Date orderPlaced = new Date();
-
-	/**
-	 * Construct.
-	 */
-	public Book()
-	{
-	}
-
-	/**
-	 * Gets the title.
-	 * @return title
-	 */
-	public String getTitle()
-	{
-		return title;
-	}
-
-	/**
-	 * Sets the title.
-	 * @param title title
-	 */
-	public void setTitle(String title)
-	{
-		this.title = title;
-	}
-
-	/**
-	 * Gets the author.
-	 * @return author
-	 */
-	public String getAuthor()
-	{
-		return author;
-	}
-
-	/**
-	 * Sets the author.
-	 * @param author author
-	 */
-	public void setAuthor(String author)
-	{
-		this.author = author;
-	}
-
-	/**
-	 * Gets the orderPlaced.
-	 * @return orderPlaced
-	 */
-	public Date getOrderPlaced()
-	{
-		return orderPlaced;
-	}
-
-	/**
-	 * Sets the orderPlaced.
-	 * @param orderPlaced orderPlaced
-	 */
-	public void setOrderPlaced(Date orderPlaced)
-	{
-		this.orderPlaced = orderPlaced;
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/customcomponents/CustomComponentsApplication.java b/wicket-examples/src/java/wicket/examples/customcomponents/CustomComponentsApplication.java
deleted file mode 100644
index 1372a95..0000000
--- a/wicket-examples/src/java/wicket/examples/customcomponents/CustomComponentsApplication.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.customcomponents;
-
-import wicket.examples.WicketExampleApplication;
-
-/**
- * WicketServlet class for the custom components example.
- *
- * @author Eelco Hillenius
- */
-public class CustomComponentsApplication extends WicketExampleApplication
-{
-    /**
-     * Constructor.
-     */
-    public CustomComponentsApplication()
-    {
-        getPages().setHomePage(Home.class);
-    }
-}
diff --git a/wicket-examples/src/java/wicket/examples/customcomponents/Home.html b/wicket-examples/src/java/wicket/examples/customcomponents/Home.html
deleted file mode 100644
index bf2d2bf..0000000
--- a/wicket-examples/src/java/wicket/examples/customcomponents/Home.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" >
-<head>
-    <title>Wicket Examples - Custom components</title>
-    <link rel="stylesheet" type="text/css" href="style.css"/>
-</head>
-<body>
-    <span wicket:id="mainNavigation"/>
-
-   <div class="block">
-    <h3>Editing book <span wicket:id="booksumm">Title - Author</span></h3>
-    <input type="text" wicket:id="title" />
-    <input type="text" wicket:id="author" />
-   </div>
-
-	<div>
-	 <input type="text" wicket:id="date1" />
-	 <span wicket:id="datePicker1"></span>
-	</div>
-	<br />
-	<div>
-	 <input type="text" wicket:id="date2" />
-	 <span wicket:id="datePicker2"></span>
-	</div>
-	<br />
-	<div>
-	 <input type="text" wicket:id="date3" />
-	 <span wicket:id="datePicker3"></span>
-	</div>
-	<br />
-
-</body>
-</html>
diff --git a/wicket-examples/src/java/wicket/examples/customcomponents/Home.java b/wicket-examples/src/java/wicket/examples/customcomponents/Home.java
deleted file mode 100644
index e4be3cb..0000000
--- a/wicket-examples/src/java/wicket/examples/customcomponents/Home.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.customcomponents;
-
-import java.util.Date;
-
-import wicket.examples.WicketExamplePage;
-import wicket.extensions.markup.html.datepicker.DatePicker;
-import wicket.extensions.markup.html.datepicker.DatePickerSettings;
-import wicket.markup.html.basic.Label;
-import wicket.markup.html.form.TextField;
-import wicket.model.BoundCompoundPropertyModel;
-import wicket.model.Model;
-
-/**
- * This example's Home page.
- *
- * @author Eelco Hillenius
- */
-public class Home extends WicketExamplePage
-{
-	/**
-	 * Constructor.
-	 */
-	public Home()
-	{
-		final Book book = new Book();
-		BoundCompoundPropertyModel model = new BoundCompoundPropertyModel(book);
-		setModel(model);
-
-		add(new OnChangeTextField("title"));
-		add(new OnChangeTextField("author"));
-		add(new Label("booksumm", new Model()
-		{
-			public Object getObject(wicket.Component component)
-			{
-				return book.getTitle() + " by " + book.getAuthor();
-			};
-		}));
-
-		TextField dateField1 = new TextField("date1", new Model(new Date()), Date.class);
-		add(dateField1);
-		add(new DatePicker("datePicker1", dateField1));
-
-		TextField dateField2 = new TextField("date2", new Model(new Date()), Date.class);
-		add(dateField2);
-		DatePickerSettings dp2Settings = new DatePickerSettings();
-		dp2Settings.setIcon(DatePickerSettings.BUTTON_ICON_2);
-		add(new DatePicker("datePicker2", dateField2, dp2Settings));
-
-		TextField dateField3 = new TextField("date3", new Model(new Date()), Date.class);
-		add(dateField3);
-		DatePickerSettings dp3Settings = new DatePickerSettings();
-		dp3Settings.setIcon(DatePickerSettings.BUTTON_ICON_3);
-
-		add(new DatePicker("datePicker3", dateField3, dp3Settings));
-	}
-}
\ No newline at end of file
diff --git a/wicket-examples/src/java/wicket/examples/customcomponents/OnChangeTextField.java b/wicket-examples/src/java/wicket/examples/customcomponents/OnChangeTextField.java
deleted file mode 100644
index 92546f0..0000000
--- a/wicket-examples/src/java/wicket/examples/customcomponents/OnChangeTextField.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.customcomponents;
-
-import wicket.RequestCycle;
-import wicket.markup.ComponentTag;
-import wicket.markup.html.form.IOnChangeListener;
-import wicket.markup.html.form.TextField;
-import wicket.model.IModel;
-
-/**
- * Custom text field that listents to onchange events.
- *
- * @author Eelco Hillenius
- */
-public class OnChangeTextField extends TextField implements IOnChangeListener
-{
-	/**
-	 * Construct.
-	 * @param id component id
-	 */
-	public OnChangeTextField(String id)
-	{
-		super(id);
-	}
-
-	/**
-	 * Construct.
-	 * @param id component id
-	 * @param type type
-	 */
-	public OnChangeTextField(String id, Class type)
-	{
-		super(id, type);
-	}
-
-	/**
-	 * Construct.
-	 * @param id component id
-	 * @param model model
-	 */
-	public OnChangeTextField(String id, IModel model)
-	{
-		super(id, model);
-	}
-
-	/**
-	 * Construct.
-	 * @param id component id
-	 * @param model model
-	 * @param type type
-	 */
-	public OnChangeTextField(String id, IModel model, Class type)
-	{
-		super(id, model, type);
-	}
-
-	/**
-	 * Processes the component tag.
-	 * 
-	 * @param tag Tag to modify
-	 * @see wicket.Component#onComponentTag(wicket.markup.ComponentTag)
-	 */
-	protected void onComponentTag(final ComponentTag tag)
-	{
-		// url that points to this components IOnChangeListener method
-		final String url = urlFor(IOnChangeListener.class);
-
-		// NOTE: do not encode the url as that would give invalid JavaScript
-		tag.put("onChange", "location.href='" + url + "&" + getPath()
-				+ "=' + this.value;");
-
-		super.onComponentTag(tag);
-	}
-
-	/**
-	 * Called when a selection changes.
-	 */
-	public final void onSelectionChanged()
-	{
-		updateModel();
-		onSelectionChanged(getModelObject());
-	}
-
-	/**
-	 * Template method that can be overriden by clients that implement
-	 * IOnChangeListener to be notified by onChange events of a select element.
-	 * This method does nothing by default.
-	 * <p>
-	 * 
-	 * @param newSelection
-	 *			  The newly selected object of the backing model NOTE this is
-	 *			  the same as you would get by calling getModelObject()
-	 */
-	protected void onSelectionChanged(final Object newSelection)
-	{
-	}
-
-	static
-	{
-		// Allow optional use of the IOnChangeListener interface
-		RequestCycle.registerRequestListenerInterface(IOnChangeListener.class);
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/Home.html b/wicket-examples/src/java/wicket/examples/wizard/Home.html
deleted file mode 100644
index 43923e7..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/Home.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<html xmlns="http://www.w3.org/1999/xhtml" >
-<head>
-    <title>Wicket Examples - wizard</title>
-    <link rel="stylesheet" type="text/css" href="style.css"/>
-    <link rel="stylesheet" type="text/css" href="wizard/style.css"/>
-</head>
-<body>
-
-    <span wicket:id="mainNavigation"/>
-
-    <span wicket:id="wizardPanel">Panel goes here</span>
-
-    <div wicket:id="feedback">Feedback goes here</div>
-
-</body>
-</html>
diff --git a/wicket-examples/src/java/wicket/examples/wizard/Home.java b/wicket-examples/src/java/wicket/examples/wizard/Home.java
deleted file mode 100644
index 71cbee8..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/Home.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard;
-
-import wicket.examples.WicketExamplePage;
-import wicket.examples.wizard.framework.WizardConfiguration;
-import wicket.examples.wizard.framework.WizardPanel;
-import wicket.markup.html.panel.FeedbackPanel;
-
-/**
- * Home page of the wizard example.
- * 
- * @author Eelco Hillenius
- */
-public class Home extends WicketExamplePage
-{
-    /**
-     * Constructor.
-     */
-    public Home()
-    {
-		WizardConfiguration prefWiz = ((WizardApplication)getApplication()).newPreferencesWizard();
-
-		FeedbackPanel feedbackPanel = new FeedbackPanel("feedback");
-		add(feedbackPanel);
-
-		add(new WizardPanel("wizardPanel", prefWiz, feedbackPanel));
-    }
-}
\ No newline at end of file
diff --git a/wicket-examples/src/java/wicket/examples/wizard/WizardApplication.java b/wicket-examples/src/java/wicket/examples/wizard/WizardApplication.java
deleted file mode 100644
index 437b71e..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/WizardApplication.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard;
-
-import wicket.ApplicationSettings;
-import wicket.examples.WicketExampleApplication;
-import wicket.examples.wizard.example.hotel.HotelPrefWizConfiguration;
-import wicket.examples.wizard.framework.WizardConfiguration;
-
-/**
- * Application class for the wizard example.
- *
- * @author Eelco Hillenius
- */
-public class WizardApplication extends WicketExampleApplication
-{
-    /**
-     * Constructor.
-     */
-    public WizardApplication()
-    {
-        getPages().setHomePage(Home.class);
-		ApplicationSettings settings = getSettings();
-		settings.setThrowExceptionOnMissingResource(false);
-		settings.setStripWicketTags(true);
-    }
-
-	/**
-	 * Create an instance of the preferences wizard.
-	 * @return wizard configuration object
-	 */
-	public WizardConfiguration newPreferencesWizard()
-	{
-		return new HotelPrefWizConfiguration();
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/AbstractHotelPrefStep.java b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/AbstractHotelPrefStep.java
deleted file mode 100644
index 7975e56..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/AbstractHotelPrefStep.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.example.hotel;
-
-import wicket.examples.wizard.framework.AbstractStep;
-
-/**
- * Base class for the steps of the hotel preferences wizard.
- *
- * @author Eelco Hillenius
- */
-public abstract class AbstractHotelPrefStep extends AbstractStep
-{
-	/** the model. */
-	private final HotelPreferencesModel model;
-
-	/**
-	 * Construct.
-	 * @param model the model
-	 */
-	public AbstractHotelPrefStep(HotelPreferencesModel model)
-	{
-		if (model == null)
-		{
-			throw new NullPointerException("model must not be null");
-		}
-		this.model = model;
-	}
-
-	/**
-	 * Gets the subject model of this step.
-	 * @return the subject model of this step
-	 */
-	public final HotelPreferencesModel getModel()
-	{
-		return model;
-	}
-
-	/**
-	 * Gets the preferences.
-	 * @return the preferences
-	 */
-	protected final HotelPreferences getPreferences()
-	{
-		return model.getPreferences();
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/HotelPrefWizConfiguration.java b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/HotelPrefWizConfiguration.java
deleted file mode 100644
index 4ff7d02..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/HotelPrefWizConfiguration.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.example.hotel;
-
-import wicket.examples.wizard.framework.Node;
-import wicket.examples.wizard.framework.Step;
-import wicket.examples.wizard.framework.Transition;
-import wicket.examples.wizard.framework.TransitionLabel;
-import wicket.examples.wizard.framework.Transitions;
-import wicket.examples.wizard.framework.WizardConfiguration;
-
-/**
- * Configuration object for the preferences wizard.
- *
- * @author Eelco Hillenius
- */
-public final class HotelPrefWizConfiguration extends WizardConfiguration
-{
-	/**
-	 * Construct.
-	 */
-	public HotelPrefWizConfiguration()
-	{
-		super();
-
-		HotelPreferences preferences = new HotelPreferences();
-		HotelPreferencesModel model = new HotelPreferencesModel(preferences);
-
-		Step personalData = new PersonalDataStep(model);
-		Step roomSelection = new RoomSelectionStep(model);
-		Step stayPreferences = new StayPreferencesStep(model);
-		Step review = new ReviewStep(model);
-
-		Transitions transitions = new Transitions(personalData);
-		transitions.put(personalData, new NextCommand(TransitionLabel.NEXT, roomSelection));
-		transitions.put(roomSelection, new NextCommand(TransitionLabel.PREVIOUS, personalData));
-		transitions.put(roomSelection, new NextCommand(TransitionLabel.NEXT, stayPreferences));
-		transitions.put(stayPreferences, new NextCommand(TransitionLabel.PREVIOUS, roomSelection));
-		transitions.put(stayPreferences, new NextCommand(TransitionLabel.NEXT, roomSelection));
-		//transitions.put(step3, new End("next"));
-
-		setTransitions(transitions);
-	}
-
-	/**
-	 * Command for navigating to the next step.
-	 */
-	private final class NextCommand extends Transition
-	{
-		private final Node next;
-
-		/**
-		 * Construct.
-		 * @param label
-		 * @param next 
-		 */
-		public NextCommand(TransitionLabel label, Node next)
-		{
-			super(label);
-			this.next = next;
-		}
-
-		/**
-		 * @see wicket.examples.wizard.framework.Transition#next(wicket.examples.wizard.framework.Step)
-		 */
-		public Node next(Node current)
-		{
-			return next;
-		}		
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/HotelPreferences.java b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/HotelPreferences.java
deleted file mode 100644
index cf0bfed..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/HotelPreferences.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.example.hotel;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-/**
- * Hotel Preferences POJO.
- *
- * @author Eelco Hillenius
- */
-public class HotelPreferences implements Serializable
-{
-	private String firstName;
-	private String lastName;
-	private Date dateOfBirth;
-	private String passportNumber;
-
-	private String roomClass = Room.ROOM_CLASS_ECONOMY; // defaults to economy
-	private boolean wantsBalcony = false;
-	private Room room;
-
-	/**
-	 * List of rooms. For the example this is super-simple, but in the realworld you would
-	 * need to track which rooms have been reserved etc.
-	 */
-	private static Room[] availableRooms = new Room[]
-	{
-		new Room("1", Room.ROOM_CLASS_ECONOMY, false),
-		new Room("2", Room.ROOM_CLASS_ECONOMY, false),
-		new Room("3", Room.ROOM_CLASS_ECONOMY, true),
-		new Room("4", Room.ROOM_CLASS_ECONOMY, true),
-		new Room("5", Room.ROOM_CLASS_EXECUTIVE, false),
-		new Room("6", Room.ROOM_CLASS_EXECUTIVE, false),
-		new Room("7", Room.ROOM_CLASS_EXECUTIVE, true),
-		new Room("8", Room.ROOM_CLASS_EXECUTIVE, true)
-	};
-
-	private boolean wantsWakeUpCall = false;
-	private Integer wakeUpCallHours;
-	private Integer wakeUpCallMinutes;
-	private boolean wantsBreakFast = true;
-
-	/**
-	 * Construct.
-	 */
-	public HotelPreferences()
-	{
-	}
-
-	/**
-	 * Gets the available room classes.
-	 * @return the available room classes
-	 */
-	public final List roomClasses()
-	{
-		return Arrays.asList(new String[] {Room.ROOM_CLASS_ECONOMY, Room.ROOM_CLASS_EXECUTIVE});
-	}
-
-	/**
-	 * Gets the available rooms for the given parameters.
-	 * @param roomClass class of the room
-	 * @param withBalcony whether the room should have a balcony
-	 * @return the available rooms for the given parameters
-	 */
-	public final List/*<Room>*/ getAvailableRooms(String roomClass, boolean withBalcony)
-	{
-		List l = new ArrayList();
-		int len = availableRooms.length;
-		for(int i = 0; i < len; i++)
-		{
-			if(availableRooms[i].getRoomClass().equals(roomClass) &&
-					availableRooms[i].getHasBalcony() == withBalcony)
-			{
-				l.add(availableRooms[i]);
-			}
-		}
-		return l;
-	}
-
-	/**
-	 * Gets the dateOfBirth.
-	 * @return dateOfBirth
-	 */
-	public Date getDateOfBirth()
-	{
-		return dateOfBirth;
-	}
-
-	/**
-	 * Sets the dateOfBirth.
-	 * @param dateOfBirth dateOfBirth
-	 */
-	public void setDateOfBirth(Date dateOfBirth)
-	{
-		this.dateOfBirth = dateOfBirth;
-	}
-
-	/**
-	 * Gets the firstName.
-	 * @return firstName
-	 */
-	public String getFirstName()
-	{
-		return firstName;
-	}
-
-	/**
-	 * Sets the firstName.
-	 * @param firstName firstName
-	 */
-	public void setFirstName(String firstName)
-	{
-		this.firstName = firstName;
-	}
-
-	/**
-	 * Gets the lastName.
-	 * @return lastName
-	 */
-	public String getLastName()
-	{
-		return lastName;
-	}
-
-	/**
-	 * Sets the lastName.
-	 * @param lastName lastName
-	 */
-	public void setLastName(String lastName)
-	{
-		this.lastName = lastName;
-	}
-
-	/**
-	 * Gets the passportNumber.
-	 * @return passportNumber
-	 */
-	public String getPassportNumber()
-	{
-		return passportNumber;
-	}
-
-	/**
-	 * Sets the passportNumber.
-	 * @param passportNumber passportNumber
-	 */
-	public void setPassportNumber(String passportNumber)
-	{
-		this.passportNumber = passportNumber;
-	}
-
-	/**
-	 * Gets the room.
-	 * @return room
-	 */
-	public Room getRoom()
-	{
-		return room;
-	}
-
-	/**
-	 * Sets the room.
-	 * @param room room
-	 */
-	public void setRoom(Room room)
-	{
-		this.room = room;
-	}
-
-	/**
-	 * Gets the wantsWakeUpCall.
-	 * @return wantsWakeUpCall
-	 */
-	public boolean getWantsWakeUpCall()
-	{
-		return wantsWakeUpCall;
-	}
-
-	/**
-	 * Sets the wantsWakeUpCall.
-	 * @param wantsWakeUpCall wantsWakeUpCall
-	 */
-	public void setWantsWakeUpCall(boolean wantsWakeUpCall)
-	{
-		this.wantsWakeUpCall = wantsWakeUpCall;
-	}
-
-	/**
-	 * Gets the wakeUpCallHours.
-	 * @return wakeUpCallHours
-	 */
-	public Integer getWakeUpCallHours()
-	{
-		return wakeUpCallHours;
-	}
-
-	/**
-	 * Sets the wakeUpCallHours.
-	 * @param wakeUpCallHours wakeUpCallHours
-	 */
-	public void setWakeUpCallHours(Integer wakeUpCallHours)
-	{
-		this.wakeUpCallHours = wakeUpCallHours;
-	}
-
-	/**
-	 * Gets the wakeUpCallMinutes.
-	 * @return wakeUpCallMinutes
-	 */
-	public Integer getWakeUpCallMinutes()
-	{
-		return wakeUpCallMinutes;
-	}
-
-	/**
-	 * Sets the wakeUpCallMinutes.
-	 * @param wakeUpCallMinutes wakeUpCallMinutes
-	 */
-	public void setWakeUpCallMinutes(Integer wakeUpCallMinutes)
-	{
-		this.wakeUpCallMinutes = wakeUpCallMinutes;
-	}
-
-	/**
-	 * Gets the wantsBreakFast.
-	 * @return wantsBreakFast
-	 */
-	public boolean getWantsBreakFast()
-	{
-		return wantsBreakFast;
-	}
-
-	/**
-	 * Sets the wantsBreakFast.
-	 * @param wantsBreakFast wantsBreakFast
-	 */
-	public void setWantsBreakFast(boolean wantsBreakFast)
-	{
-		this.wantsBreakFast = wantsBreakFast;
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/HotelPreferencesModel.java b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/HotelPreferencesModel.java
deleted file mode 100644
index c2a5224..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/HotelPreferencesModel.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.example.hotel;
-
-import wicket.extensions.markup.html.beanedit.BeanModel;
-
-/**
- * Type safe model for hotel preferences.
- *
- * @author Eelco Hillenius
- */
-public final class HotelPreferencesModel extends BeanModel
-{
-	/**
-	 * Construct.
-	 * @param preferences preferences
-	 */
-	public HotelPreferencesModel(HotelPreferences preferences)
-	{
-		super(preferences);
-	}
-
-	/**
-	 * Gets the model object.
-	 * @return the model object
-	 */
-	public HotelPreferences getPreferences()
-	{
-		return (HotelPreferences)getObject(null);
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/PersonalDataStep.java b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/PersonalDataStep.java
deleted file mode 100644
index 792e546..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/PersonalDataStep.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.example.hotel;
-
-import java.util.Date;
-
-import wicket.examples.wizard.framework.TransitionLabel;
-import wicket.extensions.markup.html.beanedit.BeanField;
-import wicket.extensions.markup.html.beanedit.BeanFields;
-import wicket.extensions.markup.html.beanedit.BeanFieldsPanel;
-import wicket.markup.html.form.Form;
-import wicket.markup.html.panel.Panel;
-import wicket.util.string.Strings;
-
-/**
- * Step 1, Personal Data, of the hotel preferences wizard.
- *
- * @author Eelco Hillenius
- */
-public class PersonalDataStep extends AbstractHotelPrefStep
-{
-	/** fields of this step. */
-	private BeanFields fields;
-
-	/**
-	 * Construct.
-	 * @param model the model
-	 */
-	public PersonalDataStep(HotelPreferencesModel model)
-	{
-		super(model);
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#newEditor(String)
-	 */
-	public Panel newEditor(String id)
-	{
-		fields = new BeanFields(getModel());
-		fields.setDisplayName("Personal Data");
-		fields.add(new BeanField("firstName", "first name", String.class));
-		fields.add(new BeanField("lastName", "last name", String.class));
-		fields.add(new BeanField("passportNumber", "passport number", String.class));
-		fields.add(new BeanField("dateOfBirth", "date of birth", Date.class));
-		BeanFieldsPanel panel = new BeanFieldsPanel(id, fields);
-		return panel;
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#next(wicket.markup.html.form.Form)
-	 */
-	public TransitionLabel next(Form form)
-	{
-		if(validateNext(form))
-		{
-			return TransitionLabel.NEXT;
-		}
-
-		return TransitionLabel.CURRENT;
-	}
-
-	/**
-	 * Validates whether the current state is complete enough to go on.
-	 * @param form message receiving component
-	 * @return true when valid
-	 */
-	private boolean validateNext(Form form)
-	{
-		boolean valid = true;
-		HotelPreferences preferences = getPreferences();
-		if(Strings.isEmpty(preferences.getFirstName()))
-		{
-			valid = false;
-			form.error("first name is a required field");
-		}
-		if(Strings.isEmpty(preferences.getLastName()))
-		{
-			valid = false;
-			form.error("last name is a required field");
-		}
-		if(Strings.isEmpty(preferences.getPassportNumber()))
-		{
-			valid = false;
-			form.error("passport number is a required field");
-		}
-		return valid;
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/ReviewStep$Editor.html b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/ReviewStep$Editor.html
deleted file mode 100644
index d938bf6..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/ReviewStep$Editor.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<wicket:panel>
-
-  <table>
-   <thead>
-    <tr>
-     <th colspan="2">Room Selection</th>
-    </tr>
-   </thead>
-   <tbody>
-    <tr>
-      <td>
-	     <span>
-	       wants wake up call
-	     </span>
-	  </td>
-	  <td>
-	     <input type="checkbox" wicket:id="wantsWakeUpCall" />
-	  </td>
-    </tr>
-    <tr wicket:id="wakeUpCallContainer">
-      <td colspan="2">
-	     <span>
-	       &nbsp;&nbsp;at&nbsp;
-	       <input type="text" wicket:id="wakeUpCallHours" size="10" />&nbsp;:
-	       <input type="text" wicket:id="wakeUpCallMinutes" size="10" />&nbsp;
-	     </span>
-	  </td>
-    </tr>
-    <tr>
-      <td>
-	     <span>
-	       wants breakfast
-	     </span>
-	  </td>
-	  <td>
-	     <input type="checkbox" wicket:id="wantsBreakFast" />
-	  </td>
-    </tr>
-   </tbody>
-  </table>
-
-</wicket:panel>
\ No newline at end of file
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/ReviewStep.java b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/ReviewStep.java
deleted file mode 100644
index b81be6b..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/ReviewStep.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.example.hotel;
-
-import wicket.examples.wizard.framework.TransitionLabel;
-import wicket.markup.html.WebMarkupContainer;
-import wicket.markup.html.form.CheckBox;
-import wicket.markup.html.form.Form;
-import wicket.markup.html.form.TextField;
-import wicket.markup.html.panel.Panel;
-import wicket.model.CompoundPropertyModel;
-
-/**
- * Step 4, Review, of the hotel preferences wizard.
- *
- * @author Eelco Hillenius
- */
-public class ReviewStep extends AbstractHotelPrefStep
-{
-	/**
-	 * Construct.
-	 * @param model the model
-	 */
-	public ReviewStep(HotelPreferencesModel model)
-	{
-		super(model);
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#newEditor(String)
-	 */
-	public Panel newEditor(String id)
-	{
-		return new Editor(id);
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#next(wicket.markup.html.form.Form)
-	 */
-	public TransitionLabel next(Form form)
-	{
-		if(validateNext(form))
-		{
-			return TransitionLabel.NEXT;
-		}
-
-		return null;
-	}
-
-	/**
-	 * Validates whether the current state is complete enough to go on.
-	 * @param form message receiving component
-	 * @return true when valid
-	 */
-	private boolean validateNext(Form form)
-	{
-		boolean valid = true;
-		HotelPreferences preferences = getPreferences();
-		if(preferences.getRoom() == null)
-		{
-			valid = false;
-			form.error("you must select a room");
-		}
-		return valid;
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#previous(wicket.markup.html.form.Form)
-	 */
-	public TransitionLabel previous(Form form)
-	{
-		return TransitionLabel.PREVIOUS;
-	}
-
-	/**
-	 * Custom editor for this step.
-	 */
-	private final class Editor extends Panel
-	{
-		/**
-		 * Construct.
-		 * @param id component id
-		 */
-		public Editor(String id)
-		{
-			super(id, new CompoundPropertyModel(ReviewStep.this.getModel()));
-
-			add(new CheckBox("wantsWakeUpCall")
-			{
-				protected boolean wantOnSelectionChangedNotifications()
-				{
-					return true;
-				}
-			});
-
-			// we want to show the wake up call input fields (time) only when the customer
-			// wants to get a wake up call
-			WebMarkupContainer wakeUpCallContainer = new WebMarkupContainer("wakeUpCallContainer")
-			{
-				public boolean isVisible()
-				{
-					return getPreferences().getWantsWakeUpCall();
-				}
-			};
-			// note that required is only checked when the field is visible
-			wakeUpCallContainer.add(new TextField("wakeUpCallHours", Integer.class));
-			wakeUpCallContainer.add(new TextField("wakeUpCallMinutes", Integer.class));
-			add(wakeUpCallContainer);
-
-			add(new CheckBox("wantsBreakFast"));
-		}
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/Room.java b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/Room.java
deleted file mode 100644
index 060711b..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/Room.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.example.hotel;
-
-import java.io.Serializable;
-
-/**
- * Represents a room.
- *
- * @author Eelco Hillenius
- */
-public final class Room implements Serializable
-{
-	/** class economy. */
-	public static final String ROOM_CLASS_ECONOMY = "economy";
-
-	/** class executive. */
-	public static final String ROOM_CLASS_EXECUTIVE = "executive";
-
-	private final String roomClass; // defaults to economy
-	private final boolean hasBalcony;
-	private final String roomNumber;
-
-	/**
-	 * Construct.
-	 * @param roomNumber 
-	 * @param roomClass 
-	 * @param hasBalcony 
-	 */
-	public Room(String roomNumber, String roomClass, boolean hasBalcony)
-	{
-		this.roomNumber = roomNumber;
-		this.roomClass = roomClass;
-		this.hasBalcony = hasBalcony;
-	}
-
-	/**
-	 * Gets the hasBalcony.
-	 * @return hasBalcony
-	 */
-	public boolean getHasBalcony()
-	{
-		return hasBalcony;
-	}
-
-	/**
-	 * Gets the roomClass.
-	 * @return roomClass
-	 */
-	public String getRoomClass()
-	{
-		return roomClass;
-	}
-
-	/**
-	 * Gets the roomNumber.
-	 * @return roomNumber
-	 */
-	public String getRoomNumber()
-	{
-		return roomNumber;
-	}
-
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/RoomReservation.java b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/RoomReservation.java
deleted file mode 100644
index a80e06c..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/RoomReservation.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.example.hotel;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * Represents a room reservation.
- *
- * @author Eelco Hillenius
- */
-public final class RoomReservation implements Serializable
-{
-	private Date from;
-	private Date until;
-	private Room room;
-
-	/**
-	 * Construct.
-	 * @param room room
-	 * @param from from date
-	 * @param until until date
-	 */
-	public RoomReservation(Room room, Date from, Date until)
-	{
-		this.room = room;
-		this.from = from;
-		this.until = until;
-	}
-
-	/**
-	 * Gets the room.
-	 * @return room
-	 */
-	public Room getRoom()
-	{
-		return room;
-	}
-
-	/**
-	 * Sets the room.
-	 * @param room room
-	 */
-	public void setRoom(Room room)
-	{
-		this.room = room;
-	}
-
-	/**
-	 * Gets the from.
-	 * @return from
-	 */
-	public Date getFrom()
-	{
-		return from;
-	}
-
-	/**
-	 * Sets the from.
-	 * @param from from
-	 */
-	public void setFrom(Date from)
-	{
-		this.from = from;
-	}
-
-	/**
-	 * Gets the until.
-	 * @return until
-	 */
-	public Date getUntil()
-	{
-		return until;
-	}
-
-	/**
-	 * Sets the until.
-	 * @param until until
-	 */
-	public void setUntil(Date until)
-	{
-		this.until = until;
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/RoomSelectionStep$Editor.html b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/RoomSelectionStep$Editor.html
deleted file mode 100644
index d938bf6..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/RoomSelectionStep$Editor.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<wicket:panel>
-
-  <table>
-   <thead>
-    <tr>
-     <th colspan="2">Room Selection</th>
-    </tr>
-   </thead>
-   <tbody>
-    <tr>
-      <td>
-	     <span>
-	       wants wake up call
-	     </span>
-	  </td>
-	  <td>
-	     <input type="checkbox" wicket:id="wantsWakeUpCall" />
-	  </td>
-    </tr>
-    <tr wicket:id="wakeUpCallContainer">
-      <td colspan="2">
-	     <span>
-	       &nbsp;&nbsp;at&nbsp;
-	       <input type="text" wicket:id="wakeUpCallHours" size="10" />&nbsp;:
-	       <input type="text" wicket:id="wakeUpCallMinutes" size="10" />&nbsp;
-	     </span>
-	  </td>
-    </tr>
-    <tr>
-      <td>
-	     <span>
-	       wants breakfast
-	     </span>
-	  </td>
-	  <td>
-	     <input type="checkbox" wicket:id="wantsBreakFast" />
-	  </td>
-    </tr>
-   </tbody>
-  </table>
-
-</wicket:panel>
\ No newline at end of file
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/RoomSelectionStep.java b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/RoomSelectionStep.java
deleted file mode 100644
index 8e341ab..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/RoomSelectionStep.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.example.hotel;
-
-import wicket.examples.wizard.framework.TransitionLabel;
-import wicket.markup.html.WebMarkupContainer;
-import wicket.markup.html.form.CheckBox;
-import wicket.markup.html.form.Form;
-import wicket.markup.html.form.TextField;
-import wicket.markup.html.panel.Panel;
-import wicket.model.CompoundPropertyModel;
-
-/**
- * Step 2, Room Selection, of the hotel preferences wizard.
- *
- * @author Eelco Hillenius
- */
-public class RoomSelectionStep extends AbstractHotelPrefStep
-{
-	/**
-	 * Construct.
-	 * @param model the model
-	 */
-	public RoomSelectionStep(HotelPreferencesModel model)
-	{
-		super(model);
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#newEditor(String)
-	 */
-	public Panel newEditor(String id)
-	{
-		return new Editor(id);
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#next(wicket.markup.html.form.Form)
-	 */
-	public TransitionLabel next(Form form)
-	{
-		if(validateForward(form))
-		{
-			return TransitionLabel.NEXT;
-		}
-
-		return TransitionLabel.CURRENT;
-	}
-
-	/**
-	 * Validates whether the current state is complete enough to go on.
-	 * @param form message receiving component
-	 * @return true when valid
-	 */
-	private boolean validateForward(Form form)
-	{
-		boolean valid = true;
-		HotelPreferences preferences = getPreferences();
-		if(preferences.getRoom() == null)
-		{
-			valid = false;
-			form.error("you must select a room");
-		}
-		return valid;
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#previous(wicket.markup.html.form.Form)
-	 */
-	public TransitionLabel previous(Form form)
-	{
-		return TransitionLabel.PREVIOUS;
-	}
-
-	/**
-	 * Custom editor for this step.
-	 */
-	private final class Editor extends Panel
-	{
-		/**
-		 * Construct.
-		 * @param id component id
-		 */
-		public Editor(String id)
-		{
-			super(id, new CompoundPropertyModel(RoomSelectionStep.this.getModel()));
-
-			add(new CheckBox("wantsWakeUpCall")
-			{
-				protected boolean wantOnSelectionChangedNotifications()
-				{
-					return true;
-				}
-			});
-
-			// we want to show the wake up call input fields (time) only when the customer
-			// wants to get a wake up call
-			WebMarkupContainer wakeUpCallContainer = new WebMarkupContainer("wakeUpCallContainer")
-			{
-				public boolean isVisible()
-				{
-					return getPreferences().getWantsWakeUpCall();
-				}
-			};
-			// note that required is only checked when the field is visible
-			wakeUpCallContainer.add(new TextField("wakeUpCallHours", Integer.class));
-			wakeUpCallContainer.add(new TextField("wakeUpCallMinutes", Integer.class));
-			add(wakeUpCallContainer);
-
-			add(new CheckBox("wantsBreakFast"));
-		}
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/StayPreferencesStep$Editor.html b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/StayPreferencesStep$Editor.html
deleted file mode 100644
index bfdb058..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/StayPreferencesStep$Editor.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<wicket:panel>
-
-  <table>
-   <thead>
-    <tr>
-     <th colspan="2">Stay Preferences</th>
-    </tr>
-   </thead>
-   <tbody>
-    <tr>
-      <td>
-	     <span>
-	       wants wake up call
-	     </span>
-	  </td>
-	  <td>
-	     <input type="checkbox" wicket:id="wantsWakeUpCall" />
-	  </td>
-    </tr>
-    <tr wicket:id="wakeUpCallContainer">
-      <td colspan="2">
-	     <span>
-	       &nbsp;&nbsp;at&nbsp;
-	       <input type="text" wicket:id="wakeUpCallHours" size="10" />&nbsp;:
-	       <input type="text" wicket:id="wakeUpCallMinutes" size="10" />&nbsp;
-	     </span>
-	  </td>
-    </tr>
-    <tr>
-      <td>
-	     <span>
-	       wants breakfast
-	     </span>
-	  </td>
-	  <td>
-	     <input type="checkbox" wicket:id="wantsBreakFast" />
-	  </td>
-    </tr>
-   </tbody>
-  </table>
-
-</wicket:panel>
\ No newline at end of file
diff --git a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/StayPreferencesStep.java b/wicket-examples/src/java/wicket/examples/wizard/example/hotel/StayPreferencesStep.java
deleted file mode 100644
index e4a04b1..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/example/hotel/StayPreferencesStep.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.example.hotel;
-
-import wicket.examples.wizard.framework.TransitionLabel;
-import wicket.markup.html.WebMarkupContainer;
-import wicket.markup.html.form.CheckBox;
-import wicket.markup.html.form.Form;
-import wicket.markup.html.form.TextField;
-import wicket.markup.html.panel.Panel;
-import wicket.model.CompoundPropertyModel;
-
-/**
- * Step 3, Stay Preferences, of the hotel preferences wizard.
- *
- * @author Eelco Hillenius
- */
-public class StayPreferencesStep extends AbstractHotelPrefStep
-{
-	/**
-	 * Construct.
-	 * @param model the model
-	 */
-	public StayPreferencesStep(HotelPreferencesModel model)
-	{
-		super(model);
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#newEditor(String)
-	 */
-	public Panel newEditor(String id)
-	{
-		return new Editor(id);
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#next(wicket.markup.html.form.Form)
-	 */
-	public TransitionLabel next(Form form)
-	{
-		return TransitionLabel.NEXT;
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#previous(wicket.markup.html.form.Form)
-	 */
-	public TransitionLabel previous(Form form)
-	{
-		return TransitionLabel.PREVIOUS;
-	}
-
-	/**
-	 * Custom editor for this step.
-	 */
-	private final class Editor extends Panel
-	{
-		/**
-		 * Construct.
-		 * @param id component id
-		 */
-		public Editor(String id)
-		{
-			super(id, new CompoundPropertyModel(StayPreferencesStep.this.getModel()));
-
-			add(new CheckBox("wantsWakeUpCall")
-			{
-				protected boolean wantOnSelectionChangedNotifications()
-				{
-					return true;
-				}
-			});
-
-			// we want to show the wake up call input fields (time) only when the customer
-			// wants to get a wake up call
-			WebMarkupContainer wakeUpCallContainer = new WebMarkupContainer("wakeUpCallContainer")
-			{
-				public boolean isVisible()
-				{
-					return getPreferences().getWantsWakeUpCall();
-				}
-			};
-			// note that required is only checked when the field is visible
-			wakeUpCallContainer.add(new TextField("wakeUpCallHours", Integer.class));
-			wakeUpCallContainer.add(new TextField("wakeUpCallMinutes", Integer.class));
-			add(wakeUpCallContainer);
-
-			add(new CheckBox("wantsBreakFast"));
-		}
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/AbstractStep.java b/wicket-examples/src/java/wicket/examples/wizard/framework/AbstractStep.java
deleted file mode 100644
index fe136e5..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/AbstractStep.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.framework;
-
-import wicket.markup.html.form.Form;
-import wicket.markup.html.panel.Panel;
-
-/**
- * Empty stub for steps.
- *
- * @author Eelco Hillenius
- */
-public abstract class AbstractStep implements Step
-{
-	/**
-	 * Construct.
-	 */
-	public AbstractStep()
-	{
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#newEditor(java.lang.String)
-	 */
-	public Panel newEditor(String editorId)
-	{
-		return null;
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#next(wicket.markup.html.form.Form)
-	 */
-	public TransitionLabel next(Form form)
-	{
-		return null;
-	}
-
-	/**
-	 * @see wicket.examples.wizard.framework.Step#previous(wicket.markup.html.form.Form)
-	 */
-	public TransitionLabel previous(Form form)
-	{
-		return null;
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/Exit.java b/wicket-examples/src/java/wicket/examples/wizard/framework/Exit.java
deleted file mode 100644
index f4a5333..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/Exit.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.framework;
-
-import wicket.RequestCycle;
-
-/**
- * Represents an exit node in a wizard.
- *
- * @author Eelco Hillenius
- */
-public interface Exit extends Node
-{
-	/**
-	 * Gets the button label.
-	 * @return the label
-	 */
-	String getLabel();
-
-	/**
-	 * Finish this wizard.
-	 * @param requestCycle the current request cycle
-	 */
-	void exit(RequestCycle requestCycle);
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/Node.java b/wicket-examples/src/java/wicket/examples/wizard/framework/Node.java
deleted file mode 100644
index 38f61e5..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/Node.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.framework;
-
-import java.io.Serializable;
-
-import wicket.markup.html.panel.Panel;
-
-/**
- * Represents a step in a wizard.
- *
- * @author Eelco Hillenius
- */
-public interface Node extends Serializable
-{
-	/**
-	 * Gets the editor for this step.
-	 * @param editorId id that should be used to create the editor
-	 * @return the editor
-	 */
-	Panel newEditor(String editorId);
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/Step.java b/wicket-examples/src/java/wicket/examples/wizard/framework/Step.java
deleted file mode 100644
index 00cee41..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/Step.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.framework;
-
-import wicket.markup.html.form.Form;
-
-/**
- * Represents a step in a wizard.
- *
- * @author Eelco Hillenius
- */
-public interface Step extends Node
-{
-	/**
-	 * Evaluates going to the next step.
-	 * @param form the coupled form
-	 * @return the logical name of the next step
-	 */
-	TransitionLabel next(Form form);
-	
-	/**
-	 * Evaluates going to the previous step.
-	 * @param form the coupled form
-	 * @return the logical name of the rewind step
-	 */
-	TransitionLabel previous(Form form);
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/Transition.java b/wicket-examples/src/java/wicket/examples/wizard/framework/Transition.java
deleted file mode 100644
index f8efde9..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/Transition.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.framework;
-
-import java.io.Serializable;
-
-/**
- * Transition command.
- *
- * @author Eelco Hillenius
- */
-public abstract class Transition implements Serializable
-{
-	/** for label. */
-	private final TransitionLabel label;
-
-	/**
-	 * Construct.
-	 * @param label  
-	 */
-	public Transition(TransitionLabel label)
-	{
-		this.label = label;
-	}
-
-	/**
-	 * Gets the transition label.
-	 * @return transition label
-	 */
-	public TransitionLabel getLabel()
-	{
-		return label;
-	}
-
-	/**
-	 * Gets the next node.
-	 * @param current the current node
-	 * @return nextStep
-	 */
-	public abstract Node next(Node current);
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/TransitionLabel.java b/wicket-examples/src/java/wicket/examples/wizard/framework/TransitionLabel.java
deleted file mode 100644
index 9fa668e..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/TransitionLabel.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.framework;
-
-import wicket.util.lang.EnumeratedType;
-
-/**
- * Type for transition labels.
- *
- * @author Eelco Hillenius
- */
-public class TransitionLabel extends EnumeratedType
-{
-	/** result for the next step. */
-	public static final TransitionLabel NEXT = new TransitionLabel("next");
-
-	/** result for the previous step. */
-	public static final TransitionLabel PREVIOUS = new TransitionLabel("previous");
-
-	/** result for the finishing step. */
-	public static final TransitionLabel FINISH = new TransitionLabel("finish");
-
-	/** result for staying at the current step. */
-	public static final TransitionLabel CURRENT = null;
-
-	/**
-	 * Construct.
-	 * @param name
-	 */
-	public TransitionLabel(String name)
-	{
-		super(name);
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/Transitions.java b/wicket-examples/src/java/wicket/examples/wizard/framework/Transitions.java
deleted file mode 100644
index a5f3f26..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/Transitions.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.framework;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Transitions between steps.
- *
- * @author Eelco Hillenius
- */
-public class Transitions implements Serializable
-{
-	/** transitions. */
-	private Map/*<Step,Map<TransitionResult,Transition>>*/ transitions = new HashMap();
-
-	/** the first node of the wizard. */
-	private final Node first;
-
-	/**
-	 * Construct.
-	 * @param first the first step of the wizard
-	 */
-	public Transitions(Node first)
-	{
-		this.first = first;
-	}
-
-	/**
-	 * Adds a transition.
-	 * @param node the node
-	 * @param transition the transition to add
-	 */
-	public void put(Node node, Transition transition)
-	{
-		Map/*<TransitionLabel,Transition>*/ m = (Map)transitions.get(node);
-		if (m == null)
-		{
-			m = new HashMap();
-			transitions.put(node, m);
-		}
-		m.put(transition.getLabel(), transition);
-	}
-
-	/**
-	 * Gets a transition.
-	 * @param node the node
-	 * @param label for the label
-	 * @return the found transition or null if not found
-	 */
-	public Transition get(Node node, TransitionLabel label)
-	{
-		Map/*<TransitionLabel,Transition>*/ m = (Map)transitions.get(node);
-		if (m != null)
-		{
-			return (Transition)m.get(label);
-		}
-
-		return null;
-	}
-
-	/**
-	 * Returns whether any transition exists for the given node and transition label.
-	 * @param node the node
-	 * @param label the transition label
-	 * @return true if it does exist, false otherwise
-	 */
-	public boolean exists(Node node, TransitionLabel label)
-	{
-		return ( get(node, label) != null );
-	}
-
-	/**
-	 * Gets the first node.
-	 * @return the first node
-	 */
-	public Node getFirst()
-	{
-		return first;
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardConfiguration.java b/wicket-examples/src/java/wicket/examples/wizard/framework/WizardConfiguration.java
deleted file mode 100644
index 98d0004..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardConfiguration.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.framework;
-
-import java.io.Serializable;
-
-/**
- * Configures a wizard.
- *
- * @author Eelco Hillenius
- */
-public class WizardConfiguration implements Serializable
-{
-	/** the transitions of the wizard. */
-	private Transitions transitions;
-
-	/**
-	 * Construct.
-	 */
-	public WizardConfiguration()
-	{
-	}
-
-	/**
-	 * Gets the transitions of the wizard.
-	 * @return the transitions of the wizard
-	 */
-	public Transitions getTransitions()
-	{
-		return transitions;
-	}
-
-	/**
-	 * Sets the transitions of the wizard.
-	 * @param transitions the transitions of the wizard
-	 */
-	public void setTransitions(Transitions transitions)
-	{
-		this.transitions = transitions;
-	}
-
-	/**
-	 * Start processing the wizard.
-	 * @return the first step
-	 */
-	public WizardState begin()
-	{
-		if(transitions == null)
-		{
-			throw new IllegalStateException("no transitions configured!");
-		}
-		WizardState state = newState();
-		state.setCurrentNode(transitions.getFirst());
-		return state;
-	}
-
-	/**
-	 * Creates a new wizard state instance.
-	 * @return a new wizard state instance
-	 */
-	protected WizardState newState()
-	{
-		return new WizardState(this);
-	}
-}
\ No newline at end of file
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel$EmptyPanel.html b/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel$EmptyPanel.html
deleted file mode 100644
index ea4c908..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel$EmptyPanel.html
+++ /dev/null
@@ -1 +0,0 @@
-<wicket:panel></wicket:panel>
\ No newline at end of file
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel.html b/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel.html
deleted file mode 100644
index 046e910..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<wicket:panel>
-
-<div id="wizard">
-
-  <form wicket:id="form">
-
-	  <div id="wizardEditor">
-
-		   <div wicket:id="editor">
-		    Editor comes here.
-		   </div>
-	
-	  </div>
-	
-	  <div id="wizardButtons">
-		  <input wicket:id="previous" type="submit" value="previous" />
-		  <input wicket:id="next" type="submit" value="next" />
-		  <input wicket:id="exit" type="submit" value="finish" />
-	  </div>
-
-  </form>
-
-</div>
-
-</wicket:panel>
\ No newline at end of file
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel.java b/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel.java
deleted file mode 100644
index 7f4062e..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.framework;
-
-import wicket.AttributeModifier;
-import wicket.IFeedback;
-import wicket.markup.html.form.Button;
-import wicket.markup.html.form.Form;
-import wicket.markup.html.panel.Panel;
-import wicket.model.Model;
-import wicket.util.lang.Objects;
-import wicket.version.undo.Change;
-
-/**
- * The main wizard panel.
- *
- * @author Eelco Hillenius
- */
-public class WizardPanel extends Panel
-{
-	/** state of the wizard. */
-	final WizardState state;
-
-	/**
-	 * Construct.
-	 * @param id component id
-	 * @param configuration wizard configuration object
-	 */
-	public WizardPanel(String id, WizardConfiguration configuration)
-	{
-		this(id, configuration, null);
-	}
-
-	/**
-	 * @param id component id
-	 * @param configuration wizard configuration object
-	 * @param feedback Interface to a component that can handle/display validation errors
-	 */
-	public WizardPanel(final String id, WizardConfiguration configuration, final IFeedback feedback)
-	{
-		super(id);
-
-		if (configuration == null)
-		{
-			throw new NullPointerException("configuration must not be null");
-		}
-
-		this.state = configuration.begin();
-
-		WizardForm form = new WizardForm("form", feedback);
-		add(form);
-	}
-
-	/**
-	 * Gets the wizard state object.
-	 * @return the wizard state object
-	 */
-	protected final WizardState getState()
-	{
-		return state;
-	}
-
-	/**
-	 * Gets the editor for the given node.
-	 * @param editorId the id that must be used to create the editor
-	 * @return the editor panel
-	 */
-	protected Panel newEditor(String editorId)
-	{
-		Node node = state.getCurrentNode();
-		if(node != null)
-		{
-			Panel editor = node.newEditor(editorId);
-			if (editor != null)
-			{
-				return editor;
-			}
-		}
-
-		return new EmptyPanel(editorId);
-	}
-
-	/**
-	 * Form for wizard node.
-	 */
-	private final class WizardForm extends Form
-	{
-		/**
-		 * Construct.
-		 * @param id component id
-		 * @param feedback feedback
-		 */
-		public WizardForm(String id, IFeedback feedback)
-		{
-			super(id, feedback);
-			Panel editor = newEditor("editor");
-			add(editor);
-
-			Button previousButton = new Button("previous")
-			{
-				protected void onSubmit()
-				{
-					Node current = state.getCurrentNode();
-					if(current instanceof Step)
-					{
-						record(current);
-						TransitionLabel result = ((Step)current).previous(WizardForm.this);
-						state.move(result);
-						WizardForm.this.replace(newEditor("editor"));
-					}
-				}
-
-				public boolean isVisible()
-				{
-					Node current = state.getCurrentNode();
-					Transitions transitions = state.getTransitions();
-					return transitions.exists(current, TransitionLabel.PREVIOUS);
-				}
-			};
-			add(previousButton);
-
-			Button nextButton = new Button("next")
-			{
-				protected void onSubmit()
-				{
-					Node current = state.getCurrentNode();
-					if(current instanceof Step)
-					{
-						record(current);
-						TransitionLabel result = ((Step)current).next(WizardForm.this);
-						state.move(result);
-						WizardForm.this.replace(newEditor("editor"));
-					}
-				}
-
-				public boolean isVisible()
-				{
-					Node current = state.getCurrentNode();
-					Transitions transitions = state.getTransitions();
-					return transitions.exists(current, TransitionLabel.NEXT);
-				}
-			};
-			add(nextButton);
-
-			Button exitButton = new Button("exit")
-			{
-				protected void onSubmit()
-				{
-					Node current = state.getCurrentNode();
-					if (current instanceof Exit)
-					{
-						record(current);
-						TransitionLabel result = ((Step)current).next(WizardForm.this);
-						((Exit)current).exit(getRequestCycle());
-					}
-				}
-
-				public boolean isVisible()
-				{
-					return ( state.getCurrentNode() instanceof Exit );
-				}
-			};
-			exitButton.add(new AttributeModifier("value", new Model()
-			{
-				public Object getObject(wicket.Component component)
-				{
-					Node current = state.getCurrentNode();
-					if(current instanceof Exit)
-					{
-						return ((Exit)current).getLabel();
-					}
-					return null;
-				}
-			}));
-			add(exitButton);
-		}
-	}
-
-	/**
-	 * Record current state.
-	 * @param currentStep step to record for undoing
-	 */
-	protected void record(final Node currentStep)
-	{
-		addStateChange(new Change()
-		{
-			Node keep = (Node)Objects.clone(currentStep);
-
-			public void undo()
-			{
-				state.setCurrentNode(keep);
-			}
-		});
-	}
-
-	/**
-	 * An empty do-nothing panel.
-	 */
-	private final class EmptyPanel extends Panel
-	{
-		/**
-		 * Construct.
-		 * @param id component id
-		 */
-		public EmptyPanel(String id)
-		{
-			super(id);
-		}
-	}
-}
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel.properties b/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel.properties
deleted file mode 100644
index 9d10ed2..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardPanel.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-## messages
-
-required.field.error=${name} is required
diff --git a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardState.java b/wicket-examples/src/java/wicket/examples/wizard/framework/WizardState.java
deleted file mode 100644
index 82ca68d..0000000
--- a/wicket-examples/src/java/wicket/examples/wizard/framework/WizardState.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * $Id$
- * $Revision$
- * $Date$
- *
- * ====================================================================
- * 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 wicket.examples.wizard.framework;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Keeps track of the wizard state.
- *
- * @author Eelco Hillenius
- */
-public class WizardState implements Serializable
-{
-	/**
-	 * The wizard configuration.
-	 */
-	private final WizardConfiguration configuration;
-
-	/**
-	 * The steps allready taken.
-	 */
-	private List/*<Step>*/ history = new ArrayList();
-
-	/**
-	 * The current node.
-	 */
-	private Node currentNode;
-	
-	/**
-	 * Construct.
-	 * @param configuration The wizard configuration object
-	 */
-	public WizardState(WizardConfiguration configuration)
-	{
-		this.configuration = configuration;
-	}
-
-	/**
-	 * Gets the current step.
-	 * @return current step
-	 */
-	public Node getCurrentNode()
-	{
-		return currentNode;
-	}
-
-	/**
-	 * Sets the current step.
-	 * @param currentStep current step
-	 */
-	public void setCurrentNode(Node currentStep)
-	{
-		this.currentNode = currentStep;
-	}
-
-	/**
-	 * Moves the current step to the one according to the configuration.
-	 * @param label the transition label
-	 */
-	public void move(TransitionLabel label)
-	{
-		if(label != TransitionLabel.CURRENT)
-		{
-			Transitions transitions = configuration.getTransitions();
-			Transition next = transitions.get(getCurrentNode(), label);
-			this.currentNode = next.next(currentNode);
-		}
-	}
-
-	/**
-	 * Gets the transitions.
-	 * @return the transitions.
-	 */
-	public final Transitions getTransitions()
-	{
-		return configuration.getTransitions();
-	}
-}
\ No newline at end of file
diff --git a/wicket-examples/src/webapp/WEB-INF/web.xml b/wicket-examples/src/webapp/WEB-INF/web.xml
index a81cd83..327a528 100644
--- a/wicket-examples/src/webapp/WEB-INF/web.xml
+++ b/wicket-examples/src/webapp/WEB-INF/web.xml
@@ -177,16 +177,6 @@
 	</servlet>
 
 	<servlet>
-		<servlet-name>CustomComponentsApplication</servlet-name>
-		<servlet-class>wicket.protocol.http.WicketServlet</servlet-class>
-		<init-param>
-		  <param-name>applicationClassName</param-name>
-		  <param-value>wicket.examples.customcomponents.CustomComponentsApplication</param-value>
-		</init-param>
-		<load-on-startup>1</load-on-startup>
-	</servlet>
-
-	<servlet>
 		<servlet-name>TemplateApplication</servlet-name>
 		<servlet-class>wicket.protocol.http.WicketServlet</servlet-class>
 		<init-param>
@@ -197,16 +187,6 @@
 	</servlet>
 
 	<servlet>
-		<servlet-name>WizardApplication</servlet-name>
-		<servlet-class>wicket.protocol.http.WicketServlet</servlet-class>
-		<init-param>
-		  <param-name>applicationClassName</param-name>
-		  <param-value>wicket.examples.wizard.WizardApplication</param-value>
-		</init-param>
-		<load-on-startup>1</load-on-startup>
-	</servlet>
-
-	<servlet>
 		<servlet-name>NavMenuApplication</servlet-name>
 		<servlet-class>wicket.protocol.http.WicketServlet</servlet-class>
 		<init-param>
@@ -302,21 +282,11 @@
 	</servlet-mapping>
 
 	<servlet-mapping>
-		<servlet-name>CustomComponentsApplication</servlet-name>
-		<url-pattern>/customcomponents/*</url-pattern>
-	</servlet-mapping>
-
-	<servlet-mapping>
 		<servlet-name>TemplateApplication</servlet-name>
 		<url-pattern>/template/*</url-pattern>
 	</servlet-mapping>
 
 	<servlet-mapping>
-		<servlet-name>WizardApplication</servlet-name>
-		<url-pattern>/wizard/*</url-pattern>
-	</servlet-mapping>
-
-	<servlet-mapping>
 		<servlet-name>NavMenuApplication</servlet-name>
 		<url-pattern>/navmenu/*</url-pattern>
 	</servlet-mapping>
diff --git a/wicket-examples/src/webapp/dojo/dojo-io.js b/wicket-examples/src/webapp/dojo/dojo-io.js
deleted file mode 100644
index 31c22fb..0000000
--- a/wicket-examples/src/webapp/dojo/dojo-io.js
+++ /dev/null
@@ -1,1101 +0,0 @@
-/* Copyright (c) 2004-2005 The Dojo Foundation, Licensed under the Academic Free License version 2.1 or above */if(typeof djConfig=="undefined"){
-var djConfig={};
-}
-var dojo;
-if(typeof dojo=="undefined"){
-dojo={};
-}
-var dj_global=this;
-function dj_debug(){
-var _1=arguments;
-if(typeof dojo.hostenv.println!="function"){
-dj_throw("attempt to call dj_debug when there is no dojo.hostenv println implementation (yet?)");
-}
-if(!dojo.hostenv.is_debug_){
-return;
-}
-var _2=dj_global["jum"];
-var s=_2?"":"DEBUG: ";
-for(var i=0;i<_1.length;++i){
-s+=_1[i];
-}
-if(_2){
-jum.debug(s);
-}else{
-dojo.hostenv.println(s);
-}
-}
-function dj_throw(_5){
-if((typeof dojo.hostenv!="undefined")&&(typeof dojo.hostenv.println!="undefined")){
-dojo.hostenv.println("fatal error: "+_5);
-}
-throw Error(_5);
-}
-function dj_error_to_string(_6){
-return (typeof _6.message!=="undefined"?_6.message:(typeof _6.description!=="undefined"?_6.description:_6));
-}
-function dj_rethrow(_7,_8){
-var _9=dj_error_to_string(_8);
-dj_throw(_7+": "+_9);
-}
-function dj_eval(s){
-return dj_global.eval?dj_global.eval(s):eval(s);
-}
-function dj_unimplemented(_10,_11){
-var _12="No implementation of function '"+_10+"'";
-if((typeof _11!="undefined")&&(_11)){
-_12+=" "+_11;
-}
-_12+=" (host environment '"+dojo.hostenv.getName()+"')";
-dj_throw(_12);
-}
-function dj_inherits(_13,_14){
-if(typeof _14!="function"){
-dj_throw("eek: superclass not a function: "+_14+"\nsubclass is: "+_13);
-}
-_13.prototype=new _14();
-_13.prototype.constructor=_13;
-_13["super"]=_14;
-}
-dojo.render={name:"",ver:0,os:{win:false,linux:false,osx:false},html:{capable:false,support:{builtin:false,plugin:false},ie:false,opera:false,khtml:false,safari:false,moz:false},svg:{capable:false,support:{builtin:false,plugin:false},corel:false,adobe:false,batik:false},swf:{capable:false,support:{builtin:false,plugin:false},mm:false},swt:{capable:false,support:{builtin:false,plugin:false},ibm:false}};
-dojo.hostenv={is_debug_:((typeof djConfig["isDebug"]=="undefined")?false:djConfig["isDebug"]),base_script_uri_:((typeof djConfig["baseScriptUri"]=="undefined")?undefined:djConfig["baseScriptUri"]),base_relative_path_:((typeof djConfig["baseRelativePath"]=="undefined")?"":djConfig["baseRelativePath"]),library_script_uri_:((typeof djConfig["libraryScriptUri"]=="undefined")?"":djConfig["libraryScriptUri"]),auto_build_widgets_:((typeof djConfig["parseWidgets"]=="undefined")?true:djConfig["parseWidgets"]),loading_modules_:{},addedToLoadingCount:[],removedFromLoadingCount:[],inFlightCount:0,modules_:{}};
-dojo.hostenv.name_="(unset)";
-dojo.hostenv.version_="(unset)";
-dojo.hostenv.pkgFileName="__package__";
-dojo.hostenv.getName=function(){
-return this.name_;
-};
-dojo.hostenv.getVersion=function(){
-return this.version_;
-};
-dojo.hostenv.getText=function(uri){
-dj_unimplemented("dojo.hostenv.getText","uri="+uri);
-};
-dojo.hostenv.getLibraryScriptUri=function(){
-dj_unimplemented("dojo.hostenv.getLibraryScriptUri","");
-};
-dojo.hostenv.getBaseScriptUri=function(){
-if(typeof this.base_script_uri_!="undefined"){
-return this.base_script_uri_;
-}
-var uri=this.library_script_uri_;
-if(!uri){
-uri=this.library_script_uri_=this.getLibraryScriptUri();
-if(!uri){
-dj_throw("Nothing returned by getLibraryScriptUri(): "+uri);
-}
-}
-var _16=uri.lastIndexOf("/");
-this.base_script_uri_=this.base_relative_path_;
-return this.base_script_uri_;
-};
-dojo.hostenv.setBaseScriptUri=function(uri){
-this.base_script_uri_=uri;
-};
-dojo.hostenv.loadPath=function(_17,_18,cb){
-if(!_17){
-dj_throw("Missing relpath argument");
-}
-if((_17.charAt(0)=="/")||(_17.match(/^\w+:/))){
-dj_throw("Illegal argument '"+_17+"'; must be relative path");
-}
-var _20=this.getBaseScriptUri();
-var uri=_20+_17;
-try{
-var ok;
-if(!_18){
-ok=this.loadUri(uri);
-}else{
-ok=this.loadUriAndCheck(uri,_18);
-}
-return ok;
-}
-catch(e){
-if(dojo.hostenv.is_debug_){
-dj_debug(e);
-}
-return false;
-}
-};
-dojo.hostenv.loadUri=function(uri,cb){
-if(dojo.hostenv.loadedUris[uri]){
-return;
-}
-var _22=this.getText(uri,null,true);
-if(_22==null){
-return 0;
-}
-var _23=dj_eval(_22);
-return 1;
-};
-dojo.hostenv.getDepsForEval=function(_24){
-if(!_24){
-_24="";
-}
-var _25=[];
-var tmp=_24.match(/dojo.hostenv.loadModule\(.*?\)/mg);
-if(tmp){
-for(var x=0;x<tmp.length;x++){
-_25.push(tmp[x]);
-}
-}
-tmp=_24.match(/dojo.hostenv.require\(.*?\)/mg);
-if(tmp){
-for(var x=0;x<tmp.length;x++){
-_25.push(tmp[x]);
-}
-}
-tmp=_24.match(/dojo.hostenv.conditionalLoadModule\([\w\W]*?\)/gm);
-if(tmp){
-for(var x=0;x<tmp.length;x++){
-_25.push(tmp[x]);
-}
-}
-return _25;
-};
-dojo.hostenv.getTextStack=[];
-dojo.hostenv.loadUriStack=[];
-dojo.hostenv.loadedUris=[];
-dojo.hostenv.loadUriAndCheck=function(uri,_28,cb){
-var ok=true;
-try{
-ok=this.loadUri(uri,cb);
-}
-catch(e){
-dj_debug("failed loading ",uri," with error: ",e);
-}
-return ((ok)&&(this.findModule(_28,false)))?true:false;
-};
-dojo.hostenv.modulesLoadedFired=false;
-dojo.hostenv.modulesLoadedListeners=[];
-dojo.hostenv.loaded=function(){
-this.modulesLoadedFired=true;
-var mll=this.modulesLoadedListeners;
-for(var x=0;x<mll.length;x++){
-mll[x]();
-}
-};
-dojo.hostenv.modulesLoaded=function(){
-if(this.modulesLoadedFired){
-return;
-}
-if((this.loadUriStack.length==0)&&(this.getTextStack.length==0)){
-if(this.inFlightCount>0){
-dj_debug("couldn't initialize, there are files still in flight");
-return;
-}
-this.loaded();
-}
-};
-dojo.hostenv.loadModule=function(_30,_31,_32){
-var _33=this.findModule(_30,false);
-if(_33){
-return _33;
-}
-if(typeof this.loading_modules_[_30]!=="undefined"){
-dj_debug("recursive attempt to load module '"+_30+"'");
-}else{
-this.addedToLoadingCount.push(_30);
-}
-this.loading_modules_[_30]=1;
-var _34=_30.replace(/\./g,"/")+".js";
-var _35=_30.split(".");
-var _36=_30.split(".");
-if(_35[0]=="dojo"){
-_35[0]="src";
-}
-var _37=_35.pop();
-_35.push(_37);
-if(_37=="*"){
-_30=(_36.slice(0,-1)).join(".");
-var _33=this.findModule(_30,0);
-if(_33){
-return _33;
-}
-while(_35.length){
-_35.pop();
-_35.push("__package__");
-_34=_35.join("/")+".js";
-if(_34.charAt(0)=="/"){
-_34=_34.slice(1);
-}
-ok=this.loadPath(_34,((!_32)?_30:null));
-if(ok){
-break;
-}
-_35.pop();
-}
-}else{
-_34=_35.join("/")+".js";
-_30=_36.join(".");
-var ok=this.loadPath(_34,((!_32)?_30:null));
-if((!ok)&&(!_31)){
-_35.pop();
-while(_35.length){
-_34=_35.join("/")+".js";
-ok=this.loadPath(_34,((!_32)?_30:null));
-if(ok){
-break;
-}
-_35.pop();
-_34=_35.join("/")+"/__package__.js";
-if(_34.charAt(0)=="/"){
-_34=_34.slice(1);
-}
-ok=this.loadPath(_34,((!_32)?_30:null));
-if(ok){
-break;
-}
-}
-}
-if((!ok)&&(!_32)){
-dj_throw("Could not find module '"+_30+"'; last tried path '"+_34+"'");
-}
-}
-if(!_32){
-_33=this.findModule(_30,false);
-if(!_33){
-dj_throw("Module symbol '"+_30+"' is not defined after loading '"+_34+"'");
-}
-}
-return _33;
-};
-function dj_load(_38,_39){
-return dojo.hostenv.loadModule(_38,_39);
-}
-function dj_eval_object_path(_40){
-if(typeof _40!="string"){
-return dj_global;
-}
-if(_40.indexOf(".")==-1){
-dj_debug("typeof this[",_40,"]=",typeof (this[_40])," and typeof dj_global[]=",typeof (dj_global[_40]));
-return (typeof dj_global[_40]=="undefined")?undefined:dj_global[_40];
-}
-var _41=_40.split(/\./);
-var obj=dj_global;
-for(var i=0;i<_41.length;++i){
-obj=obj[_41[i]];
-if((typeof obj=="undefined")||(!obj)){
-return obj;
-}
-}
-return obj;
-}
-dojo.hostenv.startPackage=function(_43){
-var _44=_43.split(/\./);
-if(_44[_44.length-1]=="*"){
-_44.pop();
-dj_debug("startPackage: popped a *, new packagename is : ",sysm.join("."));
-}
-var obj=dj_global;
-var _45="dj_global";
-for(var i=0;i<_44.length;++i){
-var _46=obj[_44[i]];
-_45+="."+_44[i];
-if((eval("typeof "+_45+" == 'undefined'"))||(eval("!"+_45))){
-dj_debug("startPackage: defining: ",_44.slice(0,i+1).join("."));
-obj=dj_global;
-for(var x=0;x<i;x++){
-obj=obj[_44[x]];
-}
-obj[_44[i]]={};
-}
-}
-return obj;
-};
-dojo.hostenv.findModule=function(_47,_48){
-if(typeof this.modules_[_47]!="undefined"){
-return this.modules_[_47];
-}
-var _49=dj_eval_object_path(_47);
-if((typeof _49!=="undefined")&&(_49)){
-return this.modules_[_47]=_49;
-}
-if(_48){
-dj_throw("no loaded module named '"+_47+"'");
-}
-return null;
-};
-if(typeof window=="undefined"){
-dj_throw("no window object");
-}
-with(dojo.render){
-html.UA=navigator.userAgent;
-html.AV=navigator.appVersion;
-html.capable=true;
-html.support.builtin=true;
-ver=parseFloat(html.AV);
-os.mac=html.AV.indexOf("Macintosh")==-1?false:true;
-os.win=html.AV.indexOf("Windows")==-1?false:true;
-html.opera=html.UA.indexOf("Opera")==-1?false:true;
-html.khtml=((html.AV.indexOf("Konqueror")>=0)||(html.AV.indexOf("Safari")>=0))?true:false;
-html.safari=(html.AV.indexOf("Safari")>=0)?true:false;
-html.moz=((html.UA.indexOf("Gecko")>=0)&&(!html.khtml))?true:false;
-html.ie=((document.all)&&(!html.opera))?true:false;
-html.ie50=html.ie&&html.AV.indexOf("MSIE 5.0")>=0;
-html.ie55=html.ie&&html.AV.indexOf("MSIE 5.5")>=0;
-html.ie60=html.ie&&html.AV.indexOf("MSIE 6.0")>=0;
-}
-dojo.hostenv.startPackage("dojo.hostenv");
-dojo.hostenv.name_="browser";
-var DJ_XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];
-dojo.hostenv.getXmlhttpObject=function(){
-var _50=null;
-var _51=null;
-try{
-_50=new XMLHttpRequest();
-}
-catch(e){
-}
-if(!_50){
-for(var i=0;i<3;++i){
-var _52=DJ_XMLHTTP_PROGIDS[i];
-try{
-_50=new ActiveXObject(_52);
-}
-catch(e){
-_51=e;
-}
-if(_50){
-DJ_XMLHTTP_PROGIDS=[_52];
-break;
-}else{
-}
-}
-}
-if((_51)&&(!_50)){
-dj_rethrow("Could not create a new ActiveXObject using any of the progids "+DJ_XMLHTTP_PROGIDS.join(", "),_51);
-}else{
-if(!_50){
-return dj_throw("No XMLHTTP implementation available, for uri "+uri);
-}
-}
-return _50;
-};
-dojo.hostenv.getText=function(uri,_53,_54){
-var _55=this.getXmlhttpObject();
-if(_53){
-_55.onreadystatechange=function(){
-if((4==_55.readyState)&&(_55["status"])){
-if(_55.status==200){
-dj_debug("LOADED URI: "+uri);
-_53(_55.responseText);
-}
-}
-};
-}
-_55.open("GET",uri,_53?true:false);
-_55.send(null);
-if(_53){
-return null;
-}
-return _55.responseText;
-};
-function dj_last_script_src(){
-var _56=window.document.getElementsByTagName("script");
-if(_56.length<1){
-dj_throw("No script elements in window.document, so can't figure out my script src");
-}
-var _57=_56[_56.length-1];
-var src=_57.src;
-if(!src){
-dj_throw("Last script element (out of "+_56.length+") has no src");
-}
-return src;
-}
-if(!dojo.hostenv["library_script_uri_"]){
-dojo.hostenv.library_script_uri_=dj_last_script_src();
-}
-dojo.hostenv.println=function(s){
-var ti=null;
-var dis="<div>"+s+"</div>";
-try{
-ti=document.createElement("div");
-document.body.appendChild(ti);
-ti.innerHTML=s;
-}
-catch(e){
-try{
-document.write(dis);
-}
-catch(e2){
-window.status=s;
-}
-}
-delete ti;
-delete dis;
-delete s;
-};
-window.onload=function(evt){
-dojo.hostenv.modulesLoaded();
-};
-dojo.hostenv.modulesLoadedListeners.push(function(){
-if(dojo.hostenv.auto_build_widgets_){
-if(dj_eval_object_path("dojo.webui.widgets.Parse")){
-try{
-var _62=new dojo.xml.Parse();
-var _63=_62.parseElement(document.body,null,true);
-var _64=new dojo.webui.widgets.Parse(_63);
-_64.createComponents(_63);
-}
-catch(e){
-dj_debug("auto-build-widgets error: "+e);
-}
-}
-}
-});
-if((!window["djConfig"])||(!window["djConfig"]["preventBackButtonFix"])){
-document.write("<iframe style='border: 0px; width: 1px; height: 1px; position: absolute; bottom: 0px; right: 0px; visibility: visible;' name='djhistory' id='djhistory' src='"+(dojo.hostenv.getBaseScriptUri()+"/blank.html")+"'></iframe>");
-}
-dojo.hostenv.conditionalLoadModule=function(_65){
-var _66=_65["common"]||[];
-var _67=(_65[dojo.hostenv.name_])?_66.concat(_65[dojo.hostenv.name_]||[]):_66.concat(_65["default"]||[]);
-for(var x=0;x<_67.length;x++){
-var _68=_67[x];
-if(_68.constructor==Array){
-dojo.hostenv.loadModule.apply(dojo.hostenv,_68);
-}else{
-dojo.hostenv.loadModule(_68);
-}
-}
-};
-dojo.hostenv.require=dojo.hostenv.loadModule;
-dojo.hostenv.provide=dojo.hostenv.startPackage;
-dj_debug("Using host environment: ",dojo.hostenv.name_);
-dj_debug("getBaseScriptUri()=",dojo.hostenv.getBaseScriptUri());
-dojo.hostenv.startPackage("dojo.io.IO");
-dojo.io.transports=[];
-dojo.io.hdlrFuncNames=["load","error"];
-dojo.io.Request=function(url,mt,_71,_72){
-this.url=url;
-this.mimetype=mt;
-this.transport=_71;
-this.changeUrl=_72;
-this.formNode=null;
-this.events_={};
-var _73=this;
-this.error=function(_74,_75){
-switch(_74){
-case "io":
-var _76=dojo.io.IOEvent.IO_ERROR;
-var _77="IOError: error during IO";
-break;
-case "parse":
-var _76=dojo.io.IOEvent.PARSE_ERROR;
-var _77="IOError: error during parsing";
-default:
-var _76=dojo.io.IOEvent.UNKOWN_ERROR;
-var _77="IOError: cause unkown";
-}
-var _78=new dojo.io.IOEvent("error",null,_73,_77,this.url,_76);
-_73.dispatchEvent(_78);
-if(_73.onerror){
-_73.onerror(_77,_73.url,_78);
-}
-};
-this.load=function(_79,_80,evt){
-var _81=new dojo.io.IOEvent("load",_80,_73,null,null,null);
-_73.dispatchEvent(_81);
-if(_73.onload){
-_73.onload(_81);
-}
-};
-this.backButton=function(){
-var _82=new dojo.io.IOEvent("backbutton",null,_73,null,null,null);
-_73.dispatchEvent(_82);
-if(_73.onbackbutton){
-_73.onbackbutton(_82);
-}
-};
-this.forwardButton=function(){
-var _83=new dojo.io.IOEvent("forwardbutton",null,_73,null,null,null);
-_73.dispatchEvent(_83);
-if(_73.onforwardbutton){
-_73.onforwardbutton(_83);
-}
-};
-};
-dojo.io.Request.prototype.addEventListener=function(_84,_85){
-if(!this.events_[_84]){
-this.events_[_84]=[];
-}
-for(var i=0;i<this.events_[_84].length;i++){
-if(this.events_[_84][i]==_85){
-return;
-}
-}
-this.events_[_84].push(_85);
-};
-dojo.io.Request.prototype.removeEventListener=function(_86,_87){
-if(!this.events_[_86]){
-return;
-}
-for(var i=0;i<this.events_[_86].length;i++){
-if(this.events_[_86][i]==_87){
-this.events_[_86].splice(i,1);
-}
-}
-};
-dojo.io.Request.prototype.dispatchEvent=function(evt){
-if(!this.events_[evt.type]){
-return;
-}
-for(var i=0;i<this.events_[evt.type].length;i++){
-this.events_[evt.type][i](evt);
-}
-return false;
-};
-dojo.io.IOEvent=function(_88,_89,_90,_91,_92,_93){
-this.type=_88;
-this.data=_89;
-this.request=_90;
-this.errorMessage=_91;
-this.errorUrl=_92;
-this.errorCode=_93;
-};
-dojo.io.IOEvent.UNKOWN_ERROR=0;
-dojo.io.IOEvent.IO_ERROR=1;
-dojo.io.IOEvent.PARSE_ERROR=2;
-dojo.io.Error=function(msg,_95,num){
-this.message=msg;
-this.type=_95||"unknown";
-this.number=num||0;
-};
-dojo.io.transports.addTransport=function(_97){
-this.push(_97);
-this[_97]=dojo.io[_97];
-};
-dojo.io.bind=function(_98){
-if(!_98["mimetype"]){
-_98.mimetype="text/plain";
-}
-if(!_98["method"]&&!_98["formNode"]){
-_98.method="get";
-}else{
-if(_98["formNode"]){
-_98.method=_98["formNode"].method||"get";
-}
-}
-if(_98["handler"]){
-_98.handle=_98.handler;
-}
-if(!_98["handle"]){
-_98.handle=function(){
-};
-}
-if(_98["loaded"]){
-_98.load=_98.loaded;
-}
-if(_98["changeUrl"]){
-_98.changeURL=_98.changeUrl;
-}
-for(var x=0;x<this.hdlrFuncNames.length;x++){
-var fn=this.hdlrFuncNames[x];
-if(typeof _98[fn]=="function"){
-continue;
-}
-if(typeof _98.handler=="object"){
-if(typeof _98.handler[fn]=="function"){
-_98[fn]=_98.handler[fn]||_98.handler["handle"]||function(){
-};
-}
-}else{
-if(typeof _98["handler"]=="function"){
-_98[fn]=_98.handler;
-}else{
-if(typeof _98["handle"]=="function"){
-_98[fn]=_98.handle;
-}
-}
-}
-}
-var _100="";
-if(_98["transport"]){
-_100=_98["transport"];
-if(!this[_100]){
-return false;
-}
-}else{
-for(var x=0;x<dojo.io.transports.length;x++){
-var tmp=dojo.io.transports[x];
-if((this[tmp])&&(this[tmp].canHandle(_98))){
-_100=tmp;
-}
-}
-if(_100==""){
-return false;
-}
-}
-this[_100].bind(_98);
-return true;
-};
-dojo.io.argsFromMap=function(map){
-var _102=new Object();
-var _103="";
-for(var x in map){
-if(!_102[x]){
-_103+=encodeURIComponent(x)+"="+encodeURIComponent(map[x])+"&";
-}
-}
-return _103;
-};
-dojo.hostenv.startPackage("dojo.alg.Alg");
-dojo.alg.find=function(arr,val){
-for(var i=0;i<arr.length;++i){
-if(arr[i]==val){
-return i;
-}
-}
-return -1;
-};
-dojo.alg.inArray=function(arr,val){
-if((!arr||arr.constructor!=Array)&&(val&&val.constructor==Array)){
-var a=arr;
-arr=val;
-val=a;
-}
-return dojo.alg.find(arr,val)>-1;
-};
-dojo.alg.inArr=dojo.alg.inArray;
-dojo.alg.getNameInObj=function(ns,item){
-if(!ns){
-ns=dj_global;
-}
-for(var x in ns){
-if(ns[x]===item){
-return new String(x);
-}
-}
-return null;
-};
-dojo.alg.has=function(obj,name){
-return (typeof obj[name]!=="undefined");
-};
-dojo.alg.forEach=function(arr,_110){
-for(var i=0;i<arr.length;i++){
-_110(arr[i]);
-}
-};
-dojo.alg.for_each=dojo.alg.forEach;
-dojo.alg.map=function(arr,obj,_111){
-for(var i=0;i<arr.length;++i){
-_111.call(obj,arr[i]);
-}
-};
-dojo.alg.for_each_call=dojo.alg.map;
-dojo.hostenv.loadModule("dojo.alg.Alg",false,true);
-dojo.hostenv.startPackage("dojo.io.BrowserIO");
-dojo.hostenv.loadModule("dojo.io.IO");
-dojo.hostenv.loadModule("dojo.alg.*");
-dojo.io.checkChildrenForFile=function(node){
-var _113=false;
-for(var x=0;x<node.childNodes.length;x++){
-if(node.nodeType==1){
-if(node.nodeName.toLowerCase()=="input"){
-if(node.getAttribute("type")=="file"){
-return true;
-}
-}
-if(node.childNodes.length){
-for(var x=0;x<node.childNodes.length;x++){
-if(dojo.io.checkChildrenForFile(node.childNodes.item(x))){
-return true;
-}
-}
-}
-}
-}
-return false;
-};
-dojo.io.formHasFile=function(_114){
-return dojo.io.checkChildrenForFile(_114);
-};
-dojo.io.buildFormGetString=function(_115){
-var ec=encodeURIComponent;
-var tvar="";
-var ctyp=_115.nodeName?_115.nodeName.toLowerCase():"";
-var etyp=_115.type?_115.type.toLowerCase():"";
-if(((ctyp=="input")&&(etyp!="radio")&&(etyp!="checkbox"))||(ctyp=="select")||(ctyp=="textarea")){
-if((ctyp=="input")&&(etyp=="submit")){
-}else{
-if(!((ctyp=="select")&&(_115.getAttribute("multiple")))){
-tvar=ec(_115.getAttribute("name"))+"="+ec(_115.value)+"&";
-}else{
-var tn=ec(_115.getAttribute("name"));
-var _121=_115.getElementsByTagName("option");
-for(var x=0;x<_121.length;x++){
-if(_121[x].selected){
-tvar+=tn+"="+ec(_121[x].value)+"&";
-}
-}
-}
-}
-}else{
-if(ctyp=="input"){
-if(_115.checked){
-tvar=ec(_115.getAttribute("name"))+"="+ec(_115.value)+"&";
-}
-}
-}
-if(_115.hasChildNodes()){
-for(var _122=(_115.childNodes.length-1);_122>=0;_122--){
-tvar+=dojo.io.buildFormGetString(_115.childNodes.item(_122));
-}
-}
-return tvar;
-};
-dojo.io.setIFrameSrc=function(_123,src,_124){
-try{
-var r=dojo.render.html;
-if(!_124){
-if(r.safari){
-_123.location=src;
-}else{
-frames[_123.name].location=src;
-}
-}else{
-var idoc=(r.moz)?_123.contentWindow:_123;
-idoc.location.replace(src);
-dj_debug(_123.contentWindow.location);
-}
-}
-catch(e){
-dj_debug("setIFrameSrc: "+e);
-}
-};
-dojo.io.createIFrame=function(_127){
-if(window[_127]){
-return window[_127];
-}
-if(window.frames[_127]){
-return window.frames[_127];
-}
-var r=dojo.render.html;
-var _128=null;
-_128=document.createElement((((r.ie)&&(r.win))?"<iframe name="+_127+">":"iframe"));
-with(_128){
-name=_127;
-setAttribute("name",_127);
-id=_127;
-}
-window[_127]=_128;
-document.body.appendChild(_128);
-with(_128.style){
-position="absolute";
-left=top="0px";
-height=width="1px";
-visibility="hidden";
-if(dojo.hostenv.is_debug_){
-position="relative";
-height="100px";
-width="300px";
-visibility="visible";
-}
-}
-dojo.io.setIFrameSrc(_128,dojo.hostenv.getBaseScriptUri()+"/blank.html",true);
-return _128;
-};
-dojo.io.cancelDOMEvent=function(evt){
-if(!evt){
-return false;
-}
-if(evt.preventDefault){
-evt.stopPropagation();
-evt.preventDefault();
-}else{
-if(window.event){
-window.event.cancelBubble=true;
-window.event.returnValue=false;
-}
-}
-return false;
-};
-dojo.io.XMLHTTPTransport=new function(){
-var _129=this;
-this.initialHref=window.location.href;
-this.initialHash=window.location.hash;
-this.moveForward=false;
-var _130={};
-this.useCache=false;
-this.historyStack=[];
-this.forwardStack=[];
-this.historyIframe=null;
-this.bookmarkAnchor=null;
-this.locationTimer=null;
-function getCacheKey(url,_131,_132){
-return url+"|"+_131+"|"+_132.toLowerCase();
-}
-function addToCache(url,_133,_134,http){
-_130[getCacheKey(url,_133,_134)]=http;
-}
-function getFromCache(url,_136,_137){
-return _130[getCacheKey(url,_136,_137)];
-}
-this.clearCache=function(){
-_130={};
-};
-function doLoad(_138,http,url,_139,_140){
-if(http.status==200){
-var ret;
-if(_138.mimetype=="text/javascript"){
-ret=dj_eval(http.responseText);
-}else{
-if(_138.mimetype=="text/xml"){
-ret=http.responseXML;
-if(!ret||typeof ret=="string"){
-ret=dojo.xml.domUtil.createDocumentFromText(http.responseText);
-}
-}else{
-ret=http.responseText;
-}
-}
-if(_140){
-addToCache(url,_139,_138.method,http);
-}
-if(typeof _138.load=="function"){
-_138.load("load",ret,http);
-}else{
-if(typeof _138.handle=="function"){
-_138.handle("load",ret,http);
-}
-}
-}else{
-var _142=new dojo.io.Error("XMLHttpTransport Error: "+http.status+" "+http.statusText);
-if(typeof _138.error=="function"){
-_138.error("error",_142);
-}else{
-if(typeof _138.handle=="function"){
-_138.handle("error",_142,_142);
-}
-}
-}
-}
-this.addToHistory=function(args){
-var _144=args["back"]||args["backButton"]||args["handle"];
-var hash=null;
-if(!this.historyIframe){
-this.historyIframe=window.frames["djhistory"];
-}
-if(!this.bookmarkAnchor){
-this.bookmarkAnchor=document.createElement("a");
-document.body.appendChild(this.bookmarkAnchor);
-this.bookmarkAnchor.style.display="none";
-}
-if((!args["changeURL"])||(dojo.render.html.ie)){
-var url=dojo.hostenv.getBaseScriptUri()+"blank.html?"+(new Date()).getTime();
-this.moveForward=true;
-dojo.io.setIFrameSrc(this.historyIframe,url,false);
-}
-if(args["changeURL"]){
-hash="#"+((args["changeURL"]!==true)?args["changeURL"]:(new Date()).getTime());
-setTimeout("window.location.href = '"+hash+"';",1);
-this.bookmarkAnchor.href=hash;
-if(dojo.render.html.ie){
-var _146=_144;
-var lh=null;
-var hsl=this.historyStack.length-1;
-if(hsl>=0){
-while(!this.historyStack[hsl]["urlHash"]){
-hsl--;
-}
-lh=this.historyStack[hsl]["urlHash"];
-}
-if(lh){
-_144=function(){
-if(window.location.hash!=""){
-setTimeout("window.location.href = '"+lh+"';",1);
-}
-_146();
-};
-}
-this.forwardStack=[];
-var _149=args["forward"]||args["forwardbutton"];
-var tfw=function(){
-if(window.location.hash!=""){
-window.location.href=hash;
-}
-if(_149){
-_149();
-}
-};
-if(args["forward"]){
-args.forward=tfw;
-}else{
-if(args["forwardButton"]){
-args.forwardButton=tfw;
-}
-}
-}else{
-if(dojo.render.html.moz){
-if(!this.locationTimer){
-this.locationTimer=setInterval("dojo.io.XMLHTTPTransport.checkLocation();",200);
-}
-}
-}
-}
-this.historyStack.push({"url":url,"callback":_144,"kwArgs":args,"urlHash":hash});
-};
-this.checkLocation=function(){
-var hsl=this.historyStack.length;
-if((window.location.hash==this.initialHash)||(window.location.href==this.initialHref)&&(hsl==1)){
-this.handleBackButton();
-return;
-}
-if(this.forwardStack.length>0){
-if(this.forwardStack[this.forwardStack.length-1].urlHash==window.location.hash){
-this.handleForwardButton();
-return;
-}
-}
-if((hsl>=2)&&(this.historyStack[hsl-2])){
-if(this.historyStack[hsl-2].urlHash==window.location.hash){
-this.handleBackButton();
-return;
-}
-}
-};
-this.iframeLoaded=function(evt,_151){
-var isp=_151.href.split("?");
-if(isp.length<2){
-if(this.historyStack.length==1){
-this.handleBackButton();
-}
-return;
-}
-var _153=isp[1];
-if(this.moveForward){
-this.moveForward=false;
-return;
-}
-var last=this.historyStack.pop();
-if(!last){
-if(this.forwardStack.length>0){
-var next=this.forwardStack[this.forwardStack.length-1];
-if(_153==next.url.split("?")[1]){
-this.handleForwardButton();
-}
-}
-return;
-}
-this.historyStack.push(last);
-if(this.historyStack.length>=2){
-if(isp[1]==this.historyStack[this.historyStack.length-2].url.split("?")[1]){
-this.handleBackButton();
-}
-}else{
-this.handleBackButton();
-}
-};
-this.handleBackButton=function(){
-var last=this.historyStack.pop();
-if(!last){
-return;
-}
-if(last["callback"]){
-last.callback();
-}else{
-if(last.kwArgs["backButton"]){
-last.kwArgs["backButton"]();
-}else{
-if(last.kwArgs["back"]){
-last.kwArgs["back"]();
-}else{
-if(last.kwArgs["handle"]){
-last.kwArgs.handle("back");
-}
-}
-}
-}
-this.forwardStack.push(last);
-};
-this.handleForwardButton=function(){
-var last=this.forwardStack.pop();
-if(!last){
-return;
-}
-if(last.kwArgs["forward"]){
-last.kwArgs.back();
-}else{
-if(last.kwArgs["forwardButton"]){
-last.kwArgs.forwardButton();
-}else{
-if(last.kwArgs["handle"]){
-last.kwArgs.handle("forward");
-}
-}
-}
-this.historyStack.push(last);
-};
-this.canHandle=function(_156){
-return dojo.alg.inArray(_156["mimetype"],["text/plain","text/html","text/xml","text/javascript"])&&dojo.alg.inArray(_156["method"],["post","get"])&&!(_156["formNode"]&&dojo.io.formHasFile(_156["formNode"]));
-};
-this.bind=function(_157){
-if(!_157["url"]){
-if(!_157["formNode"]&&(_157["backButton"]||_157["back"]||_157["changeURL"]||_157["watchForURL"])&&(!window["djConfig"]&&!window["djConfig"]["preventBackButtonFix"])){
-this.addToHistory(_157);
-return true;
-}
-}
-var url=_157.url;
-var _158="";
-if(_157["formNode"]){
-var ta=_157.formNode.getAttribute("action");
-if((ta)&&(!_157["url"])){
-url=ta;
-}
-var tp=_157.formNode.getAttribute("method");
-if((tp)&&(!_157["method"])){
-_157.method=tp;
-}
-_158+=dojo.io.buildFormGetString(_157.formNode);
-}
-if(!_157["method"]){
-_157.method="get";
-}
-if(_157["content"]){
-_158+=dojo.io.argsFromMap(_157.content);
-}
-if(_157["postContent"]&&_157.method.toLowerCase()=="post"){
-_158=_157.postContent;
-}
-if(_157["backButton"]||_157["back"]||_157["changeURL"]){
-this.addToHistory(_157);
-}
-var _161=_157["sync"]?false:true;
-var _162=_157["useCache"]==true||(this.useCache==true&&_157["useCache"]!=false);
-if(_162){
-var _163=getFromCache(url,_158,_157.method);
-if(_163){
-doLoad(_157,_163,url,_158,false);
-return;
-}
-}
-var http=dojo.hostenv.getXmlhttpObject();
-var _164=false;
-if(_161){
-http.onreadystatechange=function(){
-if((4==http.readyState)&&(http.status)){
-if(_164){
-return;
-}
-_164=true;
-doLoad(_157,http,url,_158,_162);
-}
-};
-}
-if(_157.method.toLowerCase()=="post"){
-http.open("POST",url,_161);
-http.setRequestHeader("Content-Type",_157["contentType"]||"application/x-www-form-urlencoded");
-http.send(_158);
-}else{
-http.open("GET",url+((_158!="")?"?"+_158:""),_161);
-http.send(null);
-}
-if(!_161){
-doLoad(_157,http,url,_158,_162);
-}
-return;
-};
-dojo.io.transports.addTransport("XMLHTTPTransport");
-};
-

diff --git a/wicket-examples/src/webapp/index.html b/wicket-examples/src/webapp/index.html
index 7f745c0..412a0d2 100644
--- a/wicket-examples/src/webapp/index.html
+++ b/wicket-examples/src/webapp/index.html
@@ -29,10 +29,8 @@
 	        <tr><td align="right"><a href="signin">signin</a></td><td> - A simple sign-in page</td></tr>
 	        <tr><td align="right"><a href="signin2">signin2</a></td><td> - An advanced sign-in page (using cookies)</td></tr>
 	        <tr><td align="right"><a href="upload">upload</a></td><td> - Upload files</td></tr>
-	        <tr><td align="right"><a href="customcomponents">custom components</a></td><td> - Custom components</td></tr>
 	        <tr><td align="right"><a href="template">template</a></td><td> - Templating example</td></tr>
-	        <tr><td align="right"><a href="wizard">wizard</a></td><td> - A wizard</td></tr>
-	        <td align="right"><a href="beanedit">beanedit</a></td><td> - Bean Edit panel</td></tr>
+	        <!-- td align="right"><a href="beanedit">beanedit</a></td><td> - Bean Edit panel</td></tr-->
 	        <tr><td align="right"><a href="navmenu">navmenu</a></td><td> - Navigation menu example</td></tr>
 	    </table>
 	</ul>