You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2007/08/14 20:49:39 UTC
svn commit: r565853 [2/2] - in
/tapestry/tapestry4/trunk/tapestry-framework/src: java/org/apache/tapestry/
java/org/apache/tapestry/form/ java/org/apache/tapestry/script/
java/org/apache/tapestry/services/ java/org/apache/tapestry/services/impl/
java/o...
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/PrototypeResponseBuilder.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/PrototypeResponseBuilder.java?view=diff&rev=565853&r1=565852&r2=565853
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/PrototypeResponseBuilder.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/PrototypeResponseBuilder.java Tue Aug 14 11:49:37 2007
@@ -20,7 +20,7 @@
/**
* Implementation of response builder for prototype client side library initiated XHR requests.
- *
+ *
*/
public class PrototypeResponseBuilder implements ResponseBuilder {
@@ -59,7 +59,7 @@
{
_cycle = cycle;
_writer = writer;
-
+
if (parts != null)
_parts.addAll(parts);
@@ -70,7 +70,7 @@
/**
* Creates a new response builder with the required services it needs
* to render the response when {@link #renderResponse(IRequestCycle)} is called.
- *
+ *
* @param cycle
* Associated request.
* @param localeManager
@@ -85,10 +85,10 @@
* Javascript namespace value - used in portlets.
*/
public PrototypeResponseBuilder(IRequestCycle cycle,
- RequestLocaleManager localeManager,
- MarkupWriterSource markupWriterSource,
- WebResponse webResponse,
- AssetFactory assetFactory, String namespace)
+ RequestLocaleManager localeManager,
+ MarkupWriterSource markupWriterSource,
+ WebResponse webResponse,
+ AssetFactory assetFactory, String namespace)
{
Defense.notNull(cycle, "cycle");
Defense.notNull(assetFactory, "assetService");
@@ -117,7 +117,7 @@
* {@inheritDoc}
*/
public void renderResponse(IRequestCycle cycle)
- throws IOException
+ throws IOException
{
_localeManager.persistLocale();
@@ -132,8 +132,8 @@
contentType.setParameter(ENCODING_KEY, encoding);
}
- if (_writer == null) {
-
+ if (_writer == null)
+ {
parseParameters(cycle);
PrintWriter printWriter = _response.getPrintWriter(contentType);
@@ -157,7 +157,7 @@
}
public void flush()
- throws IOException
+ throws IOException
{
_writer.flush();
}
@@ -190,8 +190,8 @@
public boolean isBodyScriptAllowed(IComponent target)
{
if (target != null
- && IPage.class.isInstance(target)
- || (IForm.class.isInstance(target)
+ && IPage.class.isInstance(target)
+ || (IForm.class.isInstance(target)
&& ((IForm)target).isFormFieldUpdating()))
return true;
@@ -204,8 +204,8 @@
public boolean isExternalScriptAllowed(IComponent target)
{
if (target != null
- && IPage.class.isInstance(target)
- || (IForm.class.isInstance(target)
+ && IPage.class.isInstance(target)
+ || (IForm.class.isInstance(target)
&& ((IForm)target).isFormFieldUpdating()))
return true;
@@ -218,8 +218,8 @@
public boolean isInitializationScriptAllowed(IComponent target)
{
if (target != null
- && IPage.class.isInstance(target)
- || (IForm.class.isInstance(target)
+ && IPage.class.isInstance(target)
+ || (IForm.class.isInstance(target)
&& ((IForm)target).isFormFieldUpdating()))
return true;
@@ -232,8 +232,8 @@
public boolean isImageInitializationAllowed(IComponent target)
{
if (target != null
- && IPage.class.isInstance(target)
- || (IForm.class.isInstance(target)
+ && IPage.class.isInstance(target)
+ || (IForm.class.isInstance(target)
&& ((IForm)target).isFormFieldUpdating()))
return true;
@@ -312,6 +312,11 @@
_prs.addInitializationScript(script);
}
+ public void addScriptAfterInitialization(IComponent target, String script)
+ {
+ _prs.addScriptAfterInitialization(target, script);
+ }
+
/**
* {@inheritDoc}
*/
@@ -403,7 +408,7 @@
{
throw new UnsupportedOperationException("Can't return a status response with prototype based requests.");
}
-
+
/**
* {@inheritDoc}
*/
@@ -411,7 +416,8 @@
{
// must be a valid writer already
- if (NestedMarkupWriterImpl.class.isInstance(writer)) {
+ if (NestedMarkupWriterImpl.class.isInstance(writer))
+ {
render.render(writer, cycle);
return;
}
@@ -440,11 +446,11 @@
public IMarkupWriter getWriter(String id, String type)
{
Defense.notNull(id, "id can't be null");
-
+
IMarkupWriter w = (IMarkupWriter)_writers.get(id);
if (w != null)
return w;
-
+
IMarkupWriter nestedWriter = _writer.getNestedWriter();
_writers.put(id, nestedWriter);
@@ -473,14 +479,14 @@
{
Iterator keys = _writers.keySet().iterator();
- while (keys.hasNext()) {
-
+ while (keys.hasNext())
+ {
String key = (String)keys.next();
NestedMarkupWriter nw = (NestedMarkupWriter)_writers.get(key);
-
+
nw.close();
}
-
+
_writer.flush();
}
@@ -527,8 +533,8 @@
return true;
Iterator it = _cycle.renderStackIterator();
- while (it.hasNext()) {
-
+ while (it.hasNext())
+ {
IComponent comp = (IComponent)it.next();
String compId = comp.getClientId();
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/PageRenderSupportImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/PageRenderSupportImpl.java?view=diff&rev=565853&r1=565852&r2=565853
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/PageRenderSupportImpl.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/PageRenderSupportImpl.java Tue Aug 14 11:49:37 2007
@@ -44,8 +44,13 @@
private final ResponseBuilder _builder;
// Lines that belong inside the onLoad event handler for the <body> tag.
+
private StringBuffer _initializationScript;
+ // Used by addScriptAfterInitialization
+
+ private StringBuffer _postInitializationScript;
+
// Any other scripting desired
private StringBuffer _bodyScript;
@@ -202,6 +207,19 @@
_initializationScript.append("\n").append(val);
}
+ public void addScriptAfterInitialization(IComponent target, String script)
+ {
+ if (!_builder.isInitializationScriptAllowed(target))
+ return;
+
+ String strippedScript = stripDuplicateIncludes(script);
+
+ if (_postInitializationScript == null)
+ _postInitializationScript = new StringBuffer(strippedScript.length() + 1);
+
+ _postInitializationScript.append("\n").append(strippedScript);
+ }
+
/**
* Provides a mechanism to strip out duplicate dojo.require calls made in script
* templates in order to reduce amount of redundant javascript written to client.
@@ -218,15 +236,18 @@
String ret = input;
- for (int i=0; i < lines.length; i++) {
+ for (int i=0; i < lines.length; i++)
+ {
if (lines[i].indexOf("dojo.require") < 0)
continue;
String line = StringUtils.stripToEmpty(lines[i]);
- if (_requires.containsKey(line)) {
+ if (_requires.containsKey(line))
+ {
ret = StringUtils.replaceOnce(ret, line+";", "");
- } else {
+ } else
+ {
_requires.put(line, "t");
}
}
@@ -287,6 +308,10 @@
* </ul>
*
* @see #writeInitializationScript(IMarkupWriter)
+ * @param writer
+ * The markup writer to use.
+ * @param cycle
+ * The current request.
*/
public void writeBodyScript(IMarkupWriter writer, IRequestCycle cycle)
@@ -301,15 +326,15 @@
if (any(_imageInitializations))
{
- _builder.writeImageInitializations(writer, StringUtils.stripToEmpty(_imageInitializations.toString())
- , _preloadName, cycle);
+ _builder.writeImageInitializations(writer,
+ StringUtils.stripToEmpty(_imageInitializations.toString()),
+ _preloadName,
+ cycle);
}
if (any(_bodyScript))
{
- _builder.writeBodyScript(writer, StringUtils.stripToEmpty(_bodyScript.toString())
- ,
- cycle);
+ _builder.writeBodyScript(writer, StringUtils.stripToEmpty(_bodyScript.toString()), cycle);
}
_builder.endBodyScript(writer, cycle);
@@ -319,14 +344,27 @@
* Writes any image initializations; this should be invoked at the end of the render, after all
* the related HTML will have already been streamed to the client and parsed by the web browser.
* Earlier versions of Tapestry uses a <code>window.onload</code> event handler.
+ *
+ * @param writer
+ * The markup writer to use.
*/
public void writeInitializationScript(IMarkupWriter writer)
{
- if (!any(_initializationScript))
+ if (!any(_initializationScript) && !any(_postInitializationScript))
return;
- _builder.writeInitializationScript(writer, StringUtils.stripToEmpty(_initializationScript.toString()));
+ String script = getContent(_initializationScript) + getContent(_postInitializationScript);
+
+ _builder.writeInitializationScript(writer, StringUtils.stripToEmpty(script));
+ }
+
+ public static String getContent(StringBuffer buffer)
+ {
+ if (buffer == null || buffer.length() < 1)
+ return "";
+
+ return buffer.toString();
}
private boolean any(StringBuffer buffer)
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/version.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/version.properties?view=diff&rev=565853&r1=565852&r2=565853
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/version.properties (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/version.properties Tue Aug 14 11:49:37 2007
@@ -1 +1 @@
-project.version=4.1.2
+project.version=4.1.3
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/form.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/form.js?view=diff&rev=565853&r1=565852&r2=565853
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/form.js (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/js/tapestry/form.js Tue Aug 14 11:49:37 2007
@@ -42,7 +42,9 @@
var f=dojo.widget.byId(field);
if(f && !dj_undef("focus", f)){
- f.focus();
+ if (dojo.html.isVisible(f)){
+ f.focus();
+ }
return;
} else {
f = dojo.byId(field);
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java?view=diff&rev=565853&r1=565852&r2=565853
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/form/FormSupportTest.java Tue Aug 14 11:49:37 2007
@@ -226,7 +226,8 @@
trainGetFieldFocus(cycle, null);
- support.addInitializationScript(form, "dojo.require(\"tapestry.form\");tapestry.form.focusField('wilma');");
+ support.addInitializationScript(form, "dojo.require(\"tapestry.form\");");
+ support.addScriptAfterInitialization(form, "tapestry.form.focusField('wilma');");
cycle.setAttribute(FormSupportImpl.FIELD_FOCUS_ATTRIBUTE, Boolean.TRUE);
replay();
@@ -1098,8 +1099,8 @@
trainGetFieldFocus(cycle, null);
- support.addInitializationScript(form, "dojo.require(\"tapestry.form\");tapestry.form.focusField('barney');");
-
+ support.addInitializationScript(form, "dojo.require(\"tapestry.form\");");
+ support.addScriptAfterInitialization(form, "tapestry.form.focusField('barney');");
cycle.setAttribute(FormSupportImpl.FIELD_FOCUS_ATTRIBUTE, Boolean.TRUE);
replay();
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/script/MockScriptProcessor.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/script/MockScriptProcessor.java?view=diff&rev=565853&r1=565852&r2=565853
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/script/MockScriptProcessor.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/junit/script/MockScriptProcessor.java Tue Aug 14 11:49:37 2007
@@ -14,17 +14,18 @@
package org.apache.tapestry.junit.script;
-import java.util.ArrayList;
-import java.util.List;
-
import org.apache.hivemind.Resource;
import org.apache.tapestry.IComponent;
import org.apache.tapestry.IScriptProcessor;
import org.apache.tapestry.util.IdAllocator;
+import org.apache.tapestry.util.PageRenderSupportImpl;
+
+import java.util.ArrayList;
+import java.util.List;
/**
* Used by {@link org.apache.tapestry.junit.script.TestScript}.
- *
+ *
* @author Howard Lewis Ship
* @since 3.0
*/
@@ -34,6 +35,8 @@
private StringBuffer _initialization;
+ private StringBuffer _postInitialization;
+
private List _externalScripts;
private IdAllocator _idAllocator = new IdAllocator();
@@ -48,7 +51,7 @@
_externalScripts.clear();
_idAllocator.clear();
}
-
+
public void addBodyScript(String script)
{
addBodyScript(null, script);
@@ -61,7 +64,7 @@
_body.append(script);
}
-
+
public String getBody()
{
if (_body == null)
@@ -82,20 +85,29 @@
_initialization.append(script);
}
-
+
+ public void addScriptAfterInitialization(IComponent target, String script)
+ {
+ if (_postInitialization == null)
+ _postInitialization = new StringBuffer();
+
+ _postInitialization.append(script);
+ }
+
public String getInitialization()
{
- if (_initialization == null)
+ if (_initialization == null && _postInitialization == null)
return null;
- return _initialization.toString();
+ return PageRenderSupportImpl.getContent(_initialization)
+ + PageRenderSupportImpl.getContent(_postInitialization);
}
public void addExternalScript(Resource scriptResource)
{
addExternalScript(null, scriptResource);
}
-
+
/**
* {@inheritDoc}
*/
@@ -124,7 +136,7 @@
{
if (_externalScripts == null)
_externalScripts = new ArrayList();
-
+
_externalScripts.add(scriptResource);
}