1 import java.awt.*;
2 import java.awt.geom.*;
3
4 /**
5
6
7 */
8 public abstract class AbstractEdge implements Edge
9 {
10 public Object clone()
11 {
12 try
13 {
14 return super.clone();
15 }
16 catch (CloneNotSupportedException exception)
17 {
18 return null;
19 }
20 }
21
22 public void connect(Node s, Node e)
23 {
24 start = s;
25 end = e;
26 }
27
28 public Node getStart()
29 {
30 return start;
31 }
32
33 public Node getEnd()
34 {
35 return end;
36 }
37
38 public Rectangle2D getBounds(Graphics2D g2)
39 {
40 Line2D conn = getConnectionPoints();
41 Rectangle2D r = new Rectangle2D.Double();
42 r.setFrameFromDiagonal(conn.getX1(), conn.getY1(),
43 conn.getX2(), conn.getY2());
44 return r;
45 }
46
47 public Line2D getConnectionPoints()
48 {
49 Rectangle2D startBounds = start.getBounds();
50 Rectangle2D endBounds = end.getBounds();
51 Point2D startCenter = new Point2D.Double(
52 startBounds.getCenterX(), startBounds.getCenterY());
53 Point2D endCenter = new Point2D.Double(
54 endBounds.getCenterX(), endBounds.getCenterY());
55 return new Line2D.Double(
56 start.getConnectionPoint(endCenter),
57 end.getConnectionPoint(startCenter));
58 }
59
60 private Node start;
61 private Node end;
62 }