001 package net.sf.tacos.javascript.jquery; 002 003 import java.util.List; 004 005 import org.apache.tapestry.IAsset; 006 import org.apache.tapestry.IMarkupWriter; 007 import org.apache.tapestry.IRequestCycle; 008 import org.apache.tapestry.javascript.JavascriptManagerImpl; 009 010 /** 011 * For some jquery plugins we bundle, we want to add their css. 012 * 013 * @author andyhot 014 */ 015 public class JqueryJavascriptManagerImpl extends JavascriptManagerImpl { 016 private List cssAssets; 017 018 public void setCssFiles(String cssFiles) 019 { 020 this.cssAssets = buildAssetList(cssFiles, "cssFiles"); 021 } 022 023 public List getCssAssets() { 024 return this.cssAssets; 025 } 026 027 public void renderLibraryResources(IMarkupWriter writer, IRequestCycle cycle, 028 boolean hasForm, boolean hasWidget) { 029 super.renderLibraryResources(writer, cycle, hasForm, hasWidget); 030 031 appendAssetsAsCss(writer, cycle, getCssAssets()); 032 } 033 034 035 protected void appendAssetsAsCss(IMarkupWriter writer, IRequestCycle cycle, List assets) { 036 if (assets==null) { 037 return; 038 } 039 040 for (int i = 0; i < assets.size(); i++) { 041 appendAssetAsCss(writer, cycle, (IAsset) assets.get(i)); 042 } 043 } 044 045 /** 046 * Appends a link tag to include the given asset. 047 * @param str 048 * @param cycle 049 * @param asset 050 */ 051 protected void appendAssetAsCss(IMarkupWriter writer, IRequestCycle cycle, IAsset asset) 052 { 053 final String url = asset.buildURL(); 054 055 writer.beginEmpty("link"); 056 writer.attribute("media", "screen"); 057 writer.attribute("rel", "stylesheet"); 058 writer.attribute("type", "text/css"); 059 writer.attribute("href", url); 060 writer.println(); 061 } 062 063 }