Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.editing.app / org.gvsig.editing.app.mainplugin / src / main / java / org / gvsig / editing / gui / cad / tools / smc / PolylineCADToolContext.java @ 40557

History | View | Annotate | Download (27.2 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24

    
25
//
26
// Vicente Caballero Navarro
27

    
28

    
29
package org.gvsig.editing.gui.cad.tools.smc;
30

    
31
import java.awt.event.InputEvent;
32

    
33
import org.gvsig.andami.PluginServices;
34
import org.gvsig.editing.gui.cad.tools.PolylineCADTool;
35

    
36

    
37
public final class PolylineCADToolContext
38
    extends statemap.FSMContext
39
{
40
//---------------------------------------------------------------
41
// Member methods.
42
//
43

    
44
    public PolylineCADToolContext(PolylineCADTool owner)
45
    {
46
        super();
47

    
48
        _owner = owner;
49
        setState(Polyline.FirstPoint);
50
        Polyline.FirstPoint.Entry(this);
51
    }
52

    
53
    public void addOption(String s)
54
    {
55
        _transition = "addOption";
56
        getState().addOption(this, s);
57
        _transition = "";
58
        return;
59
    }
60

    
61
    public void addPoint(double pointX, double pointY, InputEvent event)
62
    {
63
        _transition = "addPoint";
64
        getState().addPoint(this, pointX, pointY, event);
65
        _transition = "";
66
        return;
67
    }
68

    
69
    public void addValue(double d)
70
    {
71
        _transition = "addValue";
72
        getState().addValue(this, d);
73
        _transition = "";
74
        return;
75
    }
76

    
77
    public void endPoint(double pointX, double pointY, InputEvent event)
78
    {
79
        _transition = "endPoint";
80
        getState().endPoint(this, pointX, pointY, event);
81
        _transition = "";
82
        return;
83
    }
84

    
85
    public PolylineCADToolState getState()
86
        throws statemap.StateUndefinedException
87
    {
88
        if (_state == null)
89
        {
90
            throw(
91
                new statemap.StateUndefinedException());
92
        }
93

    
94
        return ((PolylineCADToolState) _state);
95
    }
96

    
97
    protected PolylineCADTool getOwner()
98
    {
99
        return (_owner);
100
    }
101

    
102
//---------------------------------------------------------------
103
// Member data.
104
//
105

    
106
    transient private PolylineCADTool _owner;
107

    
108
//---------------------------------------------------------------
109
// Inner classes.
110
//
111

    
112
    public static abstract class PolylineCADToolState
113
        extends statemap.State
114
    {
115
    //-----------------------------------------------------------
116
    // Member methods.
117
    //
118

    
119
        protected PolylineCADToolState(String name, int id)
120
        {
121
            super (name, id);
122
        }
123

    
124
        protected void Entry(PolylineCADToolContext context) {}
125
        protected void Exit(PolylineCADToolContext context) {}
126

    
127
        protected void addOption(PolylineCADToolContext context, String s)
128
        {
129
            Default(context);
130
        }
131

    
132
        protected void addPoint(PolylineCADToolContext context, double pointX, double pointY, InputEvent event)
133
        {
134
            Default(context);
135
        }
136

    
137
        protected void addValue(PolylineCADToolContext context, double d)
138
        {
139
            Default(context);
140
        }
141

    
142
        protected void endPoint(PolylineCADToolContext context, double pointX, double pointY, InputEvent event)
143
        {
144
            Default(context);
145
        }
146

    
147
        protected void Default(PolylineCADToolContext context)
148
        {
149
            throw (
150
                new statemap.TransitionUndefinedException(
151
                    "State: " +
152
                    context.getState().getName() +
153
                    ", Transition: " +
154
                    context.getTransition()));
155
        }
156

    
157
    //-----------------------------------------------------------
158
    // Member data.
159
    //
160
    }
161

    
162
    /* package */ static abstract class Polyline
163
    {
164
    //-----------------------------------------------------------
165
    // Member methods.
166
    //
167

    
168
    //-----------------------------------------------------------
169
    // Member data.
170
    //
171

    
172
        //-------------------------------------------------------
173
        // Statics.
174
        //
175
        /* package */ static Polyline_Default.Polyline_FirstPoint FirstPoint;
176
        /* package */ static Polyline_Default.Polyline_NextPointOrArcOrClose NextPointOrArcOrClose;
177
        /* package */ static Polyline_Default.Polyline_NextPointOrLineOrClose NextPointOrLineOrClose;
178
        private static Polyline_Default Default;
179

    
180
        static
181
        {
182
            FirstPoint = new Polyline_Default.Polyline_FirstPoint("Polyline.FirstPoint", 0);
183
            NextPointOrArcOrClose = new Polyline_Default.Polyline_NextPointOrArcOrClose("Polyline.NextPointOrArcOrClose", 1);
184
            NextPointOrLineOrClose = new Polyline_Default.Polyline_NextPointOrLineOrClose("Polyline.NextPointOrLineOrClose", 2);
185
            Default = new Polyline_Default("Polyline.Default", -1);
186
        }
187

    
188
    }
189

    
190
    protected static class Polyline_Default
191
        extends PolylineCADToolState
192
    {
193
    //-----------------------------------------------------------
194
    // Member methods.
195
    //
196

    
197
        protected Polyline_Default(String name, int id)
198
        {
199
            super (name, id);
200
        }
201

    
202
        protected void addOption(PolylineCADToolContext context, String s)
203
        {
204
            PolylineCADTool ctxt = context.getOwner();
205

    
206
            if (s.equals(PluginServices.getText(this,"cancel")))
207
            {
208
                boolean loopbackFlag =
209
                    context.getState().getName().equals(
210
                        Polyline.FirstPoint.getName());
211

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

    
217
                context.clearState();
218
                try
219
                {
220
                    ctxt.cancel();
221
                }
222
                finally
223
                {
224
                    context.setState(Polyline.FirstPoint);
225

    
226
                    if (loopbackFlag == false)
227
                    {
228
                        (context.getState()).Entry(context);
229
                    }
230

    
231
                }
232
            }
233
            else if (s.equals(""))
234
            {
235
                boolean loopbackFlag =
236
                    context.getState().getName().equals(
237
                        Polyline.FirstPoint.getName());
238

    
239
                if (loopbackFlag == false)
240
                {
241
                    (context.getState()).Exit(context);
242
                }
243

    
244
                context.clearState();
245
                try
246
                {
247
                    ctxt.endGeometry();
248
                }
249
                finally
250
                {
251
                    context.setState(Polyline.FirstPoint);
252

    
253
                    if (loopbackFlag == false)
254
                    {
255
                        (context.getState()).Entry(context);
256
                    }
257

    
258
                }
259
            }
260
            else
261
            {
262
                boolean loopbackFlag =
263
                    context.getState().getName().equals(
264
                        Polyline.FirstPoint.getName());
265

    
266
                if (loopbackFlag == false)
267
                {
268
                    (context.getState()).Exit(context);
269
                }
270

    
271
                context.clearState();
272
                try
273
                {
274
                    ctxt.throwOptionException(PluginServices.getText(this,"incorrect_option"), s);
275
                }
276
                finally
277
                {
278
                    context.setState(Polyline.FirstPoint);
279

    
280
                    if (loopbackFlag == false)
281
                    {
282
                        (context.getState()).Entry(context);
283
                    }
284

    
285
                }
286
            }
287

    
288
            return;
289
        }
290

    
291
        protected void addValue(PolylineCADToolContext context, double d)
292
        {
293
            PolylineCADTool ctxt = context.getOwner();
294

    
295
            boolean loopbackFlag =
296
                context.getState().getName().equals(
297
                    Polyline.FirstPoint.getName());
298

    
299
            if (loopbackFlag == false)
300
            {
301
                (context.getState()).Exit(context);
302
            }
303

    
304
            context.clearState();
305
            try
306
            {
307
                ctxt.throwValueException(PluginServices.getText(this,"incorrect_value"), d);
308
            }
309
            finally
310
            {
311
                context.setState(Polyline.FirstPoint);
312

    
313
                if (loopbackFlag == false)
314
                {
315
                    (context.getState()).Entry(context);
316
                }
317

    
318
            }
319
            return;
320
        }
321

    
322
        protected void addPoint(PolylineCADToolContext context, double pointX, double pointY, InputEvent event)
323
        {
324
            PolylineCADTool ctxt = context.getOwner();
325

    
326
            boolean loopbackFlag =
327
                context.getState().getName().equals(
328
                    Polyline.FirstPoint.getName());
329

    
330
            if (loopbackFlag == false)
331
            {
332
                (context.getState()).Exit(context);
333
            }
334

    
335
            context.clearState();
336
            try
337
            {
338
                ctxt.throwPointException(PluginServices.getText(this,"incorrect_point"), pointX, pointY);
339
            }
340
            finally
341
            {
342
                context.setState(Polyline.FirstPoint);
343

    
344
                if (loopbackFlag == false)
345
                {
346
                    (context.getState()).Entry(context);
347
                }
348

    
349
            }
350
            return;
351
        }
352

    
353
        protected void endPoint(PolylineCADToolContext context, double pointX, double pointY, InputEvent event)
354
        {
355
            PolylineCADTool ctxt = context.getOwner();
356

    
357
            boolean loopbackFlag =
358
                context.getState().getName().equals(
359
                    Polyline.FirstPoint.getName());
360

    
361
            if (loopbackFlag == false)
362
            {
363
                (context.getState()).Exit(context);
364
            }
365

    
366
            context.clearState();
367
            try
368
            {
369
                ctxt.addPoint(pointX, pointY, event);
370
                ctxt.endGeometry();
371
            }
372
            finally
373
            {
374
                context.setState(Polyline.FirstPoint);
375

    
376
                if (loopbackFlag == false)
377
                {
378
                    (context.getState()).Entry(context);
379
                }
380

    
381
            }
382
            return;
383
        }
384

    
385
    //-----------------------------------------------------------
386
    // Inner classse.
387
    //
388

    
389

    
390
        private static final class Polyline_FirstPoint
391
            extends Polyline_Default
392
        {
393
        //-------------------------------------------------------
394
        // Member methods.
395
        //
396

    
397
            private Polyline_FirstPoint(String name, int id)
398
            {
399
                super (name, id);
400
            }
401

    
402
            protected void Entry(PolylineCADToolContext context)
403
            {
404
                PolylineCADTool ctxt = context.getOwner();
405

    
406
                ctxt.setQuestion(PluginServices.getText(this,"insert_first_point"));
407
                ctxt.setDescription(new String[]{"cancel"});
408
                return;
409
            }
410

    
411
            protected void addPoint(PolylineCADToolContext context, double pointX, double pointY, InputEvent event)
412
            {
413
                PolylineCADTool ctxt = context.getOwner();
414

    
415
                if (ctxt.isPolygonLayer())
416
                {
417

    
418
                    (context.getState()).Exit(context);
419
                    context.clearState();
420
                    try
421
                    {
422
                        ctxt.setQuestion(PluginServices.getText(this,"insert_next_point")+", "+
423
                                    PluginServices.getText(this,"arc")+
424
                                    "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
425
                                    PluginServices.getText(this,"cad.or")+" "+
426
                                    PluginServices.getText(this,"end")+
427
                                           "["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
428
                        ctxt.setDescription(new String[]{"inter_arc", "terminate", "cancel"});
429
                        ctxt.addPoint(pointX, pointY, event);
430
                    }
431
                    finally
432
                    {
433
                        context.setState(Polyline.NextPointOrArcOrClose);
434
                        (context.getState()).Entry(context);
435
                    }
436
                }
437
                else
438
                {
439

    
440
                    (context.getState()).Exit(context);
441
                    context.clearState();
442
                    try
443
                    {
444
                        ctxt.setQuestion(PluginServices.getText(this,"insert_next_point")+", "+
445
                                    PluginServices.getText(this,"arc")+
446
                                    "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
447
                                    PluginServices.getText(this,"close_polyline")+
448
                                    "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
449
                                    PluginServices.getText(this,"cad.or")+" "+
450
                                    PluginServices.getText(this,"end")+
451
                                           "["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
452
                        ctxt.setDescription(new String[]{"inter_arc", "close_polyline", "terminate", "cancel"});
453
                        ctxt.addPoint(pointX, pointY, event);
454
                    }
455
                    finally
456
                    {
457
                        context.setState(Polyline.NextPointOrArcOrClose);
458
                        (context.getState()).Entry(context);
459
                    }
460
                }
461

    
462
                return;
463
            }
464

    
465
        //-------------------------------------------------------
466
        // Member data.
467
        //
468
        }
469

    
470
        private static final class Polyline_NextPointOrArcOrClose
471
            extends Polyline_Default
472
        {
473
        //-------------------------------------------------------
474
        // Member methods.
475
        //
476

    
477
            private Polyline_NextPointOrArcOrClose(String name, int id)
478
            {
479
                super (name, id);
480
            }
481

    
482
            protected void addOption(PolylineCADToolContext context, String s)
483
            {
484
                PolylineCADTool ctxt = context.getOwner();
485

    
486
                if (ctxt.isPolygonLayer() && (s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.arc")) || s.equals(PluginServices.getText(this,"inter_arc"))))
487
                {
488

    
489
                    (context.getState()).Exit(context);
490
                    context.clearState();
491
                    try
492
                    {
493
                        ctxt.setQuestion(PluginServices.getText(this,"insert_next_point")+", "+
494
                                PluginServices.getText(this,"line")+
495
                                "["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+
496
                                PluginServices.getText(this,"cad.or")+" "+
497
                                PluginServices.getText(this,"end")+
498
                                "["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
499
                        ctxt.setDescription(new String[]{"inter_line", "terminate", "cancel"});
500
                        ctxt.addOption(s);
501
                    }
502
                    finally
503
                    {
504
                        context.setState(Polyline.NextPointOrLineOrClose);
505
                        (context.getState()).Entry(context);
506
                    }
507
                }
508
                else if (s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.arc")) || s.equals(PluginServices.getText(this,"inter_arc")))
509
                {
510

    
511
                    (context.getState()).Exit(context);
512
                    context.clearState();
513
                    try
514
                    {
515
                        ctxt.setQuestion(PluginServices.getText(this,"insert_next_point")+", "+
516
                                PluginServices.getText(this,"line")+
517
                                "["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+
518
                                PluginServices.getText(this,"close_polyline")+
519
                                "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
520
                                PluginServices.getText(this,"cad.or")+" "+
521
                                PluginServices.getText(this,"end")+
522
                                "["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
523
                        ctxt.setDescription(new String[]{"inter_line", "close_polyline", "terminate", "cancel"});
524
                        ctxt.addOption(s);
525
                    }
526
                    finally
527
                    {
528
                        context.setState(Polyline.NextPointOrLineOrClose);
529
                        (context.getState()).Entry(context);
530
                    }
531
                }
532
                else if (s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.close_polyline")) || s.equals(PluginServices.getText(this,"close_polyline")))
533
                {
534

    
535
                    (context.getState()).Exit(context);
536
                    context.clearState();
537
                    try
538
                    {
539
                        ctxt.addOption(s);
540
                        ctxt.closeGeometry();
541
                        ctxt.endGeometry();
542
                        ctxt.end();
543
                    }
544
                    finally
545
                    {
546
                        context.setState(Polyline.FirstPoint);
547
                        (context.getState()).Entry(context);
548
                    }
549
                }
550
                else if ((s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.end")) || s.equals(PluginServices.getText(this,"terminate"))) && ctxt.getLinesCount()!=0 )
551
                {
552

    
553
                    (context.getState()).Exit(context);
554
                    context.clearState();
555
                    try
556
                    {
557
                        ctxt.addOption(s);
558
                        ctxt.endGeometry();
559
                        ctxt.end();
560
                    }
561
                    finally
562
                    {
563
                        context.setState(Polyline.FirstPoint);
564
                        (context.getState()).Entry(context);
565
                    }
566
                }
567
                else if (!s.equals(PluginServices.getText(this,"cancel")))
568
                {
569

    
570
                    // No actions.
571
                }                else
572
                {
573
                    super.addOption(context, s);
574
                }
575

    
576
                return;
577
            }
578

    
579
            protected void addPoint(PolylineCADToolContext context, double pointX, double pointY, InputEvent event)
580
            {
581
                PolylineCADTool ctxt = context.getOwner();
582

    
583
                if (ctxt.isPolygonLayer())
584
                {
585
                    PolylineCADToolState endState = context.getState();
586

    
587
                    context.clearState();
588
                    try
589
                    {
590
                        ctxt.setQuestion(PluginServices.getText(this,"insert_next_point")+", "+
591
                                PluginServices.getText(this,"arc")+
592
                                "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
593
                                PluginServices.getText(this,"cad.or")+" "+
594
                                PluginServices.getText(this,"end")+
595
                                "["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
596
                        ctxt.setDescription(new String[]{"inter_arc", "terminate", "cancel"});
597
                        ctxt.addPoint(pointX, pointY, event);
598
                    }
599
                    finally
600
                    {
601
                        context.setState(endState);
602
                    }
603
                }
604
                else
605
                {
606
                    PolylineCADToolState endState = context.getState();
607

    
608
                    context.clearState();
609
                    try
610
                    {
611
                        ctxt.setQuestion(PluginServices.getText(this,"insert_next_point")+", "+
612
                                PluginServices.getText(this,"arc")+
613
                                "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
614
                                PluginServices.getText(this,"close_polyline")+
615
                                "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
616
                                PluginServices.getText(this,"cad.or")+" "+
617
                                PluginServices.getText(this,"end")+
618
                                "["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
619
                        ctxt.setDescription(new String[]{"inter_arc", "close_polyline", "terminate", "cancel"});
620
                        ctxt.addPoint(pointX, pointY, event);
621
                    }
622
                    finally
623
                    {
624
                        context.setState(endState);
625
                    }
626
                }
627

    
628
                return;
629
            }
630

    
631
        //-------------------------------------------------------
632
        // Member data.
633
        //
634
        }
635

    
636
        private static final class Polyline_NextPointOrLineOrClose
637
            extends Polyline_Default
638
        {
639
        //-------------------------------------------------------
640
        // Member methods.
641
        //
642

    
643
            private Polyline_NextPointOrLineOrClose(String name, int id)
644
            {
645
                super (name, id);
646
            }
647

    
648
            protected void addOption(PolylineCADToolContext context, String s)
649
            {
650
                PolylineCADTool ctxt = context.getOwner();
651

    
652
                if (ctxt.isPolygonLayer() && (s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.line")) || s.equals(PluginServices.getText(this,"inter_line"))))
653
                {
654

    
655
                    (context.getState()).Exit(context);
656
                    context.clearState();
657
                    try
658
                    {
659
                        ctxt.setQuestion(PluginServices.getText(this,"insert_next_point")+", "+
660
                                PluginServices.getText(this,"arc")+
661
                                "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
662
                                PluginServices.getText(this,"cad.or")+" "+
663
                                PluginServices.getText(this,"end")+
664
                                "["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
665
                        ctxt.setDescription(new String[]{"inter_arc", "terminate", "cancel"});
666
                        ctxt.addOption(s);
667
                    }
668
                    finally
669
                    {
670
                        context.setState(Polyline.NextPointOrArcOrClose);
671
                        (context.getState()).Entry(context);
672
                    }
673
                }
674
                else if (s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.line")) || s.equals(PluginServices.getText(this,"inter_line")))
675
                {
676

    
677
                    (context.getState()).Exit(context);
678
                    context.clearState();
679
                    try
680
                    {
681
                        ctxt.setQuestion(PluginServices.getText(this,"insert_next_point")+", "+
682
                                PluginServices.getText(this,"arc")+
683
                                "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
684
                                PluginServices.getText(this,"close_polyline")+
685
                                "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
686
                                PluginServices.getText(this,"cad.or")+" "+
687
                                PluginServices.getText(this,"end")+
688
                                "["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
689
                        ctxt.setDescription(new String[]{"inter_arc", "close_polyline", "terminate", "cancel"});
690
                        ctxt.addOption(s);
691
                    }
692
                    finally
693
                    {
694
                        context.setState(Polyline.NextPointOrArcOrClose);
695
                        (context.getState()).Entry(context);
696
                    }
697
                }
698
                else if (s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.close_polyline")) || s.equals(PluginServices.getText(this,"close_polyline")))
699
                {
700

    
701
                    (context.getState()).Exit(context);
702
                    context.clearState();
703
                    try
704
                    {
705
                        ctxt.addOption(s);
706
                        ctxt.closeGeometry();
707
                        ctxt.endGeometry();
708
                        ctxt.end();
709
                    }
710
                    finally
711
                    {
712
                        context.setState(Polyline.FirstPoint);
713
                        (context.getState()).Entry(context);
714
                    }
715
                }
716
                else if ((s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.end")) || s.equals(PluginServices.getText(this,"terminate"))) && ctxt.getLinesCount()!=0)
717
                {
718

    
719
                    (context.getState()).Exit(context);
720
                    context.clearState();
721
                    try
722
                    {
723
                        ctxt.addOption(s);
724
                        ctxt.endGeometry();
725
                        ctxt.end();
726
                    }
727
                    finally
728
                    {
729
                        context.setState(Polyline.FirstPoint);
730
                        (context.getState()).Entry(context);
731
                    }
732
                }
733
                else if (!s.equals(PluginServices.getText(this,"cancel")))
734
                {
735

    
736
                    // No actions.
737
                }                else
738
                {
739
                    super.addOption(context, s);
740
                }
741

    
742
                return;
743
            }
744

    
745
            protected void addPoint(PolylineCADToolContext context, double pointX, double pointY, InputEvent event)
746
            {
747
                PolylineCADTool ctxt = context.getOwner();
748

    
749
                if (ctxt.isPolygonLayer())
750
                {
751
                    PolylineCADToolState endState = context.getState();
752

    
753
                    context.clearState();
754
                    try
755
                    {
756
                        ctxt.setQuestion(PluginServices.getText(this,"insert_next_point")+", "+
757
                                PluginServices.getText(this,"line")+
758
                                "["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+
759
                                PluginServices.getText(this,"cad.or")+" "+
760
                                PluginServices.getText(this,"end")+
761
                                "["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
762
                        ctxt.setDescription(new String[]{"inter_line", "terminate", "cancel"});
763
                        ctxt.addPoint(pointX, pointY, event);
764
                    }
765
                    finally
766
                    {
767
                        context.setState(endState);
768
                    }
769
                }
770
                else
771
                {
772
                    PolylineCADToolState endState = context.getState();
773

    
774
                    context.clearState();
775
                    try
776
                    {
777
                        ctxt.setQuestion(PluginServices.getText(this,"insert_next_point")+", "+
778
                                PluginServices.getText(this,"line")+
779
                                "["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+
780
                                PluginServices.getText(this,"close_polyline")+
781
                                "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
782
                                PluginServices.getText(this,"cad.or")+" "+
783
                                PluginServices.getText(this,"end")+
784
                                "["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
785
                        ctxt.setDescription(new String[]{"inter_line", "close_polyline", "terminate", "cancel"});
786
                        ctxt.addPoint(pointX, pointY, event);
787
                    }
788
                    finally
789
                    {
790
                        context.setState(endState);
791
                    }
792
                }
793

    
794
                return;
795
            }
796

    
797
        //-------------------------------------------------------
798
        // Member data.
799
        //
800
        }
801

    
802
    //-----------------------------------------------------------
803
    // Member data.
804
    //
805
    }
806
}