/*
 ** 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);
            }
        }
    }

}
