Statistics
| Revision:

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

History | View | Annotate | Download (5.49 KB)

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

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

    
8
%start Polyline::FirstPoint
9
%class PolylineCADTool
10
%package com.iver.cit.gvsig.gui.cad.tools.smc
11
%import com.iver.cit.gvsig.gui.cad.tools.PolylineCADTool
12
%import java.awt.event.InputEvent
13
%import com.iver.andami.PluginServices
14

    
15
%map Polyline
16
%%
17
// A task begins life in suspended animation.
18

    
19
FirstPoint
20

    
21
	Entry {
22
		setQuestion(
23
		PluginServices.getText(this,"insert_first_point"));
24
		setDescription(new String[]{"cancel"});
25
		}
26
	Exit{
27
		}
28

    
29
	{
30
		addPoint( pointX:double,pointY:double,event:InputEvent)
31
			NextPointOrArcOrClose{
32
				setQuestion(
33
					PluginServices.getText(this,"insert_next_point")+", "+
34
				    PluginServices.getText(this,"arc")+
35
				    "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
36
				    PluginServices.getText(this,"close_polyline")+
37
				    "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
38
				    PluginServices.getText(this,"cad.or")+" "+
39
				    PluginServices.getText(this,"end")+
40
				   	"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
41
				setDescription(new String[]{"inter_arc","close_polyline","terminate","cancel"});
42
				addPoint( pointX,pointY,event);
43
				}
44
	}
45
NextPointOrArcOrClose{
46

    
47
	addOption(s:String)
48
		[s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.arc")) || s.equals(PluginServices.getText(this,"inter_arc"))]
49
		NextPointOrLineOrClose {
50
			setQuestion(
51
				PluginServices.getText(this,"insert_next_point")+", "+
52
				PluginServices.getText(this,"line")+
53
				"["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+
54
				PluginServices.getText(this,"close_polyline")+
55
				"["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
56
				PluginServices.getText(this,"cad.or")+" "+
57
				PluginServices.getText(this,"end")+
58
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
59
			setDescription(new String[]{"inter_line","close_polyline","terminate","cancel"});
60
			addOption(s);
61
			}
62
	addOption(s:String)
63
		[s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.close_polyline")) || s.equals(PluginServices.getText(this,"close_polyline"))]
64
		FirstPoint {
65
			addOption(s);
66
			closeGeometry();
67
			endGeometry();
68
			end();
69
			}
70
	addOption(s:String)
71
		[s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.end")) || s.equals(PluginServices.getText(this,"terminate"))]
72
		FirstPoint {
73
			addOption(s);
74
			endGeometry();
75
			end();
76
			}
77
	addPoint( pointX:double,pointY:double,event:InputEvent)
78
		NextPointOrArcOrClose {
79
			setQuestion(
80
				PluginServices.getText(this,"insert_next_point")+", "+
81
				PluginServices.getText(this,"arc")+
82
				"["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
83
				PluginServices.getText(this,"close_polyline")+
84
				"["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
85
				PluginServices.getText(this,"cad.or")+" "+
86
				PluginServices.getText(this,"end")+
87
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
88
			setDescription(new String[]{"inter_arc","close_polyline","terminate","cancel"});
89
			addPoint( pointX,pointY,event);
90
			}
91
}
92
NextPointOrLineOrClose{
93
	addPoint( pointX:double,pointY:double,event:InputEvent)
94
		NextPointOrLineOrClose {
95
			setQuestion(
96
				PluginServices.getText(this,"insert_next_point")+", "+
97
				PluginServices.getText(this,"line")+
98
				"["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+
99
				PluginServices.getText(this,"close_polyline")+
100
				"["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
101
				PluginServices.getText(this,"cad.or")+" "+
102
				PluginServices.getText(this,"end")+
103
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
104
			setDescription(new String[]{"inter_line","close_polyline","terminate","cancel"});
105
			addPoint( pointX,pointY,event);
106
			}
107
	addOption(s:String)
108
		[s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.line")) || s.equals(PluginServices.getText(this,"inter_line"))]
109
		NextPointOrArcOrClose {
110
			setQuestion(
111
				PluginServices.getText(this,"insert_next_point")+", "+
112
				PluginServices.getText(this,"arc")+
113
				"["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+
114
				PluginServices.getText(this,"close_polyline")+
115
				"["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+
116
				PluginServices.getText(this,"cad.or")+" "+
117
				PluginServices.getText(this,"end")+
118
				"["+PluginServices.getText(this,"PolylineCADTool.end")+"]");
119
			setDescription(new String[]{"inter_arc","close_polyline","terminate","cancel"});
120
			addOption(s);
121
			}
122
	addOption(s:String)
123
		[s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.close_polyline")) || s.equals(PluginServices.getText(this,"close_polyline"))]
124
		FirstPoint {
125
			addOption(s);
126
			closeGeometry();
127
			endGeometry();
128
			end();
129
			}
130
	addOption(s:String)
131
		[s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.end")) || s.equals(PluginServices.getText(this,"terminate"))]
132
		FirstPoint {
133
			addOption(s);
134
			endGeometry();
135
			end();
136
			}
137

    
138
}
139

    
140
Default
141
{
142
	addOption(s:String)
143
		[s.equals(PluginServices.getText(this,"cancel"))]
144
		FirstPoint{
145
			cancel();
146
			}
147
	addOption(s:String)
148
		[s.equals("")]
149
		FirstPoint{
150
			endGeometry();
151
			}
152
	addOption(s:String)
153
		FirstPoint{
154
			throwOptionException(PluginServices.getText(this,"incorrect_option"),s);
155
			}
156
	addValue(d:double)
157
		FirstPoint{
158
			throwValueException(PluginServices.getText(this,"incorrect_value"),d);
159
			}
160
	addPoint(pointX:double,pointY:double,event:InputEvent)
161
		FirstPoint{
162
			throwPointException(PluginServices.getText(this,"incorrect_point"),pointX,pointY);
163
			}
164

    
165
}
166
%%