/* * Jitsi, 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 java.util.List; import net.java.sip.communicator.service.protocol.event.*; /** * Represents an ad-hoc rendez-vous point where multiple chat users could * communicate together. This interface describes the main methods used by some * protocols for multi user chat, without useless methods (such as kicking a * participant) which aren't supported by these protocols (MSN, ICQ, Yahoo!, * etc.). * * AdHocChatRoom acts like a simplified ChatRoom. * * @author Valentin Martinet */ public interface AdHocChatRoom { /** * Returns the name of this AdHocChatRoom. The name can't be * changed until the AdHocChatRoom is ended. * * @return a String containing the name */ public String getName(); /** * Returns the identifier of this AdHocChatRoom. The identifier of * the ad-hoc chat room would have the following syntax: * [adHocChatRoomName]@[adHocChatRoomServer]@[accountID] * * @return a String containing the identifier of this * AdHocChatRoom. */ public String getIdentifier(); /** * Adds a listener that will be notified of changes in our participation in * the ad-hoc room such as us being join, left... * * @param listener a member participation listener. */ public void addParticipantPresenceListener( AdHocChatRoomParticipantPresenceListener listener); /** * Removes a participant presence listener. * * @param listener a member participation listener. */ public void removeParticipantPresenceListener( AdHocChatRoomParticipantPresenceListener listener); /** * Registers listener so that it would receive events every time a * new message is received on this ad-hoc chat room. * * @param listener a MessageListener that would be notified every * time a new message is received on this ad-hoc chat room. */ public void addMessageListener(AdHocChatRoomMessageListener listener); /** * Removes listener so that it won't receive any further message * events from this ad-hoc room. * * @param listener the MessageListener to remove from this ad-hoc * room */ public void removeMessageListener(AdHocChatRoomMessageListener listener); /** * Invites another Contact to this ad-hoc chat room. * * @param userAddress the address of the Contact of the user to * invite to the ad-hoc room. * @param reason a reason, subject, or welcome message that would tell * users why they are being invited. */ public void invite(String userAddress, String reason); /** * Returns a List of Contacts corresponding to all * participants currently participating in this room. * * @return a List of Contacts instances * corresponding to all room members. * @throws OperationFailedException if we fail retrieving the list of room * participants. */ public List getParticipants(); /** * Returns the number of participants that are currently in this ad-hoc * chat room. * @return int the number of Contacts, currently participating in * this ad-hoc room. */ public int getParticipantsCount(); /** * Create a Message instance for sending a simple text messages * with default (text/plain) content type and encoding. * * @param messageText the string content of the message. * @return Message the newly created message */ public Message createMessage(String messageText); /** * Sends the Message to this ad-hoc chat room. * * @param message the Message to send. * @throws OperationFailedException if sending the message fails for some * reason. */ public void sendMessage(Message message) throws OperationFailedException; /** * Returns a reference to the provider that created this room. * * @return a reference to the ProtocolProviderService instance * that created this ad-hoc room. */ public ProtocolProviderService getParentProvider(); /** * Joins this ad-hoc chat room with the nickname of the local user so that * the user would start receiving events and messages for it. * * @throws OperationFailedException with the corresponding code if an error * occurs while joining the ad-hoc room. */ public void join() throws OperationFailedException; /** * Leaves this chat room. Once this method is called, the user won't be * listed as a member of the chat room any more and no further chat events * will be delivered. */ public void leave(); }