Statistics
| Revision:

root / trunk / extensions / extCAD / sm / ComplexSelectionCADTool.sm @ 11445

History | View | Annotate | Download (21.6 KB)

1
// -*- tab-width: 4; -*-
2

    
3
%{
4
//
5
// Vicente Caballero Navarro
6
%}
7

    
8
%start Selection::FirstPoint
9
%class ComplexSelectionCADTool
10
%package com.iver.cit.gvsig.gui.cad.tools.smc
11
%import com.iver.cit.gvsig.gui.cad.tools.ComplexSelectionCADTool
12
%import com.iver.cit.gvsig.fmap.layers.FBitSet
13
%import java.awt.event.InputEvent
14
%import com.iver.andami.PluginServices
15

    
16

    
17
%map Selection
18
%%
19
// A task begins life in suspended animation.
20

    
21
FirstPoint
22

    
23
  Entry {
24
    setQuestion(
25
	    PluginServices.getText(this,"insert_point")+" "+
26
	    PluginServices.getText(this,"cad.or")+" "+
27
	    PluginServices.getText(this,"circle")+
28
	    "["+PluginServices.getText(this,"ComplexSelectionCADTool.introcircle")+"], "+
29
	    PluginServices.getText(this,"out_rectangle")+
30
	    "["+PluginServices.getText(this,"ComplexSelectionCADTool.outrectangle")+"], "+
31
	    PluginServices.getText(this,"polygon")+
32
	    "["+PluginServices.getText(this,"ComplexSelectionCADTool.intropolygon")+"], "+
33
	    PluginServices.getText(this,"cross_polygon")+
34
	   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosspolygon")+"], "+"\n"+
35
	    "#"+PluginServices.getText(this,"out_polygon")+
36
	   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outpolygon")+"], "+
37
	    PluginServices.getText(this,"cross_circle")+
38
	   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosscircle")+"], "+
39
		PluginServices.getText(this,"out_circle")+
40
	   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"]");
41
    setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
42
    }
43
  Exit{
44
    }
45

    
46
  {
47
    addOption(s:String)
48
      FirstPoint{
49
        setQuestion(
50
			PluginServices.getText(this,"insert_point")+" "+
51
		    PluginServices.getText(this,"cad.or")+" "+
52
		    PluginServices.getText(this,"circle")+
53
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.introcircle")+"], "+
54
		    PluginServices.getText(this,"out_rectangle")+
55
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"], "+
56
		    PluginServices.getText(this,"polygon")+
57
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.intropolygon")+"], "+
58
		    PluginServices.getText(this,"cross_polygon")+
59
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosspolygon")+"], "+"\n"+
60
		    "#"+PluginServices.getText(this,"out_polygon")+
61
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outpolygon")+"], "+
62
		    PluginServices.getText(this,"cross_circle")+
63
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosscircle")+"], "+
64
			PluginServices.getText(this,"out_circle")+
65
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"]");
66
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
67
        addOption(s);
68
        }
69
    addPoint( pointX:double,pointY:double,event:InputEvent)
70
      [ctxt.getType().equals(PluginServices.getText(this,"out_rectangle"))]
71
      SecondPointOutRectangle{
72
        setQuestion(PluginServices.getText(this,"insert_second_point_selection"));
73
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
74
        addPoint( pointX,pointY,event);
75
        }
76
    addPoint( pointX:double,pointY:double,event:InputEvent)
77
      [ctxt.getType().equals(PluginServices.getText(this,"inside_circle")) || ctxt.getType().equals(PluginServices.getText(this,"cross_circle")) || ctxt.getType().equals(PluginServices.getText(this,"out_circle"))]
78
      SecondPointCircle{
79
        setQuestion(PluginServices.getText(this,"insert_second_point_selection"));
80
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
81
        addPoint( pointX,pointY,event);
82
        }
83
    addPoint( pointX:double,pointY:double,event:InputEvent)
84
      [ctxt.getType().equals(PluginServices.getText(this,"inside_polygon")) || ctxt.getType().equals(PluginServices.getText(this,"cross_polygon")) || ctxt.getType().equals(PluginServices.getText(this,"out_polygon"))]
85
      NextPointPolygon{
86
        setQuestion(
87
        	PluginServices.getText(this,"insert_next_point_selection_or_end_polygon")+
88
        	"["+PluginServices.getText(this,"ComplexSelectionCADTool.end")+"]");
89
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
90
        addPoint( pointX,pointY,event);
91
        }
92

    
93
    addPoint( pointX:double,pointY:double,event:InputEvent)
