
import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class SquareFractal
{
	
	private class DrawPanel extends JPanel 
	{ 
	private List<int[]> rectangleCoordinates = new ArrayList<int[]>();
	
	public void drawRectangle(int x1, int y1, int x2, int y2) {
		synchronized(rectangleCoordinates) {
		rectangleCoordinates.add(new int[]{x1,y1,x2,y2});
		}
	}
	
	  @Override 
	  protected void paintComponent( Graphics g ) 
	  { 
	    super.paintComponent( g ); 
	    synchronized(rectangleCoordinates) {
	    for (int[] c : rectangleCoordinates)
	    	g.drawRect( c[0], c[1], c[2],c[3] ); 
	    }
	  } 
	}	
	
	private static JFrame frame;
	private static DrawPanel panel;

	
	public static void initFrame() {
		
	 frame = new JFrame( "SquareFractal" ); 
	 frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 
frame.setBackground(Color.white);
	  frame.setSize( 500, 500 ); 
	  panel = new SquareFractal().new DrawPanel();
	  frame.add(panel);
	  frame.setVisible( true ); 
	}
	
	public static void drawRectangle(int x1,int y1,int width, int height) {
		panel.drawRectangle(x1, y1,width, height);
	}
	
	
}
