Statistics
| Revision:

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

History | View | Annotate | Download (9.7 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.EllipseCADTool;
9
import java.awt.event.InputEvent;
10

    
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
        setState(Ellipse.FirstPointAxis);
24
        Ellipse.FirstPointAxis.Entry(this);
25
    }
26

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

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

    
43
    public void addValue(double d)
44
    {
45
        _transition = "addValue";
46
        getState().addValue(this, d);
47
        _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
        protected void addOption(EllipseCADToolContext context, String s)
94
        {
95
            Default(context);
96
        }
97

    
98
        protected void addPoint(EllipseCADToolContext context, double pointX, double pointY, InputEvent event)
99
        {
100
            Default(context);
101
        }
102

    
103
        protected void addValue(EllipseCADToolContext context, double d)
104
        {
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
    /* package */ static abstract class Ellipse
124
    {
125
    //-----------------------------------------------------------
126
    // Member methods.
127
    //
128

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

    
133
        //-------------------------------------------------------
134
        // Statics.
135
        //
136
        /* 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

    
141
        static
142
        {
143
            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
        }
148

    
149
    }
150

    
151
    protected static class Ellipse_Default
152
        extends EllipseCADToolState
153
    {
154
    //-----------------------------------------------------------
155
    // Member methods.
156
    //
157

    
158
        protected Ellipse_Default(String name, int id)
159
        {
160
            super (name, id);
161
        }
162

    
163
        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
                        Ellipse.FirstPointAxis.getName());
172

    
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
                    context.setState(Ellipse.FirstPointAxis);
186

    
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
    //-----------------------------------------------------------
203
    // Inner classse.
204
    //
205

    
206

    
207
        private static final class Ellipse_FirstPointAxis
208
            extends Ellipse_Default
209
        {
210
        //-------------------------------------------------------
211
        // Member methods.
212
        //
213

    
214
            private Ellipse_FirstPointAxis(String name, int id)
215
            {
216
                super (name, id);
217
            }
218

    
219
            protected void Entry(EllipseCADToolContext context)
220
            {
221
                EllipseCADTool ctxt = context.getOwner();
222

    
223
                ctxt.setQuestion("ELIPSE" + "\n" +
224
                "Insertar punto inicial de eje de elipse");
225
                ctxt.setDescription(new String[]{"Cancelar"});
226
                return;
227
            }
228

    
229
            protected void addPoint(EllipseCADToolContext context, double pointX, double pointY, InputEvent event)
230
            {
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
                    ctxt.setDescription(new String[]{"Cancelar"});
240
                    ctxt.addPoint(pointX, pointY, event);
241
                }
242
                finally
243
                {
244
                    context.setState(Ellipse.SecondPointAxis);
245
                    (context.getState()).Entry(context);
246
                }
247
                return;
248
            }
249

    
250
        //-------------------------------------------------------
251
        // Member data.
252
        //
253
        }
254

    
255
        private static final class Ellipse_SecondPointAxis
256
            extends Ellipse_Default
257
        {
258
        //-------------------------------------------------------
259
        // Member methods.
260
        //
261

    
262
            private Ellipse_SecondPointAxis(String name, int id)
263
            {
264
                super (name, id);
265
            }
266

    
267
            protected void addPoint(EllipseCADToolContext context, double pointX, double pointY, InputEvent event)
268
            {
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
                    ctxt.setDescription(new String[]{"Cancelar"});
278
                    ctxt.addPoint(pointX, pointY, event);
279
                }
280
                finally
281
                {
282
                    context.setState(Ellipse.DistanceOtherAxis);
283
                    (context.getState()).Entry(context);
284
                }
285
                return;
286
            }
287

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

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

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

    
305
            protected void addPoint(EllipseCADToolContext context, double pointX, double pointY, InputEvent event)
306
            {
307
                EllipseCADTool ctxt = context.getOwner();
308

    
309

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

    
325
            protected void addValue(EllipseCADToolContext context, double d)
326
            {
327
                EllipseCADTool 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(Ellipse.FirstPointAxis);
340
                    (context.getState()).Entry(context);
341
                }
342
                return;
343
            }
344

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

    
350
    //-----------------------------------------------------------
351
    // Member data.
352
    //
353
    }
354
}