/************************************************
Grundlegende Algorithmen mit Java,
http://algorithmen-und-problemloesungen.de/
Copyright @2007-2008 by Doina Logofatu
************************************************/

import java.awt.*;
import javax.swing.*;

public class P10PaintQuadrate extends JPanel{
    /* Because implements Serializable */
    private static final long serialVersionUID = -3249277353528332376L;
    
    /**@see java.awt.Container#paint(java.awt.Graphics)*/
    @Override
    public void paint(Graphics g) {        
        Dimension dim = this.getSize();        
        drawSquare(g, dim.width/2, dim.height/2
                , Math.min(dim.width/2, dim.height/2));        
    }

    private void drawSquare(Graphics g,int x, int y, int l)  {        
        if (l > 10) {
            drawSquare(g, x - l / 2, y - l / 2, l / 2);
            drawSquare(g, x - l / 2, y + l / 2, l / 2);
            drawSquare(g, x + l / 2, y - l / 2, l / 2);
            drawSquare(g, x + l / 2, y + l / 2, l / 2);
            g.drawRect(x - l / 2, y - l / 2, l , l );
        }
    }
    
    public static void main(String args[]) {
        JFrame frame = new JFrame("Rekursivitaet Beispiel");
        P10PaintQuadrate quadratePanel = new P10PaintQuadrate();        
        frame.getContentPane().add(quadratePanel);
        quadratePanel.setPreferredSize(new Dimension(400, 400));
        frame.pack();        
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //put the frame on the center of the screen
        Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameDim = frame.getSize();        
        frame.setLocation
            ((screenDim.width-frameDim.width)/2
            ,(screenDim.height-frameDim.height)/2);        
        //display the frame
        frame.setVisible(true);        
        
    }
}



