01: import java.awt.*;
02: import java.awt.geom.*;
03: import java.io.*;
04:
05: /**
06: A node in a graph.
07: */
08: public interface Node extends Serializable, Cloneable
09: {
10: /**
11: Draw the node.
12: @param g2 the graphics context
13: */
14: void draw(Graphics2D g2);
15:
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);
22:
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);
29:
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);
39:
40: /**
41: Get the bounding rectangle of the shape of this node
42: @return the bounding rectangle
43: */
44: Rectangle2D getBounds();
45:
46: Object clone();
47: }