// -*- tab-width: 4; -*- %{ // // Vicente Caballero Navarro %} %start Polyline::FirstPoint %class PolylineCADTool %package com.iver.cit.gvsig.gui.cad.tools.smc %import com.iver.cit.gvsig.gui.cad.tools.PolylineCADTool %import java.awt.event.InputEvent %import com.iver.andami.PluginServices %map Polyline %% // A task begins life in suspended animation. FirstPoint Entry { setQuestion( PluginServices.getText(this,"insert_first_point")); setDescription(new String[]{"cancel"}); } Exit{ } { addPoint( pointX:double,pointY:double,event:InputEvent) [ctxt.isPolygonLayer()] NextPointOrArcOrClose{ setQuestion( PluginServices.getText(this,"insert_next_point")+", "+ PluginServices.getText(this,"arc")+ "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+ PluginServices.getText(this,"cad.or")+" "+ PluginServices.getText(this,"end")+ "["+PluginServices.getText(this,"PolylineCADTool.end")+"]"); setDescription(new String[]{"inter_arc","terminate","cancel"}); addPoint( pointX,pointY,event); } addPoint( pointX:double,pointY:double,event:InputEvent) NextPointOrArcOrClose{ setQuestion( PluginServices.getText(this,"insert_next_point")+", "+ PluginServices.getText(this,"arc")+ "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+ PluginServices.getText(this,"close_polyline")+ "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+ PluginServices.getText(this,"cad.or")+" "+ PluginServices.getText(this,"end")+ "["+PluginServices.getText(this,"PolylineCADTool.end")+"]"); setDescription(new String[]{"inter_arc","close_polyline","terminate","cancel"}); addPoint( pointX,pointY,event); } } NextPointOrArcOrClose{ addOption(s:String) [ctxt.isPolygonLayer() && (s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.arc")) || s.equals(PluginServices.getText(this,"inter_arc")))] NextPointOrLineOrClose { setQuestion( PluginServices.getText(this,"insert_next_point")+", "+ PluginServices.getText(this,"line")+ "["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+ PluginServices.getText(this,"cad.or")+" "+ PluginServices.getText(this,"end")+ "["+PluginServices.getText(this,"PolylineCADTool.end")+"]"); setDescription(new String[]{"inter_line","terminate","cancel"}); addOption(s); } addOption(s:String) [s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.arc")) || s.equals(PluginServices.getText(this,"inter_arc"))] NextPointOrLineOrClose { setQuestion( PluginServices.getText(this,"insert_next_point")+", "+ PluginServices.getText(this,"line")+ "["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+ PluginServices.getText(this,"close_polyline")+ "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+ PluginServices.getText(this,"cad.or")+" "+ PluginServices.getText(this,"end")+ "["+PluginServices.getText(this,"PolylineCADTool.end")+"]"); setDescription(new String[]{"inter_line","close_polyline","terminate","cancel"}); addOption(s); } addOption(s:String) [s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.close_polyline")) || s.equals(PluginServices.getText(this,"close_polyline"))] FirstPoint { addOption(s); closeGeometry(); endGeometry(); end(); } addOption(s:String) [(s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.end")) || s.equals(PluginServices.getText(this,"terminate"))) && ctxt.getLinesCount()!=0 ] FirstPoint { addOption(s); endGeometry(); end(); } addOption(s:String) [!s.equals(PluginServices.getText(this,"cancel"))] NextPointOrArcOrClose { } addPoint( pointX:double,pointY:double,event:InputEvent) [ctxt.isPolygonLayer()] NextPointOrArcOrClose { setQuestion( PluginServices.getText(this,"insert_next_point")+", "+ PluginServices.getText(this,"arc")+ "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+ PluginServices.getText(this,"cad.or")+" "+ PluginServices.getText(this,"end")+ "["+PluginServices.getText(this,"PolylineCADTool.end")+"]"); setDescription(new String[]{"inter_arc","terminate","cancel"}); addPoint( pointX,pointY,event); } addPoint( pointX:double,pointY:double,event:InputEvent) NextPointOrArcOrClose { setQuestion( PluginServices.getText(this,"insert_next_point")+", "+ PluginServices.getText(this,"arc")+ "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+ PluginServices.getText(this,"close_polyline")+ "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+ PluginServices.getText(this,"cad.or")+" "+ PluginServices.getText(this,"end")+ "["+PluginServices.getText(this,"PolylineCADTool.end")+"]"); setDescription(new String[]{"inter_arc","close_polyline","terminate","cancel"}); addPoint( pointX,pointY,event); } } NextPointOrLineOrClose{ addPoint( pointX:double,pointY:double,event:InputEvent) [ctxt.isPolygonLayer()] NextPointOrLineOrClose { setQuestion( PluginServices.getText(this,"insert_next_point")+", "+ PluginServices.getText(this,"line")+ "["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+ PluginServices.getText(this,"cad.or")+" "+ PluginServices.getText(this,"end")+ "["+PluginServices.getText(this,"PolylineCADTool.end")+"]"); setDescription(new String[]{"inter_line","terminate","cancel"}); addPoint( pointX,pointY,event); } addPoint( pointX:double,pointY:double,event:InputEvent) NextPointOrLineOrClose { setQuestion( PluginServices.getText(this,"insert_next_point")+", "+ PluginServices.getText(this,"line")+ "["+PluginServices.getText(this,"PolylineCADTool.line")+"], "+ PluginServices.getText(this,"close_polyline")+ "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+ PluginServices.getText(this,"cad.or")+" "+ PluginServices.getText(this,"end")+ "["+PluginServices.getText(this,"PolylineCADTool.end")+"]"); setDescription(new String[]{"inter_line","close_polyline","terminate","cancel"}); addPoint( pointX,pointY,event); } addOption(s:String) [ctxt.isPolygonLayer() && (s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.line")) || s.equals(PluginServices.getText(this,"inter_line")))] NextPointOrArcOrClose { setQuestion( PluginServices.getText(this,"insert_next_point")+", "+ PluginServices.getText(this,"arc")+ "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+ PluginServices.getText(this,"cad.or")+" "+ PluginServices.getText(this,"end")+ "["+PluginServices.getText(this,"PolylineCADTool.end")+"]"); setDescription(new String[]{"inter_arc","terminate","cancel"}); addOption(s); } addOption(s:String) [s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.line")) || s.equals(PluginServices.getText(this,"inter_line"))] NextPointOrArcOrClose { setQuestion( PluginServices.getText(this,"insert_next_point")+", "+ PluginServices.getText(this,"arc")+ "["+PluginServices.getText(this,"PolylineCADTool.arc")+"], "+ PluginServices.getText(this,"close_polyline")+ "["+PluginServices.getText(this,"PolylineCADTool.close_polyline")+"], "+ PluginServices.getText(this,"cad.or")+" "+ PluginServices.getText(this,"end")+ "["+PluginServices.getText(this,"PolylineCADTool.end")+"]"); setDescription(new String[]{"inter_arc","close_polyline","terminate","cancel"}); addOption(s); } addOption(s:String) [s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.close_polyline")) || s.equals(PluginServices.getText(this,"close_polyline"))] FirstPoint { addOption(s); closeGeometry(); endGeometry(); end(); } addOption(s:String) [(s.equalsIgnoreCase(PluginServices.getText(this,"PolylineCADTool.end")) || s.equals(PluginServices.getText(this,"terminate"))) && ctxt.getLinesCount()!=0] FirstPoint { addOption(s); endGeometry(); end(); } addOption(s:String) [!s.equals(PluginServices.getText(this,"cancel"))] NextPointOrLineOrClose { } } Default { addOption(s:String) [s.equals(PluginServices.getText(this,"cancel"))] FirstPoint{ cancel(); } addOption(s:String) [s.equals("")] FirstPoint{ endGeometry(); } addOption(s:String) FirstPoint{ throwOptionException(PluginServices.getText(this,"incorrect_option"),s); } addValue(d:double) FirstPoint{ throwValueException(PluginServices.getText(this,"incorrect_value"),d); } addPoint(pointX:double,pointY:double,event:InputEvent) FirstPoint{ throwPointException(PluginServices.getText(this,"incorrect_point"),pointX,pointY); } endPoint(pointX:double,pointY:double,event:InputEvent) FirstPoint{ addPoint( pointX,pointY,event); endGeometry(); } } %%