Revision 575 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.polyline/src/main/java/org/gvsig/vectorediting/lib/prov/polyline/PolylineEditingProvider.java

View differences:

PolylineEditingProvider.java
25 25
package org.gvsig.vectorediting.lib.prov.polyline;
26 26

  
27 27
import java.util.ArrayList;
28
import java.util.Iterator;
29 28
import java.util.LinkedHashMap;
30 29
import java.util.List;
31 30
import java.util.Map;
......
33 32
import org.gvsig.fmap.dal.exception.DataException;
34 33
import org.gvsig.fmap.dal.feature.FeatureStore;
35 34
import org.gvsig.fmap.geom.Geometry;
36
import org.gvsig.fmap.geom.Geometry.TYPES;
35
import org.gvsig.fmap.geom.GeometryException;
37 36
import org.gvsig.fmap.geom.GeometryLocator;
38 37
import org.gvsig.fmap.geom.GeometryManager;
39 38
import org.gvsig.fmap.geom.aggregate.MultiCurve;
40
import org.gvsig.fmap.geom.exception.CreateGeometryException;
39
import org.gvsig.fmap.geom.aggregate.MultiLine;
40
import org.gvsig.fmap.geom.operation.GeometryOperationException;
41
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
42
import org.gvsig.fmap.geom.primitive.Arc;
41 43
import org.gvsig.fmap.geom.primitive.Curve;
42 44
import org.gvsig.fmap.geom.primitive.Line;
43 45
import org.gvsig.fmap.geom.primitive.OrientablePrimitive;
......
51 53
import org.gvsig.tools.i18n.I18nManager;
52 54
import org.gvsig.tools.service.spi.ProviderServices;
53 55
import org.gvsig.vectorediting.lib.api.DrawingStatus;
54
import org.gvsig.vectorediting.lib.api.DrawingStatus.Status;
55 56
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
56 57
import org.gvsig.vectorediting.lib.api.EditingServiceParameter.TYPE;
57 58
import org.gvsig.vectorediting.lib.api.exceptions.DrawServiceException;
......
68 69
import org.gvsig.vectorediting.lib.spi.EditingProviderManager;
69 70
import org.gvsig.vectorediting.lib.spi.EditingProviderServices;
70 71

  
71
public class PolylineEditingProvider extends AbstractEditingProvider implements
72
    EditingProvider {
72
public class PolylineEditingProvider extends AbstractEditingProvider implements EditingProvider {
73 73

  
74
    protected EditingProviderServices editingProviderServices =
75
        (EditingProviderServices) getProviderServices();
74
    protected EditingProviderServices editingProviderServices = (EditingProviderServices) getProviderServices();
76 75

  
77 76
    protected EditingServiceParameter points;
78 77

  
......
88 87

  
89 88
    protected FeatureStore featureStore;
90 89

  
91
    public PolylineEditingProvider(ProviderServices providerServices,
92
        DynObject parameters) {
90
    public PolylineEditingProvider(ProviderServices providerServices, DynObject parameters) {
93 91
        super(providerServices);
94 92

  
95 93
        // Initialize all provider variables.
96
        this.featureStore =
97
            (FeatureStore) parameters
98
                .getDynValue(EditingProviderFactory.FEATURE_STORE_FIELD);
94
        this.featureStore = (FeatureStore) parameters.getDynValue(EditingProviderFactory.FEATURE_STORE_FIELD);
99 95

  
100 96
        I18nManager i18nManager = ToolsLocator.getI18nManager();
101 97

  
......
106 102
        options.put(i18nManager.getTranslation("key_finish"), "finish");
107 103
        options.put(i18nManager.getTranslation("key_remove_last_point"), "remove_last_point");
108 104

  
105
        String consoleMsg = editingProviderServices.makeConsoleMessage("indicate_new_point", options);
109 106

  
110
        String consoleMsg =
111
            editingProviderServices.makeConsoleMessage("indicate_new_point",
112
                options);
113

  
114 107
        points =
115
            new DefaultEditingServiceParameter("insert_point", consoleMsg,
116
                options, TYPE.LIST_POSITIONS, TYPE.OPTION);
108
            new DefaultEditingServiceParameter("insert_point", consoleMsg, options, TYPE.LIST_POSITIONS, TYPE.OPTION);
117 109

  
118 110
        arcMode = false;
119 111
        finishPolyline = false;
......
129 121
     * @return A drawing status value with a list of geometries. See
130 122
     *         {@link DrawingStatus#getGeometries()}.
131 123
     */
132
    private DrawingStatus calculatePolyline(Point lastPosition)
133
        throws VectorEditingException {
124
    private DrawingStatus calculatePolyline(Point lastPosition) throws VectorEditingException {
134 125
        DefaultDrawingStatus drawingStatus = new DefaultDrawingStatus();
135
        EditingProviderManager editingProviderManager =
136
            EditingProviderLocator.getProviderManager();
126
        EditingProviderManager editingProviderManager = EditingProviderLocator.getProviderManager();
137 127
        ISymbol lineSymbolEditing = editingProviderManager.getSymbol("line-symbol-editing");
138 128
        ISymbol auxiliaryLineSymbolEditing = editingProviderManager.getSymbol("auxiliary-line-symbol-editing");
139 129
        ISymbol auxiliaryPointSymbolEditing = editingProviderManager.getSymbol("auxiliary-point-symbol-editing");
140 130

  
141

  
142 131
        Double antm = null;
143 132
        Double antb = null;
144 133
        Double m = null;
......
174 163
                if (nextPoint == null) {
175 164
                    return drawingStatus;
176 165
                }
177
                if (polyLinePoint.isArcMode()) {
178
                    try {
166
                try {
167
                    if (polyLinePoint.isArcMode()) {
179 168
                        EditingProviderServices editingProviderServices =
180 169
                            ((EditingProviderServices) getProviderServices());
181
                        int subtype =
182
                            editingProviderServices.getSubType(featureStore);
170
                        int subtype = editingProviderServices.getSubType(featureStore);
183 171

  
184
                        lineAntPointToPoint =
185
                            editingProviderServices.createLine(point,
186
                                nextPoint, subtype);
172
                        lineAntPointToPoint = editingProviderServices.createLine(point, nextPoint, subtype);
187 173

  
188
                        Double[] lineParams =
189
                            editingProviderServices.getLineParams(point,
190
                                nextPoint);
174
                        Double[] lineParams = editingProviderServices.getLineParams(point, nextPoint);
191 175
                        m = lineParams[0];
192 176
                        b = lineParams[1];
193 177

  
194 178
                        Point[] pointPerpendicular =
195
                            editingProviderServices.getPerpendicular(antm,
196
                                antb, point, subtype);
197
                        Line linePointPerpendicular =
198
                            geomManager.createLine(subtype);
199
                        linePointPerpendicular.setPoints(pointPerpendicular[0],
200
                            pointPerpendicular[1]);
179
                            editingProviderServices.getPerpendicular(antm, antb, point, subtype);
180
                        Line linePointPerpendicular = geomManager.createLine(subtype);
181
                        linePointPerpendicular.setPoints(pointPerpendicular[0], pointPerpendicular[1]);
201 182

  
202
                        Point midPoint =
203
                            editingProviderServices.getMidPoint(point,
204
                                nextPoint, subtype);
205
                        Point[] bisector =
206
                            editingProviderServices.getPerpendicular(m, b,
207
                                midPoint, subtype);
183
                        Point midPoint = editingProviderServices.getMidPoint(point, nextPoint, subtype);
184
                        Point[] bisector = editingProviderServices.getPerpendicular(m, b, midPoint, subtype);
208 185
                        Line lineBisector = geomManager.createLine(subtype);
209 186
                        lineBisector.setPoints(bisector[0], bisector[1]);
210 187

  
211
                        center =
212
                            editingProviderServices.getIntersection(bisector,
213
                                pointPerpendicular, subtype);
188
                        center = editingProviderServices.getIntersection(bisector, pointPerpendicular, subtype);
214 189

  
215 190
                        if (center != null) {
216
                            startAngle =
217
                                editingProviderServices.getAngle(center, point);
218
                            endAngle =
219
                                editingProviderServices.getAngle(center,
220
                                    nextPoint);
191
                            startAngle = editingProviderServices.getAngle(center, point);
192
                            endAngle = editingProviderServices.getAngle(center, nextPoint);
221 193

  
222 194
                            radius = center.distance(point);
223 195
                        } else {
224 196
                            String msg =
225
                                String.format(
226
                                    "Can't get intersection between bisector"
227
                                        + " [(%1$s,%2$s),(%3$s,%4$s)]"
228
                                        + " and perperdicular"
229
                                        + " [(%5$s,%6$s),(%7$s,%8$s)]",
230
                                    bisector[0].getX(), bisector[0].getY(),
231
                                    bisector[1].getX(), bisector[1].getY(),
232
                                    pointPerpendicular[0].getX(),
233
                                    pointPerpendicular[0].getY(),
234
                                    pointPerpendicular[1].getX(),
235
                                    pointPerpendicular[1].getY());
197
                                String.format("Can't get intersection between bisector" + " [(%1$s,%2$s),(%3$s,%4$s)]"
198
                                    + " and perperdicular" + " [(%5$s,%6$s),(%7$s,%8$s)]", bisector[0].getX(),
199
                                    bisector[0].getY(), bisector[1].getX(), bisector[1].getY(),
200
                                    pointPerpendicular[0].getX(), pointPerpendicular[0].getY(),
201
                                    pointPerpendicular[1].getX(), pointPerpendicular[1].getY());
236 202

  
237 203
                            throw new DrawServiceException(msg, null);
238 204
                        }
239 205

  
240
                    } catch (Exception e) {
241
                        throw new DrawServiceException(e);
242
                    }
206
                        Double[] lineCenterNextParams = editingProviderServices.getLineParams(center, nextPoint);
207
                        double mcn = lineParams[0];
208
                        double bcn = lineParams[1];
243 209

  
244
                    if (right) {
245
                        if (nextPoint.getX() >= point.getX()) {
210
                        if (right) {
246 211
                            if (m >= antm) {
247
                                angleExt =
248
                                    editingProviderServices.angleDistance(
249
                                        endAngle, startAngle);
212
                                    if(mcn >= antm){
213
                                        angleExt = -editingProviderServices.angleDistance(startAngle, endAngle);
214
                                    } else {
215
                                        angleExt = editingProviderServices.angleDistance(endAngle, startAngle);
216
                                    }
250 217
                                right = !(nextPoint.getY() >= center.getY());
251 218
                            } else {
252
                                angleExt =
253
                                    -editingProviderServices.angleDistance(
254
                                        startAngle, endAngle);
219
                                angleExt = -editingProviderServices.angleDistance(startAngle, endAngle);
255 220
                                right = (nextPoint.getY() >= center.getY());
256 221
                            }
257 222
                        } else {
258 223
                            if (m >= antm) {
259
                                angleExt =
260
                                    -editingProviderServices.angleDistance(
261
                                        startAngle, endAngle);
262
                                right = (nextPoint.getY() >= center.getY());
263
                            } else {
264
                                angleExt =
265
                                    editingProviderServices.angleDistance(
266
                                        endAngle, startAngle);
224
                                angleExt = editingProviderServices.angleDistance(endAngle, startAngle);
267 225
                                right = !(nextPoint.getY() >= center.getY());
268
                            }
269
                        }
270
                    } else {
271
                        if (nextPoint.getX() < point.getX()) {
272
                            if (m >= antm) {
273
                                angleExt =
274
                                    editingProviderServices.angleDistance(
275
                                        endAngle, startAngle);
276
                                right = !(nextPoint.getY() >= center.getY());
277 226
                            } else {
278
                                angleExt =
279
                                    -editingProviderServices.angleDistance(
280
                                        startAngle, endAngle);
227
                                angleExt = -editingProviderServices.angleDistance(startAngle, endAngle);
281 228
                                right = (nextPoint.getY() >= center.getY());
282 229
                            }
283
                        } else {
284
                            if (m >= antm) {
285
                                angleExt =
286
                                    -editingProviderServices.angleDistance(
287
                                        startAngle, endAngle);
288
                                right = (nextPoint.getY() >= center.getY());
289
                            } else {
290
                                angleExt =
291
                                    editingProviderServices.angleDistance(
292
                                        endAngle, startAngle);
293
                                right = !(nextPoint.getY() >= center.getY());
294
                            }
295 230
                        }
296
                    }
297 231

  
298
                    Curve arco = null;
299
                    try {
300
                        int subtype =
301
                            editingProviderServices.getSubType(featureStore);
302
                        arco =
303
                            editingProviderServices.createArc(center, radius,
304
                                startAngle, angleExt, subtype);
305
                        Curve inverseArc =
306
                            (Curve) GeometryLocator.getGeometryManager()
307
                                .create(TYPES.CURVE, subtype);
308
                        if (!point.equals(arco.getVertex(0))) {
309
                            for (int j = arco.getNumVertices() - 1; j >= 0; j--) {
310
                                inverseArc.addVertex(arco.getVertex(j));
232
                        Arc arco = null;
233
                        arco = editingProviderServices.createArc(center, radius, startAngle, angleExt, Geometry.SUBTYPES.GEOM2D);
234
//                        Arc inverseArc = (Arc) geomManager.create(Geometry.TYPES.ARC, subtype);
235
//                        inverseArc.setPoints(arco.getEndPoint(), arco.getMiddlePoint(), arco.getInitPoint());
236
//                        arco = inverseArc;
237

  
238
                        antm = -(nextPoint.getX() - center.getX()) / (nextPoint.getY() - center.getY());
239
                        if (antm == Double.POSITIVE_INFINITY) {
240
                            antb = Double.NEGATIVE_INFINITY;
241
                            if (nextPoint.getX() == 0) {
242
                                antb = 0.0;
311 243
                            }
312
                            arco = inverseArc;
244
                        } else if (antm == Double.NEGATIVE_INFINITY) {
245
                            antb = Double.POSITIVE_INFINITY;
246
                            if (nextPoint.getX() == 0) {
247
                                antb = 0.0;
248
                            }
249
                        } else {
250
                            antb = nextPoint.getY() - (antm * nextPoint.getX());
313 251
                        }
314
                    } catch (Exception e) {
315
                        throw new DrawServiceException(e);
316
                    }
317 252

  
318
                    antm =
319
                        -(nextPoint.getX() - center.getX())
320
                            / (nextPoint.getY() - center.getY());
321
                    if (antm == Double.POSITIVE_INFINITY) {
322
                        antb = Double.NEGATIVE_INFINITY;
323
                        if (nextPoint.getX() == 0) {
324
                            antb = 0.0;
253
                        // Draw geometries.
254
                        if (addGeom) {
255
                            drawingStatus.addStatus(point, auxiliaryPointSymbolEditing, "");
256
                            drawingStatus.addStatus(nextPoint, auxiliaryPointSymbolEditing, "");
257
                            drawingStatus.addStatus(center, auxiliaryPointSymbolEditing, "");
258
                            drawingStatus.addStatus(lineAntPointToPoint, auxiliaryLineSymbolEditing, "");
259

  
325 260
                        }
326
                    } else if (antm == Double.NEGATIVE_INFINITY) {
327
                        antb = Double.POSITIVE_INFINITY;
328
                        if (nextPoint.getX() == 0) {
329
                            antb = 0.0;
330
                        }
331
                    } else {
332
                        antb = nextPoint.getY() - (antm * nextPoint.getX());
333
                    }
261
                        drawingStatus.addStatus(arco, lineSymbolEditing, "");
334 262

  
335
                    // Draw geometries.
336
                    if (addGeom) {
337
                        drawingStatus.addStatus(point, auxiliaryPointSymbolEditing, "");
338
                        drawingStatus.addStatus(nextPoint, auxiliaryPointSymbolEditing, "");
339
                        drawingStatus.addStatus(center, auxiliaryPointSymbolEditing, "");
340
                        drawingStatus.addStatus(lineAntPointToPoint, auxiliaryLineSymbolEditing, "");
341

  
342
                    }
343
                    drawingStatus.addStatus(arco, lineSymbolEditing, "");
344

  
345
                } else {
346
                    try {
347
                        int subtype =
348
                            editingProviderServices.getSubType(featureStore);
349
                        Curve geometry =
350
                            editingProviderServices.createLine(point,
351
                                nextPoint, subtype);
263
                    } else {
264
                        int subtype = editingProviderServices.getSubType(featureStore);
265
                        Curve geometry = editingProviderServices.createLine(point, nextPoint, subtype);
352 266
                        if (addGeom) {
353 267
                            drawingStatus.addStatus(point, auxiliaryPointSymbolEditing, "");
354 268
                            drawingStatus.addStatus(nextPoint, auxiliaryPointSymbolEditing, "");
355 269
                        }
356 270
                        drawingStatus.addStatus(geometry, lineSymbolEditing, "");
357 271

  
358
                    } catch (Exception e) {
359
                        throw new DrawServiceException(e);
272
                        Double[] antLineParams = editingProviderServices.getLineParams(point, nextPoint);
273
                        antm = antLineParams[0];
274
                        antb = antLineParams[1];
275
                        right = (nextPoint.getX() >= point.getX());
360 276
                    }
361
                    Double[] antLineParams =
362
                        editingProviderServices.getLineParams(point, nextPoint);
363
                    antm = antLineParams[0];
364
                    antb = antLineParams[1];
365
                    right = (nextPoint.getX() >= point.getX());
277
                } catch (Exception e) {
278
                    throw new DrawServiceException(e);
366 279
                }
367 280
            }
368 281
            return drawingStatus;
......
390 303
        return geometry;
391 304
    }
392 305

  
393
    public DrawingStatus getDrawingStatus(Point mousePosition)
394
        throws DrawServiceException {
306
    public DrawingStatus getDrawingStatus(Point mousePosition) throws DrawServiceException {
395 307

  
396 308
        try {
397 309
            return calculatePolyline(mousePosition);
......
405 317
        try {
406 318
            Geometry geometry = finish();
407 319
            if (geometry != null) {
408
                editingProviderServices.insertGeometryIntoFeatureStore(
409
                    geometry, featureStore);
320
                editingProviderServices.insertGeometryIntoFeatureStore(geometry, featureStore);
410 321
            }
411 322
        } catch (Exception e) {
412 323
            throw new FinishServiceException(e);
......
416 327
    public Geometry finish() throws FinishServiceException {
417 328
        try {
418 329
            GeometryManager geomManager = GeometryLocator.getGeometryManager();
419
            GeometryType storeGeomType =
420
                editingProviderServices.getGeomType(featureStore);
330
            GeometryType storeGeomType = editingProviderServices.getGeomType(featureStore);
421 331
            Line line = geomManager.createLine(storeGeomType.getSubType());
422 332
            calculateFinalGeometry(storeGeomType, line);
423 333

  
......
426 336
            }
427 337

  
428 338
            if (storeGeomType.isTypeOf(MULTICURVE)) {
429
                MultiCurve multiCurve =
430
                    geomManager.createMultiCurve(storeGeomType.getSubType());
339
                MultiCurve multiCurve = geomManager.createMultiCurve(storeGeomType.getSubType());
431 340
                multiCurve.addCurve(line);
432 341
                return multiCurve;
433 342
            } else {
......
446 355
     * @param geometryType
447 356
     * @param orientablePrimitive
448 357
     * @throws DataException
449
     * @throws CreateGeometryException
450 358
     * @throws VectorEditingException
359
     * @throws GeometryException
360
     * @throws GeometryOperationException
361
     * @throws GeometryOperationNotSupportedException
451 362
     */
452
    protected void calculateFinalGeometry(GeometryType geometryType,
453
        OrientablePrimitive orientablePrimitive) throws DataException,
454
        CreateGeometryException, VectorEditingException {
363
    protected void calculateFinalGeometry(GeometryType geometryType, OrientablePrimitive orientablePrimitive)
364
        throws DataException, VectorEditingException, GeometryException, GeometryOperationNotSupportedException, GeometryOperationException {
455 365
        DrawingStatus drawingStatus = calculatePolyline(null);
456 366
        Point vertexAnt = null;
457 367
        for (Geometry geometry : drawingStatus.getGeometries()) {
458
            if (geometry instanceof Curve) {
459
                Curve curve = (Curve) geometry;
460
                for (int i = 0; i < curve.getNumVertices(); i++) {
461
                    if ((vertexAnt == null)
462
                        || !vertexAnt.equals(curve.getVertex(i))) {
463
                        orientablePrimitive.addVertex(curve.getVertex(i));
464
                        vertexAnt = curve.getVertex(i);
368
            if (geometry instanceof Line) {
369
                Line line = (Line) geometry;
370
                for (int i = 0; i < line.getNumVertices(); i++) {
371
                    if ((vertexAnt == null) || !vertexAnt.equals(line.getVertex(i))) {
372
                        orientablePrimitive.addVertex(line.getVertex(i));
373
                        vertexAnt = line.getVertex(i);
465 374
                    }
466 375
                }
376
            } else if(geometry instanceof Curve){
377
                MultiLine multiline = geometry.toLines();
378
                for(int i=0; i<multiline.getPrimitivesNumber(); i++){
379
                    Line line = (Line)multiline.getPrimitiveAt(i);
380
                    if(line.getNumVertices()>0 && vertexAnt!= null && line.getVertex(0)!=vertexAnt){
381
                        line.flip();
382
                    }
383
                    for (int j = 0; j < line.getNumVertices(); j++) {
384
                        if ((vertexAnt == null) || !vertexAnt.equals(line.getVertex(j))) {
385
                            orientablePrimitive.addVertex(line.getVertex(j));
386
                            vertexAnt = line.getVertex(j);
387
                        }
388
                    }
389
                }
467 390
            }
468 391
        }
469 392
    }
......
480 403
    }
481 404

  
482 405
    public List<EditingServiceParameter> getParameters() {
483
        List<EditingServiceParameter> list =
484
            new ArrayList<EditingServiceParameter>();
406
        List<EditingServiceParameter> list = new ArrayList<EditingServiceParameter>();
485 407
        list.add(points);
486 408
        return list;
487 409
    }
......
491 413
        if (geometry != null) {
492 414

  
493 415
            if (geometry instanceof OrientablePrimitive) {
494
                OrientablePrimitive orientablePrimitive =
495
                    (OrientablePrimitive) geometry;
416
                OrientablePrimitive orientablePrimitive = (OrientablePrimitive) geometry;
496 417
                Point firstPoint = orientablePrimitive.getVertex(0);
497
                Point lastPoint =
498
                    orientablePrimitive.getVertex(orientablePrimitive
499
                        .getNumVertices() - 1);
418
                Point lastPoint = orientablePrimitive.getVertex(orientablePrimitive.getNumVertices() - 1);
500 419
                if (firstPoint.equals(lastPoint)) {
501 420
                    return true;
502 421
                }
......
530 449
        closeGeometry = false;
531 450
    }
532 451

  
533
    private void validateAndInsertValue(EditingServiceParameter param,
534
        Object value) throws InvalidEntryException {
452
    private void validateAndInsertValue(EditingServiceParameter param, Object value) throws InvalidEntryException {
535 453
        if (value instanceof String) {
536 454
            String option = (String) value;
537 455
            I18nManager i18nManager = ToolsLocator.getI18nManager();
538 456

  
539
            if (option.equalsIgnoreCase(i18nManager
540
                .getTranslation("key_finish"))) {
457
            if (option.equalsIgnoreCase(i18nManager.getTranslation("key_finish"))) {
541 458
                finishPolyline = true;
542 459
                return;
543 460
            }
544 461

  
545 462
            if (values.size() > 0) {
546
                if (option.equalsIgnoreCase(i18nManager
547
                    .getTranslation("key_remove_last_point"))){
548
                        arcMode = values.get(values.size()-1).isArcMode();
549
                        if (values.size() > 2) {
550
                            values.get(values.size()-2).setArcMode(arcMode);
551
                        } else {
552
                            arcMode = false;
553
                        }
554
                        values.remove(values.size()-1);
463
                if (option.equalsIgnoreCase(i18nManager.getTranslation("key_remove_last_point"))) {
464
                    arcMode = values.get(values.size() - 1).isArcMode();
465
                    if (values.size() > 2) {
466
                        values.get(values.size() - 2).setArcMode(arcMode);
467
                    } else {
468
                        arcMode = false;
469
                    }
470
                    values.remove(values.size() - 1);
555 471
                    return;
556 472
                }
557 473
            }
558 474

  
559 475
            if (values.size() >= 2) {
560 476

  
561
                if (option.equalsIgnoreCase(i18nManager
562
                    .getTranslation("key_arc_mode"))) {
477
                if (option.equalsIgnoreCase(i18nManager.getTranslation("key_arc_mode"))) {
563 478

  
564 479
                    arcMode = true;
565 480

  
566
                } else if (option.equalsIgnoreCase(i18nManager
567
                    .getTranslation("key_line_mode"))) {
481
                } else if (option.equalsIgnoreCase(i18nManager.getTranslation("key_line_mode"))) {
568 482

  
569 483
                    arcMode = false;
570 484

  
571
                } else if (option.equalsIgnoreCase(i18nManager
572
                    .getTranslation("key_close"))) {
485
                } else if (option.equalsIgnoreCase(i18nManager.getTranslation("key_close"))) {
573 486

  
574 487
                    closeGeometry = true;
575 488
                    finishPolyline = true;
......
583 496
                return;
584 497
            }
585 498

  
586

  
587

  
588 499
        } else if ((param == points) && (value instanceof Point)) {
589 500
            values.add(new MyPolyLinePoint((Point) value, arcMode));
590 501
            return;

Also available in: Unified diff