package org.limewire.ui.swing.friends.chat;
import org.limewire.friend.api.ChatState;
import org.limewire.friend.api.MessageReader;
import org.limewire.listener.EventBroadcaster;
class MessageReaderImpl implements MessageReader {
private final ChatFriend chatFriend;
private final EventBroadcaster<ChatMessageEvent> messageList;
private final EventBroadcaster<ChatStateEvent> chatStateList;
MessageReaderImpl(ChatFriend chatFriend,
EventBroadcaster<ChatMessageEvent> messageList,
EventBroadcaster<ChatStateEvent> chatStateList) {
this.chatFriend = chatFriend;
this.messageList = messageList;
this.chatStateList = chatStateList;
}
@Override
public void readMessage(final String message) {
if (message != null) {
final Message msg = newMessage(message, Message.Type.RECEIVED);
messageList.broadcast(new ChatMessageEvent(msg));
}
}
private Message newMessage(String message, Message.Type type) {
return new MessageTextImpl(chatFriend.getName(), chatFriend.getID(), type, message);
}
@Override
public void newChatState(ChatState chatState) {
chatStateList.broadcast(new ChatStateEvent(chatFriend.getID(), chatState));
}
@Override
public void error(String errorMessage) {
ErrorMessage errMsg = new ErrorMessage(chatFriend.getID(),
errorMessage, Message.Type.SERVER);
messageList.broadcast(new ChatMessageEvent(errMsg));
}
}