KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > getahead > dwrdemo > chat > JavascriptChat


1 package org.getahead.dwrdemo.chat;
2
3 import java.util.Collection JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.LinkedList JavaDoc;
6
7 import org.directwebremoting.ScriptBuffer;
8 import org.directwebremoting.ScriptSession;
9 import org.directwebremoting.WebContext;
10 import org.directwebremoting.WebContextFactory;
11 import org.directwebremoting.util.Logger;
12
13 /**
14  * @author Joe Walker [joe at getahead dot ltd dot uk]
15  */

16 public class JavascriptChat
17 {
18     /**
19      * @param text The new message text to add
20      */

21     public void addMessage(String JavaDoc text)
22     {
23         if (text != null && text.trim().length() > 0)
24         {
25             messages.addFirst(new Message(text));
26             while (messages.size() > 10)
27             {
28                 messages.removeLast();
29             }
30         }
31
32         WebContext wctx = WebContextFactory.get();
33         String JavaDoc currentPage = wctx.getCurrentPage();
34
35         ScriptBuffer script = new ScriptBuffer();
36         script.appendScript("receiveMessages(")
37               .appendData(messages)
38               .appendScript(");");
39
40         // Loop over all the users on the current page
41
Collection JavaDoc pages = wctx.getScriptSessionsByPage(currentPage);
42         for (Iterator JavaDoc it = pages.iterator(); it.hasNext();)
43         {
44             ScriptSession otherSession = (ScriptSession) it.next();
45             otherSession.addScript(script);
46         }
47     }
48
49     /**
50      * The current set of messages
51      */

52     private LinkedList JavaDoc messages = new LinkedList JavaDoc();
53
54     /**
55      * The log stream
56      */

57     protected static final Logger log = Logger.getLogger(JavascriptChat.class);
58 }
59
Popular Tags