1
14 package demo.view.realizer;
15
16 import demo.view.DemoBase;
17 import y.base.GraphEvent;
18 import y.base.GraphListener;
19 import y.base.Node;
20 import y.view.Graph2D;
21 import y.view.NodeRealizer;
22 import y.view.ShapeNodeRealizer;
23 import y.view.ViewMode;
24
25 import java.awt.event.MouseEvent;
26
27
36 public class StateNodeRealizerDemo extends DemoBase
37 {
38
39 public StateNodeRealizerDemo()
40 {
41 Graph2D graph = view.getGraph2D();
42
43 view.addViewMode(new StateChangeViewMode());
44
45 StateNodeRealizer svr = new StateNodeRealizer();
46 svr.setSize(70,70);
47 svr.setState(StateNodeRealizer.FINAL_STATE);
48 graph.setDefaultNodeRealizer(svr);
49
50 graph.addGraphListener(new GraphListener() {
53 public void onGraphEvent(GraphEvent ev)
54 {
55 if(ev.getType() == GraphEvent.NODE_CREATION)
56 {
57 applyNextState(((Graph2D)ev.getGraph()).getDefaultNodeRealizer());
58 }
59 }
60 });
61
62 loadGraph( "resource/stateNodeRealizer.ygf" );
63 }
64
65
68 private void applyNextState(NodeRealizer vr)
69 {
70 if(vr instanceof StateNodeRealizer)
71 {
72 StateNodeRealizer svr = (StateNodeRealizer)vr;
73 switch(svr.getState()) {
74 case StateNodeRealizer.INITIAL_STATE:
75 svr.setState(StateNodeRealizer.TRANSITION_STATE);
76 break;
77 case StateNodeRealizer.TRANSITION_STATE:
78 svr.setState(StateNodeRealizer.FINAL_STATE);
79 break;
80 case StateNodeRealizer.FINAL_STATE:
81 svr.setState(StateNodeRealizer.INITIAL_STATE);
82 break;
83 }
84 if(svr.getShapeType() == ShapeNodeRealizer.ELLIPSE)
85 {
86 svr.setShapeType(StateNodeRealizer.CUSTOM_SHAPE);
87 }
88 else
89 {
90 svr.setShapeType(ShapeNodeRealizer.ELLIPSE);
91 }
92 }
93 }
94
95
99 private class StateChangeViewMode extends ViewMode
100 {
101
102 public void mousePressedRight(double x, double y)
103 {
104 Node hitNode = getHitInfo(x,y).getHitNode();
105 if(hitNode != null)
106 {
107 applyNextState(getGraph2D().getRealizer(hitNode));
108 getGraph2D().updateViews();
109 }
110 }
111
112 public void mouseClicked(MouseEvent ev)
113 {
114 if(ev.getClickCount() == 2)
115 {
116 double x = translateX(ev.getX());
117 double y = translateY(ev.getY());
118 Node hitNode = getHitInfo(x,y).getHitNode();
119 if(hitNode != null)
120 {
121 applyNextState(getGraph2D().getRealizer(hitNode));
122 getGraph2D().updateViews();
123 }
124 }
125 }
126 }
127
128
129 public static void main(String args[])
130 {
131 StateNodeRealizerDemo demo = new StateNodeRealizerDemo();
132 demo.start("StateNodeRealizer Demo");
133 }
134
135 }
136