1
28 package demo.view.realizer;
29
30 import demo.view.DemoBase;
31 import demo.view.DemoDefaults;
32
33 import y.base.GraphEvent;
34 import y.base.GraphListener;
35 import y.base.Node;
36 import y.view.Graph2D;
37 import y.view.NodeRealizer;
38 import y.view.ShapeNodeRealizer;
39 import y.view.ViewMode;
40 import y.io.GraphMLIOHandler;
41
42 import java.awt.EventQueue;
43 import java.awt.event.MouseEvent;
44 import java.util.Locale;
45
46
56 public class StateNodeRealizerDemo extends DemoBase
57 {
58
59 public StateNodeRealizerDemo()
60 {
61 Graph2D graph = view.getGraph2D();
62
63 view.addViewMode(new StateChangeViewMode());
64
65 StateNodeRealizer svr = new StateNodeRealizer();
66 svr.setSize(70,70);
67 svr.setState(StateNodeRealizer.FINAL_STATE);
68 svr.setFillColor(DemoDefaults.DEFAULT_NODE_COLOR);
69
70 graph.setDefaultNodeRealizer(svr);
71
72 graph.addGraphListener(new GraphListener() {
75 public void onGraphEvent(GraphEvent ev)
76 {
77 if(ev.getType() == GraphEvent.NODE_CREATION)
78 {
79 applyNextState(((Graph2D)ev.getGraph()).getDefaultNodeRealizer());
80 }
81 }
82 });
83
84 loadGraph( "resource/stateNodeRealizer.graphml" );
85 DemoDefaults.applyFillColor(graph, DemoDefaults.DEFAULT_NODE_COLOR);
86 }
87
88
89 protected GraphMLIOHandler createGraphMLIOHandler() {
90 GraphMLIOHandler ioHandler = super.createGraphMLIOHandler();
91 ioHandler.addNodeRealizerSerializer(new StateNodeRealizer.StateNodeRealizerSerializer());
92 return ioHandler;
93 }
94
95
98 private void applyNextState(NodeRealizer vr)
99 {
100 if(vr instanceof StateNodeRealizer)
101 {
102 StateNodeRealizer svr = (StateNodeRealizer)vr;
103 switch(svr.getState()) {
104 case StateNodeRealizer.INITIAL_STATE:
105 svr.setState(StateNodeRealizer.TRANSITION_STATE);
106 break;
107 case StateNodeRealizer.TRANSITION_STATE:
108 svr.setState(StateNodeRealizer.FINAL_STATE);
109 break;
110 case StateNodeRealizer.FINAL_STATE:
111 svr.setState(StateNodeRealizer.INITIAL_STATE);
112 break;
113 }
114 if(svr.getShapeType() == ShapeNodeRealizer.ELLIPSE)
115 {
116 svr.setShapeType(StateNodeRealizer.CUSTOM_SHAPE);
117 }
118 else
119 {
120 svr.setShapeType(ShapeNodeRealizer.ELLIPSE);
121 }
122 }
123 }
124
125
129 private class StateChangeViewMode extends ViewMode
130 {
131
132 public void mousePressedRight(double x, double y)
133 {
134 Node hitNode = getHitInfo(x,y).getHitNode();
135 if(hitNode != null)
136 {
137 applyNextState(getGraph2D().getRealizer(hitNode));
138 getGraph2D().updateViews();
139 }
140 }
141
142 public void mouseClicked(MouseEvent ev)
143 {
144 if(ev.getClickCount() == 2)
145 {
146 double x = translateX(ev.getX());
147 double y = translateY(ev.getY());
148 Node hitNode = getHitInfo(x,y).getHitNode();
149 if(hitNode != null)
150 {
151 applyNextState(getGraph2D().getRealizer(hitNode));
152 getGraph2D().updateViews();
153 }
154 }
155 }
156 }
157
158
159 public static void main(String[] args)
160 {
161 EventQueue.invokeLater(new Runnable() {
162 public void run() {
163 Locale.setDefault(Locale.ENGLISH);
164 initLnF();
165 (new StateNodeRealizerDemo()).start();
166 }
167 });
168 }
169
170 }
171