94
      [ctxt.getType().equals(PluginServices.getText(this,"simple")) && ctxt.selectFeatures(pointX,pointY, event) && ctxt.getNextState().equals("Selection.SecondPoint")]
95
      SecondPoint{
96
        setQuestion(PluginServices.getText(this,"insert_second_point_selection"));
97
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
98
        addPoint( pointX,pointY,event);
99
        }
100
//    addPoint( pointX:double,pointY:double,event:InputEvent)
101
//      [ctxt.getType().equals(PluginServices.getText(this,"simple")) && ctxt.getNextState().equals("Selection.WithSelectedFeatures")]
102
//      WithSelectedFeatures {
103
//        setQuestion(PluginServices.getText(this,"select_handlers"));
104
//        setDescription(new String[]{"simple","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
105
//        addPoint( pointX,pointY,event);
106
//        end();
107
//        }
108
}
109

    
110
SecondPoint{
111
  // Si hemos conseguido seleccionar algo
112
  addPoint( pointX:double,pointY:double,event:InputEvent)
113
      [ctxt.selectWithSecondPoint(pointX,pointY, event) > 0]
114
      WithSelectedFeatures {
115
        setQuestion(PluginServices.getText(this,"select_handlers"));
116
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
117
        addPoint( pointX,pointY,event);
118
        end();
119
        }
120
  // Si no lo hemos conseguido
121
  addPoint( pointX:double,pointY:double,event:InputEvent)
122
      FirstPoint {
123
        setQuestion(
124
			PluginServices.getText(this,"insert_point")+" "+
125
		    PluginServices.getText(this,"cad.or")+" "+
126
		    PluginServices.getText(this,"circle")+
127
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.introcircle")+"], "+
128
		    PluginServices.getText(this,"out_rectangle")+
129
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.outrectangle")+"], "+
130
		    PluginServices.getText(this,"polygon")+
131
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.intropolygon")+"], "+
132
		    PluginServices.getText(this,"cross_polygon")+
133
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosspolygon")+"], "+"\n"+
134
		    "#"+PluginServices.getText(this,"out_polygon")+
135
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outpolygon")+"], "+
136
		    PluginServices.getText(this,"cross_circle")+
137
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosscircle")+"], "+
138
			PluginServices.getText(this,"out_circle")+
139
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"]");
140
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
141
        addPoint(pointX,pointY,event);
142
        }
143
  addOption(s:String)
144
      FirstPoint{
145
        setQuestion(
146
			PluginServices.getText(this,"insert_point")+" "+
147
		    PluginServices.getText(this,"cad.or")+" "+
148
		    PluginServices.getText(this,"circle")+
149
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.introcircle")+"], "+
150
		    PluginServices.getText(this,"out_rectangle")+
151
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.outrectangle")+"], "+
152
		    PluginServices.getText(this,"polygon")+
153
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.intropolygon")+"], "+
154
		    PluginServices.getText(this,"cross_polygon")+
155
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosspolygon")+"], "+"\n"+
156
		    "#"+PluginServices.getText(this,"out_polygon")+
157
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outpolygon")+"], "+
158
		    PluginServices.getText(this,"cross_circle")+
159
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosscircle")+"], "+
160
			PluginServices.getText(this,"out_circle")+
161
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"]");
162
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
163
        setType(s);
164
        }
165

    
166
}
167
WithSelectedFeatures{
168

    
169
  // Si hemos pinchado encima de un handler
170
  addPoint( pointX:double,pointY:double,event:InputEvent)
171
  [ctxt.selectHandlers(pointX, pointY, event)>0]
172
      WithHandlers {
173
        setQuestion(PluginServices.getText(this,"insert_destination_point"));
174
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
175
        addPoint( pointX,pointY,event);
176
        // refresh();
177
        }
178

    
179
  // Si no hemos cogido un handler, probamos a seleccionar
180
  // otra entidad
181
  addPoint( pointX:double,pointY:double,event:InputEvent)
182
    [ctxt.selectFeatures(pointX,pointY, event) && ctxt.getNextState().equals("Selection.WithSelectedFeatures")]
183
      WithSelectedFeatures {
184
        setQuestion(PluginServices.getText(this,"select_handlers"));
185
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
186
        addPoint( pointX,pointY,event);
187
        }
188

    
189

    
190
  // Cualquier otro caso (hemos pinchado en algo vacio), volvemos al estado inicial
191
  addPoint( pointX:double,pointY:double,event:InputEvent)
192
      FirstPoint {
193
        setQuestion(
194
			PluginServices.getText(this,"insert_point")+" "+
195
		    PluginServices.getText(this,"cad.or")+" "+
196
		    PluginServices.getText(this,"circle")+
197
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.introcircle")+"], "+
198
		    PluginServices.getText(this,"out_rectangle")+
199
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.outrectangle")+"], "+
200
		    PluginServices.getText(this,"polygon")+
201
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.intropolygon")+"], "+
202
		    PluginServices.getText(this,"cross_polygon")+
