package games.strategy.engine.framework.networkMaintenance;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.util.TreeSet;
import javax.swing.AbstractAction;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import games.strategy.net.INode;
import games.strategy.net.IServerMessenger;
public class BanPlayerAction extends AbstractAction {
private static final long serialVersionUID = -2415917785233191860L;
private final Component m_parent;
private final IServerMessenger m_messenger;
public BanPlayerAction(final Component parent, final IServerMessenger messenger) {
super("Ban Player From Game");
m_parent = JOptionPane.getFrameForComponent(parent);
m_messenger = messenger;
}
@Override
public void actionPerformed(final ActionEvent e) {
final DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>();
final JComboBox<String> combo = new JComboBox<>(model);
model.addElement("");
for (final INode node : new TreeSet<>(m_messenger.getNodes())) {
if (!node.equals(m_messenger.getLocalNode())) {
model.addElement(node.getName());
}
}
if (model.getSize() == 1) {
JOptionPane.showMessageDialog(m_parent, "No remote players", "No Remote Players", JOptionPane.ERROR_MESSAGE);
return;
}
final int rVal =
JOptionPane.showConfirmDialog(m_parent, combo, "Select player to ban", JOptionPane.OK_CANCEL_OPTION);
if (rVal != JOptionPane.OK_OPTION) {
return;
}
final String name = (String) combo.getSelectedItem();
for (final INode node : m_messenger.getNodes()) {
if (node.getName().equals(name)) {
final String realName = node.getName().split(" ")[0];
final String ip = node.getAddress().getHostAddress();
final String mac = m_messenger.getPlayerMac(node.getName());
m_messenger.NotifyUsernameMiniBanningOfPlayer(realName, null);
m_messenger.NotifyIPMiniBanningOfPlayer(ip, null);
m_messenger.NotifyMacMiniBanningOfPlayer(mac, null);
m_messenger.removeConnection(node);
return;
}
}
}
}