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));
-        }
     }
 }