List Info

Thread: Re: Chat room related services...




Re: Chat room related services...
user name
2007-06-25 11:18:37
Hi Stephane,

Stéphane Remy wrote:
> Hi again Yana,
> 
> After having read the code more precisely, i think it
is not a good idee 
> to remove the ChatRoomConfigParam class, i think at
least for the 
> "official" property you have put now in the
ChatRoom class because:
> 
> -When a chat room property event occurs i need to send
back the previous 
> config and the new config after the changes, i can
simply send a string 
> like "+tnr" and after the change
"+tnri" but i think that makes the 
> implementation to dependent of the multi chat
protocol.
> 
I don't understand, could you please explain in details what
you mean?

Yana

> -I think it is more clear in the ChatRoom class to have
only these two 
> methods:
> 
> void setProperty(ChatRoomConfigParam x)
> boolean isPropertySet(ChatRoomConfigParam x)
> 
> -But i think it is a good idee to limit the number of
property to the 
> most important ones, so the advanced method is a good
choice for the 
> other property.
> 
> Stéphane
> 
> Stéphane Remy <stephane.remyulp.u-strasbg.fr> a
écrit :
> 
>> Hi Yana,
>>
>> Thanks that's what i wanted to know 
>>
>> Stéphane
>>
>>
>> Yana Stamcheva <yanasip-communicator.org> a
écrit :
>>
>>> Hi Stephane,
>>>
>>> Stéphane Remy wrote:
>>>> Hi Yana,
>>>>
>>>> I was wrong in my previous mail, i did not
see that you commited a   
>>>> new ChatRoom service a few hours before my
mail :/ Ok now i   
>>>> understand what you mean, but can you
explain me what is for you  
>>>> an  advanced config property and who decide
the property names and 
>>>>  the  value? It's not really clear for me.
>>>
>>> The ChatRoom contains a number of properties
which could be set, but we
>>> have created these properties considering what
is needed for the IRC
>>> and Jabber implementations of the Multi Chat.
However another
>>> implementation could need some different
configurations to set. Then
>>> the addAdvancedConfigProperty method can be
used and it depend on the
>>> implementation what would be the name and the
value of the property.
>>> These advanced properties would not be visible
for the GUI for example,
>>> but they would be usable for anyone who knows
that they exist (it could
>>> be a gui plugin that add some more
functionality in the chat window
>>> only for the given protocol provider).
>>>
>>>>
>>>> And i've seen that you added a join
listener in ChatRoom, but the  
>>>>  MemberPresenceListener does it already,
maybe you meant to add it   
>>>> in OperationSetMultiUserChat to know when a
ChatRoom is joined.
>>>>
>>>
>>> Actually it was the
ChatRoomLocalUserPresenceListener which was exactly
>>> what I needed. I've removed the JoinListener.
Thanks
>>>
>>> Yana
>>>
>>>> Stéphane
>>>>
>>>> Yana Stamcheva <yanasip-communicator.org> a écrit :
>>>>
>>>>> Hi Stephane,
>>>>>
>>>>> I've added some inline comments.
>>>>>
>>>>> Yana
>>>>>
>>>>> Stéphane Remy wrote:
>>>>>> Hi Yana
>>>>>>
>>>>>> Yana Stamcheva <yanasip-communicator.org> a écrit :
>>>>>>
>>>>>>> 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.
>>>>>>
>>>>>> Yep, i've undersand that if that
was your question 
>>>>>>
>>>>>>> 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?
>>>>>>
>>>>>> I would modify the
isAllowInvitationSend into  
>>>>>> isInvitationAllowed   because the
CHATROOM_INVITATION_ALLOWED  
>>>>>> means that you can  invite  someone
on a chatroom but i meant in 
>>>>>>  my previous mail  that it is 
better to put this into  
>>>>>> CHATROOM_INVITATION_REFUSED 
because by  default invitation are  
>>>>>> allowed so it is easier for me  to
put in a  list of configs  what 
>>>>>> is not allowed than all the 
configs that are  allowed.
>>>>>>
>>>>>
>>>>> Ok, I think I haven't explain very well
in my previous mail the 
>>>>> changes
>>>>> I've made in the code.
>>>>>
>>>>> As it was implemented before you needed
to worry about what is the
>>>>> default value in IRC, because it would
be easier for you not to 
>>>>> specify
>>>>> explicitly the given property. That's
why I said that I understand 
>>>>> what
>>>>> is bothering you. Now the situation is
completely different. Now
>>>>> configurations are moved to the
ChatRoom and each ChatRoom
>>>>> implementation should implement all get
and set methods. So for you is
>>>>> the same, whether the
isInvitationAllowed would return false or 
>>>>> true by
>>>>> defalt. Am I right?
>>>>>
>>>>>> For
CHATROOM_INVITATION_REQUEST_ALLOWED that means when you are 

