svn-gvsig-desktop / tags / v1_0_2_Build_899 / extensions / extCAD / sm / ComplexSelectionCADTool.sm @ 33904
History | View | Annotate | Download (11 KB)
1 | 5207 | caballero | // -*- 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 | 5730 | caballero | 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 | 5207 | caballero | } |
236 | %% |