import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Thermostat extends JFrame {

	/**
	 * @param args
	 */
	private JPanel upperPanel, lowerPanel;
	private JTextField heatSetPoint;
	private JButton upHeatArrow, downHeatArrow;
	private int heatIfBelow = 68;
	private int coolIfAbove = 72;

	private ButtonListener beh = new ButtonListener();

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Thermostat t = new Thermostat("A Thermostat GUI");
	}

	public Thermostat(String title) {
		buildFrame(title);
		Container contentPane = getContentPane();

		upperPanel = buildUpperPanel();
		lowerPanel = buildLowerPanel();

		JPanel mainPanel = new JPanel();
		mainPanel.setLayout(new GridLayout(2, 1));

		mainPanel.add(upperPanel);
		mainPanel.add(lowerPanel);

		contentPane.add(mainPanel);

		pack();
		setVisible(true);
	}

	private JPanel buildUpperPanel() {
		// TODO Auto-generated method stub
		JPanel p = new JPanel();
		p.setPreferredSize(new Dimension(200, 200));
		p.setBackground(Color.RED);
		return p;
	}

	private JPanel buildLowerPanel() {
		// TODO Auto-generated method stub
		JPanel p = new JPanel();
		p.setPreferredSize(new Dimension(200, 200));
		p.setBackground(Color.BLUE);

		JPanel heatPanel = buildHeatPanel();

		p.add(heatPanel);

		return p;

	}

	private JPanel buildHeatPanel() {
		JPanel p = new JPanel();
		p.setLayout(new BorderLayout());

		upHeatArrow = new JButton("^");
		upHeatArrow.addActionListener(beh);

		downHeatArrow = new JButton("v");
		downHeatArrow.addActionListener(beh);

		heatSetPoint = new JTextField(Integer.toString(heatIfBelow));

		JPanel arrowPanel = new JPanel();
		arrowPanel.setLayout(new BorderLayout());
		arrowPanel.add(upHeatArrow, BorderLayout.NORTH);
		arrowPanel.add(downHeatArrow, BorderLayout.SOUTH);

		p.add(heatSetPoint, BorderLayout.NORTH);
		p.add(arrowPanel, BorderLayout.SOUTH);

		return p;

	}

	private void buildFrame(String title) {
		setTitle(title);

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocation(10, 10);
		setSize(400, 400);
	}

	private class ButtonListener implements ActionListener {

		public void actionPerformed(ActionEvent event) {
			// TODO Auto-generated method stub

			String label = event.getActionCommand();

			if (label.equals("^")) // upArrow was pressed
			{
				int val = Integer.parseInt(heatSetPoint.getText());
				heatSetPoint.setText(new Integer((val + 1)).toString());
			}

		}
	}

}
