package bayesGame.ui;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import bayesGame.bayesbayes.OptionNodeOption;
import bayesGame.levelcontrollers.Controller;
public class MinigameMenu extends JDialog {
private Controller owner;
private List<OptionNodeOption> options;
private List<OptionButton> buttons;
private Object node;
public MinigameMenu(Controller owner, JFrame frame, Object node, List<OptionNodeOption> options) {
super(frame, true);
this.options = options;
this.owner = owner;
this.node = node;
if (options != null && options.size() > 0){
setupMenu();
} else {
this.sendMessage(null);
this.CancelButtonActionPerformed(null);
}
}
private void setupMenu(){
Container container = getContentPane();
container.setLayout(new BoxLayout(container, BoxLayout.PAGE_AXIS));
buttons = new ArrayList<OptionButton>();
for (OptionNodeOption o : options){
String requirementText = "<html>";
if (o.hasRequirements()){
requirementText = requirementText + "<b>(" + o.getRequirementString() + ")</b> ";
}
String buttonText = requirementText + o.getDescription();
if (o.getTimeSpent() > 0){
buttonText = buttonText + " (" + o.getTimeSpent() + " turns)";
}
OptionButton button = new OptionButton(buttonText, o);
button.setFont(new Font("Serif", Font.PLAIN, 30));
button.setAlignmentX(Component.CENTER_ALIGNMENT);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
buttonPressed(evt);
}
});
if (!this.requirementsMet(o)){
button.setEnabled(false);
}
container.add(button);
}
JButton cancelButton = new JButton("Never mind");
cancelButton.setFont(new Font("Serif", Font.PLAIN, 30));
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
CancelButtonActionPerformed(evt);
}
});
cancelButton.setAlignmentX(Component.CENTER_ALIGNMENT);
container.add(cancelButton);
this.pack();
}
protected void CancelButtonActionPerformed(ActionEvent evt) {
this.dispose();
}
protected void buttonPressed(ActionEvent evt) {
OptionButton source = (OptionButton)evt.getSource();
this.sendMessage(source.option);
this.dispose();
}
private void sendMessage(OptionNodeOption option){
Object[] message = new Object[2];
message[0] = node;
message[1] = option;
owner.genericMessage(message);
}
private boolean requirementsMet(OptionNodeOption option){
return !option.hasRequirements();
}
}