Additional code - zip file

Listing 1

public void paintComponent(Graphics g) {
    super.paintComponent(g);
    Dimension size = getSize();
    Insets insets = getInsets();

    int x = size.width - insets.left - insets.right - 2;
    int y = size.height - insets.top - insets.bottom - 2;

    for (int i = 0; i <= 2; i++) {  // paint ribs, lower right up
	 paintRib(g, x, y - (i * 4));
    }

    for (int i = 0; i <= 2; i++) {  // paint ribs, lower right left
        if (i != 0) {
	     paintRib(g, x - (i * 4), y);
	 }
    }

    paintRib(g, x - 4, y - 4);  // paint last rib, lower right back 
}


Listing 2

public void mousePressed(MouseEvent e) {
    Point pt = new Point(e.getPoint());
    SwingUtilities.convertPointToScreen(pt, FrameResizer.this);

    Rectangle frameBounds = parentContainer.getBounds();

    mouseAdjust.x = frameBounds.x + frameBounds.width -
      pt.x - 1;
    mouseAdjust.y = frameBounds.y + frameBounds.height - pt.y - 1;
}


Listing 3

public void mouseDragged(MouseEvent e) {
    mouseLocation.x = e.getX();
    mouseLocation.y = e.getY();

    SwingUtilities.convertPointToScreen(mouseLocation,
	    FrameResizer.this);

    Rectangle frameBounds = parentContainer.getBounds();
    parentContainer.setBounds(frameBounds.x, frameBounds.y,
	mouseLocation.x - frameBounds.x + mouseAdjust.x,
	mouseLocation.y - frameBounds.y + mouseAdjust.y);
}


Listing 4

private static void validate(final Container container) {
    SwingUtilities.invokeLater(new Runnable() {
	  public void run() {
		if (container instanceof Frame) {
	          ((Frame)container).invalidate();
		    ((Frame)container).validate();
		} else if (container instanceof JInternalFrame) {
                ((JInternalFrame)container).revalidate();
		    ((JInternalFrame)container).repaint();
		}
		container.repaint();
       }
    });
}


Listing 5

public static void setContinuousLayout(final Container container) {
    new Timer(100, new ActionListener() {
        public void actionPerformed(ActionEvent e) {
	      Dimension currentSize = container.getSize();
		if (continuousLayoutWindows == null) {
		    continuousLayoutWindows = new HashMap();
		}
		Dimension windowSize =
		(Dimension)continuousLayoutWindows.get(container);
		if (windowSize == null) {
                windowSize = new Dimension();
                continuousLayoutWindows.put(container, windowSize);
		}
		if (!currentSize.equals(windowSize)) {
                windowSize.width = currentSize.width;
                windowSize.height = currentSize.height;
                validate(container);
		}
        }
    }).start();
}

Additional code - zip file