KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > demo > chatter > ChatManager


1 /*
2  @COPYRIGHT@
3  */

4  package demo.chatter;
5
6  import java.util.HashMap JavaDoc;
7  import java.util.List JavaDoc;
8  import java.util.Map JavaDoc;
9  import java.util.Vector JavaDoc;
10  import javax.swing.DefaultListModel JavaDoc;
11
12  /**
13   * Description of the Class
14   *
15   *@author Terracotta, Inc.
16   */

17  class ChatManager {
18     private transient ChatListener listener;
19
20     private List JavaDoc messages;
21
22     private DefaultListModel JavaDoc listModel;
23
24     private Map JavaDoc map;
25
26     public ChatManager() {
27        listModel = new DefaultListModel JavaDoc();
28        messages = new Vector JavaDoc();
29        map = new HashMap JavaDoc();
30     }
31
32     public Message[] getMessages() {
33        return (Message[]) messages.toArray(new Message[0]);
34     }
35
36     public Object JavaDoc[] getCurrentUsers() {
37        synchronized (listModel) {
38           return listModel.toArray();
39        }
40     }
41
42     public void send(User user, String JavaDoc message) {
43        Message msg = new Message(user, message);
44        synchronized (messages) {
45           messages.add(msg);
46        }
47        sendNewMessageEvent(msg);
48     }
49
50     public void registerUser(User user) {
51        this.listener = user;
52        synchronized (listModel) {
53           listModel.addElement(user);
54           map.put(user.getNodeId(), user);
55        }
56        sendNewUserEvent(user.getName());
57     }
58
59     public String JavaDoc removeUser(String JavaDoc nodeId) {
60        synchronized (listModel) {
61           if (map.containsKey(nodeId)) {
62              User removedUser = (User) map.get(nodeId);
63              listModel.removeElement(removedUser);
64              return removedUser.getName();
65           }
66           else {
67              return "";
68           }
69        }
70     }
71
72     private synchronized void sendNewUserEvent(String JavaDoc username) {
73        this.listener.newUser(username);
74     }
75
76     private synchronized void sendNewMessageEvent(Message message) {
77        this.listener.newMessage(message);
78     }
79  }
80
Popular Tags