    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: