package ilarkesto.ui.usermessage;
import ilarkesto.base.Str;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class UserMessageService {
private List<UserMessage> messages = new ArrayList<UserMessage>();
private List<UserMessageListener> listeners;
public void addListener(UserMessageListener listener) {
if (listeners == null) listeners = new ArrayList<UserMessageListener>(1);
listeners.add(listener);
}
public void info(String message) {
addMessage(new UserMessage(UserMessage.INFO, message));
}
public void warn(String message) {
addMessage(new UserMessage(UserMessage.WARN, message));
}
public void error(String message) {
addMessage(new UserMessage(UserMessage.ERROR, message));
}
public synchronized void addMessage(UserMessage message) {
this.messages.add(message);
if (listeners == null) return;
List<UserMessage> messages = new ArrayList<UserMessage>(1);
messages.add(message);
for (UserMessageListener listener : listeners) {
listener.onUserMessages(messages);
}
}
public synchronized void addMessages(List<UserMessage> messages) {
this.messages.addAll(messages);
if (listeners == null) return;
for (UserMessageListener listener : listeners) {
listener.onUserMessages(messages);
}
}
public synchronized List<UserMessage> getMessages() {
return new ArrayList<UserMessage>(messages);
}
public synchronized void removeMessages(Collection<UserMessage> messages) {
this.messages.removeAll(messages);
}
@Override
public String toString() {
return Str.format(messages);
}
}