/**
 * JavaLife - Conway's Life Simulation
 * @author Scott Hurring - scott at hurring dot com
 * @version alpha1
 * @license GPL
 * For most recent version, go to this url:
 * http://hurring.com/code/java/javalife/
 */

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 * Resize Dialog
 */
public class ResizeDialog extends JDialog
{
	JavaLife parent;
	private JTextField rowsText;
	private JTextField colsText;
	
	public ResizeDialog(JavaLife parent) {
		super(new Frame(), "Resize Field");
		this.parent = parent;
	}
	
	void display() {
		setBounds(100, 100, 300, 250);
		setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				performCloseAction();
			}
		});

		JPanel p = new JPanel();
		p.setLayout(new BorderLayout());

		// Header text
		JEditorPane headText = createHtmlEditorPane();
		headText.setText("<center><h2>Resize Field</h2></center>");
		headText.setEditable(false);
		p.add(headText, BorderLayout.NORTH);

		p.add(createResizePanel(), BorderLayout.CENTER);
		
		p.add(createButtonBar(), BorderLayout.SOUTH);

		getContentPane().add(p);
		setVisible(true);
	}

	private JPanel createResizePanel() {
		JPanel p = new JPanel(new GridLayout(2,2));
		
		JPanel pp = new JPanel(new FlowLayout());
		pp.add(new JLabel("Rows:"));
		rowsText = new JTextField("", 5);
		pp.add(rowsText);
		
		pp.add(new JLabel("Cols:"));
		colsText = new JTextField("", 5);
		pp.add(colsText);
		p.add(pp);
		
		return p;
	}
	
	private JPanel createButtonBar() {
		JPanel p = new JPanel();
		p.setLayout(new FlowLayout());

		JButton closeButton = new JButton("Cancel");
		closeButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				performCloseAction();
			}
		});
		
		JButton resizeButton = new JButton("Resize");
		resizeButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				performResizeAction();
				performCloseAction();
			}
		});
		
		p.add(resizeButton);
		p.add(closeButton);

		return p;
	}

	private JEditorPane createHtmlEditorPane() {
		return new JEditorPane("text/html", "");
	}

	private void performResizeAction() {
		parent.resize(
				Integer.parseInt(rowsText.getText()),
				Integer.parseInt(colsText.getText())
		);
	}

	private void performCloseAction() {
		setVisible(false);
	}

}

