public final class OrthogonalizeAction extends JosmAction
Modifier and Type | Class and Description |
---|---|
private static class |
OrthogonalizeAction.Direction |
private static class |
OrthogonalizeAction.EN
Class contains some auxiliary functions
|
protected static class |
OrthogonalizeAction.InvalidUserInputException
Exception: unsuited user input
|
protected static class |
OrthogonalizeAction.RejectedAngleException
Exception: angle cannot be recognized as 0, 90, 180 or 270 degrees
|
static class |
OrthogonalizeAction.Undo
Undo the previous orthogonalization for certain nodes.
|
private static class |
OrthogonalizeAction.WayData
Class contains everything we need to know about a single way.
|
JosmAction.ActiveLayerChangeAdapter, JosmAction.LayerChangeAdapter, JosmAction.SelectionChangeAdapter
Modifier and Type | Field and Description |
---|---|
private static java.util.Map<Node,EastNorth> |
rememberMovements
Remember movements, so the user can later undo it for certain nodes
|
private static double |
TOLERANCE1
excepted deviation from an angle of 0, 90, 180, 360 degrees
maximum value: 45 degrees
Current policy is to except just everything, no matter how strange the result would be.
|
private static double |
TOLERANCE2 |
private static java.lang.String |
USAGE |
sc
Constructor and Description |
---|
OrthogonalizeAction()
Constructs a new
OrthogonalizeAction . |
Modifier and Type | Method and Description |
---|---|
void |
actionPerformed(java.awt.event.ActionEvent e) |
private static int |
angleToDirectionChange(double a,
double deltaMax)
Recognize angle to be approximately 0, 90, 180 or 270 degrees.
|
private static java.util.List<java.util.List<OrthogonalizeAction.WayData>> |
buildGroups(java.util.List<OrthogonalizeAction.WayData> wayDataList)
Collect groups of ways with common nodes in order to orthogonalize each group separately.
|
private static void |
extendGroupRec(java.util.List<OrthogonalizeAction.WayData> group,
OrthogonalizeAction.WayData newGroupMember,
java.util.List<OrthogonalizeAction.WayData> remaining) |
(package private) static SequenceCommand |
orthogonalize(java.lang.Iterable<OsmPrimitive> selection)
Rectifies the selection
|
private static java.util.Collection<Command> |
orthogonalize(java.util.List<OrthogonalizeAction.WayData> wayDataList,
java.util.List<Node> headingNodes)
Outline:
1.
|
private static double |
standard_angle_0_to_2PI(double a)
Make sure angle (up to 2*Pi) is in interval [ 0, 2*Pi ).
|
private static double |
standard_angle_mPI_to_PI(double a)
Make sure angle (up to 2*Pi) is in interval ( -Pi, Pi ].
|
protected void |
updateEnabledState()
Override in subclasses to update the enabled state of the action when
something in the JOSM state changes, i.e.
|
protected void |
updateEnabledState(java.util.Collection<? extends OsmPrimitive> selection)
Override in subclasses to update the enabled state of the action if the
collection of selected primitives changes.
|
destroy, getCurrentDataSet, getEditLayer, getLayerManager, getShortcut, initEnabledState, installAdapters, listenToLayerChange, listenToSelectionChange, setTooltip, updateEnabledStateOnCurrentSelection, waitFuture
private static final java.lang.String USAGE
private static final double TOLERANCE1
private static final double TOLERANCE2
private static final java.util.Map<Node,EastNorth> rememberMovements
public OrthogonalizeAction()
OrthogonalizeAction
.public void actionPerformed(java.awt.event.ActionEvent e)
static SequenceCommand orthogonalize(java.lang.Iterable<OsmPrimitive> selection) throws OrthogonalizeAction.InvalidUserInputException
selection
- the selection which should be rectifiedOrthogonalizeAction.InvalidUserInputException
- if the selection is invalidprivate static java.util.List<java.util.List<OrthogonalizeAction.WayData>> buildGroups(java.util.List<OrthogonalizeAction.WayData> wayDataList)
wayDataList
- list of waysprivate static void extendGroupRec(java.util.List<OrthogonalizeAction.WayData> group, OrthogonalizeAction.WayData newGroupMember, java.util.List<OrthogonalizeAction.WayData> remaining)
private static java.util.Collection<Command> orthogonalize(java.util.List<OrthogonalizeAction.WayData> wayDataList, java.util.List<Node> headingNodes) throws OrthogonalizeAction.InvalidUserInputException
wayDataList
- list of waysheadingNodes
- list of heading nodesOrthogonalizeAction.InvalidUserInputException
- if selected ways have an angle different from 90 or 180 degreesprivate static double standard_angle_0_to_2PI(double a)
a
- angleprivate static double standard_angle_mPI_to_PI(double a)
a
- angleprivate static int angleToDirectionChange(double a, double deltaMax) throws OrthogonalizeAction.RejectedAngleException
a
- angle, in radiansdeltaMax
- maximum tolerance, in radiansOrthogonalizeAction.RejectedAngleException
- in case of invalid angleprotected void updateEnabledState()
JosmAction
JosmAction.updateEnabledState(Collection)
to respond to changes in the collection
of selected primitives.
Default behavior is empty.updateEnabledState
in class JosmAction
JosmAction.updateEnabledState(Collection)
,
JosmAction.initEnabledState()
,
JosmAction.listenToLayerChange()
protected void updateEnabledState(java.util.Collection<? extends OsmPrimitive> selection)
JosmAction
updateEnabledState
in class JosmAction
selection
- the collection of selected primitives; may be empty, but not nullJosmAction.updateEnabledState()
,
JosmAction.initEnabledState()
,
JosmAction.listenToSelectionChange()