Author: mgrigorov
Date: Tue Nov  1 13:55:05 2011
New Revision: 1195999

URL: http://svn.apache.org/viewvc?rev=1195999&view=rev
Log:
Add example how to render a (mail) template from a Panel


Added:
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplatePanel.html
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplatePanel.java
Modified:
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplate.html
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplate.java
    
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/TemplateBasedOnPage.java

Modified: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplate.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplate.html?rev=1195999&r1=1195998&r2=1195999&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplate.html
 (original)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplate.html
 Tue Nov  1 13:55:05 2011
@@ -14,6 +14,8 @@
     
     Using Wicket page as template: <a wicket:id="pageBasedLink">generate</a>.
     <br/>
+    Using Wicket panel as template: <a wicket:id="panelBasedLink">generate</a>.
+    <br/>
     Using Wicket TextTemplate as template: <a 
wicket:id="textTemplateBasedLink">generate</a>.
     
     <br/><br/>

Modified: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplate.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplate.java?rev=1195999&r1=1195998&r2=1195999&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplate.java
 (original)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplate.java
 Tue Nov  1 13:55:05 2011
@@ -20,14 +20,18 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import org.apache.wicket.examples.WicketExamplePage;
+import org.apache.wicket.markup.IMarkupResourceStreamProvider;
+import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.MultiLineLabel;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.TextField;
 import org.apache.wicket.markup.html.panel.FeedbackPanel;
+import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.protocol.http.BufferedWebResponse;
@@ -40,15 +44,18 @@ import org.apache.wicket.request.handler
 import org.apache.wicket.request.handler.render.PageRenderer;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.util.resource.IResourceStream;
