import java.awt.*; public class WrappedBox extends Box { protected Dimension wrapperSize_; protected Box inner_; public WrappedBox(Box inner, Dimension wrapperSize) { inner_ = inner; wrapperSize_ = wrapperSize; } public Dimension size() { Dimension is = inner_.size(); return new Dimension(is.width + wrapperSize_.width + 1, is.height + wrapperSize_.height + 1); } public void show(Graphics g, java.awt.Point origin) { g.setColor(color_); Dimension sz = size(); g.fillRect(origin.x, origin.y, sz.width, sz.height); inner_.show(g, new java.awt.Point(origin.x + wrapperSize_.width / 2, origin.y + wrapperSize_.height / 2)); } public Box duplicate() { WrappedBox p = new WrappedBox(inner_.duplicate(), wrapperSize_); p.color(color_); return p; } }