>>>>>>  not  on a chatroom and you need an
invitation to get into it 
>>>>>> you   can ask  someone which is in
the chatroom to invite you by   
>>>>>> sending a request  on this
chatroom. By default is this allowed   
>>>>>> for IRC. So i would  put a method
isInvitationDemandAllowed or   
>>>>>> isInvitationRequestAllowed.
>>>>>>
>>>>>
>>>>> Now for the name, I understand better
what the two properties mean, so
>>>>> we could name them as you proposed
isInvitationAllowed and
>>>>> isInvitationRequestAllowed. I'll just
add some more javadoc comments.
>>>>>
>>>>>>> - 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?
>>>>>>
>>>>>> CHATROOM_MESSAGE_FORMAT_ALLOWED
means that when you write a   
>>>>>> message  with color,  underlined
etc... the message will be send   
>>>>>> on the  chatroom so if this mode is
not set the server will   
>>>>>> destroy the  message and it will
never be displayed.
>>>>>>
>>>>>> CHATROOM_MESSAGE_FORMAT_FILTERED
means that when you write a    
>>>>>> message with color, underlined
etc... the message will be send  
>>>>>> on   the chatroom but without any
color or underline, it will be 
>>>>>>  black.
>>>>>>
>>>>>
>>>>>> So it is possible to have a format
allowed mode and to have a    
>>>>>> filtered mode at the same time.
>>>>>>
>>>>>
>>>>> Ok, I understand now.
>>>>>
>>>>>> I will try to explain what was the
aim of my previous mail, for    
>>>>>> example when you join an irc chat
room this mode can be set  
>>>>>> +tnr,   that means:
>>>>>>
>>>>>> t: the subject is locked
>>>>>> n: you must be on this chat room to
write a message (you cannot  
>>>>>>  be only on the server and send
/msg #channel message)
>>>>>> r: this room is registered with the
Chanserv service
>>>>>>
>>>>>> So i meant that the irc protocol
gives me a string with all the    
>>>>>> config that are set on this
chatroom so it is easier for me if   
>>>>>> the chat room services config match
with this, but that's only   
>>>>>> to make  me the life easier  but if you
don't want to change   
>>>>>> them i can  make a list of all the
configs allowed each time and   
>>>>>> filter with  what this string
says...
>>>>>>
>>>>>
>>>>> Yes, I understood perfectly what you
meant in your last mail. I hope
>>>>> that after explaining it better here,
you agree that now there's no
>>>>> matter how the method is called -
..Refused or Allowed, because for 
>>>>> you
>>>>> it changes only that you return false
and not true. The idea is that I
>>>>> prefer that all methods that restrict
or allow something are named in
>>>>> one manner.
>>>>>
>>>>>> And if you wanna more informations
about the irc modes here is a 
>>>>>> link:
>>>>>>
>>>>>> http://wiki.sur
-la-toile.com/Mode_IRC
>>>>>
>>>>> Thanks for the link It will be
usefull!
>>>>>
>>>>>>
>>>>>>> That's all.
>>>>>>>
>>>>>>> Also, any comments and
corrections are appreciated)
>>>>>>
>>>>>> I hope that all i've said is clear
enough otherwise don't   
>>>>>> hesitate to say that my english is
bad :p And of course if you   
>>>>>> have an other  question don't
hesitate to ask.
>>>>>>
>>>>>> Ah and i have seen that a service
is missing or i've not found  
>>>>>> it   for the chat room members
statut, for example when a member   
>>>>>> change his nickname or is set in
away mode there are no events,   
>>>>>> i will see  if i find something...
>>>>>>
>>>>>>> Yana
>>>>>>
>>>>>> Stéphane
>>>>>>
>>>>>>> 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