Newer
Older
moobreeder / MooBreeder.java
/**
 * Moobreeder is a simple cow breeding game to illustrate the principles of
 * selective breeding to KS3 pupils.
 *
 * (c) Daniel Vedder 2018, Amano Christian School
 * Licensed under the terms of the MIT license.
 * https://git.synoikos.de/daniel/moobreeder
 */

/*
 * This is the main class with the GUI.
 */

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

public class MooBreeder extends JFrame
{
	private JMenuBar menubar;
	private JMenu fileMenu, helpMenu;
	private JMenuItem reset, quit, help, about;
	private Box herdBox, parentBox, offspringBox;
	private Box motherBox, fatherBox, child1Box, child2Box;
	private JButton add, breed, keep, remove;

	public static void main(String[] args)
	{
		Herd.getInstance();
		MooBreeder mb = new MooBreeder();
	}
	
	public MooBreeder()
	{
		this.setTitle("MooBreeder");
		this.setSize(800, 400);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.createMenu();
		this.createLayout();
		//TODO
		this.setVisible(true);
	}

	private void createMenu()
	{
		menubar = new JMenuBar();
		fileMenu = new JMenu("File");
		helpMenu = new JMenu("Help");
		reset = new JMenuItem("Reset");
		quit = new JMenuItem("Exit");
		help = new JMenuItem("Help");
		about = new JMenuItem("About");
		//TODO
		reset.addActionListener(new ActionListener()
        {
			public void actionPerformed(ActionEvent e) {
				int restart = JOptionPane.showConfirmDialog(null, "Reset the game?", "Reset?",
															JOptionPane.OK_CANCEL_OPTION,
															JOptionPane.QUESTION_MESSAGE);
				if (restart == JOptionPane.OK_OPTION) resetGame();
			}
		});
		quit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int confirm = JOptionPane.showConfirmDialog(null, "Quit MooBreeder?", "Quit?",
															JOptionPane.YES_NO_OPTION,
															JOptionPane.WARNING_MESSAGE);
				if(confirm == JOptionPane.YES_OPTION) System.exit(0);
			}
		});
		quit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.ALT_MASK));
		about.addActionListener(new ActionListener() {
		   public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(null, "MooBreeder - an educational breeding game"+
											  "\n\n(c) 2018 Daniel Vedder"+
											  ", Amano Christian School"+
											  "\nhttps://git.synoikos.de/daniel/moobreeder",
											  "About", JOptionPane.INFORMATION_MESSAGE);
			}
		});
		fileMenu.add(reset);
		fileMenu.add(quit);
		helpMenu.add(help);
		helpMenu.add(about);
		menubar.add(fileMenu);
		menubar.add(helpMenu);
		this.setJMenuBar(menubar);
	}

	private void createLayout()
	{
		//TODO
		herdBox = new Box(BoxLayout.Y_AXIS);
		Box breedBox = new Box(BoxLayout.Y_AXIS);
		parentBox = new Box(BoxLayout.Y_AXIS);
		offspringBox = new Box(BoxLayout.Y_AXIS);
		this.add(herdBox, BorderLayout.WEST);
		this.add(breedBox, BorderLayout.EAST);
		breedBox.add(parentBox);
		breedBox.add(offspringBox);
		updateGUI();
	}

	private void updateGUI()
	{
		updateHerdBox();
		updateParentBox();
		updateOffspringBox();
	}

	private void updateHerdBox()
	{
		//TODO
		JLabel label = new JLabel("Your current herd:");
		herdBox.add(label);
	}

	private void updateParentBox()
	{
		//TODO
		JLabel label = new JLabel("Parents");
		parentBox.add(label);
	}


	private void updateOffspringBox()
	{
		//TODO
		JLabel label = new JLabel("Offspring");
		offspringBox.add(label);
	}

	private void resetGame()
	{
		Herd.getInstance().resetHerd();
		updateGUI();
	}

}