Statistics
| Revision:

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

History | View | Annotate | Download (9.03 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.ExtendCADTool;
9
import java.awt.event.InputEvent;
10
import com.iver.andami.PluginServices;
11

    
12
public final class ExtendCADToolContext
13
    extends statemap.FSMContext
14
{
15
//---------------------------------------------------------------
16
// Member methods.
17
//
18

    
19
    public ExtendCADToolContext(ExtendCADTool owner)
20
    {
21
        super();
22

    
23
        _owner = owner;
24
        setState(Extend.SelectGeometryToExtend);
25
        Extend.SelectGeometryToExtend.Entry(this);
26
    }
27

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

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

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

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

    
61
        return ((ExtendCADToolState) _state);
62
    }
63

    
64
    protected ExtendCADTool getOwner()
65
    {
66
        return (_owner);
67
    }
68

    
69
//---------------------------------------------------------------
70
// Member data.
71
//
72

    
73
    transient private ExtendCADTool _owner;
74

    
75
//---------------------------------------------------------------
76
// Inner classes.
77
//
78

    
79
    public static abstract class ExtendCADToolState
80
        extends statemap.State
81
    {
82
    //-----------------------------------------------------------
83
    // Member methods.
84
    //
85

    
86
        protected ExtendCADToolState(String name, int id)
87
        {
88
            super (name, id);
89
        }
90

    
91
        protected void Entry(ExtendCADToolContext context) {}
92
        protected void Exit(ExtendCADToolContext context) {}
93

    
94
        protected void addOption(ExtendCADToolContext context, String s)
95
        {
96
            Default(context);
97
        }
98

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

    
104
        protected void addValue(ExtendCADToolContext context, double d)
105
        {
106
            Default(context);
107
        }
108

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

    
119
    //-----------------------------------------------------------
120
    // Member data.
121
    //
122
    }
123

    
124
    /* package */ static abstract class Extend
125
    {
126
    //-----------------------------------------------------------
127
    // Member methods.
128
    //
129

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

    
134
        //-------------------------------------------------------
135
        // Statics.
136
        //
137
        /* package */ static Extend_Default.Extend_SelectGeometryToExtend SelectGeometryToExtend;
138
        private static Extend_Default Default;
139

    
140
        static
141
        {
142
            SelectGeometryToExtend = new Extend_Default.Extend_SelectGeometryToExtend("Extend.SelectGeometryToExtend", 0);
143
            Default = new Extend_Default("Extend.Default", -1);
144
        }
145

    
146
    }
147

    
148
    protected static class Extend_Default
149
        extends ExtendCADToolState
150
    {
151
    //-----------------------------------------------------------
152
    // Member methods.
153
    //
154

    
155
        protected Extend_Default(String name, int id)
156
        {
157
            super (name, id);
158
        }
159

    
160
        protected void addOption(ExtendCADToolContext context, String s)
161
        {
162
            ExtendCADTool ctxt = context.getOwner();
163

    
164
            if (s.equals(PluginServices.getText(this,"cancel")))
165
            {
166
                boolean loopbackFlag =
167
                    context.getState().getName().equals(
168
                        Extend.SelectGeometryToExtend.getName());
169

    
170
                if (loopbackFlag == false)
171
                {
172
                    (context.getState()).Exit(context);
173
                }
174

    
175
                context.clearState();
176
                try
177
                {
178
                    ctxt.end();
179
                }
180
                finally
181
                {
182
                    context.setState(Extend.SelectGeometryToExtend);
183

    
184
                    if (loopbackFlag == false)
185
                    {
186
                        (context.getState()).Entry(context);
187
                    }
188

    
189
                }
190
            }
191
            else
192
            {
193
                boolean loopbackFlag =
194
                    context.getState().getName().equals(
195
                        Extend.SelectGeometryToExtend.getName());
196

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

    
202
                context.clearState();
203
                try
204
                {
205
                    ctxt.throwOptionException(PluginServices.getText(this,"incorrect_option"), s);
206
                }
207
                finally
208
                {
209
                    context.setState(Extend.SelectGeometryToExtend);
210

    
211
                    if (loopbackFlag == false)
212
                    {
213
                        (context.getState()).Entry(context);
214
                    }
215

    
216
                }
217
            }
218

    
219
            return;
220
        }
221

    
222
        protected void addValue(ExtendCADToolContext context, double d)
223
        {
224
            ExtendCADTool ctxt = context.getOwner();
225

    
226
            boolean loopbackFlag =
227
                context.getState().getName().equals(
228
                    Extend.SelectGeometryToExtend.getName());
229

    
230
            if (loopbackFlag == false)
231
            {
232
                (context.getState()).Exit(context);
233
            }
234

    
235
            context.clearState();
236
            try
237
            {
238
                ctxt.throwValueException(PluginServices.getText(this,"incorrect_value"), d);
239
            }
240
            finally
241
            {
242
                context.setState(Extend.SelectGeometryToExtend);
243

    
244
                if (loopbackFlag == false)
245
                {
246
                    (context.getState()).Entry(context);
247
                }
248

    
249
            }
250
            return;
251
        }
252

    
253
        protected void addPoint(ExtendCADToolContext context, double pointX, double pointY, InputEvent event)
254
        {
255
            ExtendCADTool ctxt = context.getOwner();
256

    
257
            boolean loopbackFlag =
258
                context.getState().getName().equals(
259
                    Extend.SelectGeometryToExtend.getName());
260

    
261
            if (loopbackFlag == false)
262
            {
263
                (context.getState()).Exit(context);
264
            }
265

    
266
            context.clearState();
267
            try
268
            {
269
                ctxt.throwPointException(PluginServices.getText(this,"incorrect_point"), pointX, pointY);
270
            }
271
            finally
272
            {
273
                context.setState(Extend.SelectGeometryToExtend);
274

    
275
                if (loopbackFlag == false)
276
                {
277
                    (context.getState()).Entry(context);
278
                }
279

    
280
            }
281
            return;
282
        }
283

    
284
    //-----------------------------------------------------------
285
    // Inner classse.
286
    //
287

    
288

    
289
        private static final class Extend_SelectGeometryToExtend
290
            extends Extend_Default
291
        {
292
        //-------------------------------------------------------
293
        // Member methods.
294
        //
295

    
296
            private Extend_SelectGeometryToExtend(String name, int id)
297
            {
298
                super (name, id);
299
            }
300

    
301
            protected void Entry(ExtendCADToolContext context)
302
            {
303
                ExtendCADTool ctxt = context.getOwner();
304

    
305
                ctxt.selection();
306
                ctxt.setQuestion(PluginServices.getText(this,"select_geometry_to_extend"));
307
                ctxt.setDescription(new String[]{"cancel"});
308
                return;
309
            }
310

    
311
            protected void addPoint(ExtendCADToolContext context, double pointX, double pointY, InputEvent event)
312
            {
313
                ExtendCADTool ctxt = context.getOwner();
314

    
315
                ExtendCADToolState endState = context.getState();
316

    
317
                context.clearState();
318
                try
319
                {
320
                    ctxt.setQuestion(PluginServices.getText(this,"select_geometry_to_extend"));
321
                    ctxt.setDescription(new String[]{"cancel"});
322
                    ctxt.addPoint(pointX, pointY, event);
323
                }
324
                finally
325
                {
326
                    context.setState(endState);
327
                }
328
                return;
329
            }
330

    
331
        //-------------------------------------------------------
332
        // Member data.
333
        //
334
        }
335

    
336
    //-----------------------------------------------------------
337
    // Member data.
338
    //
339
    }
340
}