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
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