List Info

Thread: Re: Chat room related services...




Re: Chat room related services...
user name
2007-06-21 09:56:35
Hi Stéphane,

I understand what is bothering you. When I started renaming
the fields 
as you proposed I couldn't get rid of the idea that all
these are 
actually properties of the chat room. Finally after an
off-list 
discussion with Emil we've decided to make all known
configuration 
params - properties in the chat room and to have a method
that allows to 
add advanced configuration properties by specifying a
property name and 
value. You could have a look at the ChatRoom interface and
see how it 
looks after the modifications.

I have some doubts about some of the properties and I would
like to ask 
you to have a more detailed look at the following methods:

- isAllowInvitationSend, isAllowInvitationReceive
(respectively the set 
methods) - these methods correspond the following params: 
CHATROOM_INVITATION_ALLOWED,
CHATROOM_INVITATION_REQUEST_ALLOWED. The 
names of the properties were a little confusing (the
direction of the 
invitation is not clear) and I've tried to make them more 
understandable, but I'm not sure if I understand correctly
their 
meaning. Also if you have another suggestion for the name if
you don't 
like that?

- isAllowMessageFormatting, isFilterMessageFormatting -
these two 
correspond to CHATROOM_MESSAGE_FORMAT_ALLOWED, 
CHATROOM_MESSAGE_FORMAT_FILTERED. Is it possible to be in a
message 
format allowed mode and to have formatted messages
filtered?

That's all.

Also, any comments and corrections are appreciated)

Yana

Stéphane Remy wrote:
> Hi Yana,
> 
> I've found other problems in the services, can you
changes this in 
> ChatRoomConfigParam:
> 
> -Change CHAT_ROOM_EXTERNAL_MESSAGE_ALLOWED into 
> CHAT_ROOM_EXTERNAL_MESSAGE_REFUSED
> 
> -Change CHAT_ROOM_VISIBLE into CHAT_ROOM_INVISIBLE
> 
> -Change CHAT_ROOM_SPECIAL_MESSAGES_ALLOWED into 
> CHAT_ROOM_SPECIAL_MESSAGES_REFUSED
> 
> -Change CHAT_ROOM_NICKNAME_LIST_VISIBLE into 
> CHAT_ROOM_NICKNAME_LIST_INVISIBLE
> 
> -Change CHAT_ROOM_INVITATION_ALLOWED into
CHAT_ROOM_INVITATION_REFUSED
> 
> -Change CHAT_ROOM_MESSAGE_FORMAT_ALLOWED into 
> CHAT_ROOM_MESSAGE_FORMAT_BLOCKED
> 
> -Change CHAT_ROOM_INVITATION_REQUEST_ALLOWED into 
> CHAT_ROOM_INVITATION_REQUEST_REFUSED
> 
> This changes are because by default they are allowed or
visible.
> 
> Thanks Yana
> 
> Stéphane
> 
> Yana Stamcheva <yanasip-communicator.org> a
écrit :
> 
>> Hi Stephane,
>>
>> thanks for the remarks! I've just applied your
fixes and committed them
>> to the CVS.
>>
>> Yana
>>
>> Stéphane Remy wrote:
>>> Hi Yana,
>>>
>>> Sorry for the late answer. I updated my code
with your changes and  
>>> i'm ok with all you've done. I just noticed two
things you forgot  to 
>>> change:
>>>
>>> In ChatRoomPropertyChangeEvent:
>>>
>>> You forgot to change PROPERTY_STATE_CHANGED
into 
>>> PROPERTY_CONFIG_CHANGED.
>>>
>>> In ChatRoomConfigParam:
>>>
>>> You forgot to remove _CHAT_ROOM_NOT_VISIBLE.
>>>
>>> Stéphane
>>>
>>> Yana Stamcheva <yanasip-communicator.org> a
écrit :
>>>
>>>> Hi Stephane,
>>>>
>>>> very well structured and complete code!
You've done a very good work!
>>>>
>>>> I have just committed your code to the cvs.
I had to make some minor
>>>> modifications so the code fit better to SIP
Communicator 
>>>> conventions, you
>>>> could see the list of changes below.
>>>>
>>>> General modifications
>>>> ==============
>>>> - Removed special characters from author
name - Stéphane was renamed to
>>>> Stephane
>>>>
>>>> - Added additional comments where needed
>>>>
>>>> - Renamed
>>>> - ChatRoomLocalUserParticipationChangeEvent
to
>>>> ChatRoomLocalUserPresenceChangeEvent
>>>> - ChatRoomLocalUserParticipationListener
to
>>>> ChatRoomLocalUserPresenceListener -
>>>> - ChatRoomMemberParticipationChangeEvent
to
>>>> ChatRoomMemberPresenceChangeEvent
>>>> - ChatRoomMemberParticipationListener to
ChatRoomMemberPresenceListener
>>>>
>>>> After a discussion with Emil we decided to
take the "Presence"  
>>>> name, it
>>>> appears more intuitive
>>>>
>>>> ChatRoom
>>>> ========
>>>> - Added some additional comments to
setUserLimit, addBanMask,  
>>>> removeBanMask,
>>>> getBanList, getUserLimit - to explain some
more details on what ban 
>>>> mask or
>>>> ban list is, what is the user limit about,
etc.
>>>>
>>>> - Renamed setState to addConfigParam - we
renamed also the 
>>>> ChatRoomState
>>>> class to ChatRoomConfigParam. I had a look
in the ChatRoomState 
>>>> class and I
>>>> would say that properties there are rather
configuration patameters 
>>>> and not
>>>> chat room states.
>>>>
>>>> - Added removeConfigParam,
getSupportedConfigurationParams and
>>>> getConfiguration - in order to be able to
remove a configuration 
>>>> parameter,
>>>> to obtain the list of configuration
paramaters supported by the current
>>>> implementation and to obtain the current
chat room configuration.
>>>>
>>>> - Added getPassword method - it was only a
setPassword.
>>>>
>>>> - Removed final modifiers for String and
int parameters - Java API 
>>>>  says that
>>>> "Strings are constant; their values
cannot be changed after they are
>>>> created" . And ints are not objects
and they're copied by value (i.e. a
>>>> brand new copy is created and is passed to
the method), so the final
>>>> modifier is redundant in this case.
>>>>
>>>> ChatRoomState
>>>> =============
>>>> - Renamed to ChatRoomConfigParam - as I
already mentioned the name 
>>>> wasn't
>>>> very well fitting the content of the class,
so we tried to make it more
>>>> intuitive
>>>>
>>>> - Formatted the code - lines were longer
than 80 columns
>>>>
>>>> - Added additional comments
>>>>
>>>> - Removed CHAT_ROOM_PASSWORD_NOT_REQUIRED, 

