package org.osm2world.viewer.model; import java.util.Iterator; import java.util.LinkedList; /** * receives and stores the messages that are displayed to the user */ public class MessageManager { //TODO: isn't this a *model* class...? public static final long DEFAULT_MILLISECONDS_TO_LIVE = 3000; public static class Message { public final String messageString; public final long expiration; public Message(String messageString, long expiration) { this.messageString = messageString; this.expiration = expiration; } } private LinkedList<Message> messages = new LinkedList<Message>(); private void addMessage(String message, long millisecondsToLive) { long expiration = System.currentTimeMillis() + millisecondsToLive; messages.add(new Message(message, expiration )); } public void addMessage(String message) { addMessage(message, DEFAULT_MILLISECONDS_TO_LIVE); } public LinkedList<Message> getLiveMessages() { removeExpiredMessages(); return messages; } private void removeExpiredMessages() { long now = System.currentTimeMillis(); for (Iterator<Message> messageIterator = messages.iterator(); messageIterator.hasNext();) { Message message = messageIterator.next(); if (now > message.expiration) { messageIterator.remove(); } } } }