Author: hlship
Date: Sat Oct 29 14:47:11 2005
New Revision: 329487
URL: http://svn.apache.org/viewcvs?rev=329487&view=rev
Log:
TAPESTRY-715: LinkSubmit component should render its body, even when disabled
Modified:
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/AbstractFormComponent.java
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/LinkSubmit.java
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestLinkSubmit.java
jakarta/tapestry/trunk/status.xml
Modified:
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/AbstractFormComponent.java
URL:
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/AbstractFormComponent.java?rev=329487&r1=329486&r2=329487&view=diff
==============================================================================
---
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/AbstractFormComponent.java
(original)
+++
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/AbstractFormComponent.java
Sat Oct 29 14:47:11 2005
@@ -114,6 +114,12 @@
{
rewindFormComponent(writer, cycle);
}
+
+ // This is for the benefit of the couple of components
(LinkSubmit) that allow a body.
+ // The body should render when the component rewinds.
+
+ if (getRenderBodyOnRewind())
+ renderBody(writer, cycle);
}
else if (!cycle.isRewinding())
{
@@ -128,6 +134,21 @@
}
}
+ }
+
+ /**
+ * A small number of components should always render their body on rewind
(even if the component
+ * is itself disabled) and should override this method to return true.
Components that
+ * explicitly render their body inside
+ * [EMAIL PROTECTED] #rewindFormComponent(IMarkupWriter, IRequestCycle)}
should leave this method returning
+ * false. Remember that if the component is [EMAIL PROTECTED]
IFormComponent#isDisabled() disabled} then
+ * [EMAIL PROTECTED] #rewindFormComponent(IMarkupWriter, IRequestCycle)}
won't be invoked.
+ *
+ * @return false; override this method to change.
+ */
+ protected boolean getRenderBodyOnRewind()
+ {
+ return false;
}
protected void renderDelegatePrefix(IMarkupWriter writer, IRequestCycle
cycle)
Modified:
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/LinkSubmit.java
URL:
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/LinkSubmit.java?rev=329487&r1=329486&r2=329487&view=diff
==============================================================================
---
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/LinkSubmit.java
(original)
+++
jakarta/tapestry/trunk/framework/src/java/org/apache/tapestry/form/LinkSubmit.java
Sat Oct 29 14:47:11 2005
@@ -100,17 +100,6 @@
}
/**
- * When a LinkSubmit rewinds, it should invoke its listener, etc., but
should also render any
- * components in its body.
- */
- protected void rewindFormComponent(IMarkupWriter writer, IRequestCycle
cycle)
- {
- super.rewindFormComponent(writer, cycle);
-
- renderBody(writer, cycle);
- }
-
- /**
* @see
org.apache.tapestry.AbstractComponent#prepareForRender(org.apache.tapestry.IRequestCycle)
*/
protected void prepareForRender(IRequestCycle cycle)
@@ -139,4 +128,14 @@
{
return false;
}
+
+ /**
+ * Returns true; the LinkSubmit's body should render during a rewind, even
if the component is
+ * itself disabled.
+ */
+ protected boolean getRenderBodyOnRewind()
+ {
+ return true;
+ }
+
}
Modified:
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestLinkSubmit.java
URL:
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestLinkSubmit.java?rev=329487&r1=329486&r2=329487&view=diff
==============================================================================
---
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestLinkSubmit.java
(original)
+++
jakarta/tapestry/trunk/framework/src/test/org/apache/tapestry/form/TestLinkSubmit.java
Sat Oct 29 14:47:11 2005
@@ -29,6 +29,8 @@
import org.apache.tapestry.IScript;
import org.apache.tapestry.IScriptProcessor;
import org.apache.tapestry.PageRenderSupport;
+import org.apache.tapestry.TapestryUtils;
+import org.apache.tapestry.valid.IValidationDelegate;
/**
* Tests for [EMAIL PROTECTED] org.apache.tapestry.form.LinkSubmit}
@@ -211,20 +213,72 @@
IRequestCycle cycle = newCycle();
IRender body = newRender();
IForm form = newForm();
+ IValidationDelegate delegate = newDelegate();
+
+ LinkSubmit linkSubmit = (LinkSubmit) newInstance(LinkSubmit.class, new
Object[]
+ { "name", "fred", "form", form });
+ linkSubmit.addBody(body);
+
+ trainGetForm(cycle, form);
+
+ trainWasPrerendered(form, writer, linkSubmit, false);
+
+ trainGetDelegate(form, delegate);
+
+ trainGetElementId(form, linkSubmit, "fred");
+
+ delegate.setFormComponent(linkSubmit);
+
+ trainIsRewinding(form, true);
+
+ // Finally, code inside LinkSubmit ...
trainGetParameter(cycle, "fred", null);
+ // ... and back to AbstractFormComponent
+
body.render(writer, cycle);
replayControls();
- LinkSubmit linkSubmit = (LinkSubmit) newInstance(LinkSubmit.class, new
Object[]
- { "name", "fred", "form", form });
- linkSubmit.addBody(body);
-
- linkSubmit.rewindFormComponent(writer, cycle);
+ linkSubmit.renderComponent(writer, cycle);
verifyControls();
+ }
+
+ private void trainIsRewinding(IForm form, boolean isRewindind)
+ {
+ form.isRewinding();
+ setReturnValue(form, isRewindind);
+ }
+
+ protected void trainGetElementId(IForm form, IFormComponent field, String
name)
+ {
+ form.getElementId(field);
+ setReturnValue(form, name);
+ }
+
+ protected void trainGetDelegate(IForm form, IValidationDelegate delegate)
+ {
+ form.getDelegate();
+ setReturnValue(form, delegate);
+ }
+
+ protected void trainWasPrerendered(IForm form, IMarkupWriter writer,
IFormComponent field,
+ boolean wasPrendered)
+ {
+ form.wasPrerendered(writer, field);
+ setReturnValue(form, wasPrendered);
+ }
+
+ protected void trainGetForm(IRequestCycle cycle, IForm form)
+ {
+ trainGetAttribute(cycle, TapestryUtils.FORM_ATTRIBUTE, form);
+ }
+
+ protected IValidationDelegate newDelegate()
+ {
+ return (IValidationDelegate) newMock(IValidationDelegate.class);
}
}
Modified: jakarta/tapestry/trunk/status.xml
URL:
http://svn.apache.org/viewcvs/jakarta/tapestry/trunk/status.xml?rev=329487&r1=329486&r2=329487&view=diff
==============================================================================
--- jakarta/tapestry/trunk/status.xml (original)
+++ jakarta/tapestry/trunk/status.xml Sat Oct 29 14:47:11 2005
@@ -58,6 +58,7 @@
<action type="update" dev="HLS">Deprecate IMonitor and IMonitorFactory
(for removal in 4.1)</action>
<action type="fix" dev="HLS" fixes-bug="TAPESTRY-699"><div> tag
around form hidden fields should not be visible</action>
<action type="fix" dev="HLS" fixes-bug="TAPESTRY-711">Do not give focus
to disabled fields</action>
+ <action type="fix" dev="HLS" fixes-bug="TAPESTRY-715">LinkSubmit
component should render its body, even when disabled</action>
</release>
<release version="4.0-beta-11" date="Oct 16 2005">
<action type="fix" dev="HLS"
fixes-bug="TAPESTRY-650">ClassNotFoundException thrown when deserializing an
object from a client persistent property</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]