-
Notifications
You must be signed in to change notification settings - Fork 0
/
Node.pde
57 lines (53 loc) · 1.94 KB
/
Node.pde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public class Node extends InteractiveFrame implements InteractiveElement, Comparable<Node> {
int nodeId, minDistance;
Graph graph;
Scene scene;
color nodeColor;
Node(int nodeId, Graph graph, Scene scene) {
super(scene);
this.nodeId = nodeId;
this.graph = graph;
this.scene = scene;
minDistance = -1;
nodeColor = Utility.DEFAULT_NODE_COLOR;
setShape("display");
setClickBinding(LEFT, 1, "play");
}
void display(PGraphics pg) {
pg.pushStyle();
if(grabsInput()) {
pg.fill(Utility.ON_MOUSE_COLOR);
} else {
pg.fill(nodeColor);
}
pg.ellipse(0,0,2.0*Utility.RADIUS_NODE,2.0*Utility.RADIUS_NODE);
pg.strokeWeight(1);
pg.fill(0, 0, 20);
pg.text("" + nodeId, -Utility.RADIUS_NODE/2-6, Utility.RADIUS_NODE/2+6, 0);
pg.popStyle();
}
public void play(ClickEvent event) {
if(InteractiveData.getInstance().getMode() == Mode.INSERT_EDGE && InteractiveData.getInstance().getLastPicked() != null && InteractiveData.getInstance().getLastPicked().compareTo(this) != 0 ) {
Edge edge = null;
if( graph.getWeightedEdges() ) {
int weight = Utility.random.nextInt(10);
edge = new WeightedEdge(InteractiveData.getInstance().getEdgeCounter(), InteractiveData.getInstance().getLastPicked(), this, weight, graph.getDirectedEdges(), scene);
} else {
edge = new NonWeightedEdge(InteractiveData.getInstance().getEdgeCounter(), InteractiveData.getInstance().getLastPicked(), this, graph.getDirectedEdges(), scene);
}
InteractiveData.getInstance().setEdgeCounter();
graph.addEdge(edge);
InteractiveData.getInstance().reset();
InteractiveData.getInstance().setLastPicked(null);
return ;
}
InteractiveData.getInstance().setLastPicked(this);
}
public void setColor(color newColor) {
nodeColor = newColor;
}
@Override
public int compareTo(Node otherNode) {
return nodeId - otherNode.nodeId;
}
}