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