+import org.apache.wicket.util.resource.StringResourceStream;
 import org.apache.wicket.util.template.PackageTextTemplate;
 import org.apache.wicket.util.template.TextTemplate;
 
 /**
- * An example page that shows how to generate email templates from Wicket 
{@link Page} or
- * {@link TextTemplate}
+ * An example page that shows how to generate email templates from a Wicket 
{@link Page}, a
+ * {@link Panel} or a {@link TextTemplate}
  */
 public class MailTemplate extends WicketExamplePage
 {
+       private static final long serialVersionUID = 1L;
 
        /**
         * The name of the customer for which a mail body will be generated.
@@ -83,6 +90,8 @@ public class MailTemplate extends Wicket
 
                AjaxSubmitLink basedOnPageLink = new 
AjaxSubmitLink("pageBasedLink", form)
                {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
                        protected void onSubmit(AjaxRequestTarget target, 
Form<?> form)
                        {
@@ -99,8 +108,31 @@ public class MailTemplate extends Wicket
                        }
                };
 
+               AjaxSubmitLink basedOnPanelLink = new 
AjaxSubmitLink("panelBasedLink", form)
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form)
+                       {
+                               CharSequence panelHtml = renderPanel(new 
MailTemplatePanel(DummyPage.COMP_ID,
+                                       new 
PropertyModel<String>(MailTemplate.this, "name")));
+
+                               updateResult(result, panelHtml, target);
+                               target.add(feedback);
+                       }
+
+                       @Override
+                       protected void onError(AjaxRequestTarget target, 
Form<?> form)
+                       {
+                               target.add(feedback);
+                       }
+               };
+
                AjaxSubmitLink basedOnTextTemplateLink = new 
AjaxSubmitLink("textTemplateBasedLink", form)
                {
+                       private static final long serialVersionUID = 1L;
+
                        @Override
                        protected void onSubmit(AjaxRequestTarget target, 
Form<?> form)
                        {
@@ -118,7 +150,7 @@ public class MailTemplate extends Wicket
                        }
                };
 
-               add(basedOnPageLink, basedOnTextTemplateLink);
+               add(basedOnPageLink, basedOnPanelLink, basedOnTextTemplateLink);
        }
 
        /**
@@ -180,6 +212,55 @@ public class MailTemplate extends Wicket
        }
 
        /**
+        * Collects the html generated by the rendering of a page.
+        * 
+        * @param panel
+        *            the panel that should be rendered.
+        * @return the html rendered by the panel
+        */
+       private CharSequence renderPanel(final Panel panel)
+       {
+               RequestCycle requestCycle = getRequestCycle();
+
+               final Response oldResponse = requestCycle.getResponse();
+               BufferedWebResponse tempResponse = new 
BufferedWebResponse(null);
+
+               try
+               {
+                       requestCycle.setResponse(tempResponse);
+
+                       DummyPage page = new DummyPage();
+                       page.add(panel);
+
+                       panel.render();
+               }
+               finally
+               {
+                       requestCycle.setResponse(oldResponse);
+               }
+
+               return tempResponse.getText();
+       }
+
+       /**
+        * A page used as a parent for the panel based templating.
+        */
+       private static class DummyPage extends WebPage implements 
IMarkupResourceStreamProvider
+       {
+               private static final long serialVersionUID = 1L;
+
+               private static final String COMP_ID = "dummy";
+
+               public IResourceStream getMarkupResourceStream(MarkupContainer 
container,
+                       Class<?> containerClass)
+               {
+                       return new StringResourceStream("<wicket:container 
wicket:id='" + COMP_ID +
+                               "'></wicket:container>");
+               }
+
+       }
+
+       /**
         * Updates the component that is used to show the generated mail body 
for this example.
         * 
         * @param result

Added: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplatePanel.html
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplatePanel.html?rev=1195999&view=auto
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplatePanel.html
 (added)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplatePanel.html
 Tue Nov  1 13:55:05 2011
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html xmlns:wicket="http://wicket.apache.org";>
+       <head>
+       <title>ignored</title>
+       </head>
+       <body>
+               <wicket:panel>
+            Hello, <span wicket:id="name"></span>
+
+            You receive this email because you are subscribed for our products.
+            We just released a new version of product X.
+            
+            Please download it <a wicket:id="downloadLink">here</a>
+            
+            Sincerely,
+            The Marketing team
+               </wicket:panel>
+       </body>
+</html>
\ No newline at end of file

Added: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplatePanel.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplatePanel.java?rev=1195999&view=auto
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplatePanel.java
 (added)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/MailTemplatePanel.java
 Tue Nov  1 13:55:05 2011
@@ -0,0 +1,54 @@
+/*
+ * 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.asemail;
+
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.ExternalLink;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.request.Url;
+import org.apache.wicket.request.resource.PackageResourceReference;
+
+/**
+ * A demo panel which will be used to render mail template
+ */
+public class MailTemplatePanel extends Panel
+{
+       private static final long serialVersionUID = 1L;
+
+       /**
+        * Constructor.
+        * 
+        * @param id
+        *            the component id
+        * @param nameModel
+        *            the model that brings the customer's name
+        */
+       public MailTemplatePanel(String id, IModel<String> nameModel)
+       {
+               super(id);
+
+               add(new Label("name", nameModel));
+
+               CharSequence relativeUrl = urlFor(new 
PackageResourceReference(MailTemplate.class,
+                       "resource.txt"), null);
+               String href = getRequestCycle().getUrlRenderer().renderFullUrl(
+                       Url.parse(relativeUrl.toString()));
+               ExternalLink downloadLink = new ExternalLink("downloadLink", 
href);
+               add(downloadLink);
+       }
+}

Modified: 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/TemplateBasedOnPage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/TemplateBasedOnPage.java?rev=1195999&r1=1195998&r2=1195999&view=diff
==============================================================================
--- 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/TemplateBasedOnPage.java
 (original)
+++ 
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail/TemplateBasedOnPage.java
 Tue Nov  1 13:55:05 2011
@@ -28,6 +28,8 @@ import org.apache.wicket.request.resourc
  */
 public class TemplateBasedOnPage extends WebPage
 {
+       private static final long serialVersionUID = 1L;
+
        /**
         * Constructor.
         * 


Reply via email to