001 package org.tynamo.components;
002
003 import org.apache.tapestry5.Asset;
004 import org.apache.tapestry5.MarkupWriter;
005 import org.apache.tapestry5.PersistenceConstants;
006 import org.apache.tapestry5.annotations.Parameter;
007 import org.apache.tapestry5.annotations.Persist;
008 import org.apache.tapestry5.annotations.Property;
009 import org.apache.tapestry5.ioc.Messages;
010 import org.apache.tapestry5.ioc.annotations.Inject;
011 import org.tynamo.FlashMessage;
012
013 /**
014 * Displays message based on the message parameter
015 *
016 * Based on code from tapestry5-appfuse http://code.google.com/p/tapestry5-appfuse/ by Serge Eby
017 *
018 * @author Serge Eby
019 */
020 public class Flash
021 {
022
023 @Property
024 @Persist(PersistenceConstants.FLASH)
025 private FlashMessage message;
026
027 @Inject
028 private Messages messages;
029
030 @Parameter(value = "asset:icon_success_sml.gif")
031 @Property(write = false)
032 private Asset iconInformation;
033
034 @Parameter(value = "asset:icon_warning_sml.gif")
035 @Property(write = false)
036 private Asset iconWarning;
037
038 final boolean beginRender(MarkupWriter writer)
039 {
040 // Skip if no empty of null message
041 if (message == null || "".equals(message.getMessage()))
042 {
043 return false;
044 }
045
046 // Default to success values
047 String clientId = "successMessages";
048 String className = "message";
049 Asset icon = iconInformation;
050 String altName = messages.get("icon.information");
051
052 // Overwrite default values if type is failure
053 if (message.getType() == FlashMessage.MessageType.FAILURE)
054 {
055 clientId = "errorMessages";
056 className = "error";
057 altName = messages.get("icon.warning");
058 icon = iconWarning;
059 }
060
061 writer.element("div", "id", clientId, "class", className);
062 writer.element("img", "src", icon.toClientURL(), "alt", altName, "class", "icon");
063 writer.write(message.getMessage());
064 writer.end(); // img
065
066 writer.end(); // div
067
068 return false;
069 }
070
071 public void addFlashByKey(String key, FlashMessage.MessageType type, Object... args)
072 {
073 this.message = new FlashMessage(messages.format(key, args), type);
074 }
075
076 public void addFlash(String message, FlashMessage.MessageType type)
077 {
078 this.message = new FlashMessage(message, type);
079 }
080 }