root / trunk / extensions / extCAD / src / com / iver / cit / gvsig / gui / cad / tools / smc / EllipseCADToolContext.java @ 4365
History | View | Annotate | Download (9.7 KB)
1 | 3782 | caballero | |
---|---|---|---|
2 | //
|
||
3 | // Vicente Caballero Navarro
|
||
4 | |||
5 | |||
6 | package com.iver.cit.gvsig.gui.cad.tools.smc; |
||
7 | |||
8 | import com.iver.cit.gvsig.gui.cad.tools.EllipseCADTool; |
||
9 | 4324 | caballero | import java.awt.event.InputEvent; |
10 | 3782 | caballero | |
11 | public final class EllipseCADToolContext |
||
12 | extends statemap.FSMContext
|
||
13 | { |
||
14 | //---------------------------------------------------------------
|
||
15 | // Member methods.
|
||
16 | //
|
||
17 | |||
18 | public EllipseCADToolContext(EllipseCADTool owner)
|
||
19 | { |
||
20 | super();
|
||
21 | |||
22 | _owner = owner; |
||
23 | 3978 | caballero | setState(Ellipse.FirstPointAxis); |
24 | Ellipse.FirstPointAxis.Entry(this);
|
||
25 | 3782 | caballero | } |
26 | |||
27 | 3883 | caballero | public void addOption(String s) |
28 | { |
||
29 | _transition = "addOption";
|
||
30 | getState().addOption(this, s);
|
||
31 | _transition = "";
|
||
32 | return;
|
||
33 | } |
||
34 | |||
35 | 4324 | caballero | public void addPoint(double pointX, double pointY, InputEvent event) |
36 | 3782 | caballero | { |
37 | _transition = "addPoint";
|
||
38 | 4324 | caballero | getState().addPoint(this, pointX, pointY, event);
|
39 | 3782 | caballero | _transition = "";
|
40 | return;
|
||
41 | } |
||
42 | |||
43 | 3832 | caballero | public void addValue(double d) |
44 | 3782 | caballero | { |
45 | _transition = "addValue";
|
||
46 | 3832 | caballero | getState().addValue(this, d);
|
47 | 3782 | caballero | _transition = "";
|
48 | return;
|
||
49 | } |
||
50 | |||
51 | public EllipseCADToolState getState()
|
||
52 | throws statemap.StateUndefinedException
|
||
53 | { |
||
54 | if (_state == null) |
||
55 | { |
||
56 | throw(
|
||
57 | new statemap.StateUndefinedException());
|
||
58 | } |
||
59 | |||
60 | return ((EllipseCADToolState) _state);
|
||
61 | } |
||
62 | |||
63 | protected EllipseCADTool getOwner()
|
||
64 | { |
||
65 | return (_owner);
|
||
66 | } |
||
67 | |||
68 | //---------------------------------------------------------------
|
||
69 | // Member data.
|
||
70 | //
|
||
71 | |||
72 | transient private EllipseCADTool _owner; |
||
73 | |||
74 | //---------------------------------------------------------------
|
||
75 | // Inner classes.
|
||
76 | //
|
||
77 | |||
78 | public static abstract class EllipseCADToolState |
||
79 | extends statemap.State
|
||
80 | { |
||
81 | //-----------------------------------------------------------
|
||
82 | // Member methods.
|
||
83 | //
|
||
84 | |||
85 | protected EllipseCADToolState(String name, int id) |
||
86 | { |
||
87 | super (name, id);
|
||
88 | } |
||
89 | |||
90 | protected void Entry(EllipseCADToolContext context) {} |
||
91 | protected void Exit(EllipseCADToolContext context) {} |
||
92 | |||
93 | 3883 | caballero | protected void addOption(EllipseCADToolContext context, String s) |
94 | { |
||
95 | Default(context); |
||
96 | } |
||
97 | |||
98 | 4324 | caballero | protected void addPoint(EllipseCADToolContext context, double pointX, double pointY, InputEvent event) |
99 | 3782 | caballero | { |
100 | Default(context); |
||
101 | } |
||
102 | |||
103 | 3832 | caballero | protected void addValue(EllipseCADToolContext context, double d) |
104 | 3782 | caballero | { |
105 | Default(context); |
||
106 | } |
||
107 | |||
108 | protected void Default(EllipseCADToolContext context) |
||
109 | { |
||
110 | throw (
|
||
111 | new statemap.TransitionUndefinedException(
|
||
112 | "State: " +
|
||
113 | context.getState().getName() + |
||
114 | ", Transition: " +
|
||
115 | context.getTransition())); |
||
116 | } |
||
117 | |||
118 | //-----------------------------------------------------------
|
||
119 | // Member data.
|
||
120 | //
|
||
121 | } |
||
122 | |||
123 | 3978 | caballero | /* package */ static abstract class Ellipse |
124 | 3782 | caballero | { |
125 | //-----------------------------------------------------------
|
||
126 | // Member methods.
|
||
127 | //
|
||
128 | |||
129 | //-----------------------------------------------------------
|
||
130 | // Member data.
|
||
131 | //
|
||
132 | |||
133 | //-------------------------------------------------------
|
||
134 | // Statics.
|
||
135 | //
|
||
136 | 3978 | caballero | /* package */ static Ellipse_Default.Ellipse_FirstPointAxis FirstPointAxis; |
137 | /* package */ static Ellipse_Default.Ellipse_SecondPointAxis SecondPointAxis; |
||
138 | /* package */ static Ellipse_Default.Ellipse_DistanceOtherAxis DistanceOtherAxis; |
||
139 | private static Ellipse_Default Default; |
||
140 | 3782 | caballero | |
141 | static
|
||
142 | { |
||
143 | 3978 | caballero | FirstPointAxis = new Ellipse_Default.Ellipse_FirstPointAxis("Ellipse.FirstPointAxis", 0); |
144 | SecondPointAxis = new Ellipse_Default.Ellipse_SecondPointAxis("Ellipse.SecondPointAxis", 1); |
||
145 | DistanceOtherAxis = new Ellipse_Default.Ellipse_DistanceOtherAxis("Ellipse.DistanceOtherAxis", 2); |
||
146 | Default = new Ellipse_Default("Ellipse.Default", -1); |
||
147 | 3782 | caballero | } |
148 | |||
149 | } |
||
150 | |||
151 | 3978 | caballero | protected static class Ellipse_Default |
152 | 3782 | caballero | extends EllipseCADToolState
|
153 | { |
||
154 | //-----------------------------------------------------------
|
||
155 | // Member methods.
|
||
156 | //
|
||
157 | |||
158 | 3978 | caballero | protected Ellipse_Default(String name, int id) |
159 | 3782 | caballero | { |
160 | super (name, id);
|
||
161 | } |
||
162 | |||
163 | 3883 | caballero | protected void addOption(EllipseCADToolContext context, String s) |
164 | { |
||
165 | EllipseCADTool ctxt = context.getOwner(); |
||
166 | |||
167 | if (s.equals("Cancelar")) |
||
168 | { |
||
169 | boolean loopbackFlag =
|
||
170 | context.getState().getName().equals( |
||
171 | 3978 | caballero | Ellipse.FirstPointAxis.getName()); |
172 | 3883 | caballero | |
173 | if (loopbackFlag == false) |
||
174 | { |
||
175 | (context.getState()).Exit(context); |
||
176 | } |
||
177 | |||
178 | context.clearState(); |
||
179 | try
|
||
180 | { |
||
181 | ctxt.end(); |
||
182 | } |
||
183 | finally
|
||
184 | { |
||
185 | 3978 | caballero | context.setState(Ellipse.FirstPointAxis); |
186 | 3883 | caballero | |
187 | if (loopbackFlag == false) |
||
188 | { |
||
189 | (context.getState()).Entry(context); |
||
190 | } |
||
191 | |||
192 | } |
||
193 | } |
||
194 | else
|
||
195 | { |
||
196 | super.addOption(context, s);
|
||
197 | } |
||
198 | |||
199 | return;
|
||
200 | } |
||
201 | |||
202 | 3782 | caballero | //-----------------------------------------------------------
|
203 | // Inner classse.
|
||
204 | //
|
||
205 | |||
206 | |||
207 | 3978 | caballero | private static final class Ellipse_FirstPointAxis |
208 | extends Ellipse_Default
|
||
209 | 3782 | caballero | { |
210 | //-------------------------------------------------------
|
||
211 | // Member methods.
|
||
212 | //
|
||
213 | |||
214 | 3978 | caballero | private Ellipse_FirstPointAxis(String name, int id) |
215 | 3782 | caballero | { |
216 | super (name, id);
|
||
217 | } |
||
218 | |||
219 | protected void Entry(EllipseCADToolContext context) |
||
220 | { |
||
221 | EllipseCADTool ctxt = context.getOwner(); |
||
222 | |||
223 | 3847 | caballero | ctxt.setQuestion("ELIPSE" + "\n" + |
224 | "Insertar punto inicial de eje de elipse");
|
||
225 | 3883 | caballero | ctxt.setDescription(new String[]{"Cancelar"}); |
226 | 3782 | caballero | return;
|
227 | } |
||
228 | |||
229 | 4324 | caballero | protected void addPoint(EllipseCADToolContext context, double pointX, double pointY, InputEvent event) |
230 | 3782 | caballero | { |
231 | EllipseCADTool ctxt = context.getOwner(); |
||
232 | |||
233 | |||
234 | (context.getState()).Exit(context); |
||
235 | context.clearState(); |
||
236 | try
|
||
237 | { |
||
238 | ctxt.setQuestion("Insertar punto final de eje de elipse");
|
||
239 | 3883 | caballero | ctxt.setDescription(new String[]{"Cancelar"}); |
240 | 4365 | caballero | ctxt.addPoint(pointX, pointY, event); |
241 | 3782 | caballero | } |
242 | finally
|
||
243 | { |
||
244 | 3978 | caballero | context.setState(Ellipse.SecondPointAxis); |
245 | 3782 | caballero | (context.getState()).Entry(context); |
246 | } |
||
247 | return;
|
||
248 | } |
||
249 | |||
250 | //-------------------------------------------------------
|
||
251 | // Member data.
|
||
252 | //
|
||
253 | } |
||
254 | |||
255 | 3978 | caballero | private static final class Ellipse_SecondPointAxis |
256 | extends Ellipse_Default
|
||
257 | 3782 | caballero | { |
258 | //-------------------------------------------------------
|
||
259 | // Member methods.
|
||
260 | //
|
||
261 | |||
262 | 3978 | caballero | private Ellipse_SecondPointAxis(String name, int id) |
263 | 3782 | caballero | { |
264 | super (name, id);
|
||
265 | } |
||
266 | |||
267 | 4324 | caballero | protected void addPoint(EllipseCADToolContext context, double pointX, double pointY, InputEvent event) |
268 | 3782 | caballero | { |
269 | EllipseCADTool ctxt = context.getOwner(); |
||
270 | |||
271 | |||
272 | (context.getState()).Exit(context); |
||
273 | context.clearState(); |
||
274 | try
|
||
275 | { |
||
276 | ctxt.setQuestion("Insertar distancia al otro eje");
|
||
277 | 3883 | caballero | ctxt.setDescription(new String[]{"Cancelar"}); |
278 | 4365 | caballero | ctxt.addPoint(pointX, pointY, event); |
279 | 3782 | caballero | } |
280 | finally
|
||
281 | { |
||
282 | 3978 | caballero | context.setState(Ellipse.DistanceOtherAxis); |
283 | 3782 | caballero | (context.getState()).Entry(context); |
284 | } |
||
285 | return;
|
||
286 | } |
||
287 | |||
288 | //-------------------------------------------------------
|
||
289 | // Member data.
|
||
290 | //
|
||
291 | } |
||
292 | |||
293 | 3978 | caballero | private static final class Ellipse_DistanceOtherAxis |
294 | extends Ellipse_Default
|
||
295 | 3782 | caballero | { |
296 | //-------------------------------------------------------
|
||
297 | // Member methods.
|
||
298 | //
|
||
299 | |||
300 | 3978 | caballero | private Ellipse_DistanceOtherAxis(String name, int id) |
301 | 3782 | caballero | { |
302 | super (name, id);
|
||
303 | } |
||
304 | |||
305 | 4324 | caballero | protected void addPoint(EllipseCADToolContext context, double pointX, double pointY, InputEvent event) |
306 | 3782 | caballero | { |
307 | EllipseCADTool ctxt = context.getOwner(); |
||
308 | |||
309 | |||
310 | (context.getState()).Exit(context); |
||
311 | context.clearState(); |
||
312 | try
|
||
313 | { |
||
314 | 4365 | caballero | ctxt.addPoint(pointX, pointY, event); |
315 | 3782 | caballero | ctxt.end(); |
316 | } |
||
317 | finally
|
||
318 | { |
||
319 | 3978 | caballero | context.setState(Ellipse.FirstPointAxis); |
320 | 3782 | caballero | (context.getState()).Entry(context); |
321 | } |
||
322 | return;
|
||
323 | } |
||
324 | |||
325 | 3832 | caballero | protected void addValue(EllipseCADToolContext context, double d) |
326 | 3782 | caballero | { |
327 | EllipseCADTool ctxt = context.getOwner(); |
||
328 | |||
329 | |||
330 | (context.getState()).Exit(context); |
||
331 | context.clearState(); |
||
332 | try
|
||
333 | { |
||
334 | 3832 | caballero | ctxt.addValue(d); |
335 | 3782 | caballero | ctxt.end(); |
336 | } |
||
337 | finally
|
||
338 | { |
||
339 | 3978 | caballero | context.setState(Ellipse.FirstPointAxis); |
340 | 3782 | caballero | (context.getState()).Entry(context); |
341 | } |
||
342 | return;
|
||
343 | } |
||
344 | |||
345 | //-------------------------------------------------------
|
||
346 | // Member data.
|
||
347 | //
|
||
348 | } |
||
349 | |||
350 | //-----------------------------------------------------------
|
||
351 | // Member data.
|
||
352 | //
|
||
353 | } |
||
354 | } |