/* * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package net.java.sip.communicator.service.protocol; import net.java.sip.communicator.service.protocol.event.*; /** * The operation set allows user bundles (e.g. the user interface) to send * and receive typing notifications to and from other <tt>Contact</tt>s. * <p> * An important thing of typing notifications is that they do not have the * purpose of being relibable. * @author Emil Ivov */ public interface OperationSetTypingNotifications extends OperationSet { /** * Indicates that the typing state of a source contact is not currently * known. You should not normally received events carrying such a state. */ public static final int STATE_UNKNOWN = 0; /** * Indicates that a source contact is currently typing a message to us. */ public static final int STATE_TYPING = 1; /** * Indicates that the typing state of a source contact has not been * updated for a while and is currently stale. */ public static final int STATE_STALE = 2; /** * Indicates that a source contact had been typing a message to us but * has just paused. */ public static final int STATE_PAUSED = 3; /** * Indicates that a source contact had been typing a message to us but * has stopped a while ago. */ public static final int STATE_STOPPED = 4; /** * Adds <tt>l</tt> to the list of listeners registered for receiving * <tt>TypingNotificationEvent</tt>s * @param l the <tt>TypingNotificationsListener</tt> listener that we'd like * to add */ public void addTypingNotificationsListener(TypingNotificationsListener l); /** * Removes <tt>l</tt> from the list of listeners registered for receiving * <tt>TypingNotificationEvent</tt>s * @param l the <tt>TypingNotificationsListener</tt> listener that we'd like * to remove */ public void removeTypingNotificationsListener(TypingNotificationsListener l); /** * Sends a notification to <tt>notifiedContatct</tt> that we have entered * <tt>typingState</tt>. * @param notifiedContact the <tt>Contact</tt> to notify * @param typingState the typing state that we have entered. * * @throws java.lang.IllegalStateException if the underlying ICQ stack is * not registered and initialized. * @throws java.lang.IllegalArgumentException if <tt>notifiedContact</tt> is * not an instance belonging to the underlying implementation. */ public void sendTypingNotification(Contact notifiedContact, int typingState) throws IllegalStateException, IllegalArgumentException; }