Revision 371 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.duplicate/src/main/java/org/gvsig/vectorediting/lib/prov/duplicate/DuplicateEditingProvider.java
DuplicateEditingProvider.java | ||
---|---|---|
36 | 36 |
import org.gvsig.fmap.dal.feature.FeatureSelection; |
37 | 37 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
38 | 38 |
import org.gvsig.fmap.geom.Geometry; |
39 |
import org.gvsig.fmap.geom.GeometryLocator; |
|
40 |
import org.gvsig.fmap.geom.GeometryManager; |
|
41 |
import org.gvsig.fmap.geom.aggregate.Aggregate; |
|
42 |
import org.gvsig.fmap.geom.aggregate.MultiCurve; |
|
43 |
import org.gvsig.fmap.geom.aggregate.MultiPoint; |
|
44 |
import org.gvsig.fmap.geom.aggregate.MultiSurface; |
|
45 |
import org.gvsig.fmap.geom.exception.CreateGeometryException; |
|
39 | 46 |
import org.gvsig.fmap.geom.operation.GeometryOperationException; |
40 | 47 |
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException; |
48 |
import org.gvsig.fmap.geom.primitive.Curve; |
|
49 |
import org.gvsig.fmap.geom.primitive.Line; |
|
41 | 50 |
import org.gvsig.fmap.geom.primitive.Point; |
51 |
import org.gvsig.fmap.geom.primitive.Surface; |
|
52 |
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol; |
|
42 | 53 |
import org.gvsig.tools.dispose.DisposableIterator; |
43 | 54 |
import org.gvsig.tools.dynobject.DynObject; |
44 | 55 |
import org.gvsig.tools.exception.BaseException; |
... | ... | |
58 | 69 |
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameter; |
59 | 70 |
import org.gvsig.vectorediting.lib.spi.EditingProvider; |
60 | 71 |
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory; |
72 |
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator; |
|
73 |
import org.gvsig.vectorediting.lib.spi.EditingProviderManager; |
|
61 | 74 |
import org.gvsig.vectorediting.lib.spi.EditingProviderServices; |
62 | 75 |
|
63 | 76 |
/** |
... | ... | |
121 | 134 |
throws DrawServiceException { |
122 | 135 |
DefaultDrawingStatus drawingStatus = new DefaultDrawingStatus(); |
123 | 136 |
|
137 |
GeometryManager geometryManager = GeometryLocator.getGeometryManager(); |
|
138 |
EditingProviderManager editingProviderManager = |
|
139 |
EditingProviderLocator.getProviderManager(); |
|
140 |
EditingProviderServices editingProviderServices = |
|
141 |
(EditingProviderServices) getProviderServices(); |
|
142 |
int subtype; |
|
143 |
try { |
|
144 |
subtype = editingProviderServices.getSubType(featureStore); |
|
145 |
} catch (DataException e2) { |
|
146 |
throw new DrawServiceException(e2); |
|
147 |
} |
|
148 |
ISymbol lineSymbolEditing = editingProviderManager.getSymbol("line-symbol-editing"); |
|
149 |
ISymbol auxiliarylineSymbolEditing = editingProviderManager.getSymbol("auxiliary-line-symbol-editing"); |
|
150 |
ISymbol polygonSymbolEditing = editingProviderManager.getSymbol("polygon-symbol-editing"); |
|
151 |
ISymbol auxiliaryPointSymbolEditing = editingProviderManager.getSymbol("auxiliary-point-symbol-editing"); |
|
152 |
|
|
124 | 153 |
if (values != null) { |
125 | 154 |
|
126 | 155 |
FeatureSelection featureSelection = |
... | ... | |
128 | 157 |
Point firstPointValue = (Point) values.get(firstPoint); |
129 | 158 |
|
130 | 159 |
if (featureSelection != null && firstPointValue != null) { |
160 |
drawingStatus.addStatus(firstPointValue, auxiliaryPointSymbolEditing, ""); |
|
161 |
Line auxLine; |
|
162 |
try { |
|
163 |
auxLine = geometryManager.createLine(subtype); |
|
164 |
} catch (CreateGeometryException e1) { |
|
165 |
throw new DrawServiceException(e1); |
|
166 |
} |
|
167 |
auxLine.setPoints(firstPointValue, mousePosition); |
|
168 |
drawingStatus.addStatus(auxLine, auxiliarylineSymbolEditing, ""); |
|
169 |
|
|
131 | 170 |
DisposableIterator it = null; |
132 | 171 |
try { |
133 | 172 |
it = featureSelection.fastIterator(); |
... | ... | |
141 | 180 |
getMoveAffineTransform(firstPointValue, |
142 | 181 |
mousePosition); |
143 | 182 |
geometry.transform(at); |
144 |
drawingStatus.addGeometry(geometry); |
|
183 |
ISymbol symbol=null; |
|
184 |
if(geometry instanceof Curve || geometry instanceof MultiCurve){ |
|
185 |
symbol = lineSymbolEditing; |
|
186 |
} else if(geometry instanceof Surface || geometry instanceof MultiSurface){ |
|
187 |
symbol = polygonSymbolEditing; |
|
188 |
} else if(geometry instanceof Point || geometry instanceof MultiPoint){ |
|
189 |
symbol = auxiliaryPointSymbolEditing; |
|
190 |
} |
|
191 |
if(geometry instanceof Aggregate){ |
|
192 |
int primitivesNumber = ((Aggregate)geometry).getPrimitivesNumber(); |
|
193 |
for (int i = 0; i < primitivesNumber; i++) { |
|
194 |
drawingStatus.addStatus(((Aggregate)geometry).getPrimitiveAt(i), symbol, ""); |
|
195 |
} |
|
196 |
} else { |
|
197 |
drawingStatus.addStatus(geometry, symbol, ""); |
|
198 |
} |
|
199 |
// drawingStatus.addGeometry(geometry); |
|
145 | 200 |
} |
146 | 201 |
} catch (BaseException e) { |
147 | 202 |
throw new DrawServiceException(e); |
Also available in: Unified diff