/* * @(#)GroupFigure.java * * Project: JHotdraw - a GUI framework for technical drawings * http://www.jhotdraw.org * http://jhotdraw.sourceforge.net * Copyright: © by the original author(s) and all contributors * License: Lesser GNU Public License (LGPL) * http://www.opensource.org/licenses/lgpl-license.html */ package CH.ifa.draw.figures; import java.awt.*; import java.util.*; import CH.ifa.draw.framework.*; import CH.ifa.draw.standard.*; /** * A Figure that groups a collection of figures. * * @version <$CURRENT_VERSION$> */ public class GroupFigure extends CompositeFigure { /* * Serialization support. */ private static final long serialVersionUID = 8311226373023297933L; private int groupFigureSerializedDataVersion = 1; /** * GroupFigures cannot be connected */ public boolean canConnect() { return false; } /** * Gets the display box. The display box is defined as the union * of the contained figures. */ public Rectangle displayBox() { FigureEnumeration fe = figures(); Rectangle r = fe.nextFigure().displayBox(); while (fe.hasMoreElements()) { r.add(fe.nextFigure().displayBox()); } return r; } public void basicDisplayBox(Point origin, Point corner) { // do nothing // we could transform all components proportionally } public FigureEnumeration decompose() { return new FigureEnumerator(fFigures); } /** * Gets the handles for the GroupFigure. */ public Vector handles() { Vector handles = new Vector(); handles.addElement(new GroupHandle(this, RelativeLocator.northWest())); handles.addElement(new GroupHandle(this, RelativeLocator.northEast())); handles.addElement(new GroupHandle(this, RelativeLocator.southWest())); handles.addElement(new GroupHandle(this, RelativeLocator.southEast())); return handles; } /** * Sets the attribute of all the contained figures. */ public void setAttribute(String name, Object value) { super.setAttribute(name, value); FigureEnumeration k = figures(); while (k.hasMoreElements()) { k.nextFigure().setAttribute(name, value); } } }