1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package net.java.sip.communicator.service.protocol.event;
import java.util.*;
import net.java.sip.communicator.service.protocol.*;
/**
* Dispatched to notify interested parties that a change in the presence of a
* chat room member has occurred. Changes may include the participant
* being kicked, join, left...
*
* @author Emil Ivov
* @author Lyubomir Marinov
*/
public class ChatRoomMemberPresenceChangeEvent
extends EventObject
{
/**
* Serial version UID.
*/
private static final long serialVersionUID = 0L;
/**
* Indicates that this event was triggered as a result of the participant
* joining the source chat room.
*/
public static final String MEMBER_JOINED = "MemberJoined";
/**
* Indicates that this event was triggered as a result of the participant
* leaving the source chat room.
*/
public static final String MEMBER_LEFT = "MemberLeft";
/**
* Indicates that this event was triggered as a result of the 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 participant
* being disconnected from the server brutally, or due to a ping timeout.
*/
public static final String MEMBER_QUIT = "MemberQuit";
/**
* The well-known reason for a
* <code>ChatRoomMemberPresenceChangeEvent</code> to occur as part of an
* operation which lists all users in a <code>ChatRoom</code>.
*/
public static final String REASON_USER_LIST = "ReasonUserList";
/**
* The chat room member that the event relates to.
*/
private final ChatRoomMember sourceMember;
/**
* The type of this event. Values can be any of the MEMBER_XXX fields.
*/
private final String eventType;
/**
* An optional String indicating a possible reason as to why the event
* might have occurred.
*/
private final String reason;
/**
* Creates a <tt>ChatRoomMemberPresenceChangeEvent</tt> representing that
* a change in the presence of a <tt>ChatRoomMember</tt> has occurred.
* Changes may include the participant being kicked, join, left, etc.
*
* @param sourceRoom the <tt>ChatRoom</tt> that produced this event
* @param sourceMember the <tt>ChatRoomMember</tt> that this event is about
* @param eventType the event type; one of the MEMBER_XXX constants
* @param reason the reason explaining why this event might have occurred
*/
public ChatRoomMemberPresenceChangeEvent( ChatRoom sourceRoom,
ChatRoomMember sourceMember,
String eventType,
String reason )
{
this(sourceRoom, sourceMember, null, eventType, reason);
}
/**
* Creates a <tt>ChatRoomMemberPresenceChangeEvent</tt> representing that
* a change in the presence of a <tt>ChatRoomMember</tt> has occurred.
* Changes may include the participant being kicked, join, left, etc.
*
* @param sourceRoom the <tt>ChatRoom</tt> that produced this event
* @param sourceMember the <tt>ChatRoomMember</tt> who this event is about
* @param actorMember the <tt>ChatRoomMember</tt> who participated as an
* actor in the new event. For example, in the case of a
* <tt>MEMBER_KICKED</tt> event the <tt>actorMember</tt> is the moderator
* who kicked the <tt>sourceMember</tt>.
* @param eventType the event type; one of the MEMBER_XXX constants
* @param reason the reason explaining why this event might have occurred
*/
public ChatRoomMemberPresenceChangeEvent( ChatRoom sourceRoom,
ChatRoomMember sourceMember,
ChatRoomMember actorMember,
String eventType,
String reason )
{
super(sourceRoom);
this.sourceMember = sourceMember;
// this.actorMember = actorMember;
this.eventType = eventType;
this.reason = reason;
}
/**
* Returns the chat room that produced this event.
*
* @return the <tt>ChatRoom</tt> that produced this event
*/
public ChatRoom getChatRoom()
{
return (ChatRoom)getSource();
}
/**
* Returns the chat room member that this event is about.
*
* @return the <tt>ChatRoomMember</tt> that this event is about.
*/
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;
}
/**
* Gets the indicator which determines whether this event has occurred with
* the well-known reason of listing all users in a <code>ChatRoom</code>.
*
* @return <tt>true</tt> if this event has occurred with the well-known
* reason of listing all users in a <code>ChatRoom</code> i.e.
* {@link #getReason()} returns a value of {@link #REASON_USER_LIST};
* otherwise, <tt>false</tt>
*/
public boolean isReasonUserList()
{
return REASON_USER_LIST.equals(getReason());
}
/**
* Returns the type of this event which could be one of the MEMBER_XXX
* member field values.
*
* @return one of the MEMBER_XXX member field values indicating the type
* of this event.
*/
public String getEventType()
{
return eventType;
}
/**
* Returns a String representation of this event.
*
* @return String representation of this event
*/
public String toString()
{
return "ChatRoomMemberPresenceChangeEvent[type="
+ getEventType()
+ " sourceRoom="
+ getChatRoom().toString()
+ " member="
+ getChatRoomMember().toString()
+ "]";
}
}
|