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);
+               }
        }
 
        /**


Reply via email to