1
14 package demo.view.realizer;
15
16 import demo.view.DemoBase;
17 import demo.view.DemoDefaults;
18
19 import y.base.GraphEvent;
20 import y.base.GraphListener;
21 import y.base.Node;
22 import y.view.Graph2D;
23 import y.view.NodeRealizer;
24 import y.view.ShapeNodeRealizer;
25 import y.view.ViewMode;
26 import y.io.GraphMLIOHandler;
27
28 import java.awt.EventQueue;
29 import java.awt.event.MouseEvent;
30 import java.util.Locale;
31
32
42 public class StateNodeRealizerDemo extends DemoBase
43 {
44
45 public StateNodeRealizerDemo()
46 {
47 Graph2D graph = view.getGraph2D();
48
49 view.addViewMode(new StateChangeViewMode());
50
51 StateNodeRealizer svr = new StateNodeRealizer();
52 svr.setSize(70,70);
53 svr.setState(StateNodeRealizer.FINAL_STATE);
54 svr.setFillColor(DemoDefaults.DEFAULT_NODE_COLOR);
55
56 graph.setDefaultNodeRealizer(svr);
57
58 graph.addGraphListener(new GraphListener() {
61 public void onGraphEvent(GraphEvent ev)
62 {
63 if(ev.getType() == GraphEvent.NODE_CREATION)
64 {
65 applyNextState(((Graph2D)ev.getGraph()).getDefaultNodeRealizer());
66 }
67 }
68 });
69
70 loadGraph( "resource/stateNodeRealizer.graphml" );
71 DemoDefaults.applyFillColor(graph, DemoDefaults.DEFAULT_NODE_COLOR);
72 }
73
74
75 protected GraphMLIOHandler createGraphMLIOHandler() {
76 GraphMLIOHandler ioHandler = super.createGraphMLIOHandler();
77 ioHandler.addNodeRealizerSerializer(new StateNodeRealizer.StateNodeRealizerSerializer());
78 return ioHandler;
79 }
80
81
84 private void applyNextState(NodeRealizer vr)
85 {
86 if(vr instanceof StateNodeRealizer)
87 {
88 StateNodeRealizer svr = (StateNodeRealizer)vr;
89 switch(svr.getState()) {
90 case StateNodeRealizer.INITIAL_STATE:
91 svr.setState(StateNodeRealizer.TRANSITION_STATE);
92 break;
93 case StateNodeRealizer.TRANSITION_STATE:
94 svr.setState(StateNodeRealizer.FINAL_STATE);
95 break;
96 case StateNodeRealizer.FINAL_STATE:
97 svr.setState(StateNodeRealizer.INITIAL_STATE);
98 break;
99 }
100 if(svr.getShapeType() == ShapeNodeRealizer.ELLIPSE)
101 {
102 svr.setShapeType(StateNodeRealizer.CUSTOM_SHAPE);
103 }
104 else
105 {
106 svr.setShapeType(ShapeNodeRealizer.ELLIPSE);
107 }
108 }
109 }
110
111
115 private class StateChangeViewMode extends ViewMode
116 {
117
118 public void mousePressedRight(double x, double y)
119 {
120 Node hitNode = getHitInfo(x,y).getHitNode();
121 if(hitNode != null)
122 {
123 applyNextState(getGraph2D().getRealizer(hitNode));
124 getGraph2D().updateViews();
125 }
126 }
127
128 public void mouseClicked(MouseEvent ev)
129 {
130 if(ev.getClickCount() == 2)
131 {
132 double x = translateX(ev.getX());
133 double y = translateY(ev.getY());
134 Node hitNode = getHitInfo(x,y).getHitNode();
135 if(hitNode != null)
136 {
137 applyNextState(getGraph2D().getRealizer(hitNode));
138 getGraph2D().updateViews();
139 }
140 }
141 }
142 }
143
144
145 public static void main(String[] args)
146 {
147 EventQueue.invokeLater(new Runnable() {
148 public void run() {
149 Locale.setDefault(Locale.ENGLISH);
150 initLnF();
151 (new StateNodeRealizerDemo()).start();
152 }
153 });
154 }
155
156 }
157