Remove listeners.

git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@4879 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
Derek DeMoro
2006-08-10 16:59:13 +00:00
committed by derek
parent f025bf59ef
commit a89e1552b9
2 changed files with 15 additions and 7 deletions

View File

@ -374,15 +374,14 @@ public class ChatContainer extends SparkTabbedPane implements MessageListener, C
* @param room the room to remove. * @param room the room to remove.
*/ */
private void cleanupChatRoom(ChatRoom room) { private void cleanupChatRoom(ChatRoom room) {
fireChatRoomClosed(room);
room.removeMessageListener(this);
final PacketListener listener = (PacketListener)presenceMap.get(room.getRoomname()); final PacketListener listener = (PacketListener)presenceMap.get(room.getRoomname());
if (listener != null) { if (listener != null) {
SparkManager.getConnection().removePacketListener(listener); SparkManager.getConnection().removePacketListener(listener);
} }
fireChatRoomClosed(room);
room.removeMessageListener(this);
// Remove mappings // Remove mappings
presenceMap.remove(room.getRoomname()); presenceMap.remove(room.getRoomname());

View File

@ -68,7 +68,12 @@ import javax.swing.event.DocumentEvent;
*/ */
public final class GroupChatRoom extends ChatRoom { public final class GroupChatRoom extends ChatRoom {
private final MultiUserChat chat; private final MultiUserChat chat;
// Define Listeners
private final AndFilter chatFilter; private final AndFilter chatFilter;
private final AndFilter presenceFilter;
private final String roomname; private final String roomname;
private Icon tabIcon = SparkRes.getImageIcon(SparkRes.CONFERENCE_IMAGE_16x16); private Icon tabIcon = SparkRes.getImageIcon(SparkRes.CONFERENCE_IMAGE_16x16);
private String tabTitle; private String tabTitle;
@ -101,11 +106,12 @@ public final class GroupChatRoom extends ChatRoom {
// making sure to filter by room // making sure to filter by room
chatFilter = new AndFilter(new PacketTypeFilter(Message.class), new FromContainsFilter(chat.getRoom())); chatFilter = new AndFilter(new PacketTypeFilter(Message.class), new FromContainsFilter(chat.getRoom()));
// We only want to listen to the presence in this room, no other. // We only want to listen to the presence in this room, no other.
AndFilter presenceFilter = new AndFilter(new PacketTypeFilter(Presence.class), new FromContainsFilter(chat.getRoom())); presenceFilter = new AndFilter(new PacketTypeFilter(Presence.class), new FromContainsFilter(chat.getRoom()));
// Register PacketListeners
// Register PacketListeners
SparkManager.getConnection().addPacketListener(this, chatFilter); SparkManager.getConnection().addPacketListener(this, chatFilter);
SparkManager.getConnection().addPacketListener(this, presenceFilter); SparkManager.getConnection().addPacketListener(this, presenceFilter);
// Thie Room Name is the same as the ChatRoom name // Thie Room Name is the same as the ChatRoom name
roomname = chat.getRoom(); roomname = chat.getRoom();
roomTitle = roomname; roomTitle = roomname;
@ -249,6 +255,9 @@ public final class GroupChatRoom extends ChatRoom {
// Specify the end time. // Specify the end time.
super.closeChatRoom(); super.closeChatRoom();
// Remove Listener
SparkManager.getConnection().removePacketListener(this);
ChatContainer container = SparkManager.getChatManager().getChatContainer(); ChatContainer container = SparkManager.getChatManager().getChatContainer();
container.leaveChatRoom(this); container.leaveChatRoom(this);
container.closeTab(this); container.closeTab(this);