hi all,

i was just wondering, if other users might have thought about the usefulness of 
extending FeedbackMessages by a new type ALERT
(and the according classes (Component.alert("message")...).

The reason for this would be, to provide the user special feedback shown 
through a javascript alert (or popup window)
and still have feedbackpanels for errorreporting in a page.

a simple component for showing alertmessages using javascript-alert is included 
in this message.

opinions welcome,

harald

--------------- FeedbackAlertPanel.java --------------------------------
package rd.wicket;

import java.util.Iterator;
import java.util.List;

import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.feedback.FeedbackMessagesModel;
import org.apache.wicket.feedback.IFeedbackMessageFilter;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.AbstractReadOnlyModel;

public class FeedbackAlertPanel extends Panel {
        private static final long serialVersionUID = 1L;

        public FeedbackAlertPanel(String id) {
                this(id, new AlertFeedbackMessageFilter());
        }

        public FeedbackAlertPanel(String id, final IFeedbackMessageFilter 
feedbackMessageFilter) {
                super(id);
                FeedbackMessagesModel model = new FeedbackMessagesModel(this);
                model.setFilter(feedbackMessageFilter);
                setModel(model);
                Label script = new Label("script", new AbstractReadOnlyModel() {

                        private static final long serialVersionUID = 1L;

                        @Override
                        public Object getObject() {
                                return getScriptBody();
                        }

                });
                script.setEscapeModelStrings(false);
                add(script);
        }

        public boolean isVisible() {
                return !((List) getModelObject()).isEmpty();
        }

        private String getScriptBody() {
                StringBuffer sb = new StringBuffer();
                sb.append("Wicket.Event.add(window, \"load\", function() { 
showFeedbackAlert(); });\n");
                sb.append("function showFeedbackAlert() { alert('");
                List messages = (List) getModelObject();
                for (Iterator it = messages.iterator(); it.hasNext();) {
                        FeedbackMessage message = (FeedbackMessage) it.next();
                        message.markRendered();
                        sb.append(message.getMessage());
                        sb.append("\\n");
                }
                sb.append("');");
                sb.append("};");
                return sb.toString();
        }

}


------------------ FeedbackAlertPanel.html ----------------------------
<wicket:panel>
        <script type="text/javascript" wicket:id="script"></script>
</wicket:panel>

------------------ AlertFeedbackMessageFilter.java --------------------

import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.feedback.IFeedbackMessageFilter;

public class AlertFeedbackMessageFilter implements IFeedbackMessageFilter {

        private static final long serialVersionUID = 1L;

        public boolean accept(FeedbackMessage message) {
                return message.getLevel() == FeedbackMessage.ALERT;
        }
        
}

------------------------------------------------------------------------

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to