/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.service.protocol; import java.util.*; 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, etc.). * * <tt>AdHocChatRoom</tt> acts like a simplified <tt>ChatRoom</tt>. * * @author Valentin Martinet */ public interface AdHocChatRoom { /** * Returns the name of this <tt>AdHocChatRoom</tt>. The name can't be * changed until the <tt>AdHocChatRoom</tt> is ended. * * @return a <tt>String</tt> containing the name */ public String getName(); /** * Returns the identifier of this <tt>AdHocChatRoom</tt>. The identifier of * the ad-hoc chat room would have the following syntax: * [adHocChatRoomName]@[adHocChatRoomServer]@[accountID] * * @return a <tt>String</tt> containing the identifier of this * <tt>AdHocChatRoom</tt>. */ 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 <tt>listener</tt> so that it would receive events every time a * new message is received on this ad-hoc chat room. * * @param listener a <tt>MessageListener</tt> that would be notified every * time a new message is received on this ad-hoc chat room. */ public void addMessageListener(AdHocChatRoomMessageListener listener); /** * Removes <tt>listener</tt> so that it won't receive any further message * events from this ad-hoc room. * * @param listener the <tt>MessageListener</tt> to remove from this ad-hoc * room */ public void removeMessageListener(AdHocChatRoomMessageListener listener); /** * Invites another <tt>Contact</tt> to this ad-hoc chat room. * * @param userAddress the address of the <tt>Contact</tt> 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 <tt>List</tt> of <tt>Contact</tt>s corresponding to all * participants currently participating in this room. * * @return a <tt>List</tt> of <tt>Contact</tt>s instances * corresponding to all room members. */ public List<Contact> getParticipants(); /** * Returns the number of participants that are currently in this ad-hoc * chat room. * @return int the number of <tt>Contact</tt>s, currently participating in * this ad-hoc room. */ public int getParticipantsCount(); /** * Create a <tt>Message</tt> 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 <tt>Message</tt> to this ad-hoc chat room. * * @param message the <tt>Message</tt> 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 <tt>ProtocolProviderService</tt> 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(); }