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