Statistics
| Revision:

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

History | View | Annotate | Download (11 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_selection_or_types"));
26
    setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
27
    }
28
  Exit{
29
    }
30

    
31
  {
32
    addOption(s:String)
33
      FirstPoint{
34
        setQuestion(PluginServices.getText(this,"insert_point_selection_or_types"));
35
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
36
        addOption(s);
37
        }
38
    addPoint( pointX:double,pointY:double,event:InputEvent)
39
      [ctxt.getType().equals(PluginServices.getText(this,"out_rectangle"))]
40
      SecondPointOutRectangle{
41
        setQuestion(PluginServices.getText(this,"insert_second_point_selection"));
42
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
43
        addPoint( pointX,pointY,event);
44
        }
45
    addPoint( pointX:double,pointY:double,event:InputEvent)
46
      [ctxt.getType().equals(PluginServices.getText(this,"inside_circle")) || ctxt.getType().equals(PluginServices.getText(this,"cross_circle")) || ctxt.getType().equals(PluginServices.getText(this,"out_circle"))]
47
      SecondPointCircle{
48
        setQuestion(PluginServices.getText(this,"insert_second_point_selection"));
49
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
50
        addPoint( pointX,pointY,event);
51
        }
52
    addPoint( pointX:double,pointY:double,event:InputEvent)
53
      [ctxt.getType().equals(PluginServices.getText(this,"inside_polygon")) || ctxt.getType().equals(PluginServices.getText(this,"cross_polygon")) || ctxt.getType().equals(PluginServices.getText(this,"out_polygon"))]
54
      NextPointPolygon{
55
        setQuestion(PluginServices.getText(this,"insert_next_point_selection_or_end_polygon"));
56
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
57
        addPoint( pointX,pointY,event);
58
        }
59

    
60
    addPoint( pointX:double,pointY:double,event:InputEvent)
61
      [ctxt.getType().equals(PluginServices.getText(this,"simple")) && ctxt.selectFeatures(pointX,pointY, event) && ctxt.getNextState().equals("Selection.SecondPoint")]
62
      SecondPoint{
63
        setQuestion(PluginServices.getText(this,"insert_second_point_selection"));
64
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
65
        addPoint( pointX,pointY,event);
66
        }
67
//    addPoint( pointX:double,pointY:double,event:InputEvent)
68
//      [ctxt.getType().equals(PluginServices.getText(this,"simple")) && ctxt.getNextState().equals("Selection.WithSelectedFeatures")]
69
//      WithSelectedFeatures {
70
//        setQuestion(PluginServices.getText(this,"select_handlers"));
71
//        setDescription(new String[]{"simple","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
72
//        addPoint( pointX,pointY,event);
73
//        end();
74
//        }
75
}
76

    
77
SecondPoint{
78
  // Si hemos conseguido seleccionar algo
79
  addPoint( pointX:double,pointY:double,event:InputEvent)
80
      [ctxt.selectWithSecondPoint(pointX,pointY, event) > 0]
81
      WithSelectedFeatures {
82
        setQuestion(PluginServices.getText(this,"select_handlers"));
83
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
84
        addPoint( pointX,pointY,event);
85
        end();
86
        }
87
  // Si no lo hemos conseguido
88
  addPoint( pointX:double,pointY:double,event:InputEvent)
89
      FirstPoint {
90
        setQuestion(PluginServices.getText(this,"insert_point_selection_or_types"));
91
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
92
        addPoint(pointX,pointY,event);
93
        }
94
  addOption(s:String)
95
      FirstPoint{
96
        setQuestion(PluginServices.getText(this,"insert_point_selection_or_types"));
97
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
98
        setType(s);
99
        }
100

    
101
}
102
WithSelectedFeatures{
103

    
104
  // Si hemos pinchado encima de un handler
105
  addPoint( pointX:double,pointY:double,event:InputEvent)
106
  [ctxt.selectHandlers(pointX, pointY, event)>0]
107
      WithHandlers {
108
        setQuestion(PluginServices.getText(this,"insert_destination_point"));
109
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
110
        addPoint( pointX,pointY,event);
111
        // refresh();
112
        }
113

    
114
  // Si no hemos cogido un handler, probamos a seleccionar
115
  // otra entidad
116
  addPoint( pointX:double,pointY:double,event:InputEvent)
117
    [ctxt.selectFeatures(pointX,pointY, event) && ctxt.getNextState().equals("Selection.WithSelectedFeatures")]
118
      WithSelectedFeatures {
119
        setQuestion(PluginServices.getText(this,"select_handlers"));
120
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
121
        addPoint( pointX,pointY,event);
122
        }
123

    
124

    
125
  // Cualquier otro caso (hemos pinchado en algo vacio), volvemos al estado inicial
126
  addPoint( pointX:double,pointY:double,event:InputEvent)
127
      FirstPoint {
128
        setQuestion(PluginServices.getText(this,"insert_point_selection_or_types"));
129
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
130
        addPoint( pointX,pointY,event);
131
        // refresh();
132
        }
133
	 addOption(s:String)
134
      FirstPoint{
135
        setQuestion(PluginServices.getText(this,"insert_point_selection_or_types"));
136
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
137
        setType(s);
138
        }
139
}
140

    
141
WithHandlers{
142
  addPoint( pointX:double,pointY:double,event:InputEvent)
143
      WithSelectedFeatures {
144
        setQuestion(PluginServices.getText(this,"select_handlers"));
145
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
146
        addPoint( pointX,pointY,event);
147
        refresh();
148
        }
149
}
150

    
151
SecondPointOutRectangle{
152
  // Si hemos conseguido seleccionar algo
153
  addPoint( pointX:double,pointY:double,event:InputEvent)
154
      [ctxt.selectWithSecondPointOutRectangle(pointX,pointY, event) > 0]
155
      WithSelectedFeatures {
156
        setQuestion(PluginServices.getText(this,"select_handlers"));
157
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
158
        addPoint( pointX,pointY,event);
159
        end();
160
        }
161
  // Si no lo hemos conseguido
162
  addPoint( pointX:double,pointY:double,event:InputEvent)
163
      FirstPoint {
164
        setQuestion(PluginServices.getText(this,"insert_point_selection_or_types"));
165
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
166
        addPoint(pointX,pointY,event);
167
        }
168
  addOption(s:String)
169
      FirstPoint{
170
        setQuestion(PluginServices.getText(this,"insert_point_selection_or_types"));
171
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
172
        setType(s);
173
        }
174

    
175
}
176
SecondPointCircle{
177
  // Si hemos conseguido seleccionar algo
178
  addPoint( pointX:double,pointY:double,event:InputEvent)
179
      [ctxt.selectWithCircle(pointX,pointY, event) > 0]
180
      WithSelectedFeatures {
181
        setQuestion(PluginServices.getText(this,"select_handlers"));
182
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
183
        addPoint( pointX,pointY,event);
184
        end();
185
        }
186
  // Si no lo hemos conseguido
187
  addPoint( pointX:double,pointY:double,event:InputEvent)
188
      FirstPoint {
189
        setQuestion(PluginServices.getText(this,"insert_point_selection_or_types"));
190
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
191
        addPoint(pointX,pointY,event);
192
        }
193
  addOption(s:String)
194
      FirstPoint{
195
        setQuestion(PluginServices.getText(this,"insert_point_selection_or_types"));
196
        setDescription(new String[]{"out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
197
        setType(s);
198
        }
199
}
200

    
201
NextPointPolygon{
202
  addPoint( pointX:double,pointY:double,event:InputEvent)
203
      NextPointPolygon {
204
        setQuestion(PluginServices.getText(this,"insert_next_point_selection_or_end_polygon"));
205
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
206
        addPoint(pointX,pointY,event);
207
        }
208
  addOption(s:String)
209
      FirstPoint{
210
        setQuestion(PluginServices.getText(this,"insert_point_selection_or_types"));
211
        setDescription(new String[]{"end_polygon","out_rectangle","inside_polygon","cross_polygon","out_polygon","inside_circle","cross_circle","out_circle","select_all","cancel"});
212
        addOption(s);
213
        }
214
}
215

    
216
Default
217
{
218
  addOption(s:String)
219
    [s.equals(PluginServices.getText(this,"cancel"))]
220
    FirstPoint{
221
      end();
222
      }
223
     addOption(s:String)
224
		FirstPoint{
225
			throwOptionException(PluginServices.getText(this,"incorrect_option"),s);
226
			}
227
	addValue(d:double)
228
		FirstPoint{
229
			throwValueException(PluginServices.getText(this,"incorrect_value"),d);
230
			}
231
	addPoint(pointX:double,pointY:double,event:InputEvent)
232
		FirstPoint{
233
			throwPointException(PluginServices.getText(this,"incorrect_point"),pointX,pointY);
234
			}
235
}
236
%%