package fr.lyrgard.hexScape.gui.desktop.view.common.newGame;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Collection;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import net.miginfocom.swing.MigLayout;
import fr.lyrgard.hexScape.gui.desktop.HexScapeFrame;
import fr.lyrgard.hexScape.model.game.Game;
import fr.lyrgard.hexScape.model.player.Player;
public class SelectPlayerDialog extends JDialog {
/**
*
*/
private static final long serialVersionUID = 3575478753881892092L;
private String selectedPlaceholderId;
public SelectPlayerDialog(Game game, final PlayerSelectedListener listener) {
Collection<Player> freePlayers = game.getFreePlayers();
if (!freePlayers.isEmpty()) {
selectedPlaceholderId = freePlayers.iterator().next().getId();
}
setLocationRelativeTo(HexScapeFrame.getInstance());
setTitle("Choose your role");
this.setLayout(new MigLayout(
"", // Layout Constraints
"[right][left]", // Column constraints
"[100]20[]" // Row constraints
));
Dimension dim = new Dimension(600, 400);
setPreferredSize(dim);
final JButton chooseRoleButton = new JButton("Choose this role");
chooseRoleButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
listener.playerSelected(selectedPlaceholderId);
SelectPlayerDialog.this.dispose();
}
});
chooseRoleButton.setEnabled(false);
JLabel availableRolesLabel = new JLabel("Available roles :");
PlayerListModel placeholderListModel = new PlayerListModel(freePlayers);
final PlaceholderList placeholderList = new PlaceholderList(placeholderListModel);
placeholderList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
Player placeholder = placeholderList.getSelectedValue();
selectedPlaceholderId = placeholder.getId();
chooseRoleButton.setEnabled(true);
}
}
});
add(availableRolesLabel);
add(placeholderList, "grow, wrap");
add(chooseRoleButton, "span 2, align center");
pack();
}
}