package games.strategy.engine.framework.networkMaintenance;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import games.strategy.engine.framework.startup.login.ClientLoginValidator;
import games.strategy.engine.framework.startup.ui.InGameLobbyWatcherWrapper;
public class SetPasswordAction extends AbstractAction {
private static final long serialVersionUID = -7767288210554177480L;
private final ClientLoginValidator m_validator;
private final Component m_parent;
private final InGameLobbyWatcherWrapper m_lobbyWatcher;
public SetPasswordAction(final Component parent, final InGameLobbyWatcherWrapper watcher,
final ClientLoginValidator validator) {
super("Set Game Password");
m_validator = validator;
m_parent = parent;
m_lobbyWatcher = watcher;
}
@Override
public void actionPerformed(final ActionEvent e) {
final JLabel label = new JLabel("Enter Password, (Leave blank for no password).");
final JPasswordField passwordField = new JPasswordField();
final JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(label, BorderLayout.NORTH);
panel.add(passwordField, BorderLayout.CENTER);
final int rVal = JOptionPane.showOptionDialog(JOptionPane.getFrameForComponent(m_parent), panel, "Enter Password",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null);
if (rVal != JOptionPane.OK_OPTION) {
return;
}
final String password = new String(passwordField.getPassword());
final boolean passworded;
if (password.trim().length() > 0) {
m_validator.setGamePassword(password);
passworded = true;
} else {
m_validator.setGamePassword(null);
passworded = false;
}
if (m_lobbyWatcher != null && m_lobbyWatcher.isActive()) {
m_lobbyWatcher.setPassworded(passworded);
}
}
}