1: import java.awt.Graphics2D; 2: import java.awt.geom.Point2D; 3: import java.awt.geom.Rectangle2D; 4: import java.io.Serializable; 6: /** 7: A node in a graph. 8: */ 9: public interface Node extends Serializable, Cloneable 10: { 11: /** 12: Draw the node. 13: @param g2 the graphics context 14: */ 15: void draw(Graphics2D g2); 17: /** 18: Translates the node by a given amount. 19: @param dx the amount to translate in the x-direction 20: @param dy the amount to translate in the y-direction 21: */ 22: void translate(double dx, double dy); 24: /** 25: Tests whether the node contains a point. 26: @param aPoint the point to test 27: @return true if this node contains aPoint 28: */ 29: boolean contains(Point2D aPoint); 31: /** 32: Get the best connection point to connect this node 33: with another node. This should be a point on the boundary 34: of the shape of this node. 35: @param aPoint an exterior point that is to be joined 36: with this node 37: @return the recommended connection point 38: */ 39: Point2D getConnectionPoint(Point2D aPoint); 41: /** 42: Get the bounding rectangle of the shape of this node 43: @return the bounding rectangle 44: */ 45: Rectangle2D getBounds(); 47: Object clone(); 48: }