Revision 492

View differences:

org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.editvertex/src/main/java/org/gvsig/vectorediting/lib/prov/editvertex/EditVertexEditingProvider.java
313 313
        return;
314 314
    }
315 315

  
316
    private Geometry getModifiedGeometry(Geometry geometry,
317
 int index,
318
        Point mousePosition) throws CreateGeometryException, GeometryOperationNotSupportedException, GeometryOperationException {
316
    private Geometry getModifiedGeometry(Geometry geometry, int index,
317
        Point mousePosition) throws CreateGeometryException,
318
        GeometryOperationNotSupportedException, GeometryOperationException {
319
        
319 320
        if (geometry instanceof MultiPrimitive) {
320
            int selectedIndex = index;
321 321
            GeometryManager geometryManager =
322 322
                GeometryLocator.getGeometryManager();
323 323
            MultiPrimitive aggregate = (MultiPrimitive) geometry;
......
331 331
                    EditVertexOperationUtils.getOperation(primitive);
332 332
                if (operation != null) {
333 333
                    int numVertexes = operation.getNumVertex(primitive);
334
                    if (selectedIndex < numVertexes) {
334
                    if (index > -1 && index < numVertexes) {
335 335
                        Geometry modifiedPrimitive =
336
                            operation.moveVertex(primitive, selectedIndex,
336
                            operation.moveVertex(primitive, index,
337 337
                                mousePosition);
338 338
                        newAggregate
339 339
                            .addPrimitive((Primitive) modifiedPrimitive);
340
                        index = -1;
340 341
                    } else {
341
                        selectedIndex -= numVertexes;
342
                        index -= numVertexes;
342 343
                        newAggregate.addPrimitive((Primitive) primitive
343 344
                            .cloneGeometry());
344 345
                    }
......
359 360
    private Geometry getInsertVertexGeometry(Geometry geometry, int index)
360 361
        throws CreateGeometryException {
361 362
        if (geometry instanceof MultiPrimitive) {
362
            int selectedIndex = index;
363 363
            GeometryManager geometryManager =
364 364
                GeometryLocator.getGeometryManager();
365 365
            MultiPrimitive aggregate = (MultiPrimitive) geometry;
......
373 373
                    EditVertexOperationUtils.getOperation(primitive);
374 374
                if (operation != null) {
375 375
                    int numVertexes = operation.getNumVertex(primitive);
376
                    if (selectedIndex < numVertexes) {
376
                    if (index > -1 && index < numVertexes) {
377 377
                        Geometry modifiedPrimitive =
378
                            operation.insertVertex(primitive, selectedIndex);
378
                            operation.insertVertex(primitive, index);
379 379
                        newAggregate
380 380
                            .addPrimitive((Primitive) modifiedPrimitive);
381
                        index = -1;
381 382
                    } else {
382
                        selectedIndex -= numVertexes;
383
                        index -= numVertexes;
383 384
                        newAggregate.addPrimitive((Primitive) primitive
384 385
                            .cloneGeometry());
385 386
                    }
......
400 401
    private Geometry getRemovedVertexGeometry(Geometry geometry, int index)
401 402
        throws CreateGeometryException {
402 403
        if (geometry instanceof MultiPrimitive) {
403
            int selectedIndex = index;
404 404
            GeometryManager geometryManager =
405 405
                GeometryLocator.getGeometryManager();
406 406
            MultiPrimitive aggregate = (MultiPrimitive) geometry;
......
414 414
                    EditVertexOperationUtils.getOperation(primitive);
415 415
                if (operation != null) {
416 416
                    int numVertexes = operation.getNumVertex(primitive);
417
                    if (selectedIndex < numVertexes) {
417
                    if (index > -1 && index < numVertexes) {
418 418
                        Geometry modifiedPrimitive =
419
                            operation.removeVertex(primitive, selectedIndex);
419
                            operation.removeVertex(primitive, index);
420 420
                        newAggregate
421 421
                            .addPrimitive((Primitive) modifiedPrimitive);
422
                        index = -1;
422 423
                    } else {
423
                        selectedIndex -= numVertexes;
424
                        index -= numVertexes;
424 425
                        newAggregate.addPrimitive((Primitive) primitive
425 426
                            .cloneGeometry());
426 427
                    }

Also available in: Unified diff