package magic.ui.widget.duel.choice;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JPanel;
import magic.model.MagicSource;
import magic.model.choice.MagicPlayChoiceResult;
import magic.ui.screen.duel.game.SwingGameController;
import magic.translate.MText;
import magic.ui.widget.duel.viewer.UserActionPanel;
import magic.ui.FontsAndBorders;
import magic.ui.widget.message.TextLabel;
@SuppressWarnings("serial")
public class PlayChoicePanel extends JPanel implements ActionListener {
// translatable strings
private static final String _S1 = "Choose which ability to play.";
private static final String MESSAGE = MText.get(_S1);
private static final Dimension BUTTON_DIMENSION=new Dimension(70,25);
private final SwingGameController controller;
private final List<MagicPlayChoiceResult> results;
private MagicPlayChoiceResult result;
public PlayChoicePanel(final SwingGameController controller, final MagicSource source, final List<MagicPlayChoiceResult> results) {
this.controller=controller;
this.results=results;
setLayout(new BorderLayout());
setOpaque(false);
final TextLabel textLabel=new TextLabel(SwingGameController.getMessageWithSource(source,MESSAGE),UserActionPanel.TEXT_WIDTH,true);
add(textLabel,BorderLayout.NORTH);
final JPanel buttonPanel=new JPanel(new FlowLayout(FlowLayout.CENTER,5,5));
buttonPanel.setBorder(FontsAndBorders.EMPTY_BORDER);
buttonPanel.setOpaque(false);
add(buttonPanel,BorderLayout.CENTER);
for (int index=0;index<results.size();index++) {
final JButton button=new JButton(results.get(index).getText());
button.setPreferredSize(BUTTON_DIMENSION);
button.setBorder(BorderFactory.createLineBorder(FontsAndBorders.GRAY4));
button.setActionCommand(Integer.toString(index));
button.addActionListener(this);
button.setFocusable(false);
buttonPanel.add(button);
}
}
public MagicPlayChoiceResult getResult() {
return result;
}
@Override
public void actionPerformed(final ActionEvent event) {
result=results.get(Integer.parseInt(event.getActionCommand()));
controller.actionClicked();
}
}