package com.kolakcc.loljclient.model.swing; import java.util.ArrayList; import java.util.Iterator; import javax.swing.AbstractListModel; import javax.swing.event.ListDataListener; import org.jivesoftware.smack.Roster; import org.jivesoftware.smack.RosterEntry; import org.jivesoftware.smack.packet.Presence; import com.kolakcc.loljclient.model.XMPPWrapper; public class FriendsListModel extends AbstractListModel<RosterEntry> { public enum ShowMode { ONLINE, OFFLINE }; public ArrayList<RosterEntry> filteredEntries; protected ShowMode displayMode; public FriendsListModel(ShowMode sm) { this.displayMode = sm; this.filteredEntries = new ArrayList<RosterEntry>(); this.refreshFriends(); } public void refreshFriends() { this.filteredEntries.clear(); Roster roster = XMPPWrapper.getConnection().getRoster(); Iterator<RosterEntry> it = roster.getEntries().iterator(); while (it.hasNext()) { RosterEntry friend = it.next(); Presence p = roster.getPresence(friend.getUser()); if ((this.displayMode == ShowMode.ONLINE) && (p.isAvailable())) { this.filteredEntries.add(friend); } if ((this.displayMode == ShowMode.OFFLINE) && (!p.isAvailable())) { this.filteredEntries.add(friend); } } } public RosterEntry getElementAt(int index) { return this.filteredEntries.get(index); } public int getSize() { return this.filteredEntries.size(); } public void addListDataListener(ListDataListener l) { } public void removeListDataListener(ListDataListener l) { } }