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

View differences:

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