You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2010/12/21 12:21:34 UTC

svn commit: r1051457 - in /wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration: GroupingAndFilteringHeaderResponse.java HomePage.html HomePage.java ResourceDecorationApplication.java

Author: mgrigorov
Date: Tue Dec 21 11:21:33 2010
New Revision: 1051457

URL: http://svn.apache.org/viewvc?rev=1051457&view=rev
Log:
Add a demo how to load JavaScript in the footer of the page (after </body>

Added:
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/GroupingAndFilteringHeaderResponse.java   (with props)
Modified:
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/HomePage.html
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/HomePage.java
    wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/ResourceDecorationApplication.java

Added: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/GroupingAndFilteringHeaderResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/GroupingAndFilteringHeaderResponse.java?rev=1051457&view=auto
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/GroupingAndFilteringHeaderResponse.java (added)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/GroupingAndFilteringHeaderResponse.java Tue Dec 21 11:21:33 2010
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.examples.resourcedecoration;
+
+import org.apache.wicket.markup.html.DecoratingHeaderResponse;
+import org.apache.wicket.markup.html.IHeaderResponse;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.resource.filtering.JavaScriptFilteredIntoFooterHeaderResponse;
+
+/**
+ * An {@link IHeaderResponse} that uses grouping for the CSS resources, i.e. can load several .css
+ * files with one http request, and load the JavaScript resources at the footer of the body
+ */
+public class GroupingAndFilteringHeaderResponse extends DecoratingHeaderResponse
+{
+	private final GroupingHeaderResponse groupingHeaderResponse;
+
+	/**
+	 * Uses {@link JavaScriptFilteredIntoFooterHeaderResponse} for rendering all JavaScript
+	 * resources and {@link GroupingHeaderResponse} for all CSS resources
+	 * 
+	 * @param groupingHeaderResponse
+	 * @param filteredIntoFooterHeaderResponse
+	 */
+	public GroupingAndFilteringHeaderResponse(GroupingHeaderResponse groupingHeaderResponse,
+		JavaScriptFilteredIntoFooterHeaderResponse filteredIntoFooterHeaderResponse)
+	{
+		super(filteredIntoFooterHeaderResponse);
+
+		this.groupingHeaderResponse = groupingHeaderResponse;
+	}
+
+	@Override
+	public void renderCSSReference(ResourceReference reference)
+	{
+		groupingHeaderResponse.renderCSSReference(reference);
+	}
+
+	@Override
+	public void renderCSSReference(String url)
+	{
+		groupingHeaderResponse.renderCSSReference(url);
+	}
+
+	@Override
+	public void renderCSSReference(ResourceReference reference, String media)
+	{
+		groupingHeaderResponse.renderCSSReference(reference, media);
+	}
+
+	@Override
+	public void renderCSSReference(ResourceReference reference, PageParameters pageParameters,
+		String media)
+	{
+		groupingHeaderResponse.renderCSSReference(reference, pageParameters, media);
+	}
+
+	@Override
+	public void renderCSSReference(String url, String media)
+	{
+		groupingHeaderResponse.renderCSSReference(url, media);
+	}
+
+	/**
+	 * @see org.apache.wicket.markup.html.DecoratingHeaderResponse#close()
+	 */
+	@Override
+	public void close()
+	{
+		groupingHeaderResponse.close();
+		super.close();
+	}
+
+}

Propchange: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/GroupingAndFilteringHeaderResponse.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/HomePage.html
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/HomePage.html?rev=1051457&r1=1051456&r2=1051457&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/HomePage.html (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/HomePage.html Tue Dec 21 11:21:33 2010
@@ -21,4 +21,6 @@
 	    	<h1 class="footer">footer h1</h1>
 	    </div>
     </body>
+    
+    <wicket:container wicket:id="footerJS"></wicket:container>
 </html>

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/HomePage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/HomePage.java?rev=1051457&r1=1051456&r2=1051457&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/HomePage.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/HomePage.java Tue Dec 21 11:21:33 2010
@@ -27,6 +27,7 @@ import org.apache.wicket.markup.html.IHe
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.resource.filtering.HeaderResponseFilteredResponseContainer;
 import org.apache.wicket.util.time.Duration;
 
 /**
@@ -75,6 +76,12 @@ public class HomePage extends WicketExam
 				stop();
 			}
 		});
+
+		/*
+		 * a container for all collected JavaScript contributions that will be loaded at the page
+		 * footer (after </body>)
+		 */
+		add(new HeaderResponseFilteredResponseContainer("footerJS", "footerJS"));
 	}
 
 	@Override

Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/ResourceDecorationApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/ResourceDecorationApplication.java?rev=1051457&r1=1051456&r2=1051457&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/ResourceDecorationApplication.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/resourcedecoration/ResourceDecorationApplication.java Tue Dec 21 11:21:33 2010
@@ -20,6 +20,7 @@ import org.apache.wicket.Application;
 import org.apache.wicket.markup.html.IHeaderResponse;
 import org.apache.wicket.markup.html.IHeaderResponseDecorator;
 import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.resource.filtering.JavaScriptFilteredIntoFooterHeaderResponse;
 
 /**
  * An application showing how to return several resources into a single http response.
@@ -46,10 +47,19 @@ public class ResourceDecorationApplicati
 
 			public IHeaderResponse decorate(IHeaderResponse response)
 			{
-				// add one that aggregates http requests,
-				// but delegates writing of the scripts (or aggregated URL script and link tags) to
-				// the real response
-				return new GroupingHeaderResponse(response);
+				// use grouping header response for the CSS resources, this way we can load several
+				// .css files in one http request. See HomePage#renderHead() header.css and
+				// footer.css
+				GroupingHeaderResponse groupingHeaderResponse = new GroupingHeaderResponse(response);
+
+				// use this header resource decorator to load all JavaScript resources in the page
+				// footer (after </body>)
+				JavaScriptFilteredIntoFooterHeaderResponse javaScriptFooterResponse = new JavaScriptFilteredIntoFooterHeaderResponse(
+					response, "footerJS");
+
+				// finally use one that delegates to the two above
+				return new GroupingAndFilteringHeaderResponse(groupingHeaderResponse,
+					javaScriptFooterResponse);
 			}
 		});
 	}