Revision 575 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.circlecr/src/main/java/org/gvsig/vectorediting/lib/prov/circlecr/CircumferenceCREditingProvider.java
CircumferenceCREditingProvider.java | ||
---|---|---|
26 | 26 |
|
27 | 27 |
import org.gvsig.fmap.geom.Geometry; |
28 | 28 |
import org.gvsig.fmap.geom.GeometryLocator; |
29 |
import org.gvsig.fmap.geom.GeometryManager; |
|
29 | 30 |
import org.gvsig.fmap.geom.aggregate.MultiCurve; |
30 |
import org.gvsig.fmap.geom.primitive.Arc; |
|
31 |
import org.gvsig.fmap.geom.primitive.Circumference; |
|
32 |
import org.gvsig.fmap.geom.primitive.Curve; |
|
31 | 33 |
import org.gvsig.fmap.geom.primitive.Point; |
32 | 34 |
import org.gvsig.fmap.geom.type.GeometryType; |
35 |
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol; |
|
33 | 36 |
import org.gvsig.tools.dynobject.DynObject; |
34 | 37 |
import org.gvsig.tools.service.spi.ProviderServices; |
38 |
import org.gvsig.vectorediting.lib.api.exceptions.DrawServiceException; |
|
35 | 39 |
import org.gvsig.vectorediting.lib.api.exceptions.FinishServiceException; |
40 |
import org.gvsig.vectorediting.lib.spi.DefaultDrawingStatus; |
|
36 | 41 |
import org.gvsig.vectorediting.lib.spi.EditingProvider; |
42 |
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator; |
|
43 |
import org.gvsig.vectorediting.lib.spi.EditingProviderManager; |
|
37 | 44 |
import org.gvsig.vectorediting.lib.spi.EditingProviderServices; |
38 | 45 |
|
39 | 46 |
public class CircumferenceCREditingProvider extends CircleCREditingProvider |
... | ... | |
44 | 51 |
super(providerServices, parameters); |
45 | 52 |
} |
46 | 53 |
|
54 |
public DefaultDrawingStatus getDrawingStatus(Point mousePosition) throws DrawServiceException { |
|
55 |
DefaultDrawingStatus geometries = new DefaultDrawingStatus(); |
|
56 |
EditingProviderManager editingProviderManager = EditingProviderLocator.getProviderManager(); |
|
57 |
GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
|
58 |
ISymbol lineSymbolEditing = editingProviderManager.getSymbol("line-symbol-editing"); |
|
59 |
ISymbol auxiliaryLineSymbolEditing = editingProviderManager.getSymbol("auxiliary-line-symbol-editing"); |
|
60 |
ISymbol auxiliaryPointSymbolEditing = editingProviderManager.getSymbol("auxiliary-point-symbol-editing"); |
|
61 |
|
|
62 |
if ((values != null) && (values.get(center) != null) |
|
63 |
&& (values.get(radius) == null)) { |
|
64 |
Point centerPoint = (Point) values.get(center); |
|
65 |
EditingProviderServices editingProviderServices = |
|
66 |
(EditingProviderServices) getProviderServices(); |
|
67 |
|
|
68 |
try { |
|
69 |
int subtype = editingProviderServices.getSubType(featureStore); |
|
70 |
Curve line = editingProviderServices.createLine(centerPoint, mousePosition, subtype); |
|
71 |
Circumference circumference = (Circumference) geomManager.create(CIRCUMFERENCE, subtype); |
|
72 |
circumference.setPoints(centerPoint, mousePosition.distance(centerPoint)); |
|
73 |
|
|
74 |
geometries.addStatus(centerPoint, auxiliaryPointSymbolEditing, ""); |
|
75 |
geometries.addStatus(line, auxiliaryLineSymbolEditing, ""); |
|
76 |
geometries.addStatus(circumference, lineSymbolEditing, ""); |
|
77 |
|
|
78 |
} catch (Exception e) { |
|
79 |
throw new DrawServiceException(e); |
|
80 |
} |
|
81 |
|
|
82 |
return geometries; |
|
83 |
} |
|
84 |
|
|
85 |
return null; |
|
86 |
|
|
87 |
} |
|
88 |
|
|
89 |
|
|
47 | 90 |
@Override |
48 | 91 |
public Geometry finish() throws FinishServiceException { |
92 |
GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
|
49 | 93 |
Point centerPoint = (Point) values.get(center); |
50 | 94 |
double radiusValue = (Double) values.get(radius); |
51 | 95 |
EditingProviderServices editingProviderServices = |
... | ... | |
54 | 98 |
int subtype = editingProviderServices.getSubType(featureStore); |
55 | 99 |
GeometryType storeGeomType = |
56 | 100 |
editingProviderServices.getGeomType(featureStore); |
57 |
Geometry geometry = |
|
58 |
editingProviderServices.createArc(centerPoint, radiusValue, 0, |
|
59 |
2 * Math.PI, subtype); |
|
101 |
Circumference circumference = (Circumference) geomManager.create(CIRCUMFERENCE, subtype); |
|
102 |
circumference.setPoints(centerPoint, radiusValue); |
|
60 | 103 |
|
61 | 104 |
if (storeGeomType.isTypeOf(MULTICURVE)) { |
62 | 105 |
MultiCurve multicurve; |
63 | 106 |
multicurve = |
64 | 107 |
GeometryLocator.getGeometryManager().createMultiCurve( |
65 | 108 |
storeGeomType.getSubType()); |
66 |
multicurve.addCurve((Arc) geometry);
|
|
109 |
multicurve.addCurve((Circumference) circumference);
|
|
67 | 110 |
return multicurve; |
68 | 111 |
} |
69 | 112 |
|
70 |
return geometry;
|
|
113 |
return circumference;
|
|
71 | 114 |
} catch (Exception e) { |
72 | 115 |
throw new FinishServiceException(e); |
73 | 116 |
} |
Also available in: Unified diff