203
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosspolygon")+"], "+"\n"+
204
		    "#"+PluginServices.getText(this,"out_polygon")+
205
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outpolygon")+"], "+
206
		    PluginServices.getText(this,"cross_circle")+
207
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosscircle")+"], "+
208
			PluginServices.getText(this,"out_circle")+
209
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"]");
210
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
211
        addPoint( pointX,pointY,event);
212
        // refresh();
213
        }
214
	 addOption(s:String)
215
      FirstPoint{
216
        setQuestion(
217
			PluginServices.getText(this,"insert_point")+" "+
218
		    PluginServices.getText(this,"cad.or")+" "+
219
		    PluginServices.getText(this,"circle")+
220
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.introcircle")+"], "+
221
		    PluginServices.getText(this,"out_rectangle")+
222
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.outrectangle")+"], "+
223
		    PluginServices.getText(this,"polygon")+
224
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.intropolygon")+"], "+
225
		    PluginServices.getText(this,"cross_polygon")+
226
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosspolygon")+"], "+"\n"+
227
		    "#"+PluginServices.getText(this,"out_polygon")+
228
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outpolygon")+"], "+
229
		    PluginServices.getText(this,"cross_circle")+
230
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosscircle")+"], "+
231
			PluginServices.getText(this,"out_circle")+
232
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"]");
233
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
234
        setType(s);
235
        }
236
}
237

    
238
WithHandlers{
239
  addPoint( pointX:double,pointY:double,event:InputEvent)
240
      WithSelectedFeatures {
241
        setQuestion(PluginServices.getText(this,"select_handlers"));
242
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
243
        addPoint( pointX,pointY,event);
244
        refresh();
245
        }
246
}
247

    
248
SecondPointOutRectangle{
249
  // Si hemos conseguido seleccionar algo
250
  addPoint( pointX:double,pointY:double,event:InputEvent)
251
      [ctxt.selectWithSecondPointOutRectangle(pointX,pointY, event) > 0]
252
      WithSelectedFeatures {
253
        setQuestion(PluginServices.getText(this,"select_handlers"));
254
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
255
        addPoint( pointX,pointY,event);
256
        end();
257
        }
258
  // Si no lo hemos conseguido
259
  addPoint( pointX:double,pointY:double,event:InputEvent)
260
      FirstPoint {
261
        setQuestion(
262
			PluginServices.getText(this,"insert_point")+" "+
263
		    PluginServices.getText(this,"cad.or")+" "+
264
		    PluginServices.getText(this,"circle")+
265
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.introcircle")+"], "+
266
		    PluginServices.getText(this,"out_rectangle")+
267
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.outrectangle")+"], "+
268
		    PluginServices.getText(this,"polygon")+
269
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.intropolygon")+"], "+
270
		    PluginServices.getText(this,"cross_polygon")+
271
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosspolygon")+"], "+"\n"+
272
		    "#"+PluginServices.getText(this,"out_polygon")+
273
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outpolygon")+"], "+
274
		    PluginServices.getText(this,"cross_circle")+
275
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosscircle")+"], "+
276
			PluginServices.getText(this,"out_circle")+
277
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"]");
278
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
279
        addPoint(pointX,pointY,event);
280
        }
281
  addOption(s:String)
282
      FirstPoint{
283
        setQuestion(
284
			PluginServices.getText(this,"insert_point")+" "+
285
		    PluginServices.getText(this,"cad.or")+" "+
286
		    PluginServices.getText(this,"circle")+
287
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.introcircle")+"], "+
288
		    PluginServices.getText(this,"out_rectangle")+
289
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.outrectangle")+"], "+
290
		    PluginServices.getText(this,"polygon")+
291
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.intropolygon")+"], "+
292
		    PluginServices.getText(this,"cross_polygon")+
293
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosspolygon")+"], "+"\n"+
294
		    "#"+PluginServices.getText(this,"out_polygon")+
295
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outpolygon")+"], "+
296
		    PluginServices.getText(this,"cross_circle")+
297
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosscircle")+"], "+
298
			PluginServices.getText(this,"out_circle")+
299
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"]");
300
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
301
        setType(s);
302
        }
