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    }