1  import java.awt.*;
  2  import java.awt.geom.*;
  3  import java.io.*;
  4  
  5  /**
  6     An edge in a graph.
  7  */
  8  public interface Edge extends Serializable, Cloneable
  9  {
 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