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 2011/11/01 14:55:05 UTC
svn commit: r1195999 - in
/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/asemail:
MailTemplate.html MailTemplate.java MailTemplatePanel.html
MailTemplatePanel.java TemplateBasedOnPage.java
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.
*