Statistics
| Revision:

svn-gvsig-desktop / tags / v2_0_0_Build_2020 / extensions / extEditing / sm / PolylineCADTool.sm @ 40561

History | View | Annotate | Download (8.74 KB)

1 3766 caballero
// -*- tab-width: 4; -*-
2
3
%{
4
//
5
// Vicente Caballero Navarro
6
%}
7
8 3978 caballero
%start Polyline::FirstPoint
9 3766 caballero
%class PolylineCADTool
10
%package com.iver.cit.gvsig.gui.cad.tools.smc
11
%import com.iver.cit.gvsig.gui.cad.tools.PolylineCADTool
12 4324 caballero
%import java.awt.event.InputEvent
13 4583 caballero
%import com.iver.andami.PluginServices
14 3766 caballero
15 3978 caballero
%map Polyline
16 3766 caballero
%%
17
// A task begins life in suspended animation.
18
19 3978 caballero
FirstPoint
20 3766 caballero
21
	Entry {
22 4892 caballero
		setQuestion(
23 4583 caballero
		PluginServices.getText(this,"insert_first_point"));
24
		setDescription(new String[]{"cancel"});
25 3766 caballero
		}
26
	Exit{
27
		}
28
29
	{
30 4324 caballero
		addPoint( pointX:double,pointY:double,event:InputEvent)
31 17619 vcaballero
			[ctxt.isPolygonLayer()]
32 3978 caballero
			NextPointOrArcOrClose{
33 9121 caballero
				setQuestion(
34
					PluginServices.getText(this,"insert_next_point")+", "+
35
				    PluginServices.getText(this,"arc")+
36
				    "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
37 17619 vcaballero
				    PluginServices.getText(this,"cad.or")+" "+
38
				    PluginServices.getText(this,"end")+
39
				   	"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
40
				setDescription(new String[]{"inter_arc","terminate","cancel"});
41
				addPoint( pointX,pointY,event);
42
				}
43
		addPoint( pointX:double,pointY:double,event:InputEvent)
44
			NextPointOrArcOrClose{
45
				setQuestion(
46
					PluginServices.getText(this,"insert_next_point")+", "+
47
				    PluginServices.getText(this,"arc")+
48
				    "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
49 9121 caballero
				    PluginServices.getText(this,"close_polyline")+
50
				    "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
51
				    PluginServices.getText(this,"cad.or")+" "+
52
				    PluginServices.getText(this,"end")+
53
				   	"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
54 5395 caballero
				setDescription(new String[]{"inter_arc","close_polyline","terminate","cancel"});
55 4365 caballero
				addPoint( pointX,pointY,event);
56 3766 caballero
				}
57
	}
58 3978 caballero
NextPointOrArcOrClose{
59 3828 caballero
	addOption(s:String)
60 17619 vcaballero
		[ctxt.isPolygonLayer() && (s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.arc")) || s.equals(PluginServices.getText(this,"inter_arc")))]
61
		NextPointOrLineOrClose {
62
			setQuestion(
63
				PluginServices.getText(this,"insert_next_point")+", "+
64
				PluginServices.getText(this,"line")+
65
				"["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+
66
				PluginServices.getText(this,"cad.or")+" "+
67
				PluginServices.getText(this,"end")+
68
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
69
			setDescription(new String[]{"inter_line","terminate","cancel"});
70
			addOption(s);
71
			}
72
	addOption(s:String)
73 9121 caballero
		[s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.arc")) || s.equals(PluginServices.getText(this,"inter_arc"))]
74 3978 caballero
		NextPointOrLineOrClose {
75 9121 caballero
			setQuestion(
76
				PluginServices.getText(this,"insert_next_point")+", "+
77
				PluginServices.getText(this,"line")+
78
				"["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+
79
				PluginServices.getText(this,"close_polyline")+
80
				"["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
81
				PluginServices.getText(this,"cad.or")+" "+
82
				PluginServices.getText(this,"end")+
83
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
84 5395 caballero
			setDescription(new String[]{"inter_line","close_polyline","terminate","cancel"});
85 3828 caballero
			addOption(s);
86 3766 caballero
			}
87 3828 caballero
	addOption(s:String)
88 9121 caballero
		[s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.close_polyline")) || s.equals(PluginServices.getText(this,"close_polyline"))]
89 3978 caballero
		FirstPoint {
90 3828 caballero
			addOption(s);
91 3883 caballero
			closeGeometry();
92
			endGeometry();
93 3766 caballero
			end();
94
			}
95 5395 caballero
	addOption(s:String)
96 13561 caballero
		[(s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.end")) || s.equals(PluginServices.getText(this,"terminate"))) && ctxt.getLinesCount()!=0 ]
97 5395 caballero
		FirstPoint {
98
			addOption(s);
99
			endGeometry();
100
			end();
101
			}
102 13561 caballero
	addOption(s:String)
103
		[!s.equals(PluginServices.getText(this,"cancel"))]
104
		NextPointOrArcOrClose {
105
		}
106 4324 caballero
	addPoint( pointX:double,pointY:double,event:InputEvent)
107 17619 vcaballero
		[ctxt.isPolygonLayer()]
108 3978 caballero
		NextPointOrArcOrClose {
109 9121 caballero
			setQuestion(
110
				PluginServices.getText(this,"insert_next_point")+", "+
111
				PluginServices.getText(this,"arc")+
112
				"["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
113 17619 vcaballero
				PluginServices.getText(this,"cad.or")+" "+
114
				PluginServices.getText(this,"end")+
115
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
116
			setDescription(new String[]{"inter_arc","terminate","cancel"});
117
			addPoint( pointX,pointY,event);
118
			}
119
	addPoint( pointX:double,pointY:double,event:InputEvent)
120
		NextPointOrArcOrClose {
121
			setQuestion(
122
				PluginServices.getText(this,"insert_next_point")+", "+
123
				PluginServices.getText(this,"arc")+
124
				"["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
125 9121 caballero
				PluginServices.getText(this,"close_polyline")+
126
				"["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
127
				PluginServices.getText(this,"cad.or")+" "+
128
				PluginServices.getText(this,"end")+
129
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
130 5395 caballero
			setDescription(new String[]{"inter_arc","close_polyline","terminate","cancel"});
131 4365 caballero
			addPoint( pointX,pointY,event);
132 3766 caballero
			}
133
}
134 3978 caballero
NextPointOrLineOrClose{
135 4324 caballero
	addPoint( pointX:double,pointY:double,event:InputEvent)
136 17619 vcaballero
		[ctxt.isPolygonLayer()]
137 3978 caballero
		NextPointOrLineOrClose {
138 9121 caballero
			setQuestion(
139
				PluginServices.getText(this,"insert_next_point")+", "+
140
				PluginServices.getText(this,"line")+
141
				"["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+
142 17619 vcaballero
				PluginServices.getText(this,"cad.or")+" "+
143
				PluginServices.getText(this,"end")+
144
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
145
			setDescription(new String[]{"inter_line","terminate","cancel"});
146
			addPoint( pointX,pointY,event);
147
			}
148
	addPoint( pointX:double,pointY:double,event:InputEvent)
149
		NextPointOrLineOrClose {
150
			setQuestion(
151
				PluginServices.getText(this,"insert_next_point")+", "+
152
				PluginServices.getText(this,"line")+
153
				"["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+
154 9121 caballero
				PluginServices.getText(this,"close_polyline")+
155
				"["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
156
				PluginServices.getText(this,"cad.or")+" "+
157
				PluginServices.getText(this,"end")+
158
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
159 5395 caballero
			setDescription(new String[]{"inter_line","close_polyline","terminate","cancel"});
160 4365 caballero
			addPoint( pointX,pointY,event);
161 3766 caballero
			}
162 3828 caballero
	addOption(s:String)
163 17619 vcaballero
		[ctxt.isPolygonLayer() && (s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.line")) || s.equals(PluginServices.getText(this,"inter_line")))]
164
		NextPointOrArcOrClose {
165
			setQuestion(
166
				PluginServices.getText(this,"insert_next_point")+", "+
167
				PluginServices.getText(this,"arc")+
168
				"["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
169
				PluginServices.getText(this,"cad.or")+" "+
170
				PluginServices.getText(this,"end")+
171
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
172
			setDescription(new String[]{"inter_arc","terminate","cancel"});
173
			addOption(s);
174
			}
175
	addOption(s:String)
176 9121 caballero
		[s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.line")) || s.equals(PluginServices.getText(this,"inter_line"))]
177 3978 caballero
		NextPointOrArcOrClose {
178 9121 caballero
			setQuestion(
179
				PluginServices.getText(this,"insert_next_point")+", "+
180
				PluginServices.getText(this,"arc")+
181
				"["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
182
				PluginServices.getText(this,"close_polyline")+
183
				"["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
184
				PluginServices.getText(this,"cad.or")+" "+
185
				PluginServices.getText(this,"end")+
186
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
187 5395 caballero
			setDescription(new String[]{"inter_arc","close_polyline","terminate","cancel"});
188 3828 caballero
			addOption(s);
189 3766 caballero
			}
190 3828 caballero
	addOption(s:String)
191 9121 caballero
		[s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.close_polyline")) || s.equals(PluginServices.getText(this,"close_polyline"))]
192 3978 caballero
		FirstPoint {
193 3828 caballero
			addOption(s);
194 3883 caballero
			closeGeometry();
195
			endGeometry();
196 3766 caballero
			end();
197
			}
198 5395 caballero
	addOption(s:String)
199 13561 caballero
		[(s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.end")) || s.equals(PluginServices.getText(this,"terminate"))) && ctxt.getLinesCount()!=0]
200 5395 caballero
		FirstPoint {
201
			addOption(s);
202
			endGeometry();
203
			end();
204
			}
205 13561 caballero
	addOption(s:String)
206
		[!s.equals(PluginServices.getText(this,"cancel"))]
207
		NextPointOrLineOrClose {
208
		}
209 3883 caballero
}
210 3978 caballero
211 3766 caballero
Default
212
{
213 3883 caballero
	addOption(s:String)
214 4583 caballero
		[s.equals(PluginServices.getText(this,"cancel"))]
215 3978 caballero
		FirstPoint{
216 3883 caballero
			cancel();
217
			}
218 4002 fjp
	addOption(s:String)
219
		[s.equals("")]
220
		FirstPoint{
221
			endGeometry();
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 17984 vcaballero
	endPoint(pointX:double,pointY:double,event:InputEvent)
236
		FirstPoint{
237
			addPoint( pointX,pointY,event);
238
			endGeometry();
239
			}
240 4324 caballero
241 3766 caballero
}
242
%%