01: import java.awt.geom.*;
02: 
03: /**
04:    A UML class diagram.
05: */
06: public class ClassDiagramGraph extends Graph
07: {
08: 
09:    public boolean connect(Edge e, Point2D p1, Point2D p2)
10:    {
11:       Node n1 = findNode(p1);
12:       Node n2 = findNode(p2);
13:       if (n1 == n2) return false;
14:       return super.connect(e, p1, p2);
15:    }
16: 
17:    public Node[] getNodePrototypes()
18:    {
19:       return new Node[] { new ClassNode() };
20:    }
21: 
22:    public Edge[] getEdgePrototypes()
23:    {
24:       ClassRelationshipEdge[] e = new ClassRelationshipEdge[6];
25: 
26:       e[0] = new ClassRelationshipEdge();
27:       e[0].setLineStyle(LineStyle.DOTTED);
28:       e[0].setEndArrowHead(ArrowHead.V);
29: 
30:       e[1] = new ClassRelationshipEdge();
31:       e[1].setBentStyle(BentStyle.VHV);
32:       e[1].setEndArrowHead(ArrowHead.TRIANGLE);
33: 
34:       e[2] = new ClassRelationshipEdge();
35:       e[2].setBentStyle(BentStyle.VHV);
36:       e[2].setLineStyle(LineStyle.DOTTED);
37:       e[2].setEndArrowHead(ArrowHead.TRIANGLE);
38: 
39:       e[3] = new ClassRelationshipEdge();
40:       e[3].setBentStyle(BentStyle.HVH);
41:       e[3].setEndArrowHead(ArrowHead.V);
42: 
43:       e[4] = new ClassRelationshipEdge();
44:       e[4].setBentStyle(BentStyle.HVH);
45:       e[4].setStartArrowHead(ArrowHead.DIAMOND);
46: 
47:       e[5] = new ClassRelationshipEdge();
48:       e[5].setBentStyle(BentStyle.HVH);
49:       e[5].setStartArrowHead(ArrowHead.BLACK_DIAMOND);
50: 
51:       return e;
52:   }
53: }
54: 
55: 
56: 
57: 
58: