01: import java.awt.*; 02: import java.awt.geom.*; 03: 04: /** 05: A scene shape that is composed of multiple geometric shapes. 06: */ 07: public abstract class CompoundShape extends SelectableShape 08: { 09: public CompoundShape() 10: { 11: path = new GeneralPath(); 12: } 13: 14: protected void add(Shape s) 15: { 16: path.append(s, false); 17: } 18: 19: public boolean contains(Point2D aPoint) 20: { 21: return path.contains(aPoint); 22: } 23: 24: public void translate(double dx, double dy) 25: { 26: AffineTransform t 27: = AffineTransform.getTranslateInstance(dx, dy); 28: path.transform(t); 29: } 30: 31: public void draw(Graphics2D g2) 32: { 33: g2.draw(path); 34: } 35: 36: private GeneralPath path; 37: }