Revision 3226 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.swing/org.gvsig.vectorediting.swing.impl/src/main/java/org/gvsig/vectorediting/swing/impl/DefaultEditingBehavior.java

View differences:

DefaultEditingBehavior.java
33 33
import java.util.Iterator;
34 34
import java.util.Set;
35 35
import javax.swing.SwingUtilities;
36
import org.gvsig.euclidean.EuclideanLine2D;
37
import org.gvsig.euclidean.EuclideanManager;
36 38
import org.gvsig.fmap.geom.Geometry;
37 39
import org.gvsig.fmap.geom.GeometryLocator;
40
import org.gvsig.fmap.geom.GeometryUtils;
38 41
import org.gvsig.fmap.geom.aggregate.MultiPoint;
39 42
import org.gvsig.fmap.geom.primitive.Point;
40 43
import org.gvsig.fmap.mapcontext.ViewPort;
......
48 51
import org.gvsig.tools.ToolsLocator;
49 52
import org.gvsig.tools.exception.BaseException;
50 53
import org.gvsig.tools.i18n.I18nManager;
54
import org.gvsig.tools.util.ToolsUtilLocator;
51 55
import org.gvsig.vectorediting.lib.api.DrawingStatus;
52 56
import org.gvsig.vectorediting.lib.api.DrawingStatus.Status;
53 57
import org.gvsig.vectorediting.lib.api.EditingService;
......
55 59
import org.gvsig.vectorediting.lib.api.EditingServiceParameter.TYPE;
56 60
import org.gvsig.vectorediting.lib.api.exceptions.CreateEditingBehaviorException;
57 61
import org.gvsig.vectorediting.lib.api.exceptions.VectorEditingException;
62
import org.gvsig.vectorediting.swing.api.EditingContext;
58 63
import org.gvsig.vectorediting.swing.api.EditingSwingLocator;
59 64
import org.gvsig.vectorediting.swing.api.EditingSwingManager;
60 65
import org.gvsig.vectorediting.swing.api.contextmenu.EditingContextMenu;
......
146 151
                }
147 152

  
148 153
                try {
149
                    //FIXME: Estar?a bien hacer esto
150
                    editingContext.setValue(currentParam, point);
154
                    editingContext.setValue(currentParam, ortoPoint(point));
151 155
                    editingContext.nextParameter();
152

  
153
//                    editingContext.getActiveService().setValue(point);
154 156
                } catch (VectorEditingException ex) {
155 157
                    I18nManager i18nManager = ToolsLocator.getI18nManager();
156 158
                    editingContext.showConsoleMessage(i18nManager
157 159
                        .getTranslation("invalid_option"));
158 160
                }
159

  
160
//                editingContext.nextParameter();
161

  
162 161
            } else if (SwingUtilities.isRightMouseButton(e)) {
163 162

  
164 163
                EditingSwingManager swingManager =
......
173 172
            }
174 173
        }
175 174
    }
175
    
176
    private Point ortoPoint(Point point){
177
        if(editingContext.getDrawMode() == EditingContext.DRAWMODE_NORMAL){
178
            return point;
179
        }
180
        Point refPoint = (Point) editingContext.getContextSymbolTable().value("$p");
181
        if(refPoint == null){
182
            return point;
183
        }
184
        EuclideanManager euclideanManager = ToolsUtilLocator.getEuclideanManager();
185
        EuclideanLine2D line = euclideanManager.createLine2D(refPoint.getX(), refPoint.getY(), point.getX(), point.getY());
186
        double m = line.getSlope();
187
        Point result;
188
        if(Math.abs(m)<=1){
189
            result = GeometryUtils.createPoint(point.getX(), refPoint.getY());
190
         } else {
191
            result = GeometryUtils.createPoint(refPoint.getX(), point.getY());
192
            
193
        }
194
        
195
        
196
        return result;
197
    }
176 198

  
177 199
    @Override
178 200
    public void mouseEntered(MouseEvent e) throws BehaviorException {
......
207 229
        try {
208 230
            helperGeo =
209 231
                editingContext.getActiveService().getDrawingStatus(
210
                    adjustedPoint);
232
                            ortoPoint(adjustedPoint));
211 233
        } catch (VectorEditingException e) {
212 234
            logger.info("An error ocurred when draw service geometries", e);
213 235
        }

Also available in: Unified diff