You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Group.java 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /* *******************************************************************
  2. * Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC).
  3. * All rights reserved.
  4. * This program and the accompanying materials are made available
  5. * under the terms of the Common Public License v1.0
  6. * which accompanies this distribution and is available at
  7. * http://www.eclipse.org/legal/cpl-v10.html
  8. *
  9. * Contributors:
  10. * PARC initial implementation
  11. * ******************************************************************/
  12. package figures;
  13. import java.util.*;
  14. import java.awt.*;
  15. import java.awt.geom.*;
  16. public class Group implements FigureElement {
  17. private Collection _members;
  18. private String _identifier;
  19. public Group(FigureElement first) {
  20. this._members = new ArrayList();
  21. add(first);
  22. }
  23. public void add(FigureElement fe) {
  24. _members.add(fe);
  25. }
  26. public Iterator members() {
  27. return _members.iterator();
  28. }
  29. public void move(int dx, int dy) {
  30. for (Iterator i = _members.iterator(); i.hasNext(); ) {
  31. FigureElement fe = (FigureElement)i.next();
  32. fe.move(dx, dy);
  33. }
  34. }
  35. public void setIdentifier(String identifier) {
  36. _identifier = identifier;
  37. }
  38. public String toString() {
  39. if (_identifier != null) {
  40. return _identifier;
  41. }
  42. StringBuffer buf = new StringBuffer("Group(");
  43. for (Iterator i = _members.iterator(); i.hasNext(); ) {
  44. buf.append(i.next().toString());
  45. if (i.hasNext()) {
  46. buf.append(", ");
  47. }
  48. }
  49. buf.append(")");
  50. return buf.toString();
  51. }
  52. public Rectangle getBounds() {
  53. Rectangle previous = null;
  54. for (Iterator i = _members.iterator(); i.hasNext(); ) {
  55. FigureElement fe = (FigureElement)i.next();
  56. Rectangle rect = fe.getBounds();
  57. if (previous != null) {
  58. previous = previous.union(rect);
  59. } else {
  60. previous = rect;
  61. }
  62. }
  63. return previous;
  64. }
  65. public boolean contains(Point2D p) {
  66. for (Iterator i = _members.iterator(); i.hasNext(); ) {
  67. FigureElement fe = (FigureElement)i.next();
  68. if (fe.contains(p)) return true;
  69. }
  70. return false;
  71. }
  72. public void paint(Graphics2D g2) {
  73. for (Iterator i = _members.iterator(); i.hasNext(); ) {
  74. FigureElement fe = (FigureElement)i.next();
  75. fe.paint(g2);
  76. }
  77. }
  78. public int size() {
  79. return _members.size();
  80. }
  81. }