package org.chartsy.chatsy.chat;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.packet.Presence;
import javax.swing.Icon;
import java.util.ArrayList;
import java.util.List;
import org.openide.util.ImageUtilities;
public class PresenceManager
{
public static final String _AVAILABLE = "Available";
public static final String _AWAY = "Away";
public static final String _BUSY = "Busy";
public static final String _INVISIBLE = "Invisible";
private static final List<Presence> PRESENCES = new ArrayList<Presence>();
public static final Presence AVAILABLE = new Presence(Presence.Type.available, _AVAILABLE, 1, Presence.Mode.available);
public static final Presence AWAY = new Presence(Presence.Type.available, _AWAY, 0, Presence.Mode.away);
public static final Presence BUSY = new Presence(Presence.Type.available, _BUSY, 0, Presence.Mode.dnd);
public static final Presence INVISIBLE = new Presence(Presence.Type.unavailable, _INVISIBLE, 0, Presence.Mode.xa);
public static final Icon AVAILABLE_ICON;
public static final Icon AWAY_ICON;
public static final Icon BUSY_ICON;
public static final Icon INVISIBLE_ICON;
static
{
PRESENCES.add(AVAILABLE);
PRESENCES.add(AWAY);
PRESENCES.add(BUSY);
PRESENCES.add(INVISIBLE);
AVAILABLE_ICON = ImageUtilities.loadImageIcon("org/chartsy/chatsy/resources/available.png", true);
AWAY_ICON = ImageUtilities.loadImageIcon("org/chartsy/chatsy/resources/away.png", true);
BUSY_ICON = ImageUtilities.loadImageIcon("org/chartsy/chatsy/resources/busy.png", true);
INVISIBLE_ICON = ImageUtilities.loadImageIcon("org/chartsy/chatsy/resources/invisible.png", true);
}
private PresenceManager()
{
}
public static boolean isOnline(String jid)
{
final Roster roster = ChatsyManager.getConnection().getRoster();
Presence presence = roster.getPresence(jid);
return presence.isAvailable();
}
public static boolean isAvailable(String jid)
{
final Roster roster = ChatsyManager.getConnection().getRoster();
Presence presence = roster.getPresence(jid);
return presence.isAvailable() && !presence.isAway();
}
public static boolean isAvailable(Presence presence)
{
return presence.isAvailable() && !presence.isAway();
}
public static Presence getPresence(String jid)
{
final Roster roster = ChatsyManager.getConnection().getRoster();
return roster.getPresence(jid);
}
public static String getFullyQualifiedJID(String jid)
{
final Roster roster = ChatsyManager.getConnection().getRoster();
Presence presence = roster.getPresence(jid);
return presence.getFrom();
}
public static Icon getIconFromPresence(Presence presence)
{
if (!presence.isAvailable())
return INVISIBLE_ICON;
Presence.Mode presenceMode = presence.getMode();
if (presenceMode == null)
presenceMode = Presence.Mode.available;
Icon icon = null;
if (presenceMode.equals(Presence.Mode.available))
icon = AVAILABLE_ICON;
else if (presenceMode.equals(Presence.Mode.away))
icon = AWAY_ICON;
else if (presenceMode.equals(Presence.Mode.dnd))
icon = BUSY_ICON;
else if (presenceMode.equals(Presence.Mode.xa))
icon = INVISIBLE_ICON;
Icon handlerIcon = ChatsyManager.getChatManager().getTabIconForContactHandler(presence);
if (handlerIcon != null)
icon = handlerIcon;
return icon;
}
public static List<Presence> getPresences()
{
return PRESENCES;
}
}