package org.vaadin.chatbox.demo;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import org.vaadin.chatbox.SharedChat;
import org.vaadin.chatbox.SharedChat.ChatListener;
import org.vaadin.chatbox.client.ChatLine;
public class SentNotifier implements ChatListener {
private final static SimpleDateFormat longFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm z");
private final Timer timer = new Timer();
private final SharedChat chat;
private final long delay;
private int n = 0;
public SentNotifier(SharedChat chat, long delayMs) {
this.chat = chat;
this.delay = delayMs;
}
synchronized private int incr() {
return ++n;
}
synchronized private int decr() {
return --n;
}
@Override
public void lineAdded(ChatLine line) {
if (line.getUser()==null) {
return;
}
incr();
timer.schedule(new TimerTask() {
@Override
public void run() {
if (decr()==0) {
String date = longFormat.format(new Date(new Date().getTime()-delay));
chat.addLine("Sent on " + date+"");
}
}}, delay);
}
}