>>>> CHATROOM_INVITATION_NOT_REQUIRED,
>>>> CHATROOM_USER_NUMBER_NOT_LIMITED,
CHATROOM_NOT_MUTE,
>>>> CHATROOM_EXTERNAL_MESSAGES_NOT_ALLOWED,
CHATROOM_NOT_REGISTERED,
>>>> CHATROOM_SUBJECT_NOT_LOCKED,
CHATROOM_MESSAGE_FORMAT_NOT_ALLOWED,
>>>> CHATROOM_MESSAGE_FORMAT_NOT_FILTERED, 
>>>> CHATROOM_JOIN_TIME_NOT_LIMITED, etc.
>>>>
>>>> - Renamed CHAT_ROOM_USER_REGISTERED to 
>>>> CHAT_ROOM_ONLY_REGISTERED_USER - I
>>>> think it's more intuitive this way
>>>>
>>>> - All _XXX String constants are changed to
protected - they will be 
>>>> used
>>>> only internaly and may be by descendants
>>>>
>>>> ChatRoomInvitation
>>>> ==================
>>>> - get back the name of the author of the
class - should not remove 
>>>> the name
>>>> of the author even if the class was almost
empty and we wrote the whole
>>>> implementation
>>>>
>>>> ChatRoomPropertyChangeEvent
>>>> ===========================
>>>> - get back the name of the author of the
class
>>>>
>>>> - Removed the getProtocolProvider method -
the protocol provider 
>>>> could be
>>>> obtained from the chat room and has nothing
to do in the context of 
>>>> this
>>>> event
>>>>
>>>> - Removed the reason field - I don't think
we need to have the String
>>>> reason, I don't really see for what it
could be used.
>>>>
>>>> - Added getOldValue and getNewValue methods
- in order to be able to 
>>>> obtain
>>>> previous and new property values
>>>>
>>>> That's all for now.
>>>>
>>>> Thanks again Stephane and Loic for the
great work! I'll continue 
>>>> with the
>>>> irc implementation now and soon we'll have
all your work on cvs.
>>>>
>>>> If you have any remarks on above changes
you're welcome to express 
>>>>  yourself.
>>>>
>>>> Regards,
>>>> Yana
>>>>
>>>> On 5/21/07, Stéphane Remy
<stephane.remyulp.u-strasbg.fr> wrote:
>>>>>
>>>>> Hi Yana,
>>>>>
>>>>> I have made a lot of changes again to
this services, i hope i didn't
>>>>> forget something, otherwise don't
hesitate to tell it to me i will
>>>>> fixe it.
>>>>>
>>>>> Quoting Yana Stamcheva <yanasip-communicator.org>:
>>>>>
>>>>>> Hi Stephane,
>>>>>>
>>>>>> Sorry for the late response. You
have done really good work here. 
>>>>>> Bravo!
>>>>>>
>>>>>> I would propose just some minor
changes to discuss:
>>>>>> - In ChatRoomMemberRoleListener we
should called the method
>>>>>> memberRoleChanged, instead of
memberStatusChanged. (I think it's a 
>>>>>> copy
>>>>>> paste error)
>>>>>
>>>>> I have changed that.
>>>>>
>>>>>> - In ChatRoomInvitatioXXXEvent we
should rename the method
>>>>>> getSourceMessage to
getSourceInvitation or getChatRoomInvitation,
>>>>>> because actually it returns a
ChatRoomInvitation.
>>>>>
>>>>> It's fixed too.
>>>>>
>>>>>> - After a discussion with Emil we
think that it would be correct that
>>>>>> ChatRoomPropertyChangeEvent extends
java.beans.PropertyChangeEvent 
>>>>>> and
>>>>>> thus it should implement
getOldValue and getNewValue methods.
>>>>>
>>>>> For this part i have made a lot of
changes, i have used the
>>>>> java.beans.PropertyChangeEvent, but i
have also created a class name
>>>>> ChatRoomState which contains all the
possible states for a chat room.
>>>>>
>>>>>> - We have some doubts for the name
TOPIC_CHANGED. In the ChatRoom we
>>>>>> already have a property called
"subject", so may be it's better to 
>>>>>> call
>>>>>> it SUBJECT_CHANGED here also.
>>>>>
>>>>> It's fixed too.
>>>>>
>>>>>> - In fact all the names of
properties in the
>>>>>> ChatRoomPropertyChangeEvent are not
very well matching the convention
>>>>>> used for property names. We should
change them may be by replacing 
>>>>>> MODE
>>>>>> with PROPERTY and further more by
adjusting better the names so that
>>>>>> they are more intuitive.
>>>>>
>>>>> I have made them as intuitive as
possible this time, but if you find
>>>>> better words to make them more
intuitive just tell me.
>>>>>
>>>>>> - And finally all properties
defined in the 
>>>>>> ChatRoomPropertyChangeEvent
>>>>>> should also exist as properties in
the ChatRoom, because they are
>>>>>> actually properties of the chat
room and we should be able to get and
>>>>>> set their value from there.
>>>>>
>>>>> I have changed this too.
>>>>>
>>>>>>
>>>>>> That's all for now. May be Emil
will have something to add.
>>>>>>
>>>>>> I should say one more time
congratulations for the work 
>>>>>>
>>>>>> Yana
>>>>>
>>>>> Fot the ChatRoomState class i'm not
sure if it is the best way to do,
>>>>> so tell me what do you think about it.
>>>>>
>>>>> Stéphane
>>>>>
>>>>> here is the patch:
>>>>>
>>>>> ### Eclipse Workspace Patch 1.0
>>>>> #P sip-communicator
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserStatusChangeEvent.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserStatusChangeEvent.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserStatusChangeEvent.java  
>>>>> ---
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserStatusChangeEvent.java      
>>>>> 22
>>>>> Feb 2007 12:36:02
>>>>> -0000   1.1
>>>>> +++ /dev/null   1 Jan 1970 00:00:00
-0000
>>>>>  -1,23 +0,0 
>>>>> -/*
>>>>> - * 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.event;
>>>>> -
>>>>> -/**
>>>>> - * Dispatched to notify interested
parties that a change in our 
>>>>> status in
>>>>> the
>>>>> - * source room has changed. Changes
may include us being kicked, 
>>>>> banned,
>>>>> or
>>>>> - * granted admin permissions.
>>>>> - *
>>>>> - * author Emil Ivov
>>>>> - */
>>>>> -public class
ChatRoomLocalUserStatusChangeEvent
>>>>> -{
>>>>> -    public
ChatRoomLocalUserStatusChangeEvent()
>>>>> -    {
>>>>> -        super();
>>>>> -    }
>>>>> -
>>>>> -}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberListener.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberListener.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberListener.java  
>>>>> ---
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberListener.java          
>>>>> 23
>>>>> Apr 2007 18:11:29
>>>>> -0000   1.1
>>>>> +++ /dev/null   1 Jan 1970 00:00:00
-0000
>>>>>  -1,27 +0,0 
>>>>> -/*
>>>>> - * 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.event;
>>>>> -
>>>>> -import java.util.*;
>>>>> -
>>>>> -/**
>>>>> - * Adds a listener that will be
notified of changes in the status 
>>>>> of the
>>>>> chat
>>>>> - * participants in a particular chat
room, such as us being kicked,
>>>>> banned, or
>>>>> - * granted admin permissions.
>>>>> - * author Emil Ivov
>>>>> - */
>>>>> -public interface
ChatRoomMemberListener
>>>>> -    extends EventListener
>>>>> -{
>>>>> -    /**
>>>>> -     * Called to notify interested
parties that a change in the 
>>>>> status of
>>>>> the
>>>>> -     * source room participant has
changed. Changes may include the
>>>>> participant
>>>>> -     * being kicked, banned, or
granted admin permissions.
>>>>> -     */
>>>>> -    public void memberStatusChanged(
ChatRoomMemberEvent evt );
>>>>> -
>>>>> -}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mPropertyChangeEvent.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
/cvs/sip-communicator/src/net/java/sip/communicator/service/
protocol/event/ChatRoomPropertyChangeEvent.java,v 
>>>>> retrieving revision  1.1
>>>>> diff -u -r1.1
ChatRoomPropertyChangeEvent.java
>>>>> ---
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mPropertyChangeEvent.java 
>>>>> 22 Feb 2007  12:37:18
>>>>> -0000   1.1
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mPropertyChangeEvent.java 
>>>>> 21 May 2007  07:05:35
>>>>> -0000
>>>>>  -6,22 +6,114 
>>>>>  */
>>>>> package
net.java.sip.communicator.service.protocol.event;
>>>>>
>>>>> -import java.util.*;
>>>>> +import
net.java.sip.communicator.service.protocol.ChatRoom;
>>>>> +import 
>>>>>
net.java.sip.communicator.service.protocol.ProtocolProviderS
ervice
>>>>> ;
>>>>>
>>>>> /**
>>>>>  *
<tt>ChatRoomChangeEvent</tt>s are fired to
indicate that a property
>>>>> of
>>>>> - * the corresponding chat room (e.g.
its subject or type) have been
>>>>> modified.
>>>>> + * the corresponding chat room (e.g.
its subject or state) have been
>>>>> modified.
>>>>>  * The event contains references to the
source chat room and
>>>>> provider, the name
>>>>>  * of the property that has just
changed as well as its old and new
>>>>> values.
>>>>>  *
>>>>> - * author Emil Ivov
>>>>> + * author Stéphane Remy
>>>>>  */
>>>>> public class
ChatRoomPropertyChangeEvent
>>>>> -    extends EventObject
>>>>> +    extends
java.beans.PropertyChangeEvent
>>>>> {
>>>>> -    public
ChatRoomPropertyChangeEvent(Object source)
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * chat room subject being
changed.
>>>>> +     */
>>>>> +    public static final String
PROPERTY_SUBJECT_CHANGED =
>>>>> "SubjectChanged";
>>>>> +
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * chat room ban list being
changed.
>>>>> +     */
>>>>> +    public static final String
PROPERTY_BAN_LIST_CHANGED =
>>>>> "BanListChanged";
>>>>> +
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * chat room user limit being
changed.
>>>>> +     */
>>>>> +    public static final String
PROPERTY_USER_LIMIT_CHANGED =
>>>>> "UserLimitChanged";
>>>>> +
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * chat room state changed.
>>>>> +     */
>>>>> +    public static final String
PROPERTY_STATE_CHANGED = 
>>>>> "StateChanged";
>>>>> +
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * chat room password being
changed.
>>>>> +     */
>>>>> +    public static final String
PROPERTY_PASSWORD_CHANGED =
>>>>> "PasswordChanged";
>>>>> +
>>>>> +    /**
>>>>> +     * An optional String indicating a
possible reason why the event
>>>>> +     * might have occurred.
>>>>> +     */
>>>>> +    private String reason = null;
>>>>> +
>>>>> +    public
ChatRoomPropertyChangeEvent(ChatRoom source,
>>>>> +                                      
                String
>>>>> propertyName,
>>>>> +                                      
                Object 
>>>>> oldValue,
>>>>> +                                      
                Object 
>>>>> newValue,
>>>>> +                                String
reason)
>>>>> +    {
>>>>> +        super(source, propertyName,
oldValue, newValue);
>>>>> +        this.reason = reason;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the source chat room
for this event.
>>>>> +     *
>>>>> +     * return the
<tt>ChatRoom</tt> associated with this
>>>>> +     * event.
>>>>> +     */
>>>>> +    public ChatRoom
getSourceChatRoom()
>>>>> +    {
>>>>> +        return (ChatRoom)getSource();
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns a reference to the
protocol provider where the 
>>>>> event has
>>>>> +     * originated.
>>>>> +     * <p>
>>>>> +     * return a reference to the
ProtocolProviderService instance 
>>>>> where
>>>>> this
>>>>> +     * event originated.
>>>>> +     */
>>>>> +    public ProtocolProviderService
getProtocolProvider()
>>>>> +    {
>>>>> +        return
getSourceChatRoom().getParentProvider();
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * A reason string indicating a
human readable reason for this 
>>>>> event.
>>>>> +     *
>>>>> +     * return a human readable
String containing the reason for this
>>>>> event,
>>>>> +     * or null if no particular reason
was specified.
>>>>> +     */
>>>>> +    public String getReason()
>>>>> +    {
>>>>> +        return reason;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns a String representation
of this event.
>>>>> +     */
>>>>> +    public String toString()
>>>>>     {
>>>>> -        super(source);
>>>>> +        return
"ChatRoomPropertyChangeEvent[type="
>>>>> +            + this.getPropertyName()
>>>>> +            + "
sourceRoom="
>>>>> +            +
this.getSource().toString()
>>>>> +            + "oldValue="
>>>>> +            +
this.getOldValue().toString()
>>>>> +            + "newValue="
>>>>> +            +
this.getNewValue().toString()
>>>>> +            + "]";
>>>>>     }
>>>>>
>>>>> }
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberEvent.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberEvent.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberEvent.java  
>>>>> ---
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberEvent.java 
>>>>> 23 Apr 2007  18:11:22
>>>>> -0000   1.1
>>>>> +++ /dev/null   1 Jan 1970 00:00:00
-0000
>>>>>  -1,124 +0,0 
>>>>> -/*
>>>>> - * 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.event;
>>>>> -
>>>>> -import java.util.*;
>>>>> -import
net.java.sip.communicator.service.protocol.*;
>>>>> -
>>>>> -/**
>>>>> - * Dispatched to notify interested
parties that a change in the 
>>>>> status of
>>>>> the
>>>>> - * source room participant has
changed. Changes may include the
>>>>> participant
>>>>> - * being kicked, banned, or granted
admin permissions.
>>>>> - *
>>>>> - * author Emil Ivov
>>>>> - */
>>>>> -public class ChatRoomMemberEvent
>>>>> -    extends EventObject
>>>>> -{
>>>>> -    /**
>>>>> -     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> -     * participant joining the source
chat room.
>>>>> -     */
>>>>> -    public static final String
MEMBER_JOINED = "MemberJoined";
>>>>> -
>>>>> -    /**
>>>>> -     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> -     * participant being
"kicked" out of the chat room.
>>>>> -     */
>>>>> -    public static final String
MEMBER_LEFT = "MemberJoined";
>>>>> -
>>>>> -   /**
>>>>> -    * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> -    * participant leaving the source
chat room.
>>>>> -    */
>>>>> -    public static final String
MEMBER_KICKED = "MemberKicked";
>>>>> -
>>>>> -    /**
>>>>> -     * The member that the event
relates to.
>>>>> -     */
>>>>> -    private ChatRoomMember
sourceMember = null;
>>>>> -
>>>>> -    /**
>>>>> -     * The type of this event. Values
can be any of the MEMBER_XXX-ED
>>>>> fields.
>>>>> -     */
>>>>> -    private String eventType = null;
>>>>> -
>>>>> -    /**
>>>>> -     * An optional String indicating a
possible reason as to why the
>>>>> event
>>>>> -     * might have occurred.
>>>>> -     */
>>>>> -    private String reason = null;
>>>>> -
>>>>> -
>>>>> -    public
ChatRoomMemberEvent(ChatRoom       sourceRoom,
>>>>> -                              
ChatRoomMember sourceMember,
>>>>> -                               String 
       eventType,
>>>>> -                               String 
       reason )
>>>>> -    {
>>>>> -        super(sourceRoom);
>>>>> -        this.sourceMember =
sourceMember;
>>>>> -        this.eventType = eventType;
>>>>> -        this.reason = reason;
>>>>> -    }
>>>>> -
>>>>> -    /**
>>>>> -     * Returns the source chat room
for this event.
>>>>> -     *
>>>>> -     * return the
<tt>ChatRoom</tt> associated with that is the
>>>>> source of this
>>>>> -     * event and that the
corresponding ChatRoomMemberBelongs to.
>>>>> -     */
>>>>> -    public ChatRoom getChatRoom()
>>>>> -    {
>>>>> -        return (ChatRoom)getSource();
>>>>> -    }
>>>>> -
>>>>> -    /**
>>>>> -     * Returns the member that this
event is pertaining to.
>>>>> -     * return the
<tt>ChatRoomMember</tt> that this event is 
>>>>> pertaining
>>>>> to.
>>>>> -     */
>>>>> -    public ChatRoomMember
getChatRoomMember()
>>>>> -    {
>>>>> -        return sourceMember;
>>>>> -    }
>>>>> -
>>>>> -    /**
>>>>> -     * A reason string indicating a
human readable reason for this 
>>>>> event.
>>>>> -     *
>>>>> -     * return a human readable
String containing the reason for this
>>>>> event,
>>>>> -     * or null if no particular reason
was specified.
>>>>> -     */
>>>>> -    public String getReason()
>>>>> -    {
>>>>> -        return reason;
>>>>> -    }
>>>>> -
>>>>> -    /**
>>>>> -     * Returns the type of this event
which could be one of the
>>>>> MEMBER_XXX-ed
>>>>> -     * member field values.
>>>>> -     *
>>>>> -     * return one of the
MEMBER_XXXed member field values indicating
>>>>> the type
>>>>> -     * of this event.
>>>>> -     */
>>>>> -    public String getEventType()
>>>>> -    {
>>>>> -        return eventType;
>>>>> -    }
>>>>> -
>>>>> -    /**
>>>>> -     * Returns a String representation
of this event.
>>>>> -     */
>>>>> -    public String toString()
>>>>> -    {
>>>>> -        return
"ChatRoomMemberEvent[type="
>>>>> -            + getEventType()
>>>>> -            + "
sourceRoom="
>>>>> -            + getChatRoom()
>>>>> -            + " member="
>>>>> -            + getChatRoomMember()
>>>>> -            + "]";
>>>>> -    }
>>>>> -}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserStatusListener.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserStatusListener.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserStatusListener.java  
>>>>> ---
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserStatusListener.java 
>>>>> 22 Feb 2007  12:36:09
>>>>> -0000   1.1
>>>>> +++ /dev/null   1 Jan 1970 00:00:00
-0000
>>>>>  -1,25 +0,0 
>>>>> -/*
>>>>> - * 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.event;
>>>>> -
>>>>> -import java.util.*;
>>>>> -
>>>>> -/**
>>>>> - * Adds a listener that will be
notified of changes in our status 
>>>>> in the
>>>>> room
>>>>> - * such as us being kicked, banned, or
granted admin permissions.
>>>>> - * author Emil Ivov
>>>>> - */
>>>>> -public interface
ChatRoomLocalUserStatusListener
>>>>> -    extends EventListener
>>>>> -{
>>>>> -    /**
>>>>> -     * Called to notify interested
parties that a change in our 
>>>>> status in
>>>>> the
>>>>> -     * source soom has changed.
Changes may include us being kicked,
>>>>> banned, or
>>>>> -     * granted admin permissions.
>>>>> -     */
>>>>> -    public void
>>>>>
localUserStatusChanged(ChatRoomLocalUserStatusChangeEvent
evt);
>>>>> -}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberRoleChangeEvent.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
/cvs/sip-communicator/src/net/java/sip/communicator/service/
protocol/event/ChatRoomMemberRoleChangeEvent.java,v 
>>>>> retrieving revision  1.1
>>>>> diff -u -r1.1
ChatRoomMemberRoleChangeEvent.java
>>>>> ---
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberRoleChangeEvent.java 
>>>>> 23 Apr 2007  18:11:36
>>>>> -0000   1.1
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberRoleChangeEvent.java 
>>>>> 21 May 2007  07:05:35
>>>>> -0000
>>>>>  -1,23 +1,94 
>>>>> +/*
>>>>> + * 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.event;
>>>>>
>>>>> import java.util.*;
>>>>>
>>>>> +import
net.java.sip.communicator.service.protocol.*;
>>>>> +
>>>>> /**
>>>>> - * <p> </p>
>>>>> - *
>>>>> - * <p> </p>
>>>>> - *
>>>>> - * <p> </p>
>>>>> - *
>>>>> - * <p> </p>
>>>>> + * Dispatched to notify interested
parties that a change in our 
>>>>> role in
>>>>> the
>>>>> + * source room has changed. Changes
may include us being granted
>>>>> admin permissions,
>>>>> + * or other permissions.
>>>>> + *
>>>>> + * see ChatRoomMemberRole
>>>>>  *
>>>>>  * author Emil Ivov
>>>>> + * author Stéphane Remy
>>>>>  */
>>>>> public class
ChatRoomMemberRoleChangeEvent
>>>>>     extends EventObject
>>>>> {
>>>>> -    public
ChatRoomMemberRoleChangeEvent(Object source)
>>>>> +    /**
>>>>> +     * The member that the event
relates to.
>>>>> +     */
>>>>> +       private ChatRoomMember
sourceMember = null;
>>>>> +
>>>>> +    /**
>>>>> +     * The previous role that this
member had.
>>>>> +     */
>>>>> +       private ChatRoomMemberRole
previousRole = null;
>>>>> +
>>>>> +       /**
>>>>> +        * The new role that this
member get.
>>>>> +        */
>>>>> +       private ChatRoomMemberRole
newRole = null;
>>>>> +
>>>>> +    public
ChatRoomMemberRoleChangeEvent(ChatRoom sourceRoom,
>>>>> +
>>>>> ChatRoomMember sourceMember,
>>>>> +
>>>>> ChatRoomMemberRole previousRole,
>>>>> +
>>>>> ChatRoomMemberRole newRole)
>>>>>     {
>>>>> -        super(source);
>>>>> +       super(sourceRoom);
>>>>> +       this.sourceMember =
sourceMember;
>>>>> +       this.previousRole =
previousRole;
>>>>> +       this.newRole = newRole;
>>>>>     }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the new role given to
this member.
>>>>> +     *
>>>>> +     * return newRole the new role
given to this member for this 
>>>>> chat
>>>>> +     * room.
>>>>> +     */
>>>>> +    public ChatRoomMemberRole
getNewRole()
>>>>> +    {
>>>>> +               return newRole;
>>>>> +       }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the previous role that
this member had in this
>>>>> +     * chat room.
>>>>> +     *
>>>>> +     * return previousRole the
previous role that this member
>>>>> +     * had in this chat room.
>>>>> +     */
>>>>> +    public ChatRoomMemberRole
getPreviousRole()
>>>>> +    {
>>>>> +               return previousRole;
>>>>> +       }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the source chat room
for this event.
>>>>> +     *
>>>>> +     * return the
<tt>ChatRoom</tt> associated with that is the
>>>>> source of this
>>>>> +     * event and that the
corresponding ChatRoomMemberBelongs to.
>>>>> +     */
>>>>> +    public ChatRoom
getSourceChatRoom()
>>>>> +    {
>>>>> +        return (ChatRoom)getSource();
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the member that this
event is pertaining to.
>>>>> +     * return the
<tt>ChatRoomMember</tt> that this event is 
>>>>> pertaining
>>>>> to.
>>>>> +     */
>>>>> +    public ChatRoomMember
getSourceMember()
>>>>> +    {
>>>>> +               return sourceMember;
>>>>> +       }
>>>>> }
>>>>> Index:
>>>>>
src/net/java/sip/communicator/service/protocol/ChatRoomInvit
ation.java
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
/cvs/sip-communicator/src/net/java/sip/communicator/service/
protocol/ChatRoomInvitation.java,v 
>>>>> retrieving revision  1.1
>>>>> diff -u -r1.1 ChatRoomInvitation.java
>>>>> ---
>>>>>
src/net/java/sip/communicator/service/protocol/ChatRoomInvit
ation.java  
>>>>> 22
>>>>> Feb
>>>>> 2007 12:35:34 -0000     1.1
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/ChatRoomInvit
ation.java  
>>>>> 21
>>>>> May
>>>>> 2007 07:05:34 -0000
>>>>>  -7,13 +7,42 
>>>>> package
net.java.sip.communicator.service.protocol;
>>>>>
>>>>> /**
>>>>> - * author Emil Ivov
>>>>> + * This interface representes an
invitation, which is send from a
>>>>> chat room member
>>>>> + * to an other in order to invite this
chat room member to join the
>>>>> chat room this invitation
>>>>> + * have for target.
>>>>> + *
>>>>> + * author Stéphane Remy
>>>>>  */
>>>>> -public class ChatRoomInvitation
>>>>> +public interface ChatRoomInvitation
>>>>> {
>>>>> -    public ChatRoomInvitation()
>>>>> -    {
>>>>> -        super();
>>>>> -    }
>>>>> -
>>>>> +       /**
>>>>> +     * Returns the chat room target of
this invitation
>>>>> +     *
>>>>> +     * return the
<tt>ChatRoom</tt> target of this invitation
>>>>> +     */
>>>>> +       public ChatRoom getTarget();
>>>>> +
>>>>> +       /**
>>>>> +     * Returns the reason of this
invitation, or null if there is no
>>>>> reason
>>>>> +     *
>>>>> +     * return the reason of this
invitation, or null if there is no
>>>>> reason
>>>>> +     */
>>>>> +    public String getReason();
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the subject of this
invitation or null if the
>>>>> invitation contains no
>>>>> +     * subject.
>>>>> +     * return the subject of this
invitation or null if the
>>>>> invitation contains no
>>>>> +     * subject.
>>>>> +     */
>>>>> +    public String getSubject();
>>>>> +
>>>>> +       /**
>>>>> +     * Returns the protocol provider
instance that this invitation
>>>>> has originated
>>>>> +     * in.
>>>>> +     *
>>>>> +     * return the
<tt>ProtocolProviderService</tt> instance that
>>>>> created this
>>>>> +     * invitation
>>>>> +     */
>>>>> +    public ProtocolProviderService
getProtocolProvider();
>>>>> }
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/InvitationRec
eivedEvent.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/InvitationRec
eivedEvent.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/InvitationRec
eivedEvent.java  
>>>>> ---
>>>>>
src/net/java/sip/communicator/service/protocol/InvitationRec
eivedEvent.java  
>>>>> 22
>>>>> Feb 2007 12:35:41 -0000 1.1
>>>>> +++ /dev/null   1 Jan 1970 00:00:00
-0000
>>>>>  -1,26 +0,0 
>>>>> -/*
>>>>> - * 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;
>>>>> -
>>>>> -/**
>>>>> - * Delivered when we receive an
invitation for joining an existing 
>>>>> chat
>>>>> room.
>>>>> - * If the corresponding chat room
requires a password, then it 
>>>>> could be
>>>>> - * retreived by the getPassword()
method. The method would return 
>>>>> null if
>>>>> no
>>>>> - * password is necessary to join the
specified chat room.
>>>>> - *
>>>>> - * author Emil Ivov
>>>>> - */
>>>>> -public class InvitationReceivedEvent
>>>>> -    extends java.util.EventObject
>>>>> -{
>>>>> -
>>>>> -    public
InvitationReceivedEvent(ProtocolProviderService 
>>>>> srcProvider,
>>>>> -                                  
ChatRoom chatRoom)
>>>>> -    {
>>>>> -        super(srcProvider);
>>>>> -    }
>>>>> -}
>>>>> Index:
src/net/java/sip/communicator/service/protocol/ChatRoom.java

>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
/cvs/sip-communicator/src/net/java/sip/communicator/service/
protocol/ChatRoom.java,v 
>>>>> retrieving revision  1.4
>>>>> diff -u -r1.4 ChatRoom.java
>>>>> --- 
>>>>>
src/net/java/sip/communicator/service/protocol/ChatRoom.java
       24
>>>>> Apr 2007 12:31:25 -0000 1.4
>>>>> +++ 
>>>>>
src/net/java/sip/communicator/service/protocol/ChatRoom.java
       21
>>>>> May 2007 07:05:34 -0000
>>>>>  -17,7 +17,6 
>>>>>  */
>>>>> public interface ChatRoom
>>>>> {
>>>>> -
>>>>>     /**
>>>>>      * Returns the name of this
<tt>ChatRoom</tt>.
>>>>>      *
>>>>>  -95,25 +94,6 
>>>>>     public void leave();
>>>>>
>>>>>     /**
>>>>> -     * Adds
<tt>listener</tt> to the list of listeners
registered to
>>>>> receive
>>>>> -     * events upon modification of
chat room properties such as its
>>>>> subject
>>>>> -     * for example.
>>>>> -     *
>>>>> -     * param listener
ChatRoomChangeListener
>>>>> -     */
>>>>> -    public void
addChatRoomPropertyChangeListener(
>>>>> -                                   
ChatRoomPropertyChangeListener
>>>>> listener);
>>>>> -
>>>>> -    /**
>>>>> -     * Removes
<tt>listener</tt> from the list of listeneres
current
>>>>> registered
>>>>> -     * for chat room modification
events.
>>>>> -     *
>>>>> -     * param listener the
<tt>ChatRoomChangeListener</tt> to remove.
>>>>> -     */
>>>>> -    public void
removeChatRoomPropertyChangeListener(
>>>>> -                                   
ChatRoomPropertyChangeListener
>>>>> listener);
>>>>> -
>>>>> -    /**
>>>>>      * Returns the last known room
subject/theme or <tt>null</tt> 
>>>>> if the
>>>>> user
>>>>>      * hasn't joined the room or the
room does not have a subject yet.
>>>>>      * <p>
>>>>>  -163,41 +143,88 
>>>>>        throws
OperationFailedException;
>>>>>
>>>>>    /**
>>>>> -    * Adds a listener that will be
notified of changes in our status
>>>>> in the room
>>>>> -    * such as us being kicked, banned,
or granted admin permissions.
>>>>> +    * Adds a listener that will be
notified of changes in our
>>>>> participation in the room
>>>>> +    * such as us being kicked, join,
left.
>>>>>     *
>>>>> -    * param listener a local user
status listener.
>>>>> +    * param listener a local user
participation listener.
>>>>>     */
>>>>> -    public void
addLocalUserStatusListener(
>>>>> -                                   
ChatRoomLocalUserStatusListener
>>>>> listener);
>>>>> +    public void
addLocalUserParticipationListener(
>>>>> +
>>>>> ChatRoomLocalUserParticipationListener
listener);
>>>>>
>>>>>    /**
>>>>> -    * Removes a listener that was
being notified of changes in our 
>>>>> status
>>>>> in
>>>>> -    * the room such as us being
kicked, banned, or granted admin
>>>>> permissions.
>>>>> +    * Removes a listener that was
being notified of changes in our
>>>>> participation in
>>>>> +    * the room such as us being
kicked, join, left...
>>>>>     *
>>>>> -    * param listener a local user
status listener.
>>>>> +    * param listener a local user
participation listener.
>>>>>     */
>>>>> -    public void
removeLocalUserStatusListener(
>>>>> -                                   
ChatRoomLocalUserStatusListener
>>>>> listener);
>>>>> +    public void
removeLocalUserParticipationListener(
>>>>> +
>>>>> ChatRoomLocalUserParticipationListener
listener);
>>>>>
>>>>>    /**
>>>>> -    * Adds a listener that will be
notified of changes in our status
>>>>> in the room
>>>>> -    * such as us being kicked, banned,
or granted admin permissions.
>>>>> +    * Adds a listener that will be
notified of changes in our
>>>>> participation in the room
>>>>> +    * such as us being kicked, join,
left...
>>>>>     *
>>>>> -    * param listener a
participant status listener.
>>>>> +    * param listener a member
participation listener.
>>>>>     */
>>>>> -    public void
addMemberListener(ChatRoomMemberListener listener);
>>>>> +    public void
>>>>>
addMemberParticipationListener(ChatRoomMemberParticipationLi
stener
>>>>> listener);
>>>>>
>>>>>    /**
>>>>> -    * Removes a listener that was
being notified of changes in the 
>>>>> status
>>>>> of
>>>>> -    * other chat room participants
such as users being kicked, 
>>>>> banned, or
>>>>> -    * granted admin permissions.
>>>>> +    * Removes a listener that was
being notified of changes in the
>>>>> participation of
>>>>> +    * other chat room participants
such as users being kicked, join,
>>>>> left.
>>>>>     *
>>>>> -    * param listener a
participant status listener.
>>>>> +    * param listener a member
participation listener.
>>>>>     */
>>>>> -    public void removeMemberListener(
>>>>> -                                   
ChatRoomMemberListener listener);
>>>>> -
>>>>> +    public void
>>>>>
removeMemberParticipationListener(ChatRoomMemberParticipatio
nListener
>>>>> listener);
>>>>> +
>>>>> +    /**
>>>>> +     * Adds a listener that will be
notified of changes in our role
>>>>> in the room
>>>>> +     * such as us being granded
operator.
>>>>> +     *
>>>>> +     * param listener a local user
role listener.
>>>>> +     */
>>>>> +     public void
>>>>>
addLocalUserRoleListener(ChatRoomLocalUserRoleListener
listener);
>>>>> +
>>>>> +    /**
>>>>> +     * Removes a listener that was
being notified of changes in 
>>>>> our role
>>>>> in
>>>>> +     * this chat room such as us being
granded operator.
>>>>> +     *
>>>>> +     * param listener a local user
role listener.
>>>>> +     */
>>>>> +     public void
>>>>>
removelocalUserRoleListener(ChatRoomLocalUserRoleListener
listener);
>>>>> +
>>>>> +     /**
>>>>> +      * Adds a listener that will be
notified of changes of a member
>>>>> role in the room
>>>>> +      * such as being granded
operator.
>>>>> +      *
>>>>> +      * param listener a member
role listener.
>>>>> +      */
>>>>> +      public void
addMemberRoleListener(ChatRoomMemberRoleListener
>>>>> listener);
>>>>> +
>>>>> +     /**
>>>>> +      * Removes a listener that was
being notified of changes of a
>>>>> member role in
>>>>> +      * this chat room such as us
being granded operator.
>>>>> +      *
>>>>> +      * param listener a member
role listener.
>>>>> +      */
>>>>> +      public void
removeMemberRoleListener(ChatRoomMemberRoleListener
>>>>> listener);
>>>>> +
>>>>> +
>>>>> +     /**
>>>>> +      * Adds a listener that will be
notified of changes in the
>>>>> property of the room
>>>>> +      * such as the subject being
change or the room state being 
>>>>> changed.
>>>>> +      *
>>>>> +      * param listener a property
change listener.
>>>>> +      */
>>>>> +      public void
>>>>>
addPropertyChangeListener(ChatRoomPropertyChangeListener
listener);
>>>>> +
>>>>> +     /**
>>>>> +      * Removes a listener that was
being notified of changes in the
>>>>> property of
>>>>> +      * the chat room such as the
subject being change or the room
>>>>> state being changed.
>>>>> +      *
>>>>> +      * param listener a property
change listener.
>>>>> +      */
>>>>> +      public void
>>>>>
removePropertyChangeListener(ChatRoomPropertyChangeListener
listener);
>>>>> +
>>>>>     /**
>>>>>      * Invites another user to this
room.
>>>>>      * <p>
>>>>>  -285,6 +312,82 
>>>>>      */
>>>>>     public ProtocolProviderService
getParentProvider();
>>>>>
>>>>> -    //include - roominfo
>>>>> -    /** todo include room info */
>>>>> +    /**
>>>>> +     * Sets the password of this chat
room. If the user does not have
>>>>> the right
>>>>> +     * to change the room password, or
the protocol does not support
>>>>> this, or
>>>>> +     * the operation fails for some
other reason, the method 
>>>>> throws an
>>>>> +     *
<tt>OperationFailedException</tt> with the
corresponding code.
>>>>> +     *
>>>>> +     * param password the new
password that we'd like this room 
>>>>> to have
>>>>> +     * throws
OperationFailedException
>>>>> +     */
>>>>> +    public void setPassword(final
String password)
>>>>> +        throws
OperationFailedException;
>>>>> +
>>>>> +    /**
>>>>> +     * Adds a ban mask to the list fo
ban masks of this chat room. If
>>>>> the user does
>>>>> +     * not have the right to change
the room ban list, or the
>>>>> protocol does not
>>>>> +     * support this, or the operation
fails for some other reason,
>>>>> the method throws an
>>>>> +     *
<tt>OperationFailedException</tt> with the
corresponding code.
>>>>> +     *
>>>>> +     * param banMask the new ban
mask that we'd like to add to this
>>>>> room ban list
>>>>> +     * throws
OperationFailedException
>>>>> +     */
>>>>> +    public void addBanMask(final
String banMask)
>>>>> +        throws
OperationFailedException;
>>>>> +
>>>>> +    /**
>>>>> +     * Remove a ban mask of the list
fo ban masks of this chat room.
>>>>> If the user does
>>>>> +     * not have the right to change
the room ban list, or the
>>>>> protocol does not
>>>>> +     * support this, or the operation
fails for some other reason,
>>>>> the method throws an
>>>>> +     *
<tt>OperationFailedException</tt> with the
corresponding code.
>>>>> +     *
>>>>> +     * param banMask the ban mask
that we'd like to remove from this
>>>>> room ban list
>>>>> +     * throws
OperationFailedException
>>>>> +     */
>>>>> +    public void removeBanMask(final
String banMask)
>>>>> +        throws
OperationFailedException;
>>>>> +
>>>>> +    /**
>>>>> +     * Sets the user limit of this
chat room. If the user does not
>>>>> have the right
>>>>> +     * to change the room user limit,
or the protocol does not
>>>>> support this, or
>>>>> +     * the operation fails for some
other reason, the method 
>>>>> throws an
>>>>> +     *
<tt>OperationFailedException</tt> with the
corresponding code.
>>>>> +     *
>>>>> +     * param userLimit the new
user limit that we'd like this 
>>>>> room to
>>>>> have
>>>>> +     * throws
OperationFailedException
>>>>> +     */
>>>>> +    public void setUserLimit(final int
userLimit)
>>>>> +        throws
OperationFailedException;
>>>>> +
>>>>> +    /**
>>>>> +     * Sets a state of this chat room.
If the user does not have the
>>>>> right
>>>>> +     * to change the room state, or
the protocol does not support 
>>>>> this,
>>>>> or
>>>>> +     * the operation fails for some
other reason, the method 
>>>>> throws an
>>>>> +     *
<tt>OperationFailedException</tt> with the
corresponding code.
>>>>> +     *
>>>>> +     * param state the new state
that we'd like this room to have
>>>>> +     * throws
OperationFailedException
>>>>> +     */
>>>>> +    public void setState(ChatRoomState
state)
>>>>> +        throws
OperationFailedException;
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the list of ban mask
that are currently of this 
>>>>> chat room.
>>>>> +     * return List the ban list of
this room.
>>>>> +     */
>>>>> +    public List getBanList();
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the list of states that
this chat room is currently 
>>>>> in.
>>>>> +     * return List the list of
states of this chat room.
>>>>> +     */
>>>>> +    public List getStateList();
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the limit of user of
this chat room, of returns -1 if
>>>>> there is
>>>>> +     * no limit.
>>>>> +     * return List the list of
states of this chat room.
>>>>> +     */
>>>>> +    public int getUserLimit();
>>>>> }
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/OperationSetM
ultiUserChat.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
/cvs/sip-communicator/src/net/java/sip/communicator/service/
protocol/OperationSetMultiUserChat.java,v 
>>>>> retrieving revision  1.4
>>>>> diff -u -r1.4
OperationSetMultiUserChat.java
>>>>> ---
>>>>>
src/net/java/sip/communicator/service/protocol/OperationSetM
ultiUserChat.java 
>>>>> 23 Apr 2007  18:12:44
>>>>> -0000   1.4
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/OperationSetM
ultiUserChat.java 
>>>>> 21 May 2007  07:05:35
>>>>> -0000
>>>>>  -45,11 +45,11 
>>>>>     public List
getCurrentlyJoinedChatRooms();
>>>>>
>>>>>     /**
>>>>> -     * Returns a list of the chat
rooms that <tt>contact</tt> has
>>>>> joined and is
>>>>> +     * Returns a list of the chat
rooms that <tt>chatRoomMember</tt>
>>>>> has joined and is
>>>>>      * currently active in.
>>>>>      *
>>>>> -     * param contact the contact
whose current ChatRooms we will be
>>>>> querying.
>>>>> -     * return a list of the chat
rooms that <tt>contact</tt> has
>>>>> joined and is
>>>>> +     * param chatRoomMember the
chatRoomMember whose current
>>>>> ChatRooms we will be querying.
>>>>> +     * return a list of the chat
rooms that <tt>chatRoomMember</tt>
>>>>> has joined and is
>>>>>      * currently active in.
>>>>>      *
>>>>>      * throws
OperationFailedException if an error occurs while 
>>>>> trying
>>>>> to
>>>>>  -57,7 +57,7 
>>>>>      * throws
OperationNotSupportedException if the server does not
>>>>> support
>>>>>      * multi user chat
>>>>>      */
>>>>> -    public List
getCurrentlyJoinedChatRooms(Contact contact)
>>>>> +    public List
getCurrentlyJoinedChatRooms(ChatRoomMember
>>>>> chatRoomMember)
>>>>>         throws
OperationFailedException, 
>>>>> OperationNotSupportedException;
>>>>>
>>>>>     /**
>>>>>  -110,7 +110,7 
>>>>>      *
>>>>>      * param listener an
invitation listener.
>>>>>      */
>>>>> -    public void
addInvitationListener(InvitationListener listener);
>>>>> +    public void
addInvitationListener(ChatRoomInvitationListener
>>>>> listener);
>>>>>
>>>>>     /**
>>>>>      * Removes
<tt>listener</tt> from the list of invitation
listeners
>>>>>  -118,7 +118,7 
>>>>>      *
>>>>>      * param listener the
invitation listener to remove.
>>>>>      */
>>>>> -    public void
removeInvitationListener(InvitationListener 
>>>>> listener);
>>>>> +    public void
removeInvitationListener(ChatRoomInvitationListener
>>>>> listener);
>>>>>
>>>>>     /**
>>>>>      * Adds a listener to invitation
notifications. The listener
>>>>> will be fired
>>>>>  -127,7 +127,7 
>>>>>      * param listener an
invitation listener.
>>>>>      */
>>>>>     public void
addInvitationRejectionListener(
>>>>> -                                      
 InvitationRejectionListener
>>>>> listener);
>>>>> +
>>>>> ChatRoomInvitationRejectionListener
listener);
>>>>>
>>>>>     /**
>>>>>      * Removes
<tt>listener</tt> from the list of invitation
listeners
>>>>>  -136,14 +136,5 
>>>>>      * param listener the
invitation listener to remove.
>>>>>      */
>>>>>     public void
removeInvitationRejectionListener(
>>>>> -                                      
 InvitationRejectionListener
>>>>> listener);
>>>>> -
>>>>> -    /**
>>>>> -     * Returns true if
<tt>contact</tt> supports multi user chat
>>>>> sessions.
>>>>> -     *
>>>>> -     * param contact reference to
the contact whose support for chat
>>>>> rooms
>>>>> -     * we are currently querying.
>>>>> -     * return a boolean indicating
whether <tt>contact</tt> supports
>>>>> chatrooms.
>>>>> -     */
>>>>> -    public boolean
isMultiChatSupportedByContact(Contact contact);
>>>>> +
>>>>> ChatRoomInvitationRejectionListener
listener);
>>>>> }
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserParticipationListener.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserParticipationListener.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserParticipationListener.java 
>>>>> --- /dev/null   1 Jan 1970 00:00:00 
-0000
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserParticipationListener.java          
>>>>> 1
>>>>> Jan 1970 00:00:00
>>>>> -0000
>>>>>  -0,0 +1,25 
>>>>> +/*
>>>>> + * 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.event;
>>>>> +
>>>>> +import java.util.*;
>>>>> +
>>>>> +/**
>>>>> + * Adds a listener that will be
notified of changes in our
>>>>> participation in the room
>>>>> + * such as us being kicked, join,
left.
>>>>> + *
>>>>> + * author Emil Ivov
>>>>> + */
>>>>> +public interface
ChatRoomLocalUserParticipationListener
>>>>> +    extends EventListener
>>>>> +{
>>>>> +    /**
>>>>> +     * Called to notify interested
parties that a change in our
>>>>> participation in the
>>>>> +     * source soom has occured.
Changes may include us being kicked,
>>>>> join, left.
>>>>> +     */
>>>>> +    public void
>>>>>
localUserParticipationChanged(ChatRoomLocalUserParticipation
ChangeEvent 
>>>>>
>>>>> evt);
>>>>> +}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationListener.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationListener.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationListener.java 
>>>>> --- /dev/null   1 Jan 1970 00:00:00 
-0000
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationListener.java      
>>>>> 1
>>>>> Jan 1970 00:00:00
>>>>> -0000
>>>>>  -0,0 +1,24 
>>>>> +/*
>>>>> + * 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.event;
>>>>> +
>>>>> +/**
>>>>> + * A listener that is fired anytime an
invitation to join a MUC room
>>>>> is received.
>>>>> + *
>>>>> + * author Emil Ivov
>>>>> + */
>>>>> +public interface
ChatRoomInvitationListener
>>>>> +{
>>>>> +    /**
>>>>> +     * Called when we receive an
invitation to join an existing 
>>>>> ChatRoom.
>>>>> +     * <p>
>>>>> +     * param evt the
<tt>ChatRoomInvitationReceivedEvent</tt> that
>>>>> contains the newly
>>>>> +     * received invitation and its
source provider.
>>>>> +     */
>>>>> +    public abstract void
>>>>>
invitationReceived(ChatRoomInvitationReceivedEvent evt);
>>>>> +
>>>>> +}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserRoleListener.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserRoleListener.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserRoleListener.java 
>>>>> --- /dev/null   1 Jan 1970 00:00:00 
-0000
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserRoleListener.java 
>>>>> 1 Jan 1970  00:00:00
>>>>> -0000
>>>>>  -0,0 +1,28 
>>>>> +/*
>>>>> + * 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.event;
>>>>> +
>>>>> +import java.util.*;
>>>>> +
>>>>> +/**
>>>>> + * Adds a listener that will be
notified of changes in the role of 
>>>>> the
>>>>> chat
>>>>> + * participants in a particular chat
room, such as us being 
>>>>> granded any
>>>>> of
>>>>> + * the roles you can see in
ChatRoomMemberRole.
>>>>> + *
>>>>> + * see ChatRoomMemberRole
>>>>> + *
>>>>> + * author Remy Stéphane
>>>>> + */
>>>>> +public interface
ChatRoomLocalUserRoleListener
>>>>> +    extends EventListener
>>>>> +{
>>>>> +    /**
>>>>> +     * Called to notify interested
parties that a change in the 
>>>>> role of
>>>>> the
>>>>> +     * source room participant has
changed.
>>>>> +     */
>>>>> +    public void
localUserRoleChanged(ChatRoomLocalUserRoleChangeEvent
>>>>> evt);
>>>>> +}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserParticipationChangeEvent.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserParticipationChangeEvent.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserParticipationChangeEvent.java 
>>>>> --- /dev/null   1 Jan 1970 00:00:00 
-0000
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserParticipationChangeEvent.java 
>>>>> 1 Jan 1970  00:00:00
>>>>> -0000
>>>>>  -0,0 +1,112 
>>>>> +/*
>>>>> + * 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.event;
>>>>> +
>>>>> +import java.util.EventObject;
>>>>> +import
net.java.sip.communicator.service.protocol.*;
>>>>> +
>>>>> +/**
>>>>> + * Dispatched to notify interested
parties that a change in our
>>>>> paticipation in the
>>>>> + * source room has occured. Changes
may include us being kicked,
>>>>> join, left...
>>>>> + *
>>>>> + * author Emil Ivov
>>>>> + * author Stéphane Remy
>>>>> + */
>>>>> +public class
ChatRoomLocalUserParticipationChangeEvent
>>>>> +       extends EventObject
>>>>> +{
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * participant joining the source
chat room.
>>>>> +     */
>>>>> +    public static final String
MEMBER_JOINED = "MemberJoined";
>>>>> +
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * participant being
"kicked" out of the chat room.
>>>>> +     */
>>>>> +    public static final String
MEMBER_LEFT = "MemberLeft";
>>>>> +
>>>>> +   /**
>>>>> +    * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +    * participant leaving the source
chat room.
>>>>> +    */
>>>>> +    public static final String
MEMBER_KICKED = "MemberKicked";
>>>>> +
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * participant beein deconnected
from the server brutally, or
>>>>> ping timeout.
>>>>> +     */
>>>>> +     public static final String
MEMBER_QUIT = "MemberQuit";
>>>>> +
>>>>> +    /**
>>>>> +     * The type of this event. Values
can be any of the MEMBER_XXX-ED
>>>>> fields.
>>>>> +     */
>>>>> +    private String eventType = null;
>>>>> +
>>>>> +    /**
>>>>> +     * An optional String indicating a
possible reason as to why the
>>>>> event
>>>>> +     * might have occurred.
>>>>> +     */
>>>>> +    private String reason = null;
>>>>> +
>>>>> +
>>>>> +    public
ChatRoomLocalUserParticipationChangeEvent(ChatRoom 
>>>>> sourceRoom,
>>>>> +
>>>>> String eventType,
>>>>> +
>>>>> String reason)
>>>>> +    {
>>>>> +        super(sourceRoom);
>>>>> +        this.eventType = eventType;
>>>>> +        this.reason = reason;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the source chat room
for this event.
>>>>> +     *
>>>>> +     * return the
<tt>ChatRoom</tt> associated with that is the
>>>>> source of this
>>>>> +     * event and that the
corresponding ChatRoomMemberBelongs to.
>>>>> +     */
>>>>> +    public ChatRoom getChatRoom()
>>>>> +    {
>>>>> +        return (ChatRoom)getSource();
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * A reason string indicating a
human readable reason for this 
>>>>> event.
>>>>> +     *
>>>>> +     * return a human readable
String containing the reason for this
>>>>> event,
>>>>> +     * or null if no particular reason
was specified.
>>>>> +     */
>>>>> +    public String getReason()
>>>>> +    {
>>>>> +        return reason;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the type of this event
which could be one of the
>>>>> MEMBER_XXX-ed
>>>>> +     * member field values.
>>>>> +     *
>>>>> +     * return one of the
MEMBER_XXXed member field values indicating
>>>>> the type
>>>>> +     * of this event.
>>>>> +     */
>>>>> +    public String getEventType()
>>>>> +    {
>>>>> +        return eventType;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns a String representation
of this event.
>>>>> +     */
>>>>> +    public String toString()
>>>>> +    {
>>>>> +        return
"ChatRoomLocalUserStatusChangeEvent[type="
>>>>> +            + getEventType()
>>>>> +            + "
sourceRoom="
>>>>> +            + getChatRoom()
>>>>> +            + "]";
>>>>> +    }
>>>>> +}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberParticipationChangeEvent.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberParticipationChangeEvent.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberParticipationChangeEvent.java 
>>>>> --- /dev/null   1 Jan 1970 00:00:00 
-0000
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberParticipationChangeEvent.java          
>>>>> 1
>>>>> Jan 1970 00:00:00
>>>>> -0000
>>>>>  -0,0 +1,131 
>>>>> +/*
>>>>> + * 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.event;
>>>>> +
>>>>> +import java.util.*;
>>>>> +import
net.java.sip.communicator.service.protocol.*;
>>>>> +
>>>>> +/**
>>>>> + * Dispatched to notify interested
parties that a change in the
>>>>> participation of the
>>>>> + * source room participant has
changed. Changes may include the
>>>>> participant
>>>>> + * being kicked, join, left...
>>>>> + *
>>>>> + * author Emil Ivov
>>>>> + */
>>>>> +public class
ChatRoomMemberParticipationChangeEvent
>>>>> +    extends EventObject
>>>>> +{
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * participant joining the source
chat room.
>>>>> +     */
>>>>> +    public static final String
MEMBER_JOINED = "MemberJoined";
>>>>> +
>>>>> +
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * participant leaving the source
chat room.
>>>>> +     */
>>>>> +    public static final String
MEMBER_LEFT = "MemberLeft";
>>>>> +
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * participant being
"kicked" out of the chat room.
>>>>> +     */
>>>>> +    public static final String
MEMBER_KICKED = "MemberKicked";
>>>>> +
>>>>> +    /**
>>>>> +     * Indicates that this event was
triggered as a result of the 
>>>>> source
>>>>> +     * participant beein deconnected
from the server brutally, or
>>>>> ping timeout.
>>>>> +     */
>>>>> +     public static final String
MEMBER_QUIT = "MemberQuit";
>>>>> +
>>>>> +    /**
>>>>> +     * The member that the event
relates to.
>>>>> +     */
>>>>> +    private ChatRoomMember
sourceMember = null;
>>>>> +
>>>>> +    /**
>>>>> +     * The type of this event. Values
can be any of the MEMBER_XXX-ED
>>>>> fields.
>>>>> +     */
>>>>> +    private String eventType = null;
>>>>> +
>>>>> +    /**
>>>>> +     * An optional String indicating a
possible reason as to why the
>>>>> event
>>>>> +     * might have occurred.
>>>>> +     */
>>>>> +    private String reason = null;
>>>>> +
>>>>> +
>>>>> +    public
ChatRoomMemberParticipationChangeEvent(ChatRoom
>>>>> sourceRoom,
>>>>> +                              
ChatRoomMember sourceMember,
>>>>> +                               String 
       eventType,
>>>>> +                               String 
       reason )
>>>>> +    {
>>>>> +        super(sourceRoom);
>>>>> +        this.sourceMember =
sourceMember;
>>>>> +        this.eventType = eventType;
>>>>> +        this.reason = reason;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the source chat room
for this event.
>>>>> +     *
>>>>> +     * return the
<tt>ChatRoom</tt> associated with that is the
>>>>> source of this
>>>>> +     * event and that the
corresponding ChatRoomMemberBelongs to.
>>>>> +     */
>>>>> +    public ChatRoom getChatRoom()
>>>>> +    {
>>>>> +        return (ChatRoom)getSource();
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the member that this
event is pertaining to.
>>>>> +     * return the
<tt>ChatRoomMember</tt> that this event is 
>>>>> pertaining
>>>>> to.
>>>>> +     */
>>>>> +    public ChatRoomMember
getChatRoomMember()
>>>>> +    {
>>>>> +        return sourceMember;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * A reason string indicating a
human readable reason for this 
>>>>> event.
>>>>> +     *
>>>>> +     * return a human readable
String containing the reason for this
>>>>> event,
>>>>> +     * or null if no particular reason
was specified.
>>>>> +     */
>>>>> +    public String getReason()
>>>>> +    {
>>>>> +        return reason;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the type of this event
which could be one of the
>>>>> MEMBER_XXX-ed
>>>>> +     * member field values.
>>>>> +     *
>>>>> +     * return one of the
MEMBER_XXXed member field values indicating
>>>>> the type
>>>>> +     * of this event.
>>>>> +     */
>>>>> +    public String getEventType()
>>>>> +    {
>>>>> +        return eventType;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns a String representation
of this event.
>>>>> +     */
>>>>> +    public String toString()
>>>>> +    {
>>>>> +        return
"ChatRoomMemberEvent[type="
>>>>> +            + getEventType()
>>>>> +            + "
sourceRoom="
>>>>> +            +
getChatRoom().toString()
>>>>> +            + " member="
>>>>> +            +
getChatRoomMember().toString()
>>>>> +            + "]";
>>>>> +    }
>>>>> +}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationRejectionListener.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationRejectionListener.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationRejectionListener.java 
>>>>> --- /dev/null   1 Jan 1970 00:00:00 
-0000
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationRejectionListener.java 
>>>>> 1 Jan 1970  00:00:00
>>>>> -0000
>>>>>  -0,0 +1,27 
>>>>> +/*
>>>>> + * 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.event;
>>>>> +
>>>>> +import java.util.*;
>>>>> +
>>>>> +/**
>>>>> + * A listener that dispatches events
notifying that an invitation 
>>>>> which
>>>>> was
>>>>> + * sent earlier has been rejected by
the invitee.
>>>>> + *
>>>>> + * author Emil Ivov
>>>>> + */
>>>>> +public interface
ChatRoomInvitationRejectionListener {
>>>>> +
>>>>> +    /**
>>>>> +     * Called when an invitee rejects
an invitation previously 
>>>>> sent by
>>>>> us.
>>>>> +     *
>>>>> +     * param evt the instance of
the
>>>>>
<tt>ChatRoomInvitationRejectedEvent</tt>
>>>>> +     * containing the rejected chat
room invitation as well as the 
>>>>> source
>>>>> +     * provider where this happened.
>>>>> +     */
>>>>> +    public void
invitationRejected(ChatRoomInvitationRejectedEvent 
>>>>> evt);
>>>>> +}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberParticipationListener.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberParticipationListener.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberParticipationListener.java 
>>>>> --- /dev/null   1 Jan 1970 00:00:00 
-0000
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mMemberParticipationListener.java 
>>>>> 1 Jan 1970  00:00:00
>>>>> -0000
>>>>>  -0,0 +1,27 
>>>>> +/*
>>>>> + * 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.event;
>>>>> +
>>>>> +import java.util.*;
>>>>> +
>>>>> +/**
>>>>> + * Adds a listener that will be
notified of changes in the
>>>>> participation of the chat
>>>>> + * member in a particular chat room,
such as us being kicked, 
>>>>> join, left.
>>>>> + *
>>>>> + * author Emil Ivov
>>>>> + */
>>>>> +public interface
ChatRoomMemberParticipationListener
>>>>> +    extends EventListener
>>>>> +{
>>>>> +    /**
>>>>> +     * Called to notify interested
parties that a change in the
>>>>> participation of the
>>>>> +     * source room member has changed.
Changes may include the
>>>>> participant
>>>>> +     * being kicked, join, left.
>>>>> +     */
>>>>> +    public void
>>>>>
memberParticipationChanged(ChatRoomMemberParticipationChange
Event 
>>>>> evt );
>>>>> +
>>>>> +}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationRejectedEvent.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationRejectedEvent.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationRejectedEvent.java 
>>>>> --- /dev/null   1 Jan 1970 00:00:00 
-0000
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationRejectedEvent.java 
>>>>> 1 Jan 1970  00:00:00
>>>>> -0000
>>>>>  -0,0 +1,114 
>>>>> +/*
>>>>> + * 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.event;
>>>>> +
>>>>> +import java.util.*;
>>>>> +import
net.java.sip.communicator.service.protocol.*;
>>>>> +
>>>>> +/**
>>>>> + *
<tt>ChatRoomInvitationRejectedEvent</tt>s
indicate reception of a
>>>>> rejection of
>>>>> + * an invitation.
>>>>> + *
>>>>> + * author Emil Ivov
>>>>> + * author Stéphane Remy
>>>>> + */
>>>>> +public class
ChatRoomInvitationRejectedEvent
>>>>> +    extends EventObject
>>>>> +{
>>>>> +    /**
>>>>> +     * The chat room member that has
sent this rejection.
>>>>> +     */
>>>>> +    private ChatRoomMember from =
null;
>>>>> +
>>>>> +    /**
>>>>> +     * The chat room member that is
the target of this rejection.
>>>>> +     */
>>>>> +    private ChatRoomMember to = null;
>>>>> +
>>>>> +    /**
>>>>> +     * The reason why this invitation
is rejected or null if there is
>>>>> no reason
>>>>> +     */
>>>>> +    private String reason = null;
>>>>> +
>>>>> +    /**
>>>>> +     * A timestamp indicating the
exact date when the event occurred.
>>>>> +     */
>>>>> +    private Date timestamp = null;
>>>>> +
>>>>> +    /**
>>>>> +     * Creates a
<tt>ChatRoomInvitationRejectedEvent</tt>
>>>>> representing the rejection of the
>>>>> +     * <tt>source</tt>
invitation rejected from the specified
>>>>> <tt>from</tt>
>>>>> +     * chat room member.
>>>>> +     *
>>>>> +     * param source the
<tt>Invitation</tt> whose reception this
>>>>> event represents.
>>>>> +     * param from the
<tt>ChatRoomMember</tt> that has sent this
>>>>> invitation rejection.
>>>>> +     * param to the
<tt>ChatRoomMember</tt> that is the target of
>>>>> this invitation rejection.
>>>>> +     * param timestamp the exact
date when the event ocurred.
>>>>> +     */
>>>>> +    public
ChatRoomInvitationRejectedEvent(ChatRoomInvitation source,
>>>>> ChatRoomMember from, ChatRoomMember to,
String reason, Date timestamp)
>>>>> +    {
>>>>> +        super(source);
>>>>> +
>>>>> +        this.from = from;
>>>>> +        this.to = to;
>>>>> +        this.reason = reason;
>>>>> +        this.timestamp = timestamp;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns a reference to the
<tt>ChatRoomMember</tt> that has
>>>>> send the rejection
>>>>> +     * of the
<tt>Invitation</tt> whose reception this event 
>>>>> represents.
>>>>> +     *
>>>>> +     * return a reference to the
<tt>ChatRoomMember</tt> that has
>>>>> send the rejection
>>>>> +     * of the
<tt>Invitation</tt> whose reception this event 
>>>>> represents.
>>>>> +     */
>>>>> +    public ChatRoomMember getFrom()
>>>>> +    {
>>>>> +        return from;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns a reference to the
<tt>ChatRoomMember</tt> that is the
>>>>> target of this rejection
>>>>> +     * of the
<tt>Invitation</tt> whose reception this event 
>>>>> represents.
>>>>> +     *
>>>>> +     * return a reference to the
<tt>ChatRoomMember</tt> that is the
>>>>> target of this rejection
>>>>> +     * of the
<tt>Invitation</tt> whose reception this event 
>>>>> represents.
>>>>> +     */
>>>>> +    public ChatRoomMember getTo()
>>>>> +    {
>>>>> +        return to;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the reason why this
<tt>Invitation</tt> is rejected.
>>>>> +     *
>>>>> +     * return the reason why this
<tt>Invitation</tt> is rejected.
>>>>> +     */
>>>>> +    public String getReason()
>>>>> +    {
>>>>> +       return reason;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the invitation that was
rejected.
>>>>> +     * return the
<tt>Invitation</tt> that was rejected.
>>>>> +     */
>>>>> +    public ChatRoomInvitation
getSourceInvitation()
>>>>> +    {
>>>>> +        return
(ChatRoomInvitation)getSource();
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * A timestamp indicating the
exact date when the event ocurred.
>>>>> +     * return a Date indicating
when the event ocurred.
>>>>> +     */
>>>>> +    public Date getTimestamp()
>>>>> +    {
>>>>> +        return timestamp;
>>>>> +    }
>>>>> +
>>>>> +}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserRoleChangeEvent.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserRoleChangeEvent.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserRoleChangeEvent.java 
>>>>> --- /dev/null   1 Jan 1970 00:00:00 
-0000
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mLocalUserRoleChangeEvent.java        
>>>>> 1
>>>>> Jan 1970 00:00:00
>>>>> -0000
>>>>>  -0,0 +1,77 
>>>>> +/*
>>>>> + * 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.event;
>>>>> +
>>>>> +import java.util.*;
>>>>> +import
net.java.sip.communicator.service.protocol.*;
>>>>> +
>>>>> +/**
>>>>> + * Dispatched to notify interested
parties that a change in our 
>>>>> role in
>>>>> the
>>>>> + * source room has changed. Changes
may include us being granted
>>>>> admin permissions,
>>>>> + * or other permissions.
>>>>> + *
>>>>> + * see ChatRoomMemberRole
>>>>> + *
>>>>> + * author Emil Ivov
>>>>> + * author Stéphane Remy
>>>>> + */
>>>>> +public class
ChatRoomLocalUserRoleChangeEvent
>>>>> +    extends EventObject
>>>>> +{
>>>>> +    /**
>>>>> +     * The previous role that this
member had.
>>>>> +     */
>>>>> +       private ChatRoomMemberRole
previousRole = null;
>>>>> +
>>>>> +       /**
>>>>> +        * The new role that this
member get.
>>>>> +        */
>>>>> +       private ChatRoomMemberRole
newRole = null;
>>>>> +
>>>>> +    public
ChatRoomLocalUserRoleChangeEvent(ChatRoom sourceRoom,
>>>>> +
>>>>> ChatRoomMemberRole previousRole,
>>>>> +
>>>>> ChatRoomMemberRole newRole)
>>>>> +    {
>>>>> +       super(sourceRoom);
>>>>> +       this.previousRole =
previousRole;
>>>>> +       this.newRole = newRole;
>>>>> +    }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the new role given to
this member.
>>>>> +     *
>>>>> +     * return newRole the new role
given to this member for this 
>>>>> chat
>>>>> +     * room.
>>>>> +     */
>>>>> +    public ChatRoomMemberRole
getNewRole()
>>>>> +    {
>>>>> +               return newRole;
>>>>> +       }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the previous role that
this member had in this
>>>>> +     * chat room.
>>>>> +     *
>>>>> +     * return previousRole the
previous role that this member
>>>>> +     * had in this chat room.
>>>>> +     */
>>>>> +    public ChatRoomMemberRole
getPreviousRole()
>>>>> +    {
>>>>> +               return previousRole;
>>>>> +       }
>>>>> +
>>>>> +    /**
>>>>> +     * Returns the source chat room
for this event.
>>>>> +     *
>>>>> +     * return the
<tt>ChatRoom</tt> associated with that is the
>>>>> source of this
>>>>> +     * event and that the
corresponding ChatRoomMemberBelongs to.
>>>>> +     */
>>>>> +    public ChatRoom
getSourceChatRoom()
>>>>> +    {
>>>>> +        return (ChatRoom)getSource();
>>>>> +    }
>>>>> +}
>>>>> Index:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationReceivedEvent.java  
>>>>>
============================================================
=======
>>>>> RCS file:
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationReceivedEvent.java 
>>>>> diff  -N
>>>>>
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationReceivedEvent.java 
>>>>> --- /dev/null   1 Jan 1970 00:00:00 
-0000
>>>>> +++
>>>>>
src/net/java/sip/communicator/service/protocol/event/ChatRoo
mInvitationReceivedEvent.java 
>>>>> 1 Jan 1970  00:00:00
>>>>> -0000
>>>>>  -0,0 +1,97 
>>>>> +/*
>>>>> + * 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.event;
>>>>> +
>>>>> +import java.util.*;
>>>>> +import
net.java.sip.communicator.service.protocol.*;
>>>>> +
>>>>> +/**
>>>>> + *
<tt>ChatRoomInvitationReceivedEvent</tt>s
indicate reception of
>>>>> + * an invitation to join a chat room.
>>>>> + *
>>>>> + * author Emil Ivov
>>>>> + * author Stéphane Remy
>>>>> + */
>>>>> +public class
ChatRoomInvitationReceivedEvent
>>>>> +    extends EventObject
>>>>> +{
>>>>> +    /**
>>>>> +     * The chat room member that has
sent this invitation.
>>>>> +     */
>>>>> +    private ChatRoomMember from =
null;
>>>>> +
>>>>> +    /**
>>>>> +     * The chat room member that is
the target of this invitation.
>>>>> +     */
>>>>> +    private ChatRoomMember to = null;
>>>>> +
>>>>> +    /**
>>>>> +     * A timestamp indicating the
exact date when the event occurred.
>>>>> +     */
>>>>> +    private Date timestamp = null;
>>>>> +
>>>>> +    /**
>>>>> +     * Creates a
<tt>InvitationReceivedEvent</tt> representing
>>>>> reception of the
>>>>> +     * <tt>source</tt>
invitation received from the specified
>>>>> <tt>from</tt>
>>>>> +     * chat room member.
>>>>> +     *
>>>>> +     * param source the
<tt>Invitation</tt> whose reception this
>>>>> event represents.
>>>>> +     * param from the
<tt>ChatRoomMember</tt> that has sent this
>>>>> invitation.
>>>>> +     * param to the
<tt>ChatRoomMember</tt> that is the target of
>>>>> this invitation.
>>>>> +     * param timestamp the exact
date when the event ocurred.
>>>>> +     */
>>>>> +    public
ChatRoomInvitationReceivedEvent(ChatRoomInvitation source,
>>>>> ChatRoomMember from, ChatRoomMember to,
Date timestamp)
>>>>> +