1: import java.awt.Graphics2D;
2: import java.awt.geom.Line2D;
3: import java.awt.geom.Point2D;
4: import java.awt.geom.Rectangle2D;
5: import java.io.Serializable;
7: /**
8: An edge in a graph.
9: */
10: public interface Edge extends Serializable, Cloneable
11: {
12: /**
13: Draw the edge.
14: @param g2 the graphics context
15: */
16: void draw(Graphics2D g2);
18: /**
19: Tests whether the edge contains a point.
20: @param aPoint the point to test
21: @return true if this edge contains aPoint
22: */
23: boolean contains(Point2D aPoint);
25: /**
26: Connects this edge to two nodes.
27: @param aStart the starting node
28: @param anEnd the ending node
29: */
30: void connect(Node aStart, Node anEnd);
32: /**
33: Gets the starting node.
34: @return the starting node
35: */
36: Node getStart();
38: /**
39: Gets the ending node.
40: @return the ending node
41: */
42: Node getEnd();
44: /**
45: Gets the points at which this edge is connected to
46: its nodes.
47: @return a line joining the two connection points
48: */
49: Line2D getConnectionPoints();
51: /**
52: Gets the smallest rectangle that bounds this edge.
53: The bounding rectangle contains all labels.
54: @return the bounding rectangle
55: */
56: Rectangle2D getBounds(Graphics2D g2);
58: Object clone();
59: }