Advertisement
Guest User

Alex Objelean

a guest
Jun 1st, 2009
497
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.38 KB | None | 0 0
  1. public class JGrowlBehavior extends AbstractDefaultAjaxBehavior {
  2.   /**
  3.    * serialVersionUID
  4.    */
  5.   private static final long serialVersionUID = 1L;
  6.     /** reference to the default indicator gif file. */
  7.     public static final ResourceReference JGROWL_JS = new ResourceReference(
  8.         MyApplication.class, "ref/jgrowl.js");
  9.   /**
  10.    * Model containing a list of feedback messages.
  11.    */
  12.   private FeedbackMessagesModel feedbackModel;
  13.  
  14.   /**
  15.    * {@inheritDoc}
  16.    */
  17.   @Override
  18.   public void beforeRender(final Component component) {
  19.     super.beforeRender(component);
  20.     feedbackModel = new FeedbackMessagesModel(component);
  21.   }
  22.  
  23.   /**
  24.    * @param message
  25.    */
  26.   private String buildNotice(final FeedbackMessage message) {
  27.     final StringBuffer sb = new StringBuffer("jQuery.noticeAdd(");
  28.     final Map<String, Object> map = new HashMap<String, Object>();
  29.     map.put("text", JavascriptUtils.escapeQuotes(message.getMessage()
  30.         .toString()));
  31.     if (message.getLevel() == FeedbackMessage.INFO) {
  32.       map.put("type", "info");
  33.       map.put("stay", Boolean.TRUE);
  34.     } else if (message.getLevel() == FeedbackMessage.ERROR) {
  35.       map.put("type", "error");
  36.       map.put("stay", Boolean.FALSE);
  37.     }
  38.     sb.append(MyUtils.mapToJSON(map));
  39.     sb.append(");");
  40.     return sb.toString();
  41.   }
  42.  
  43.   /**
  44.    * @return feedback messages. This method is safe to call even if the model
  45.    *         was not initialized.
  46.    */
  47.   private List<FeedbackMessage> getFeedbackMessages() {
  48.     return feedbackModel == null ? null : feedbackModel.getObject();
  49.   }
  50.  
  51.   /**
  52.    * {@inheritDoc}
  53.    */
  54.   private String getJavascript() {
  55.     final StringBuffer js = new StringBuffer();
  56.     final List<FeedbackMessage> messages = getFeedbackMessages();
  57.     if (messages != null) {
  58.       for (final FeedbackMessage message : feedbackModel.getObject()) {
  59.         buildNotice(message);
  60.         js.append(buildNotice(message));
  61.       }
  62.     }
  63.     return js.toString();
  64.   }
  65.  
  66.   /**
  67.    * {@inheritDoc}
  68.    */
  69.   @Override
  70.   public void renderHead(final IHeaderResponse response) {
  71.     super.renderHead(response);
  72.     response.renderJavascriptReference(JGROWL_JS);
  73.     response.renderOnDomReadyJavascript(getJavascript());
  74.   }
  75.  
  76.   /**
  77.    * {@inheritDoc}
  78.    */
  79.   @Override
  80.   protected void respond(final AjaxRequestTarget target) {
  81.     target.appendJavascript(getJavascript());
  82.   }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement