Revision 2745
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.polarmatrix/src/main/java/org/gvsig/vectorediting/lib/prov/polarmatrix/PolarMatrixEditingProvider.java | ||
---|---|---|
56 | 56 |
import org.gvsig.symbology.SymbologyManager; |
57 | 57 |
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.text.ISimpleTextSymbol; |
58 | 58 |
import org.gvsig.tools.ToolsLocator; |
59 |
import org.gvsig.tools.dataTypes.DataTypes; |
|
59 | 60 |
import org.gvsig.tools.dispose.DisposableIterator; |
60 | 61 |
import org.gvsig.tools.dispose.DisposeUtils; |
61 | 62 |
import org.gvsig.tools.dynobject.DynObject; |
... | ... | |
72 | 73 |
import org.gvsig.vectorediting.lib.spi.AbstractEditingProvider; |
73 | 74 |
import org.gvsig.vectorediting.lib.spi.DefaultDrawingStatus; |
74 | 75 |
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameter; |
76 |
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameterOptions; |
|
75 | 77 |
import org.gvsig.vectorediting.lib.spi.EditingProvider; |
76 | 78 |
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory; |
77 | 79 |
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator; |
... | ... | |
128 | 130 |
"number_of_total_elements", EditingServiceParameter.TYPE.VALUE); |
129 | 131 |
|
130 | 132 |
I18nManager i18nManager = ToolsLocator.getI18nManager(); |
131 |
Map<String, String> options = new LinkedHashMap<>(); |
|
132 |
options.put(i18nManager.getTranslation("key_yes"), "yes"); |
|
133 |
options.put(i18nManager.getTranslation("key_no"), "no"); |
|
134 |
|
|
135 | 133 |
EditingProviderServices editingProviderServices = |
136 | 134 |
(EditingProviderServices) getProviderServices(); |
137 | 135 |
|
136 |
DefaultEditingServiceParameterOptions options = new DefaultEditingServiceParameterOptions() |
|
137 |
.add(i18nManager.getTranslation("_yes"), true, i18nManager.getTranslation("_short_yes")) |
|
138 |
.add(i18nManager.getTranslation("_no"), false, i18nManager.getTranslation("_short_no")); |
|
139 |
|
|
140 |
String consoleMsg |
|
141 |
= editingProviderServices.makeConsoleMessage( |
|
142 |
"rotate_elements", options); |
|
143 |
|
|
138 | 144 |
this.rotateElements = |
139 |
new DefaultEditingServiceParameter("rotate_elements", |
|
140 |
editingProviderServices.makeConsoleMessage("rotate_elements", |
|
141 |
options), options, EditingServiceParameter.TYPE.OPTION); |
|
145 |
new DefaultEditingServiceParameter( |
|
146 |
"rotate_elements", |
|
147 |
consoleMsg, |
|
148 |
options, |
|
149 |
i18nManager.getTranslation("_short_no"), |
|
150 |
EditingServiceParameter.TYPE.OPTION).setDataType(DataTypes.BOOLEAN); |
|
142 | 151 |
|
143 | 152 |
this.centerPoint = |
144 | 153 |
new DefaultEditingServiceParameter("center", "center", |
... | ... | |
187 | 196 |
Double angle = (Double) values.get(elementAngle); |
188 | 197 |
if (angle == null) { |
189 | 198 |
angle = GeometryUtils.calculateAngle(centerPointValue, mousePosition); |
199 |
|
|
200 |
Integer elements = (Integer) values.get(elementsNumber); |
|
201 |
if(elements != null){ |
|
202 |
if(angle > 2*Math.PI/(elements-1)){ |
|
203 |
angle = 2*Math.PI/(elements-1); |
|
204 |
} |
|
205 |
} |
|
206 |
|
|
207 |
|
|
190 | 208 |
// try { |
191 | 209 |
// angle = |
192 | 210 |
// editingProviderServices.getAngle(centerPointValue, |
... | ... | |
358 | 376 |
throws GeometryOperationNotSupportedException, |
359 | 377 |
GeometryOperationException, CreateGeometryException { |
360 | 378 |
|
361 |
Geometry[] geometryMatrix = new Geometry[elementsNumberValue]; |
|
379 |
Geometry[] geometryMatrix = new Geometry[elementsNumberValue-1];
|
|
362 | 380 |
|
363 |
for (int i = 0; i < elementsNumberValue; i++) { |
|
381 |
for (int i = 0; i < elementsNumberValue-1; i++) {
|
|
364 | 382 |
|
365 | 383 |
AffineTransform at = new AffineTransform(); |
366 | 384 |
if (rotateElementsValue) { |
367 |
at = getRotateAffineTransform(centerPointValue, angle * i);
|
|
385 |
at = getRotateAffineTransform(centerPointValue, angle * (i+1));
|
|
368 | 386 |
} else { |
369 |
at = getRotateAffineTransform(centerPointValue, angle * i);
|
|
387 |
at = getRotateAffineTransform(centerPointValue, angle * (i+1));
|
|
370 | 388 |
|
371 | 389 |
double centerX = geometry.getEnvelope().getCenter(0); |
372 | 390 |
double centerY = geometry.getEnvelope().getCenter(1); |
... | ... | |
398 | 416 |
List<EditingServiceParameter> parameters = |
399 | 417 |
new ArrayList<>(); |
400 | 418 |
parameters.add(selection); |
419 |
parameters.add(elementsNumber); |
|
401 | 420 |
parameters.add(rotateElements); |
402 | 421 |
parameters.add(centerPoint); |
403 | 422 |
parameters.add(elementAngle); |
... | ... | |
428 | 447 |
insertedValue = true; |
429 | 448 |
} |
430 | 449 |
|
431 |
} else if (parameter.equals(elementsNumber) && value instanceof Double) {
|
|
450 |
} else if (parameter.equals(elementsNumber) && value instanceof Number) {
|
|
432 | 451 |
|
433 |
if (value instanceof Double) { |
|
434 |
Double number = (Double) value; |
|
435 |
values.put(parameter, number.intValue()); |
|
452 |
int number = ((Number) value).intValue(); |
|
453 |
|
|
454 |
Number angle = ((Number) values.get(elementAngle)); |
|
455 |
if(angle != null){ |
|
456 |
double radians = Math.toRadians(angle.doubleValue()); |
|
457 |
if(radians > 2*Math.PI/(number-1)){ |
|
458 |
throw new InvalidEntryException(null); |
|
459 |
} |
|
460 |
} |
|
461 |
|
|
462 |
values.put(parameter, number); |
|
436 | 463 |
insertedValue = true; |
437 |
} |
|
438 | 464 |
|
439 | 465 |
} else if (parameter.equals(rotateElements) && value instanceof String) { |
440 | 466 |
|
441 |
String option = (String) value; |
|
442 |
I18nManager i18nManager = ToolsLocator.getI18nManager(); |
|
443 |
if (option.equalsIgnoreCase(i18nManager.getTranslation("key_yes"))) { |
|
444 |
values.put(rotateElements, true); |
|
445 |
insertedValue = true; |
|
446 |
} else if (option.equalsIgnoreCase(i18nManager |
|
447 |
.getTranslation("key_no"))) { |
|
448 |
values.put(rotateElements, false); |
|
449 |
insertedValue = true; |
|
450 |
} |
|
467 |
values.put(parameter, parameter.getOptions2().getValue(value, parameter.getDefaultValue())); |
|
451 | 468 |
|
469 |
// String option = (String) value; |
|
470 |
// I18nManager i18nManager = ToolsLocator.getI18nManager(); |
|
471 |
// if (option.equalsIgnoreCase(i18nManager.getTranslation("key_yes"))) { |
|
472 |
// values.put(rotateElements, true); |
|
473 |
// insertedValue = true; |
|
474 |
// } else if (option.equalsIgnoreCase(i18nManager |
|
475 |
// .getTranslation("key_no"))) { |
|
476 |
// values.put(rotateElements, false); |
|
477 |
// insertedValue = true; |
|
478 |
// } |
|
479 |
|
|
452 | 480 |
} else if (parameter.equals(centerPoint) && value instanceof Point) { |
453 | 481 |
|
454 | 482 |
values.put(centerPoint, value); |
... | ... | |
459 | 487 |
if (value instanceof Double) { |
460 | 488 |
LOGGER.info("value Double:"+value.toString()); |
461 | 489 |
|
462 |
values.put(elementAngle, Math.toRadians((Double) value)); |
|
490 |
Integer elements = (Integer) values.get(elementsNumber); |
|
491 |
double radians = Math.toRadians((Double) value); |
|
492 |
if(elements != null){ |
|
493 |
if(radians > 2*Math.PI/(elements-1)){ |
|
494 |
throw new InvalidEntryException(null); |
|
495 |
} |
|
496 |
} |
|
497 |
values.put(elementAngle, radians); |
|
463 | 498 |
insertedValue = true; |
464 | 499 |
|
465 | 500 |
} else if (value instanceof Point) { |
... | ... | |
467 | 502 |
Point centerPointValue = (Point) values.get(centerPoint); |
468 | 503 |
Point valuePoint = (Point) value; |
469 | 504 |
double angle = GeometryUtils.calculateAngle(centerPointValue, valuePoint); |
505 |
Integer elements = (Integer) values.get(elementsNumber); |
|
506 |
if(elements != null){ |
|
507 |
if(angle > 2*Math.PI/(elements-1)){ |
|
508 |
throw new InvalidEntryException(null); |
|
509 |
} |
|
510 |
} |
|
470 | 511 |
values.put(elementAngle, angle); |
471 | 512 |
insertedValue = true; |
472 | 513 |
// try { |
Also available in: Unified diff