package org.chartsy.chatsy.chat.decorator;
import org.jivesoftware.smack.packet.Presence;
import org.chartsy.chatsy.chat.PresenceManager;
import org.chartsy.chatsy.chat.component.tabbedPane.ChatsyTab;
import org.chartsy.chatsy.chat.ui.ChatRoom;
import org.chartsy.chatsy.chat.ui.ChatsyTabHandler;
import org.chartsy.chatsy.chat.ui.rooms.ChatRoomImpl;
import java.awt.Color;
import java.awt.Component;
import javax.swing.Icon;
public class DefaultTabHandler extends ChatsyTabHandler
{
public DefaultTabHandler()
{
}
public boolean isTabHandled(ChatsyTab tab, Component component, boolean isSelectedTab, boolean chatFrameFocused)
{
if (component instanceof ChatRoom)
{
ChatRoom room = (ChatRoom)component;
if (room instanceof ChatRoomImpl)
{
String participantJID = ((ChatRoomImpl)room).getParticipantJID();
Presence presence = PresenceManager.getPresence(participantJID);
Icon icon = PresenceManager.getIconFromPresence(presence);
tab.setIcon(icon);
}
if (!chatFrameFocused || !isSelectedTab)
{
if (room.getUnreadMessageCount() > 0)
{
tab.setTitleColor(Color.red);
tab.setTabBold(true);
}
int unreadMessageCount = room.getUnreadMessageCount();
String appendedMessage = "";
if (unreadMessageCount > 1)
appendedMessage = " (" + unreadMessageCount + ")";
tab.setTabTitle(room.getTabTitle() + appendedMessage);
}
else if (isSelectedTab && chatFrameFocused)
{
tab.setTitleColor(Color.black);
tab.setTabFont(tab.getDefaultFont());
tab.setTabTitle(room.getTabTitle());
room.clearUnreadMessageCount();
}
}
else
{
if (!chatFrameFocused || !isSelectedTab)
{
tab.setTitleColor(Color.red);
tab.setTabBold(true);
}
if (isSelectedTab && chatFrameFocused)
{
tab.setTitleColor(Color.black);
tab.setTabFont(tab.getDefaultFont());
}
}
return true;
}
}