/* Copyright (C) 2011 monte This file is part of PSP NetParty. PSP NetParty is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package pspnetparty.client.swt; import java.util.HashMap; import java.util.Map; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.swt.graphics.Image; import pspnetparty.lib.Utility; public class Player { private String name; private int ping = -1; private boolean isSsidChased = false; private String ssid = ""; public Player(String name) { this.name = name; } public String getName() { return name; } public int getPing() { return ping; } public void setPing(int ping) { this.ping = ping; } public String getSsid() { return ssid; } public void setSsid(String ssid) { this.ssid = ssid; } public boolean isSSIDChased() { return isSsidChased; } public void setSSIDChased(boolean isSsidchased) { this.isSsidChased = isSsidchased; } public static class PlayerListContentProvider implements IStructuredContentProvider { @Override public void dispose() { } @Override public void inputChanged(Viewer arg0, Object arg1, Object arg2) { } @Override public Object[] getElements(Object input) { @SuppressWarnings("unchecked") Map<String, Player> players = (HashMap<String, Player>) input; return players.values().toArray(); } } public static class RoomPlayerLabelProvider implements ITableLabelProvider { @Override public void addListener(ILabelProviderListener arg0) { } @Override public void dispose() { } @Override public boolean isLabelProperty(Object arg0, String arg1) { return false; } @Override public void removeListener(ILabelProviderListener arg0) { } @Override public Image getColumnImage(Object element, int index) { return null; } @Override public String getColumnText(Object element, int index) { Player player = (Player) element; switch (index) { case 0: return player.isSsidChased ? "θΏ½" : ""; case 1: return player.name; case 2: return player.ssid; case 3: if (player.ping >= 0) return Integer.toString(player.ping); } return ""; } } public static final ViewerSorter NANE_SORTER = new ViewerSorter() { @Override public int compare(Viewer viewer, Object e1, Object e2) { Player p1 = (Player) e1; Player p2 = (Player) e2; return p1.name.compareTo(p2.name); } }; public static final ViewerSorter PING_SORTER = new ViewerSorter() { @Override public int compare(Viewer viewer, Object e1, Object e2) { Player p1 = (Player) e1; Player p2 = (Player) e2; return Utility.compare(p1.ping, p2.ping); } }; public static final ViewerSorter SSID_SORTER = new ViewerSorter() { @Override public int compare(Viewer viewer, Object e1, Object e2) { Player p1 = (Player) e1; Player p2 = (Player) e2; return p1.ssid.compareTo(p2.ssid); } }; public static final ViewerSorter SSID_CHASE_SORTER = new ViewerSorter() { public int compare(Viewer viewer, Object e1, Object e2) { Player p1 = (Player) e1; Player p2 = (Player) e2; return Boolean.valueOf(p1.isSsidChased).compareTo(p2.isSsidChased); }; }; }