/*
 ** This file is part of Filius, a network construction and simulation software.
 ** 
 ** Originally created at the University of Siegen, Institute "Didactics of
 ** Informatics and E-Learning" by a students' project group:
 **     members (2006-2007): 
 **         André Asschoff, Johannes Bade, Carsten Dittich, Thomas Gerding,
 **         Nadja Haßler, Ernst Johannes Klebert, Michell Weyer
 **     supervisors:
 **         Stefan Freischlad (maintainer until 2009), Peer Stechert
 ** Project is maintained since 2010 by Christian Eibl <filius@c.fameibl.de>
 **         and Stefan Freischlad
 ** Filius is free software: you can redistribute it and/or modify
 ** it under the terms of the GNU General Public License as published by
 ** the Free Software Foundation, either version 2 of the License, or
 ** (at your option) version 3.
 ** 
 ** Filius is distributed in the hope that it will be useful,
 ** but WITHOUT ANY WARRANTY; without even the implied
 ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 ** PURPOSE. See the GNU General Public License for more details.
 ** 
 ** You should have received a copy of the GNU General Public License
 ** along with Filius.  If not, see <http://www.gnu.org/licenses/>.
 */
/*
 * JBackgroundPanel.java
 *
 * Created on 2. Mai 2006, 17:31
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package filius.gui;

import java.awt.Graphics;
import java.awt.Insets;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

/**
 * 
 * @author Johannes Bade
 */
public class JBackgroundPanel extends JPanel {
	private static final long serialVersionUID = 1L;

	private ImageIcon backgroundImage;

	private boolean repeatBG = true;

	/**
	 * Setzt ein neues Hintergrundbild
	 * 
	 * @author Johannes Bade
	 * @param dateiname
	 *            String
	 */
	public void setBackgroundImage(String dateiname) {
		backgroundImage = new ImageIcon(getClass().getResource("/" + dateiname));
	}

	/**
	 * Immer wenn die Komponente gezeichnet wird, malt diese Methode auf der
	 * Komponentenflaeche ein vorher bestimmtes Hintergrundbild
	 * 
	 * @author Johannes Bade
	 */
	protected void paintComponent(Graphics g) {
		super.paintComponent(g);
		Insets ins = getInsets();
		if (backgroundImage != null) {
			if (repeatBG) {
				for (int a = 0; a <= this.getHeight() / backgroundImage.getIconHeight(); a++) {
					for (int i = 0; i <= this.getWidth() / backgroundImage.getIconWidth(); i++) {
						backgroundImage.paintIcon(this, g, ins.left + i * backgroundImage.getIconWidth(), ins.top + a
						        * backgroundImage.getIconHeight());
					}
				}
			} else {
				backgroundImage.paintIcon(this, g, ins.left, ins.top);
			}
		}
	}

}
