package tictactoe.pres;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import util.*;

public class EditPanel extends ActionPanel {

    protected JButton xButton, oButton;
    protected JButton fileButton, resetButton, quitButton, loadCustomButton;

    /**
     * Construct a new Panel containing some buttons used to
     * facilitate editing the game appearance.
     */
    public EditPanel() {
	this.setLayout(new GridLayout(1,0));
	xButton = new JButton("x");
	xButton.setActionCommand("TTTx");
	oButton = new JButton("o");
	oButton.setActionCommand("TTTo");
	this.add(xButton);
	this.add(oButton);
	fileButton = new JButton("File");
	fileButton.setActionCommand("TTTFile");
	resetButton = new JButton("New Game");
	resetButton.setActionCommand("TTTNew Game");
	quitButton = new JButton("Quit");
	quitButton.setActionCommand("TTTQuit");
	loadCustomButton = new JButton("Load Custom");
	loadCustomButton.setActionCommand("TTTLoadCustom");
	this.add(fileButton);
	this.add(resetButton);
	this.add(quitButton);
	this.add(loadCustomButton);
    }

    /**
     * Registers <code>listener</code> to receive ActionEvents
     * from the reactive subcomponents of the panel.  This
     * wrapper function invokes the addActionListener method of each
     * subcomponent.
     *
     * @param listener Event handler to register with the 
     * panel components.
     */
    public void addActionListener(ActionListener listener) {
	xButton.addActionListener(listener);
	oButton.addActionListener(listener);
	fileButton.addActionListener(listener);
	resetButton.addActionListener(listener);
	quitButton.addActionListener(listener);
	loadCustomButton.addActionListener(listener);
    }
    
    public JMenuBar makeJMenuBar(ActionListener listener) {
	JMenu fileMenu = new JMenu("File");
	Copy.aBtoAB(fileMenu, fileButton);
	JMenuItem resetMI = new JMenuItem("New Game");
	Copy.aBtoAB(resetMI, resetButton);
	resetMI.setActionCommand("TTTNew Game");
	resetMI.addActionListener(listener);
	fileMenu.add(resetMI);
	JMenuItem loadCustomMI = new JMenuItem("Load Custom");
	Copy.aBtoAB(loadCustomMI, loadCustomButton);
	loadCustomMI.setActionCommand("TTTLoad Custom");
	loadCustomMI.addActionListener(listener);
	fileMenu.add(loadCustomMI);
	JMenuItem quitMI = new JMenuItem("Quit");
	Copy.aBtoAB(quitMI, quitButton);
	quitMI.setActionCommand("TTTRealQuit");
	quitMI.addActionListener(listener);
	fileMenu.add(quitMI);
	JMenuBar rv = new JMenuBar();
	rv.add(fileMenu);
	return rv;
    }

    /**
     * Runs a quick test of the class code.
     *
     * @param args Command-line arguments (ignored).
     */
    public static void main (String[] args) {
	JFrame f = new JFrame();
	EditPanel editPanel = new EditPanel();
	editPanel.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
		    System.out.println("ActionCommand: "+e.getActionCommand());
		    System.out.println("Action source: "+e.getSource());
		}});
	f.getContentPane().add(editPanel);
	f.pack();
	f.setVisible(true);
	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

