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
|
private static class |
OrthogonalizeAction.InvalidUserInputException
Exception: unsuited user input
|
private 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 singe way.
|
Modifier and Type | Field and Description |
---|---|
private static 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 String |
USAGE |
sc
changeSupport, enabled
ACCELERATOR_KEY, ACTION_COMMAND_KEY, DEFAULT, DISPLAYED_MNEMONIC_INDEX_KEY, LARGE_ICON_KEY, LONG_DESCRIPTION, MNEMONIC_KEY, NAME, SELECTED_KEY, SHORT_DESCRIPTION, SMALL_ICON
Constructor and Description |
---|
OrthogonalizeAction()
Constructor
|
Modifier and Type | Method and Description |
---|---|
void |
actionPerformed(ActionEvent e) |
private static int |
angleToDirectionChange(double a,
double deltaMax)
Recognize angle to be approximately 0, 90, 180 or 270 degrees.
|
private static List<List<OrthogonalizeAction.WayData>> |
buildGroups(List<OrthogonalizeAction.WayData> wayDataList)
Collect groups of ways with common nodes in order to orthogonalize each group separately.
|
private static void |
extendGroupRec(List<OrthogonalizeAction.WayData> group,
OrthogonalizeAction.WayData newGroupMember,
List<OrthogonalizeAction.WayData> remaining) |
private static Collection<Command> |
orthogonalize(List<OrthogonalizeAction.WayData> wayDataList,
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()
Don't check, if the current selection is suited for orthogonalization.
|
destroy, getCurrentDataSet, getEditLayer, getShortcut, initEnabledState, installAdapters, setTooltip, updateEnabledState
addPropertyChangeListener, clone, firePropertyChange, getKeys, getPropertyChangeListeners, getValue, isEnabled, putValue, removePropertyChangeListener, setEnabled
private static final double TOLERANCE1
private static final double TOLERANCE2
private static final Map<Node,EastNorth> rememberMovements
public OrthogonalizeAction()
public void actionPerformed(ActionEvent e)
private static List<List<OrthogonalizeAction.WayData>> buildGroups(List<OrthogonalizeAction.WayData> wayDataList)
private static void extendGroupRec(List<OrthogonalizeAction.WayData> group, OrthogonalizeAction.WayData newGroupMember, List<OrthogonalizeAction.WayData> remaining)
private static Collection<Command> orthogonalize(List<OrthogonalizeAction.WayData> wayDataList, List<Node> headingNodes) throws OrthogonalizeAction.InvalidUserInputException
private static double standard_angle_0_to_2PI(double a)
private static double standard_angle_mPI_to_PI(double a)
private static int angleToDirectionChange(double a, double deltaMax) throws OrthogonalizeAction.RejectedAngleException
protected void updateEnabledState()
updateEnabledState
in class JosmAction
JosmAction.updateEnabledState(Collection)
,
JosmAction.initEnabledState()