Revision 333 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.arc/src/main/java/org/gvsig/vectorediting/lib/prov/arc/ArcEditingProvider.java
ArcEditingProvider.java | ||
---|---|---|
37 | 37 |
import org.gvsig.fmap.geom.primitive.Curve; |
38 | 38 |
import org.gvsig.fmap.geom.primitive.Point; |
39 | 39 |
import org.gvsig.fmap.geom.type.GeometryType; |
40 |
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol; |
|
40 | 41 |
import org.gvsig.tools.dynobject.DynObject; |
41 | 42 |
import org.gvsig.tools.service.spi.ProviderServices; |
42 | 43 |
import org.gvsig.vectorediting.lib.api.DrawingStatus; |
... | ... | |
52 | 53 |
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameter; |
53 | 54 |
import org.gvsig.vectorediting.lib.spi.EditingProvider; |
54 | 55 |
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory; |
56 |
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator; |
|
57 |
import org.gvsig.vectorediting.lib.spi.EditingProviderManager; |
|
55 | 58 |
import org.gvsig.vectorediting.lib.spi.EditingProviderServices; |
56 | 59 |
|
57 | 60 |
/** |
... | ... | |
114 | 117 |
public DrawingStatus getDrawingStatus(Point mousePosition) |
115 | 118 |
throws DrawServiceException { |
116 | 119 |
DefaultDrawingStatus geometries = new DefaultDrawingStatus(); |
120 |
|
|
121 |
EditingProviderManager editingProviderManager = |
|
122 |
EditingProviderLocator.getProviderManager(); |
|
123 |
ISymbol lineSymbolEditing = editingProviderManager.getSymbol("auxiliary-line-symbol-editing"); |
|
124 |
ISymbol auxiliaryLineSymbolEditing = editingProviderManager.getSymbol("auxiliary-line-symbol-editing"); |
|
125 |
ISymbol auxiliaryPointSymbolEditing = editingProviderManager.getSymbol("auxiliary-point-symbol-editing"); |
|
126 |
|
|
127 |
EditingProviderServices editingProviderServices = |
|
128 |
(EditingProviderServices) getProviderServices(); |
|
129 |
|
|
117 | 130 |
if ((values != null) && (values.get(startPoint) != null)) { |
118 | 131 |
|
119 | 132 |
Point startPointValue = (Point) values.get(startPoint); |
120 |
EditingProviderServices editingProviderServices = |
|
121 |
(EditingProviderServices) getProviderServices(); |
|
133 |
geometries.addStatus(startPointValue, auxiliaryPointSymbolEditing, ""); |
|
122 | 134 |
|
123 | 135 |
if (values.get(endPoint) == null) { |
124 | 136 |
|
... | ... | |
128 | 140 |
Curve line = |
129 | 141 |
editingProviderServices.createLine(startPointValue, |
130 | 142 |
mousePosition, subtype); |
131 |
geometries.addGeometry(line);
|
|
143 |
geometries.addStatus(line, auxiliaryLineSymbolEditing, "");
|
|
132 | 144 |
|
145 |
|
|
133 | 146 |
} catch (Exception e) { |
134 | 147 |
throw new DrawServiceException(e); |
135 | 148 |
} |
... | ... | |
139 | 152 |
} else { |
140 | 153 |
|
141 | 154 |
Point endPointValue = (Point) values.get(endPoint); |
155 |
geometries.addStatus(endPointValue, auxiliaryPointSymbolEditing, ""); |
|
156 |
|
|
142 | 157 |
try { |
143 | 158 |
int subtype = |
144 | 159 |
editingProviderServices.getSubType(featureStore); |
145 |
Curve arc = |
|
146 |
editingProviderServices.createArc(startPointValue, |
|
147 |
mousePosition, endPointValue, subtype); |
|
148 |
geometries.addGeometry(arc); |
|
160 |
Curve line1 = |
|
161 |
editingProviderServices.createLine(startPointValue,mousePosition, subtype); |
|
162 |
geometries.addStatus(line1, auxiliaryLineSymbolEditing, ""); |
|
163 |
Curve line2 = |
|
164 |
editingProviderServices.createLine(endPointValue,mousePosition, subtype); |
|
165 |
geometries.addStatus(line2, auxiliaryLineSymbolEditing, ""); |
|
149 | 166 |
|
150 | 167 |
Point center = |
151 | 168 |
editingProviderServices.getCenter(startPointValue, |
152 | 169 |
mousePosition, endPointValue, subtype); |
170 |
geometries.addStatus(center, auxiliaryPointSymbolEditing, ""); |
|
153 | 171 |
|
154 |
geometries.addGeometry(center); |
|
155 |
geometries.addGeometry(startPointValue); |
|
156 |
geometries.addGeometry(endPointValue); |
|
172 |
Curve arc = |
|
173 |
editingProviderServices.createArc(startPointValue, |
|
174 |
mousePosition, endPointValue, subtype); |
|
175 |
geometries.addStatus(arc, lineSymbolEditing, ""); |
|
157 | 176 |
|
158 | 177 |
} catch (Exception e) { |
159 | 178 |
throw new DrawServiceException(e); |
... | ... | |
192 | 211 |
} |
193 | 212 |
} else if (param == endPoint) { |
194 | 213 |
if (value instanceof Point) { |
214 |
if(((Point)value).equals((Point)values.get(startPoint))){ |
|
215 |
throw new InvalidEntryException(null); |
|
216 |
} |
|
195 | 217 |
values.put(param, value); |
196 | 218 |
return; |
197 | 219 |
} |
198 | 220 |
} else if (param == middlePoint) { |
199 | 221 |
if (value instanceof Point) { |
222 |
if(((Point)value).equals((Point)values.get(startPoint)) || ((Point)value).equals((Point)values.get(endPoint))){ |
|
223 |
throw new InvalidEntryException(null); |
|
224 |
} |
|
200 | 225 |
values.put(param, value); |
201 | 226 |
return; |
202 | 227 |
} |
... | ... | |
205 | 230 |
} |
206 | 231 |
|
207 | 232 |
public Geometry finish() throws FinishServiceException { |
233 |
Point startPointValue = (Point) values.get(startPoint); |
|
208 | 234 |
Point middlePointValue = (Point) values.get(middlePoint); |
235 |
Point endPointValue = (Point) values.get(endPoint); |
|
236 |
|
|
209 | 237 |
EditingProviderServices editingProviderServices = |
210 | 238 |
(EditingProviderServices) getProviderServices(); |
211 | 239 |
|
212 | 240 |
try { |
213 | 241 |
|
214 |
DrawingStatus drawingStatus = getDrawingStatus(middlePointValue);
|
|
215 |
Arc arc = (Arc) drawingStatus.getGeometries().get(0);
|
|
242 |
int subtype =
|
|
243 |
editingProviderServices.getSubType(featureStore);
|
|
216 | 244 |
|
245 |
Curve arc = |
|
246 |
editingProviderServices.createArc(startPointValue, |
|
247 |
middlePointValue, endPointValue, subtype); |
|
248 |
|
|
217 | 249 |
GeometryType geomType = |
218 | 250 |
editingProviderServices.getGeomType(featureStore); |
219 | 251 |
|
Also available in: Unified diff