Revision 47671

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.fmap.control/src/main/java/org/gvsig/fmap/mapcontrol/tools/Behavior/EllipseBehavior.java
24 24
package org.gvsig.fmap.mapcontrol.tools.Behavior;
25 25

  
26 26
import java.awt.Color;
27
import java.awt.Point;
28 27
import java.awt.event.MouseEvent;
29 28
import java.awt.geom.Point2D;
30 29
import java.util.ArrayList;
31 30
import java.util.List;
32
import java.util.logging.Level;
33
import java.util.logging.Logger;
34
import org.gvsig.fmap.geom.Geometry;
35
import org.gvsig.fmap.geom.GeometryException;
36 31
import org.gvsig.fmap.geom.aggregate.MultiLine;
37 32
import org.gvsig.fmap.geom.primitive.Arc;
38
import org.gvsig.fmap.geom.primitive.Ellipse;
39

  
40
import org.gvsig.fmap.geom.primitive.Line;
41 33
import org.gvsig.fmap.mapcontext.ViewPort;
42 34
import org.gvsig.fmap.mapcontrol.MapControlDrawer;
43 35
import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
......
124 116
                m_FirstPoint = point;
125 117
            } else if (arrayX.size() == 1) {
126 118
                Point2D point = getMapControl().getViewPort().toMapPoint(e.getPoint());
127
                addPoint(point);
128
                m_SecondPoint = point;
119
                if(!point.equals(m_FirstPoint)){
120
                    addPoint(point);
121
                    m_SecondPoint = point;
122
                }
129 123
            } else {
130 124
                Point2D point = getMapControl().getViewPort().toMapPoint(e.getPoint());
131
                addPoint(point);
132
                m_ThirdPoint = point;
133
//                Double[] x = new Double[3];
134
//                Double[] y = new Double[3];
135
//
136
//                x[0] = m_FirstPoint.getX();
137
//                x[1] = m_SecondPoint.getX();
138
//                x[2] = m_ThirdPoint.getX();
139
//
140
//                y[0] = m_FirstPoint.getY();
141
//                y[1] = m_SecondPoint.getY();
142
//                y[2] = m_ThirdPoint.getY();
125
                if (!point.equals(m_SecondPoint)) {
126
                    addPoint(point);
127
                    m_ThirdPoint = point;
128
                }
143 129

  
144
		MeasureEvent event = new MeasureEvent((Double[]) arrayX.toArray(new Double[arrayX.size()]), (Double[]) arrayY.toArray(new Double[arrayY.size()]), e);
130
                MeasureEvent event = new MeasureEvent((Double[]) arrayX.toArray(new Double[arrayX.size()]), (Double[]) arrayY.toArray(new Double[arrayY.size()]), e);
145 131

  
146 132
                listener.ellipseFinished(event);
147 133

  
......
260 246

  
261 247
        if ((m_FirstPoint != null) && (m_SecondPoint != null) && (m_ThirdPoint != null)) {
262 248
            ViewPort vp = getMapControl().getMapContext().getViewPort();
263
//            Point2D p1 = vp.toMapPoint(m_FirstPoint);
264
//            Point2D p2 = vp.toMapPoint(m_SecondPoint);
265
//            Point2D p3 = vp.toMapPoint(m_ThirdPoint);
266
            
267 249
            Point2D p1 = m_FirstPoint;
268 250
            Point2D p2 = m_SecondPoint;
269 251
            Point2D p3 = m_ThirdPoint;
......
272 254
                MultiLine ellipse = null;
273 255
                try {
274 256
                    ellipse = createEllipse(p1, p2, p3).toLines();
275
                } catch (GeometryException ex) {
276
                    Logger.getLogger(EllipseBehavior.class.getName()).log(Level.SEVERE, null, ex);
257
                } catch (Exception ex) {
258
                    LOG.warn("Can't create ellipse", ex);
277 259
                }
278 260
                if (ellipse != null) {
279 261
                    mapControlDrawer.draw(ellipse);
......
289 271

  
290 272
        if ((m_FirstPoint != null) && (m_SecondPoint != null)) {
291 273
            ViewPort vp = getMapControl().getMapContext().getViewPort();
292
//            Point2D p1 = vp.toMapPoint(m_FirstPoint);
293
//            Point2D p2 = vp.toMapPoint(m_SecondPoint);
294 274
            Point2D p1 = m_FirstPoint;
295 275
            Point2D p2 = m_SecondPoint;
296 276
            radio = p1.distance(p2)/2;

Also available in: Unified diff