/**
 * ShuffleBoardMenu.java
 *
 * Caitlin Ross
 * 100735219
 */

import javax.swing.*;
import java.awt.event.*;

public class ShuffleBoardMenu extends JMenuBar{
	
	//JMenuBar menuBar;
	JMenu gameMenu;
	JMenu speedMenu;
	JMenu player1ColorMenu;
	JMenu player2ColorMenu;
	JMenuItem resetItem;
	JMenuItem exitItem;
	JRadioButtonMenuItem fastItem;
	JRadioButtonMenuItem regularItem;
	JRadioButtonMenuItem slowItem;
	JRadioButtonMenuItem colors1[];
	JRadioButtonMenuItem colors2[];
	ButtonGroup player1Colors;
	ButtonGroup player2Colors;
	ButtonGroup speeds;
	ShuffleBoardFrame frame;
	
    public ShuffleBoardMenu(ShuffleBoardFrame aFrame) {
    	frame = aFrame;
    	resetItem = new JMenuItem("Reset");
    	resetItem.addActionListener(new ActionListener() {
    		public void actionPerformed(ActionEvent e) {
       			frame.resetGame();
    		}
		});
		
		fastItem = new JRadioButtonMenuItem("Fast");
		fastItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				frame.updateSpeed(0);
			}
		});
		regularItem = new JRadioButtonMenuItem("Regular");
		regularItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				frame.updateSpeed(1);
			}
		});
		slowItem = new JRadioButtonMenuItem("Slow");
		slowItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				frame.updateSpeed(2);
			}
		});
		speeds = new ButtonGroup();
		speeds.add(fastItem);
		speeds.add(regularItem);
		speeds.add(slowItem);
		speedMenu = new JMenu("Speed");
		speedMenu.add(fastItem);
		speedMenu.add(regularItem);
		speedMenu.add(slowItem);
		
		player1ColorMenu = new JMenu("Player 1's Color");
		colors1 = new JRadioButtonMenuItem[10];
		player1Colors = new ButtonGroup();
		for(int i=0; i<10; i++){
			colors1[i] = new JRadioButtonMenuItem(setColorName(i));
			colors1[i].addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					frame.updateColors(e);
				}
			});
			player1Colors.add(colors1[i]);
			player1ColorMenu.add(colors1[i]);
		}
		
		player2ColorMenu = new JMenu("Player 2's Color");
		colors2 = new JRadioButtonMenuItem[10];
		player2Colors = new ButtonGroup();
		for(int i=0; i<10; i++){
			colors2[i] = new JRadioButtonMenuItem(setColorName(i));
			colors2[i].addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					frame.updateColors(e);
				}
			});
			player2Colors.add(colors2[i]);
			player2ColorMenu.add(colors2[i]);
		}
		
		exitItem = new JMenuItem("Exit");
		exitItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				frame.exitGame();
			}
		});
    	
    	gameMenu = new JMenu("Game");
    	gameMenu.add(resetItem);
    	gameMenu.add(speedMenu);
    	gameMenu.add(player1ColorMenu);
    	gameMenu.add(player2ColorMenu);
    	gameMenu.add(exitItem);
    	
    	//menuBar = new JMenuBar();
    	frame.setJMenuBar(this);
    	this.add(gameMenu);
    }
    
    public void setDefaults(){
    	colors1[0].setSelected(true);
    	colors2[0].setEnabled(false);	//Player 2 cannot choose red until player 1 chooses another color
    	colors2[2].setSelected(true);
    	colors1[2].setEnabled(false);	//Player 1 cannot choose yellow until player 2 chooses another color
    	regularItem.setSelected(true);
    }
    
    public JRadioButtonMenuItem getColors1(int num){
    	if(num>9 || num<0)
    		return null;
    	return colors1[num];
    }
    
    public JRadioButtonMenuItem getColors2(int num){
    	if(num>9 || num<0)
    		return null;
    	return colors2[num];
    }
    
    private String setColorName(int colorNum){
    	switch (colorNum){
    		case 0:		return "Red";
    		case 1:		return "Orange";
    		case 2:		return "Yellow";
    		case 3:		return "Green";
    		case 4:		return "Blue";
    		case 5:		return "Cyan";
    		case 6:		return "Magenta";
    		case 7:		return "Pink";
    		case 8:		return "White";
    		case 9:		return "Black";
    		default:	return "Error";
    	}
    }
    
}