NestedSquaresController.java

import objectdraw.*;
import java.awt.*;

public 
class NestedSquaresController extends WindowController {
   
   private NestedSquares nestedSquares;
   
   public void begin() {
      new Text("Click in Applet to 'moveTo' that location", 
                200, 10, canvas);
      nestedSquares = new NestedSquares(100, 100, 100, canvas);
   } // end begin

   public void onMousePress (Location point) {
      nestedSquares.moveTo(point.getX(), point.getY());
   } // end onMousePress

} // end NestedSquaresController class

NestedSquares.java

import objectdraw.*;
import java.awt.*;

public class NestedSquares {
    private static final double SHIFT = 2;
    private FramedRect outerSquare;
    private NestedSquares rest;
    
    public NestedSquares(double x, double y, double size, 
                                       DrawingCanvas canvas) {
        outerSquare = new FramedRect( x, y, size, size, canvas );
        if ( size >= 4 ) {
            rest = new NestedSquares(x+SHIFT, y+SHIFT, 
                                 size-2*SHIFT, canvas);
        }
    }
    
    public void moveTo(double x, double y) {
        outerSquare.moveTo(x,y);
        if (rest != null) {
            rest.moveTo(x+SHIFT, y+SHIFT);
        }
    }

}