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