package net.jacobandreas.cellular;

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

public class CAApplet extends JApplet {

    CAModel model;
    CAView display;

    Timer timer;

    private static final int UPDATE_INTERVAL = 50;

    public void init() {

        model = new CAModel(300, 300);
        display = new CAView(model);

        timer = new Timer(UPDATE_INTERVAL, new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                model.nextGeneration();
                display.repaint();
            }
        });

        getContentPane().add(display);

        int freeze = Integer.parseInt(getParameter("freeze"));
        int grow = Integer.parseInt(getParameter("grow"));
        int killbelow = Integer.parseInt(getParameter("killbelow"));
        int killabove = Integer.parseInt(getParameter("killabove"));
        
        model.addRule(new Hotplate(freeze, grow, killbelow, killabove));

        model.seed(50, 51, new int[][] {{1, 1, 0},
                                        {1, 10, 1},
                                        {0, 1, 0}});

        model.seed(200, 200, new int[][] {{1, 1, 1},
                                          {1, 10, 0},
                                          {1, 1, 1}});

        addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if(timer.isRunning()) {
                    timer.stop();
                } else {
                    timer.start();
                }
            }
        });


    }

    public void start() {
        //timer.start();
    }

    public void pause() {
        timer.stop();
    }

    public void stop() {
        pause();
    }

}

