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 [EMAIL PROTECTED] List} of [EMAIL PROTECTED] 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;
+    }
 
     /**
      * [EMAIL PROTECTED]
      */
     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));
-        }
     }
 }


Reply via email to