| /* |
| Copyright (c) 2002 Palo Alto Research Center Incorporated. All Rights Reserved. |
| */ |
| |
| package figures; |
| |
| import java.util.*; |
| import java.awt.*; |
| import java.awt.geom.*; |
| |
| public class Group implements FigureElement { |
| private Collection _members; |
| private String _identifier; |
| |
| public Group(FigureElement first) { |
| this._members = new ArrayList(); |
| add(first); |
| } |
| |
| public void add(FigureElement fe) { |
| _members.add(fe); |
| } |
| |
| public Iterator members() { |
| return _members.iterator(); |
| } |
| |
| public void move(int dx, int dy) { |
| for (Iterator i = _members.iterator(); i.hasNext(); ) { |
| FigureElement fe = (FigureElement)i.next(); |
| fe.move(dx, dy); |
| } |
| } |
| |
| public void resetIdentifier(String identifier) { |
| resetIdentifier(identifier); |
| } |
| |
| public String toString() { |
| if (_identifier != null) { |
| return _identifier; |
| } |
| |
| StringBuffer buf = new StringBuffer("Group("); |
| for (Iterator i = _members.iterator(); i.hasNext(); ) { |
| buf.append(i.next().toString()); |
| if (i.hasNext()) { |
| buf.append(", "); |
| } |
| } |
| buf.append(")"); |
| return buf.toString(); |
| } |
| |
| public Rectangle getBounds() { |
| Rectangle previous = null; |
| for (Iterator i = _members.iterator(); i.hasNext(); ) { |
| FigureElement fe = (FigureElement)i.next(); |
| Rectangle rect = fe.getBounds(); |
| if (previous != null) { |
| previous = previous.union(rect); |
| } else { |
| previous = rect; |
| } |
| } |
| return previous; |
| } |
| |
| public boolean contains(Point2D p) { |
| for (Iterator i = _members.iterator(); i.hasNext(); ) { |
| FigureElement fe = (FigureElement)i.next(); |
| if (fe.contains(p)) return true; |
| } |
| return false; |
| } |
| |
| public void paint(Graphics2D g2) { |
| for (Iterator i = _members.iterator(); i.hasNext(); ) { |
| FigureElement fe = (FigureElement)i.next(); |
| fe.paint(g2); |
| } |
| } |
| |
| public int size() { |
| return _members.size(); |
| } |
| } |
| |