Revision 336

View differences:

org.gvsig.vectorediting.symmetry/trunk/org.gvsig.vectorediting.symmetry/org.gvsig.vectorediting.symmetry.lib/org.gvsig.vectorediting.symmetry.lib.prov/org.gvsig.vectorediting.symmetry.lib.prov.symmetry/src/main/java/org/gvsig/vectorediting/symmetry/lib/prov/symmetry/SymmetryEditingProvider.java
38 38
import org.gvsig.fmap.dal.feature.FeatureStore;
39 39
import org.gvsig.fmap.geom.Geometry;
40 40
import org.gvsig.fmap.geom.GeometryLocator;
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;
41 45
import org.gvsig.fmap.geom.operation.GeometryOperationException;
42 46
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
47
import org.gvsig.fmap.geom.primitive.Curve;
43 48
import org.gvsig.fmap.geom.primitive.Line;
44 49
import org.gvsig.fmap.geom.primitive.Point;
50
import org.gvsig.fmap.geom.primitive.Surface;
51
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
45 52
import org.gvsig.tools.ToolsLocator;
46 53
import org.gvsig.tools.dispose.DisposableIterator;
47 54
import org.gvsig.tools.dynobject.DynObject;
......
59 66
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameter;
60 67
import org.gvsig.vectorediting.lib.spi.EditingProvider;
61 68
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
69
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator;
70
import org.gvsig.vectorediting.lib.spi.EditingProviderManager;
62 71
import org.gvsig.vectorediting.lib.spi.EditingProviderServices;
63 72

  
64 73
public class SymmetryEditingProvider extends AbstractEditingProvider implements
......
123 132

  
124 133
    public DrawingStatus getDrawingStatus(Point mousePosition)
125 134
        throws DrawServiceException {
126
        DefaultDrawingStatus geometries = new DefaultDrawingStatus();
135
        DefaultDrawingStatus drawingStatus = new DefaultDrawingStatus();
136
        EditingProviderManager editingProviderManager =
137
            EditingProviderLocator.getProviderManager();
138
        ISymbol auxiliaryLineSymbolEditing = editingProviderManager.getSymbol("auxiliary-line-symbol-editing");
139
        ISymbol auxiliaryPointSymbolEditing = editingProviderManager.getSymbol("auxiliary-point-symbol-editing");
140
        ISymbol lineSymbolEditing = editingProviderManager.getSymbol("line-symbol-editing");
141
        ISymbol polygonSymbolEditing = editingProviderManager.getSymbol("polygon-symbol-editing");
127 142

  
143

  
128 144
        FeatureSelection selected =
129 145
            (FeatureSelection) values.get(selectionParameter);
130 146
        try {
......
147 163
                    line.addVertex(p1);
148 164
                    line.addVertex(p2);
149 165

  
150
                    geometries.addGeometry(line);
166
                    drawingStatus.addStatus(line, auxiliaryLineSymbolEditing, "");
151 167

  
152 168
                    DisposableIterator it;
153 169
                    it = selected.fastIterator();
......
161 177

  
162 178
                    while (it.hasNext()) {
163 179
                        Feature feat = (Feature) it.next();
164
                        Geometry geom =
165
                            feat.getDefaultGeometry().cloneGeometry();
166
                        geom.transform(at);
167
                        geometries.addGeometry(geom);
180
                        Geometry transformedGeometry = feat.getDefaultGeometry().cloneGeometry();
181
                        transformedGeometry.transform(at);
182

  
183
                        ISymbol symbol=null;
184
                        if(transformedGeometry instanceof Curve || transformedGeometry instanceof MultiCurve){
185
                            symbol = lineSymbolEditing;
186
                        } else if(transformedGeometry instanceof Surface || transformedGeometry instanceof MultiSurface){
187
                            symbol = polygonSymbolEditing;
188
                        } else if(transformedGeometry instanceof Point || transformedGeometry instanceof MultiPoint){
189
                            symbol = auxiliaryPointSymbolEditing;
190
                        }
191
                        if(transformedGeometry instanceof Aggregate){
192
                            int primitivesNumber = ((Aggregate)transformedGeometry).getPrimitivesNumber();
193
                            for (int i = 0; i < primitivesNumber; i++) {
194
                                drawingStatus.addStatus(((Aggregate)transformedGeometry).getPrimitiveAt(i), symbol, "");
195
                            }
196
                        } else {
197
                            drawingStatus.addStatus(transformedGeometry, symbol, "");
198
                        }
168 199
                    }
169 200
                    it.dispose();
170 201
                }
171
                return geometries;
202
                return drawingStatus;
172 203
            }
173 204
        } catch (Exception e) {
174 205
            throw new DrawServiceException(e);
175 206
        }
176

  
177 207
        return null;
178

  
179 208
    }
180 209

  
181 210
    private AffineTransform getSymmetryAffineTransform(Point axisP1,
org.gvsig.vectorediting.symmetry/trunk/org.gvsig.vectorediting.symmetry/org.gvsig.vectorediting.symmetry.lib/org.gvsig.vectorediting.symmetry.lib.prov/org.gvsig.vectorediting.symmetry.lib.prov.symmetry/src/main/java/org/gvsig/vectorediting/symmetry/lib/prov/symmetry/SymmetryEditingProviderFactory.java
77 77

  
78 78
        dynclass.addDynFieldString(PROVIDER_NAME_FIELD);
79 79
        dynclass.addDynFieldObject(FEATURE_STORE_FIELD);
80
        dynclass.addDynFieldObject(MAPCONTEXT_FIELD);
80 81

  
81 82
        return dynclass;
82 83
    }

Also available in: Unified diff