Statistics
| Revision:

root / trunk / extensions / extCAD / src / com / iver / cit / gvsig / gui / cad / tools / smc / CircleCADToolContext.java @ 3883

History | View | Annotate | Download (14.5 KB)

1

    
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.CircleCADTool;
9

    
10
public final class CircleCADToolContext
11
    extends statemap.FSMContext
12
{
13
//---------------------------------------------------------------
14
// Member methods.
15
//
16

    
17
    public CircleCADToolContext(CircleCADTool owner)
18
    {
19
        super();
20

    
21
        _owner = owner;
22
        setState(ExecuteMap.Initial);
23
        ExecuteMap.Initial.Entry(this);
24
    }
25

    
26
    public void addOption(String s)
27
    {
28
        _transition = "addOption";
29
        getState().addOption(this, s);
30
        _transition = "";
31
        return;
32
    }
33

    
34
    public void addPoint(double pointX, double pointY)
35
    {
36
        _transition = "addPoint";
37
        getState().addPoint(this, pointX, pointY);
38
        _transition = "";
39
        return;
40
    }
41

    
42
    public void addValue(double d)
43
    {
44
        _transition = "addValue";
45
        getState().addValue(this, d);
46
        _transition = "";
47
        return;
48
    }
49

    
50
    public CircleCADToolState getState()
51
        throws statemap.StateUndefinedException
52
    {
53
        if (_state == null)
54
        {
55
            throw(
56
                new statemap.StateUndefinedException());
57
        }
58

    
59
        return ((CircleCADToolState) _state);
60
    }
61

    
62
    protected CircleCADTool getOwner()
63
    {
64
        return (_owner);
65
    }
66

    
67
//---------------------------------------------------------------
68
// Member data.
69
//
70

    
71
    transient private CircleCADTool _owner;
72

    
73
//---------------------------------------------------------------
74
// Inner classes.
75
//
76

    
77
    public static abstract class CircleCADToolState
78
        extends statemap.State
79
    {
80
    //-----------------------------------------------------------
81
    // Member methods.
82
    //
83

    
84
        protected CircleCADToolState(String name, int id)
85
        {
86
            super (name, id);
87
        }
88

    
89
        protected void Entry(CircleCADToolContext context) {}
90
        protected void Exit(CircleCADToolContext context) {}
91

    
92
        protected void addOption(CircleCADToolContext context, String s)
93
        {
94
            Default(context);
95
        }
96

    
97
        protected void addPoint(CircleCADToolContext context, double pointX, double pointY)
98
        {
99
            Default(context);
100
        }
101

    
102
        protected void addValue(CircleCADToolContext context, double d)
103
        {
104
            Default(context);
105
        }
106

    
107
        protected void Default(CircleCADToolContext context)
108
        {
109
            throw (
110
                new statemap.TransitionUndefinedException(
111
                    "State: " +
112
                    context.getState().getName() +
113
                    ", Transition: " +
114
                    context.getTransition()));
115
        }
116

    
117
    //-----------------------------------------------------------
118
    // Member data.
119
    //
120
    }
121

    
122
    /* package */ static abstract class ExecuteMap
123
    {
124
    //-----------------------------------------------------------
125
    // Member methods.
126
    //
127

    
128
    //-----------------------------------------------------------
129
    // Member data.
130
    //
131

    
132
        //-------------------------------------------------------
133
        // Statics.
134
        //
135
        /* package */ static ExecuteMap_Default.ExecuteMap_Initial Initial;
136
        /* package */ static ExecuteMap_Default.ExecuteMap_First First;
137
        /* package */ static ExecuteMap_Default.ExecuteMap_Second Second;
138
        /* package */ static ExecuteMap_Default.ExecuteMap_Third Third;
139
        /* package */ static ExecuteMap_Default.ExecuteMap_Fourth Fourth;
140
        /* package */ static ExecuteMap_Default.ExecuteMap_Fiveth Fiveth;
141
        /* package */ static ExecuteMap_Default.ExecuteMap_Sixth Sixth;
142
        /* package */ static ExecuteMap_Default.ExecuteMap_Seventh Seventh;
143
        private static ExecuteMap_Default Default;
144

    
145
        static
146
        {
147
            Initial = new ExecuteMap_Default.ExecuteMap_Initial("ExecuteMap.Initial", 0);
148
            First = new ExecuteMap_Default.ExecuteMap_First("ExecuteMap.First", 1);
149
            Second = new ExecuteMap_Default.ExecuteMap_Second("ExecuteMap.Second", 2);
150
            Third = new ExecuteMap_Default.ExecuteMap_Third("ExecuteMap.Third", 3);
151
            Fourth = new ExecuteMap_Default.ExecuteMap_Fourth("ExecuteMap.Fourth", 4);
152
            Fiveth = new ExecuteMap_Default.ExecuteMap_Fiveth("ExecuteMap.Fiveth", 5);
153
            Sixth = new ExecuteMap_Default.ExecuteMap_Sixth("ExecuteMap.Sixth", 6);
154
            Seventh = new ExecuteMap_Default.ExecuteMap_Seventh("ExecuteMap.Seventh", 7);
155
            Default = new ExecuteMap_Default("ExecuteMap.Default", -1);
156
        }
157

    
158
    }
159

    
160
    protected static class ExecuteMap_Default
161
        extends CircleCADToolState
162
    {
163
    //-----------------------------------------------------------
164
    // Member methods.
165
    //
166

    
167
        protected ExecuteMap_Default(String name, int id)
168
        {
169
            super (name, id);
170
        }
171

    
172
        protected void addOption(CircleCADToolContext context, String s)
173
        {
174
            CircleCADTool ctxt = context.getOwner();
175

    
176
            if (s.equals("Cancelar"))
177
            {
178
                boolean loopbackFlag =
179
                    context.getState().getName().equals(
180
                        ExecuteMap.Initial.getName());
181

    
182
                if (loopbackFlag == false)
183
                {
184
                    (context.getState()).Exit(context);
185
                }
186

    
187
                context.clearState();
188
                try
189
                {
190
                    ctxt.end();
191
                }
192
                finally
193
                {
194
                    context.setState(ExecuteMap.Initial);
195

    
196
                    if (loopbackFlag == false)
197
                    {
198
                        (context.getState()).Entry(context);
199
                    }
200

    
201
                }
202
            }
203
            else
204
            {
205
                super.addOption(context, s);
206
            }
207

    
208
            return;
209
        }
210

    
211
    //-----------------------------------------------------------
212
    // Inner classse.
213
    //
214

    
215

    
216
        private static final class ExecuteMap_Initial
217
            extends ExecuteMap_Default
218
        {
219
        //-------------------------------------------------------
220
        // Member methods.
221
        //
222

    
223
            private ExecuteMap_Initial(String name, int id)
224
            {
225
                super (name, id);
226
            }
227

    
228
            protected void Entry(CircleCADToolContext context)
229
            {
230
                CircleCADTool ctxt = context.getOwner();
231

    
232
                ctxt.setQuestion("CIRCULO" + "\n" +
233
                "Insertar punto central o [3P]:");
234
                ctxt.setDescription(new String[]{"Cancelar", "3P"});
235
                return;
236
            }
237

    
238
            protected void addOption(CircleCADToolContext context, String s)
239
            {
240
                CircleCADTool ctxt = context.getOwner();
241

    
242
                if (s.equals("3p") || s.equals("3P"))
243
                {
244

    
245
                    (context.getState()).Exit(context);
246
                    context.clearState();
247
                    try
248
                    {
249
                        ctxt.setQuestion("Insertar primer punto");
250
                        ctxt.setDescription(new String[]{"Cancelar"});
251
                        ctxt.addOption(s);
252
                    }
253
                    finally
254
                    {
255
                        context.setState(ExecuteMap.Seventh);
256
                        (context.getState()).Entry(context);
257
                    }
258
                }
259
                else
260
                {
261
                    super.addOption(context, s);
262
                }
263

    
264
                return;
265
            }
266

    
267
            protected void addPoint(CircleCADToolContext context, double pointX, double pointY)
268
            {
269
                CircleCADTool ctxt = context.getOwner();
270

    
271

    
272
                (context.getState()).Exit(context);
273
                context.clearState();
274
                try
275
                {
276
                    ctxt.setQuestion("Insertar radio o segundo punto");
277
                    ctxt.setDescription(new String[]{"Cancelar"});
278
                    ctxt.addPoint(pointX, pointY);
279
                }
280
                finally
281
                {
282
                    context.setState(ExecuteMap.First);
283
                    (context.getState()).Entry(context);
284
                }
285
                return;
286
            }
287

    
288
        //-------------------------------------------------------
289
        // Member data.
290
        //
291
        }
292

    
293
        private static final class ExecuteMap_First
294
            extends ExecuteMap_Default
295
        {
296
        //-------------------------------------------------------
297
        // Member methods.
298
        //
299

    
300
            private ExecuteMap_First(String name, int id)
301
            {
302
                super (name, id);
303
            }
304

    
305
            protected void addPoint(CircleCADToolContext context, double pointX, double pointY)
306
            {
307
                CircleCADTool ctxt = context.getOwner();
308

    
309

    
310
                (context.getState()).Exit(context);
311
                context.clearState();
312
                try
313
                {
314
                    ctxt.addPoint(pointX, pointY);
315
                    ctxt.end();
316
                }
317
                finally
318
                {
319
                    context.setState(ExecuteMap.Sixth);
320
                    (context.getState()).Entry(context);
321
                }
322
                return;
323
            }
324

    
325
            protected void addValue(CircleCADToolContext context, double d)
326
            {
327
                CircleCADTool ctxt = context.getOwner();
328

    
329

    
330
                (context.getState()).Exit(context);
331
                context.clearState();
332
                try
333
                {
334
                    ctxt.addValue(d);
335
                    ctxt.end();
336
                }
337
                finally
338
                {
339
                    context.setState(ExecuteMap.Fiveth);
340
                    (context.getState()).Entry(context);
341
                }
342
                return;
343
            }
344

    
345
        //-------------------------------------------------------
346
        // Member data.
347
        //
348
        }
349

    
350
        private static final class ExecuteMap_Second
351
            extends ExecuteMap_Default
352
        {
353
        //-------------------------------------------------------
354
        // Member methods.
355
        //
356

    
357
            private ExecuteMap_Second(String name, int id)
358
            {
359
                super (name, id);
360
            }
361

    
362
            protected void addPoint(CircleCADToolContext context, double pointX, double pointY)
363
            {
364
                CircleCADTool ctxt = context.getOwner();
365

    
366

    
367
                (context.getState()).Exit(context);
368
                context.clearState();
369
                try
370
                {
371
                    ctxt.setQuestion("Insertar tercer punto");
372
                    ctxt.setDescription(new String[]{"Cancelar"});
373
                    ctxt.addPoint(pointX, pointY);
374
                }
375
                finally
376
                {
377
                    context.setState(ExecuteMap.Third);
378
                    (context.getState()).Entry(context);
379
                }
380
                return;
381
            }
382

    
383
        //-------------------------------------------------------
384
        // Member data.
385
        //
386
        }
387

    
388
        private static final class ExecuteMap_Third
389
            extends ExecuteMap_Default
390
        {
391
        //-------------------------------------------------------
392
        // Member methods.
393
        //
394

    
395
            private ExecuteMap_Third(String name, int id)
396
            {
397
                super (name, id);
398
            }
399

    
400
            protected void addPoint(CircleCADToolContext context, double pointX, double pointY)
401
            {
402
                CircleCADTool ctxt = context.getOwner();
403

    
404

    
405
                (context.getState()).Exit(context);
406
                context.clearState();
407
                try
408
                {
409
                    ctxt.addPoint(pointX, pointY);
410
                    ctxt.end();
411
                }
412
                finally
413
                {
414
                    context.setState(ExecuteMap.Fourth);
415
                    (context.getState()).Entry(context);
416
                }
417
                return;
418
            }
419

    
420
        //-------------------------------------------------------
421
        // Member data.
422
        //
423
        }
424

    
425
        private static final class ExecuteMap_Fourth
426
            extends ExecuteMap_Default
427
        {
428
        //-------------------------------------------------------
429
        // Member methods.
430
        //
431

    
432
            private ExecuteMap_Fourth(String name, int id)
433
            {
434
                super (name, id);
435
            }
436

    
437
        //-------------------------------------------------------
438
        // Member data.
439
        //
440
        }
441

    
442
        private static final class ExecuteMap_Fiveth
443
            extends ExecuteMap_Default
444
        {
445
        //-------------------------------------------------------
446
        // Member methods.
447
        //
448

    
449
            private ExecuteMap_Fiveth(String name, int id)
450
            {
451
                super (name, id);
452
            }
453

    
454
        //-------------------------------------------------------
455
        // Member data.
456
        //
457
        }
458

    
459
        private static final class ExecuteMap_Sixth
460
            extends ExecuteMap_Default
461
        {
462
        //-------------------------------------------------------
463
        // Member methods.
464
        //
465

    
466
            private ExecuteMap_Sixth(String name, int id)
467
            {
468
                super (name, id);
469
            }
470

    
471
        //-------------------------------------------------------
472
        // Member data.
473
        //
474
        }
475

    
476
        private static final class ExecuteMap_Seventh
477
            extends ExecuteMap_Default
478
        {
479
        //-------------------------------------------------------
480
        // Member methods.
481
        //
482

    
483
            private ExecuteMap_Seventh(String name, int id)
484
            {
485
                super (name, id);
486
            }
487

    
488
            protected void addPoint(CircleCADToolContext context, double pointX, double pointY)
489
            {
490
                CircleCADTool ctxt = context.getOwner();
491

    
492

    
493
                (context.getState()).Exit(context);
494
                context.clearState();
495
                try
496
                {
497
                    ctxt.setQuestion("Insertar segundo punto");
498
                    ctxt.setDescription(new String[]{"Cancelar"});
499
                    ctxt.addPoint(pointX, pointY);
500
                }
501
                finally
502
                {
503
                    context.setState(ExecuteMap.Second);
504
                    (context.getState()).Entry(context);
505
                }
506
                return;
507
            }
508

    
509
        //-------------------------------------------------------
510
        // Member data.
511
        //
512
        }
513

    
514
    //-----------------------------------------------------------
515
    // Member data.
516
    //
517
    }
518
}