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 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
}