You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by an...@apache.org on 2008/08/30 02:22:04 UTC
svn commit: r690433 - in
/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript:
JavascriptManager.java JavascriptManagerImpl.java
SimpleAjaxShellDelegate.java
Author: andyhot
Date: Fri Aug 29 17:22:04 2008
New Revision: 690433
URL: http://svn.apache.org/viewvc?rev=690433&view=rev
Log:
TAPESTRY-2466: delegate js library inclusion from AjaxShellDelegate to JavacriptManager
Modified:
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/JavascriptManager.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/JavascriptManagerImpl.java
tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/SimpleAjaxShellDelegate.java
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/JavascriptManager.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/JavascriptManager.java?rev=690433&r1=690432&r2=690433&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/JavascriptManager.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/JavascriptManager.java Fri Aug 29 17:22:04 2008
@@ -17,6 +17,8 @@
import java.util.List;
import org.apache.tapestry.IAsset;
+import org.apache.tapestry.IMarkupWriter;
+import org.apache.tapestry.IRequestCycle;
/**
* Manages javascript files of 3rd party libraries.
@@ -72,4 +74,23 @@
* @return if null, it is left unused.
*/
IAsset getTapestryPath();
+
+ /**
+ * Output the resources (could be .js, .css, e.t.c. files) needed for the current javascript library.
+ *
+ * @param writer
+ * @param cycle
+ * @param hasForm true if current page includes forms.
+ * @param hasWidget true if current page includes widgets.
+ */
+ void renderLibraryResources(IMarkupWriter writer, IRequestCycle cycle, boolean hasForm, boolean hasWidget);
+
+ /**
+ * Output the resources needed for tapestry in order to use the current
+ * javascript library.
+ *
+ * @param writer
+ * @param cycle
+ */
+ void renderLibraryAdaptor(IMarkupWriter writer, IRequestCycle cycle);
}
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/JavascriptManagerImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/JavascriptManagerImpl.java?rev=690433&r1=690432&r2=690433&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/JavascriptManagerImpl.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/JavascriptManagerImpl.java Fri Aug 29 17:22:04 2008
@@ -21,6 +21,8 @@
import org.apache.hivemind.Location;
import org.apache.hivemind.util.URLResource;
import org.apache.tapestry.IAsset;
+import org.apache.tapestry.IMarkupWriter;
+import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.TapestryUtils;
import org.apache.tapestry.asset.AssetSource;
import org.apache.tapestry.util.DescribedLocation;
@@ -129,7 +131,61 @@
_assetSource = assetSource;
}
+ public void renderLibraryResources(IMarkupWriter writer,
+ IRequestCycle cycle, boolean hasForm, boolean hasWidget)
+ {
+ // include all the main js packages
+ appendAssetsAsJavascript(writer, cycle, getAssets());
+
+ if (hasForm)
+ {
+ appendAssetsAsJavascript(writer, cycle, getFormAssets());
+ }
+ if (hasWidget)
+ {
+ appendAssetsAsJavascript(writer, cycle, getWidgetAssets());
+ }
+
+ }
+
+ public void renderLibraryAdaptor(IMarkupWriter writer, IRequestCycle cycle)
+ {
+ // include the tapestry js
+ IAsset tapestryAsset = getTapestryAsset();
+ if (tapestryAsset!=null)
+ {
+ appendAssetAsJavascript(writer, cycle, tapestryAsset);
+ }
+ }
+
+
+
/**
+ * Appends a script tag to include the given asset.
+ * @param writer
+ * @param cycle
+ * @param asset
+ */
+ protected void appendAssetAsJavascript(IMarkupWriter writer, IRequestCycle cycle, IAsset asset)
+ {
+ final String url = asset.buildURL();
+
+ writer.begin("script");
+ writer.attribute("type", "text/javascript");
+ writer.attribute("src", url);
+ writer.end();
+ writer.println();
+ }
+
+ protected void appendAssetsAsJavascript(IMarkupWriter writer, IRequestCycle cycle, List jsAssets)
+ {
+ for (int i = 0; i < jsAssets.size(); i++)
+ {
+ appendAssetAsJavascript(writer, cycle, (IAsset) jsAssets.get(i));
+ }
+ }
+
+ /**
* Builds a {@link List} of {@link IAsset} from a comma
* separated input string.
*
Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/SimpleAjaxShellDelegate.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/SimpleAjaxShellDelegate.java?rev=690433&r1=690432&r2=690433&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/SimpleAjaxShellDelegate.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/javascript/SimpleAjaxShellDelegate.java Fri Aug 29 17:22:04 2008
@@ -14,8 +14,6 @@
package org.apache.tapestry.javascript;
-import java.util.List;
-
import org.apache.tapestry.IAsset;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IPage;
@@ -28,91 +26,52 @@
*/
public class SimpleAjaxShellDelegate implements IRender
{
- private static final String SYSTEM_NEWLINE = "\n";
-
- protected JavascriptManager _javascriptManager;
+ private JavascriptManager _javascriptManager;
public SimpleAjaxShellDelegate(JavascriptManager javascriptManager)
{
_javascriptManager = javascriptManager;
}
+
+ protected JavascriptManager getJavascriptManager() {
+ return _javascriptManager;
+ }
/**
* {@inheritDoc}
*/
public void render(IMarkupWriter writer, IRequestCycle cycle)
- {
- StringBuffer str = new StringBuffer(300);
+ {
+ IPage page = cycle.getPage();
- processPath(str, cycle, _javascriptManager.getPath());
-
- // include all the main js packages
- appendAssetsAsJavascript(str, cycle, _javascriptManager.getAssets());
+ processPath(writer, cycle, _javascriptManager.getPath());
- IPage page = cycle.getPage();
- if (page.hasFormComponents())
- {
- appendAssetsAsJavascript(str, cycle, _javascriptManager.getFormAssets());
- }
- if (page.hasWidgets())
- {
- appendAssetsAsJavascript(str, cycle, _javascriptManager.getWidgetAssets());
- }
+ _javascriptManager.renderLibraryResources(writer, cycle, page.hasFormComponents(), page.hasWidgets());
- processTapestryPath(str, cycle, _javascriptManager.getTapestryPath());
+ processTapestryPath(writer, cycle, _javascriptManager.getTapestryPath());
- // include the tapestry js
- IAsset tapestryAsset = _javascriptManager.getTapestryAsset();
- if (tapestryAsset!=null)
- {
- appendAssetAsJavascript(str, cycle, tapestryAsset);
- }
-
- writer.printRaw(str.toString());
- writer.println();
+ _javascriptManager.renderLibraryAdaptor(writer, cycle);
}
/**
* Called before including any javascript. It does nothing by default, but allows
- * subclasses to change this behavior.
+ * subclasses to change this behavior.
+ * @param writer
* @param cycle
- * @param str
* @param path The base path to the javascript files. May be null.
*/
- protected void processPath(StringBuffer str, IRequestCycle cycle, IAsset path)
+ protected void processPath(IMarkupWriter writer, IRequestCycle cycle, IAsset path)
{
}
/**
* Called before including tapestry's base javascript. It does nothing by default,
- * but allows subclasses to change this behavior.
+ * but allows subclasses to change this behavior.
+ * @param writer
* @param cycle
- * @param str
* @param path The base path to the tapestry javascript file. May be null.
*/
- protected void processTapestryPath(StringBuffer str, IRequestCycle cycle, IAsset path)
- {
- }
-
- /**
- * Appends a script tag to include the given asset.
- * @param str
- * @param cycle
- * @param asset
- */
- protected void appendAssetAsJavascript(StringBuffer str, IRequestCycle cycle, IAsset asset)
- {
- final String url = asset.buildURL();
- str.append("<script type=\"text/javascript\" src=\"").append(url)
- .append("\"></script>").append(SYSTEM_NEWLINE);
-
- }
-
- private void appendAssetsAsJavascript(StringBuffer str, IRequestCycle cycle, List jsAssets)
+ protected void processTapestryPath(IMarkupWriter writer, IRequestCycle cycle, IAsset path)
{
- for (int i = 0; i < jsAssets.size(); i++)
- {
- appendAssetAsJavascript(str, cycle, (IAsset) jsAssets.get(i));
- }
}
}