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

View differences:

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