303

    
304
}
305
SecondPointCircle{
306
  // Si hemos conseguido seleccionar algo
307
  addPoint( pointX:double,pointY:double,event:InputEvent)
308
      [ctxt.selectWithCircle(pointX,pointY, event) > 0]
309
      WithSelectedFeatures {
310
        setQuestion(PluginServices.getText(this,"select_handlers"));
311
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
312
        addPoint( pointX,pointY,event);
313
        end();
314
        }
315
  // Si no lo hemos conseguido
316
  addPoint( pointX:double,pointY:double,event:InputEvent)
317
      FirstPoint {
318
        setQuestion(
319
			PluginServices.getText(this,"insert_point")+" "+
320
		    PluginServices.getText(this,"cad.or")+" "+
321
		    PluginServices.getText(this,"circle")+
322
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.introcircle")+"], "+
323
		    PluginServices.getText(this,"out_rectangle")+
324
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.outrectangle")+"], "+
325
		    PluginServices.getText(this,"polygon")+
326
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.intropolygon")+"], "+
327
		    PluginServices.getText(this,"cross_polygon")+
328
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosspolygon")+"], "+"\n"+
329
		    "#"+PluginServices.getText(this,"out_polygon")+
330
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outpolygon")+"], "+
331
		    PluginServices.getText(this,"cross_circle")+
332
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosscircle")+"], "+
333
			PluginServices.getText(this,"out_circle")+
334
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"]");
335
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
336
        addPoint(pointX,pointY,event);
337
        }
338
  addOption(s:String)
339
      FirstPoint{
340
        setQuestion(
341
			PluginServices.getText(this,"insert_point")+" "+
342
		    PluginServices.getText(this,"cad.or")+" "+
343
		    PluginServices.getText(this,"circle")+
344
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.introcircle")+"], "+
345
		    PluginServices.getText(this,"out_rectangle")+
346
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.outrectangle")+"], "+
347
		    PluginServices.getText(this,"polygon")+
348
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.intropolygon")+"], "+
349
		    PluginServices.getText(this,"cross_polygon")+
350
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosspolygon")+"], "+"\n"+
351
		    "#"+PluginServices.getText(this,"out_polygon")+
352
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outpolygon")+"], "+
353
		    PluginServices.getText(this,"cross_circle")+
354
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosscircle")+"], "+
355
			PluginServices.getText(this,"out_circle")+
356
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"]");
357
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
358
        setType(s);
359
        }
360
}
361

    
362
NextPointPolygon{
363
  addPoint( pointX:double,pointY:double,event:InputEvent)
364
      NextPointPolygon {
365
        setQuestion(PluginServices.getText(this,"insert_next_point_selection_or_end_polygon")+
366
        	"["+PluginServices.getText(this,"ComplexSelectionCADTool.end")+"]");
367
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
368
        addPoint(pointX,pointY,event);
369
        }
370
  addOption(s:String)
371
      FirstPoint{
372
        setQuestion(
373
			PluginServices.getText(this,"insert_point")+" "+
374
		    PluginServices.getText(this,"cad.or")+" "+
375
		    PluginServices.getText(this,"circle")+
376
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.introcircle")+"], "+
377
		    PluginServices.getText(this,"out_rectangle")+
378
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.outrectangle")+"], "+
379
		    PluginServices.getText(this,"polygon")+
380
		    "["+PluginServices.getText(this,"ComplexSelectionCADTool.intropolygon")+"], "+
381
		    PluginServices.getText(this,"cross_polygon")+
382
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosspolygon")+"], "+"\n"+
383
		    "#"+PluginServices.getText(this,"out_polygon")+
384
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outpolygon")+"], "+
385
		    PluginServices.getText(this,"cross_circle")+
386
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.crosscircle")+"], "+
387
			PluginServices.getText(this,"out_circle")+
388
		   	"["+PluginServices.getText(this,"ComplexSelectionCADTool.outcircle")+"]");
389
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
390
        addOption(s);
391
        }
392
}
393

    
394
Default
395
{
396
  addOption(s:String)
397
    [s.equals(PluginServices.getText(this,"cancel"))]
398
    FirstPoint{
399
      end();
400
      }
401
     addOption(s:String)
402
		FirstPoint{
403
			throwOptionException(PluginServices.getText(this,"incorrect_option"),s);
404
			}
405
	addValue(d:double)
406
		FirstPoint{
407
			throwValueException(PluginServices.getText(this,"incorrect_value"),d);
408
			}
409
	addPoint(pointX:double,pointY:double,event:InputEvent)
410
		FirstPoint{
411
			throwPointException(PluginServices.getText(this,"incorrect_point"),pointX,pointY);
412
			}
413
}
414
%%