1 4 package demo.chatter; 5 6 import java.util.HashMap ; 7 import java.util.List ; 8 import java.util.Map ; 9 import java.util.Vector ; 10 import javax.swing.DefaultListModel ; 11 12 17 class ChatManager { 18 private transient ChatListener listener; 19 20 private List messages; 21 22 private DefaultListModel listModel; 23 24 private Map map; 25 26 public ChatManager() { 27 listModel = new DefaultListModel (); 28 messages = new Vector (); 29 map = new HashMap (); 30 } 31 32 public Message[] getMessages() { 33 return (Message[]) messages.toArray(new Message[0]); 34 } 35 36 public Object [] getCurrentUsers() { 37 synchronized (listModel) { 38 return listModel.toArray(); 39 } 40 } 41 42 public void send(User user, String 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 removeUser(String 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 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 |