From: Pekka Enberg <[EMAIL PROTECTED]>
Change IFormComponent.IVisitor.formComponent() to control traversal similar
to Component.IVisitor. This is needed so that a component can by-pass form
processing if we are not interested in its children.
Cc: Igor Vaynberg <[EMAIL PROTECTED]>
Cc: Janne Hietamäki <[EMAIL PROTECTED]>
Cc: Joni Freeman <[EMAIL PROTECTED]>
Signed-off-by: Pekka Enberg <[EMAIL PROTECTED]>
---
src/java/wicket/markup/html/form/Form.java | 65 +++++++++++---------
src/java/wicket/markup/html/form/FormComponent.java | 17 ++++-
src/java/wicket/util/tester/FormTester.java | 5 -
src/java/wicket/util/tester/WicketTester.java | 5 -
4 files changed, 60 insertions(+), 32 deletions(-)
Index: wicket/src/java/wicket/markup/html/form/Form.java
===================================================================
--- wicket.orig/src/java/wicket/markup/html/form/Form.java
+++ wicket/src/java/wicket/markup/html/form/Form.java
@@ -144,12 +144,13 @@ public class Form<T> extends WebMarkupCo
*
* @author Igor Vaynberg (ivaynberg)
*/
- private static abstract class ValidationVisitor implements
FormComponent.IVisitor
+ private static abstract class ValidationVisitor extends
FormComponent.AbstractVisitor
{
/**
- * @see
wicket.markup.html.form.FormComponent.IVisitor#formComponent(wicket.markup.html.form.FormComponent)
+ * @see
wicket.markup.html.form.FormComponent.AbstractVisitor#onFormComponent(wicket.markup.html.form.FormComponent)
*/
- public void formComponent(FormComponent formComponent)
+ @Override
+ public void onFormComponent(FormComponent formComponent)
{
if (formComponent.isVisibleInHierarchy() &&
formComponent.isValid()
&& formComponent.isEnabled() &&
formComponent.isEnableAllowed())
@@ -268,9 +269,10 @@ public class Form<T> extends WebMarkupCo
*/
public final void loadPersistentFormComponentValues()
{
- visitFormComponents(new FormComponent.IVisitor()
+ visitFormComponents(new FormComponent.AbstractVisitor()
{
- public void formComponent(final FormComponent
formComponent)
+ @Override
+ public void onFormComponent(final FormComponent
formComponent)
{
// Component must implement persister interface
and
// persistence for that component must be
enabled.
@@ -375,9 +377,10 @@ public class Form<T> extends WebMarkupCo
final IValuePersister persister = getValuePersister();
// Search for FormComponents like TextField etc.
- visitFormComponents(new FormComponent.IVisitor()
+ visitFormComponents(new FormComponent.AbstractVisitor()
{
- public void formComponent(final FormComponent
formComponent)
+ @Override
+ public void onFormComponent(final FormComponent
formComponent)
{
if (formComponent.isVisibleInHierarchy())
{
@@ -446,9 +449,10 @@ public class Form<T> extends WebMarkupCo
super.setVersioned(isVersioned);
// Search for FormComponents like TextField etc.
- visitFormComponents(new FormComponent.IVisitor()
+ visitFormComponents(new FormComponent.AbstractVisitor()
{
- public void formComponent(final FormComponent
formComponent)
+ @Override
+ public void onFormComponent(final FormComponent
formComponent)
{
formComponent.setVersioned(isVersioned);
}
@@ -479,8 +483,7 @@ public class Form<T> extends WebMarkupCo
{
public Object component(final Component component)
{
- visitor.formComponent((FormComponent)component);
- return CONTINUE_TRAVERSAL;
+ return
visitor.formComponent((FormComponent)component);
}
});
@@ -663,9 +666,10 @@ public class Form<T> extends WebMarkupCo
protected void internalOnModelChanged()
{
// Visit all the form components and validate each
- visitFormComponents(new FormComponent.IVisitor()
+ visitFormComponents(new FormComponent.AbstractVisitor()
{
- public void formComponent(final FormComponent
formComponent)
+ @Override
+ public void onFormComponent(final FormComponent
formComponent)
{
// If form component is using form model
if (formComponent.sameRootModel(Form.this))
@@ -682,9 +686,10 @@ public class Form<T> extends WebMarkupCo
protected final void markFormComponentsInvalid()
{
// call invalidate methods of all nested form components
- visitFormComponents(new FormComponent.IVisitor()
+ visitFormComponents(new FormComponent.AbstractVisitor()
{
- public void formComponent(final FormComponent
formComponent)
+ @Override
+ public void onFormComponent(final FormComponent
formComponent)
{
if (formComponent.isVisibleInHierarchy())
{
@@ -700,9 +705,10 @@ public class Form<T> extends WebMarkupCo
protected final void markFormComponentsValid()
{
// call invalidate methods of all nested form components
- visitFormComponents(new FormComponent.IVisitor()
+ visitFormComponents(new FormComponent.AbstractVisitor()
{
- public void formComponent(final FormComponent
formComponent)
+ @Override
+ public void onFormComponent(final FormComponent
formComponent)
{
if (formComponent.isVisibleInHierarchy())
{
@@ -808,9 +814,10 @@ public class Form<T> extends WebMarkupCo
protected void onRender(final MarkupStream markupStream)
{
// Force multi-part on if any child form component is multi-part
- visitFormComponents(new FormComponent.IVisitor()
+ visitFormComponents(new FormComponent.AbstractVisitor()
{
- public void formComponent(FormComponent formComponent)
+ @Override
+ public void onFormComponent(FormComponent formComponent)
{
if (formComponent.isVisible() &&
formComponent.isMultiPart())
{
@@ -882,9 +889,10 @@ public class Form<T> extends WebMarkupCo
*/
protected final void updateFormComponentModels()
{
- visitFormComponents(new FormComponent.IVisitor()
+ visitFormComponents(new FormComponent.AbstractVisitor()
{
- public void formComponent(final FormComponent
formComponent)
+ @Override
+ public void onFormComponent(final FormComponent
formComponent)
{
// Only update the component when it is visible
and valid
if (formComponent.isVisibleInHierarchy() &&
formComponent.isEnabled()
@@ -905,9 +913,10 @@ public class Form<T> extends WebMarkupCo
public final void clearInput()
{
// Visit all the (visible) form components and clear the input
on each.
- visitFormComponents(new FormComponent.IVisitor()
+ visitFormComponents(new FormComponent.AbstractVisitor()
{
- public void formComponent(final FormComponent
formComponent)
+ @Override
+ public void onFormComponent(final FormComponent
formComponent)
{
if (formComponent.isVisibleInHierarchy())
{
@@ -1132,9 +1141,10 @@ public class Form<T> extends WebMarkupCo
final IValuePersister persister = getValuePersister();
// Search for FormComponent children. Ignore all other
- visitFormComponents(new FormComponent.IVisitor()
+ visitFormComponents(new FormComponent.AbstractVisitor()
{
- public void formComponent(final FormComponent
formComponent)
+ @Override
+ public void onFormComponent(final FormComponent
formComponent)
{
if
(formComponent.isVisibleInHierarchy())
{
@@ -1193,9 +1203,10 @@ public class Form<T> extends WebMarkupCo
*/
private void inputChanged()
{
- visitFormComponents(new FormComponent.IVisitor()
+ visitFormComponents(new FormComponent.AbstractVisitor()
{
- public void formComponent(final FormComponent
formComponent)
+ @Override
+ public void onFormComponent(final FormComponent
formComponent)
{
if (formComponent.isVisibleInHierarchy())
{
Index: wicket/src/java/wicket/util/tester/FormTester.java
===================================================================
--- wicket.orig/src/java/wicket/util/tester/FormTester.java
+++ wicket/src/java/wicket/util/tester/FormTester.java
@@ -357,9 +357,10 @@ public class FormTester
this.wicketTester.setupRequestAndResponse();
// fill blank String for Text Component.
- workingForm.visitFormComponents(new FormComponent.IVisitor()
+ workingForm.visitFormComponents(new
FormComponent.AbstractVisitor()
{
- public void formComponent(FormComponent formComponent)
+ @Override
+ public void onFormComponent(FormComponent formComponent)
{
// do nothing for invisible component
if (!formComponent.isVisibleInHierarchy())
Index: wicket/src/java/wicket/util/tester/WicketTester.java
===================================================================
--- wicket.orig/src/java/wicket/util/tester/WicketTester.java
+++ wicket/src/java/wicket/util/tester/WicketTester.java
@@ -701,9 +701,10 @@ public class WicketTester extends MockWe
RequestCycle requestCycle = createRequestCycle();
// "Submit" the form
- form.visitFormComponents(new FormComponent.IVisitor()
+ form.visitFormComponents(new
FormComponent.AbstractVisitor()
{
- public void formComponent(FormComponent
formComponent)
+ @Override
+ public void onFormComponent(FormComponent
formComponent)
{
if (!(formComponent instanceof Button)
&& !(formComponent
instanceof RadioGroup))
Index: wicket/src/java/wicket/markup/html/form/FormComponent.java
===================================================================
--- wicket.orig/src/java/wicket/markup/html/form/FormComponent.java
+++ wicket/src/java/wicket/markup/html/form/FormComponent.java
@@ -33,6 +33,7 @@ import wicket.Localizer;
import wicket.MarkupContainer;
import wicket.Page;
import wicket.WicketRuntimeException;
+import wicket.Component.IVisitor;
import wicket.markup.ComponentTag;
import wicket.markup.html.WebMarkupContainer;
import wicket.model.IAssignmentAware;
@@ -121,7 +122,21 @@ public abstract class FormComponent<T> e
* @param formComponent
* The form component
*/
- public void formComponent(FormComponent formComponent);
+ public Object formComponent(FormComponent formComponent);
+ }
+
+ public static abstract class AbstractVisitor implements IVisitor
+ {
+ /**
+ * @see
wicket.markup.html.form.FormComponent.IVisitor#formComponent(wicket.markup.html.form.FormComponent)
+ */
+ public Object formComponent(FormComponent formComponent)
+ {
+ onFormComponent(formComponent);
+ return Component.IVisitor.CONTINUE_TRAVERSAL;
+ }
+
+ protected abstract void onFormComponent(FormComponent
formComponent);
}
/**