You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2007/08/01 13:14:54 UTC

svn commit: r561765 - in /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket: Application.java markup/html/internal/HeaderResponse.java

Author: knopp
Date: Wed Aug  1 04:14:53 2007
New Revision: 561765

URL: http://svn.apache.org/viewvc?view=rev&rev=561765
Log:
Added global handler for intercepting header contribution

Modified:
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Application.java
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Application.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Application.java?view=diff&rev=561765&r1=561764&r2=561765
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Application.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Application.java Wed Aug  1 04:14:53 2007
@@ -34,6 +34,8 @@
 import org.apache.wicket.application.IComponentOnAfterRenderListener;
 import org.apache.wicket.application.IComponentOnBeforeRenderListener;
 import org.apache.wicket.markup.IMarkupCache;
+import org.apache.wicket.markup.html.IHeaderContributor;
+import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.image.resource.DefaultButtonImageResourceFactory;
 import org.apache.wicket.markup.parser.filter.RelativePathPrefixHandler;
 import org.apache.wicket.markup.parser.filter.WicketMessageTagHandler;
@@ -1108,6 +1110,53 @@
 				IComponentOnAfterRenderListener listener = (IComponentOnAfterRenderListener)i
 						.next();
 				listener.onAfterRender(component);
+			}
+		}
+	}
+	
+	private List renderHeadListeners = null;
+	
+	/**
+	 * Adds a listener that will be invoked for every header response 
+	 * @param listener
+	 */
+	public final void addRenderHeadListener(IHeaderContributor listener) 
+	{
+		if (renderHeadListeners == null)
+		{
+			renderHeadListeners = new ArrayList();
+		}
+		renderHeadListeners.add(listener);
+	}
+	
+	/**
+	 * 
+	 * @param listener
+	 */
+	public void removeRenderHeadListener(IHeaderContributor listener)
+	{
+		if (renderHeadListeners != null)
+		{
+			renderHeadListeners.remove(listener);
+			if (renderHeadListeners.isEmpty())
+			{
+				renderHeadListeners = null;
+			}
+		}
+	}
+	
+	/**
+	 * INTERNAL
+	 * @param response
+	 */
+	public void notifyRenderHeadListener(IHeaderResponse response)
+	{
+		if (renderHeadListeners != null)
+		{
+			for (Iterator i = renderHeadListeners.iterator(); i.hasNext();)
+			{
+				IHeaderContributor listener = (IHeaderContributor) i.next();
+				listener.renderHead(response);
 			}
 		}
 	}

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java?view=diff&rev=561765&r1=561764&r2=561765
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/internal/HeaderResponse.java Wed Aug  1 04:14:53 2007
@@ -21,6 +21,7 @@
 import java.util.List;
 import java.util.Set;
 
+import org.apache.wicket.Application;
 import org.apache.wicket.RequestCycle;
 import org.apache.wicket.ResourceReference;
 import org.apache.wicket.markup.html.IHeaderResponse;
@@ -48,7 +49,10 @@
 	 */
 	public HeaderResponse()
 	{
-		
+		if (Application.exists())
+		{
+			Application.get().notifyRenderHeadListener(this);
+		}
 	}
 
 	/**