package linea;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.util.ArrayList;

import javax.swing.JPanel;

public class ZoneDessin extends JPanel {

	private static final long serialVersionUID = 1L;

	protected ArrayList<ObjetGraphique> listeObjets = new ArrayList<ObjetGraphique>();

	protected boolean estArrete = false;

	public static int largeur = 800;
	public static int hauteur = 600;

	private Color couleurFond = new Color(0, 73, 220);

	public ZoneDessin() {
		setLayout(new BorderLayout());
		setPreferredSize(new Dimension(largeur, hauteur));
		setBackground(couleurFond);
	}

	public void setCouleurFond(Color c) {
		couleurFond = c;
		setBackground(c);
	}

	public void ajouterObjet(ObjetGraphique unObjet) {
		listeObjets.add(unObjet);
	}

	public void arreter() {
		estArrete = true;
	}

	public void demarrer() {
		estArrete = false;
	}

	public void traiterBoucleAnimation() {
		if (estArrete == true) {
			return;
		}

		for (ObjetGraphique obj : listeObjets) {
			obj.Animer();
		}

		repaint();
	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);

		Graphics2D g2D = (Graphics2D) g;
		g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

		for (ObjetGraphique obj : listeObjets) {
			obj.Afficher(g);
		}
	}

	public void viderObjets() {
		listeObjets.clear();
	}
}