package example;
import gdwNet.client.ServerInfo;
import java.util.ArrayList;
import javax.swing.ListModel;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;
/**
* Da der Client eine JList verwendet, braucht es eine ListModel und hier ist die Implementierung.
* Für Beispielcode nicht weiter von Belangen, da diese Klasse nur der Darstellung der GuiElementen dient.
* @author firen
*
*/
public class ServerListModel implements ListModel<String>
{
private final ArrayList<ServerInfo> data;
private final ArrayList<ListDataListener> listeners;
public ServerListModel()
{
this.data = new ArrayList<ServerInfo>();
this.listeners = new ArrayList<ListDataListener>();
}
@Override
public void addListDataListener(ListDataListener l)
{
this.listeners.add(l);
}
@Override
public String getElementAt(int index)
{
ServerInfo point = this.data.get(index);
return point.infoMsg + " (" + point.currentPlayer + "/"
+ point.maxPlayer + ")";
}
@Override
public int getSize()
{
return this.data.size();
}
@Override
public void removeListDataListener(ListDataListener l)
{
this.listeners.remove(l);
}
public void addEntry(ServerInfo info)
{
synchronized (data)
{
for (ServerInfo myInfo : data)
{
if (myInfo.id == info.id)
{
return;
}
}
this.data.add(info);
updateLis(null);
}
}
public void clear()
{
this.data.clear();
updateLis(null);
}
private void updateLis(ListDataEvent e)
{
for(ListDataListener lis : this.listeners)
{
lis.contentsChanged(e);
}
}
public ServerInfo getServerInfoForIndex(int index)
{
return this.data.get(index);
}
}