/*
* Copyright 2006-2010 Daniel Henninger. All rights reserved.
*
* This software is published under the terms of the GNU Public License (GPL),
* a copy of which is included in this distribution.
*/
package net.sf.kraken.util.chatstate;
import net.jcip.annotations.ThreadSafe;
import net.sf.kraken.type.ChatStateType;
import org.xmpp.packet.JID;
/**
* An extension of {@link AbstractChatStateUtil} that will generate
* {@link ChatStateChangeEvent}s.
*
* @author Guus der Kinderen
* @see <a
* href="http://xmpp.org/extensions/xep-0085.html">XEP-0085: Chat State Notifications</a>
*/
@ThreadSafe
public class ChatStateEventSource extends AbstractChatStateUtil {
/**
* The event listener that will receive change events.
*/
public final ChatStateEventListener listener;
/**
* Constructs a new instance that will report any changes to the provided
* event listener.
*
* @param listener
* The event listener that will receive change events.
*/
public ChatStateEventSource(final ChatStateEventListener listener) {
this.listener = listener;
}
/* (non-Javadoc)
* @see net.sf.kraken.util.chatstate.AbstractChatStateUtil#sendIsActive(org.xmpp.packet.JID, org.xmpp.packet.JID)
*/
@Override
public void sendIsActive(JID sender, JID receiver) {
final ChatStateChangeEvent event = new ChatStateChangeEvent(sender, receiver, ChatStateType.active);
listener.chatStateChange(event);
}
/* (non-Javadoc)
* @see net.sf.kraken.util.chatstate.AbstractChatStateUtil#sendIsComposing(org.xmpp.packet.JID, org.xmpp.packet.JID)
*/
@Override
public void sendIsComposing(JID sender, JID receiver) {
final ChatStateChangeEvent event = new ChatStateChangeEvent(sender, receiver, ChatStateType.composing);
listener.chatStateChange(event);
}
/* (non-Javadoc)
* @see net.sf.kraken.util.chatstate.AbstractChatStateUtil#sendIsGone(org.xmpp.packet.JID, org.xmpp.packet.JID)
*/
@Override
public void sendIsGone(JID sender, JID receiver) {
final ChatStateChangeEvent event = new ChatStateChangeEvent(sender, receiver, ChatStateType.gone);
listener.chatStateChange(event);
}
/* (non-Javadoc)
* @see net.sf.kraken.util.chatstate.AbstractChatStateUtil#sendIsInactive(org.xmpp.packet.JID, org.xmpp.packet.JID)
*/
@Override
public void sendIsInactive(JID sender, JID receiver) {
final ChatStateChangeEvent event = new ChatStateChangeEvent(sender, receiver, ChatStateType.inactive);
listener.chatStateChange(event);
}
/* (non-Javadoc)
* @see net.sf.kraken.util.chatstate.AbstractChatStateUtil#sendIsPaused(org.xmpp.packet.JID, org.xmpp.packet.JID)
*/
@Override
public void sendIsPaused(JID sender, JID receiver) {
final ChatStateChangeEvent event = new ChatStateChangeEvent(sender, receiver, ChatStateType.paused);
listener.chatStateChange(event);
}
}