Revision 492
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