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

View differences:

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