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.levelcontrollers.ChoiceMenu; import bayesGame.levelcontrollers.ChoiceMenuChoice; import bayesGame.levelcontrollers.Controller; import bayesGame.levelcontrollers.LevelController; import bayesGame.levelcontrollers.Script; import bayesGame.minigame.MinigameController; public class ChoiceMenuUI extends JDialog { private ChoiceMenu choiceMenu; private LevelController owner; public ChoiceMenuUI(JFrame frame, LevelController owner, ChoiceMenu choiceMenu) { super(frame, true); this.choiceMenu = choiceMenu; this.owner = owner; setupMenu(); } private void setupMenu(){ Container container = getContentPane(); container.setLayout(new BoxLayout(container, BoxLayout.PAGE_AXIS)); List<JButton> buttons = new ArrayList<JButton>(); for (ChoiceMenuChoice choice : choiceMenu){ ChoiceButton button = new ChoiceButton(choice.getDescription()); button.choice = choice; button.setFont(new Font("Serif", Font.PLAIN, 30)); button.setAlignmentX(Component.CENTER_ALIGNMENT); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { buttonPressed(evt); } }); button.setEnabled(choice.enabled); container.add(button); } this.pack(); } private void buttonPressed(ActionEvent evt){ ChoiceButton button = (ChoiceButton)evt.getSource(); String[] preamble = button.choice.getPreamble(); if (preamble != null){ for (String s : preamble){ owner.addText(s); } owner.addProcessEventQueue(); this.setVisible(false); owner.run(); } MinigameController gameController = button.choice.getGameController(); Script script = button.choice.getScript(); if (gameController != null){ owner.menuChoiceMade(gameController); } else if (script != null){ script.run(); } this.dispose(); } }