diff --git a/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java b/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
index a31e397..4387b86 100644
|
a
|
b
|
public class ReverseWayTagCorrector extends TagCorrector<Way> {
|
| 149 | 149 | |
| 150 | 150 | private static final StringSwitcher[] stringSwitchers = new StringSwitcher[] { |
| 151 | 151 | new StringSwitcher("left", "right"), |
| 152 | | new StringSwitcher("forwards", "backwards"), |
| | 152 | new StringSwitcher("forward", "backward"), |
| 153 | 153 | new StringSwitcher("east", "west"), |
| 154 | 154 | new StringSwitcher("north", "south"), |
| 155 | 155 | FORWARD_BACKWARD, UP_DOWN |
diff --git a/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java b/src/org/openstreetmap/josm/data/validation/tests/ConditionalKeys.java
index 89f6338..882a84e 100644
|
a
|
b
|
public class ConditionalKeys extends Test.TagTest {
|
| 55 | 55 | } |
| 56 | 56 | |
| 57 | 57 | public static boolean isDirection(String part) { |
| 58 | | return "forward".equals(part) || "backward".equals(part); |
| | 58 | return "forward".equals(part) || "backward".equals(part) || |
| | 59 | (part != null && (part.startsWith("north") || part.startsWith("south") || |
| | 60 | part.startsWith("east") || part.startsWith("west"))); |
| 59 | 61 | } |
| 60 | 62 | |
| 61 | 63 | public boolean isKeyValid(String key) { |
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTable.java
index 43ce6a5..5ef5b2a 100644
|
a
|
b
|
public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
|
| 283 | 283 | |
| 284 | 284 | private boolean hasGap() { |
| 285 | 285 | WayConnectionType connectionType = getConnectionType(); |
| 286 | | return connectionTypesOfInterest.contains(connectionType.direction) |
| | 286 | return connectionTypesOfInterest.contains(connectionType.direction.interpretation()) |
| 287 | 287 | && !(connectionType.linkNext && connectionType.linkPrev); |
| 288 | 288 | } |
| 289 | 289 | |
| … |
… |
public class MemberTable extends OsmPrimitivesTable implements IMemberModelListe
|
| 292 | 292 | WayConnectionType connectionType = getConnectionType(); |
| 293 | 293 | Way way = (Way) getMemberTableModel().getReferredPrimitive(getSelectedRows()[0]); |
| 294 | 294 | if (!connectionType.linkPrev) { |
| 295 | | getLayer().data.setSelected(WayConnectionType.Direction.FORWARD.equals(connectionType.direction) |
| | 295 | getLayer().data.setSelected(WayConnectionType.Direction.FORWARD.equals(connectionType.direction.interpretation()) |
| 296 | 296 | ? way.firstNode() : way.lastNode()); |
| 297 | 297 | AutoScaleAction.autoScale("selection"); |
| 298 | 298 | } else if (!connectionType.linkNext) { |
| 299 | | getLayer().data.setSelected(WayConnectionType.Direction.FORWARD.equals(connectionType.direction) |
| | 299 | getLayer().data.setSelected(WayConnectionType.Direction.FORWARD.equals(connectionType.direction.interpretation()) |
| 300 | 300 | ? way.lastNode() : way.firstNode()); |
| 301 | 301 | AutoScaleAction.autoScale("selection"); |
| 302 | 302 | } |
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java b/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableLinkedCellRenderer.java
index 11ff6f4..03c0e23 100644
|
a
|
b
|
public class MemberTableLinkedCellRenderer extends MemberTableCellRenderer {
|
| 161 | 161 | /* special icons */ |
| 162 | 162 | Image arrow = null; |
| 163 | 163 | switch (value.direction) { |
| | 164 | case NORTH: |
| | 165 | case EAST: |
| 164 | 166 | case FORWARD: |
| 165 | 167 | arrow = arrowDown; |
| 166 | 168 | break; |
| | 169 | case SOUTH: |
| | 170 | case WEST: |
| 167 | 171 | case BACKWARD: |
| 168 | 172 | arrow = arrowUp; |
| 169 | 173 | break; |
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSortUtils.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSortUtils.java
index 6747a0b..b756dcd 100644
|
a
|
b
|
final class RelationSortUtils {
|
| 49 | 49 | } |
| 50 | 50 | |
| 51 | 51 | static boolean isBackward(final RelationMember member){ |
| 52 | | return member.getRole().equals("backward"); |
| | 52 | return member.getRole().equals("backward") || member.getRole().startsWith("south") || member.getRole().startsWith("west"); |
| 53 | 53 | } |
| 54 | 54 | |
| 55 | 55 | static boolean isForward(final RelationMember member){ |
| 56 | | return member.getRole().equals("forward"); |
| | 56 | return member.getRole().equals("forward") || member.getRole().startsWith("north") || member.getRole().startsWith("east"); |
| 57 | 57 | } |
| 58 | 58 | |
| 59 | 59 | static boolean isOneway(final RelationMember member){ |
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionType.java
index e7e4619..a06aae1 100644
|
a
|
b
|
public class WayConnectionType {
|
| 25 | 25 | public Direction direction; |
| 26 | 26 | |
| 27 | 27 | public enum Direction { |
| 28 | | FORWARD, BACKWARD, ROUNDABOUT_LEFT, ROUNDABOUT_RIGHT, NONE; |
| | 28 | FORWARD { |
| | 29 | @Override |
| | 30 | public Direction interpretation() { |
| | 31 | return FORWARD; |
| | 32 | } |
| | 33 | }, |
| | 34 | BACKWARD { |
| | 35 | @Override |
| | 36 | public Direction interpretation() { |
| | 37 | return BACKWARD; |
| | 38 | } |
| | 39 | }, |
| | 40 | ROUNDABOUT_LEFT { |
| | 41 | @Override |
| | 42 | public Direction interpretation() { |
| | 43 | return FORWARD; |
| | 44 | } |
| | 45 | }, |
| | 46 | ROUNDABOUT_RIGHT { |
| | 47 | @Override |
| | 48 | public Direction interpretation() { |
| | 49 | return BACKWARD; |
| | 50 | } |
| | 51 | }, |
| | 52 | NONE { |
| | 53 | @Override |
| | 54 | public Direction interpretation() { |
| | 55 | return FORWARD; |
| | 56 | } |
| | 57 | }, |
| | 58 | NORTH { |
| | 59 | @Override |
| | 60 | public Direction interpretation() { |
| | 61 | return FORWARD; |
| | 62 | } |
| | 63 | }, |
| | 64 | SOUTH { |
| | 65 | @Override |
| | 66 | public Direction interpretation() { |
| | 67 | return BACKWARD; |
| | 68 | } |
| | 69 | }, |
| | 70 | EAST { |
| | 71 | @Override |
| | 72 | public Direction interpretation() { |
| | 73 | return FORWARD; |
| | 74 | } |
| | 75 | }, |
| | 76 | WEST { |
| | 77 | @Override |
| | 78 | public Direction interpretation() { |
| | 79 | return BACKWARD; |
| | 80 | } |
| | 81 | }; |
| | 82 | |
| | 83 | public abstract Direction interpretation(); |
| 29 | 84 | |
| 30 | 85 | public boolean isRoundabout() { |
| 31 | 86 | return this == ROUNDABOUT_RIGHT || this == ROUNDABOUT_LEFT; |
diff --git a/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java b/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
index b5cbd2e..69d94ca 100644
|
a
|
b
|
public class WayConnectionTypeCalculator {
|
| 248 | 248 | List<Node> refNodes= new ArrayList<Node>(); |
| 249 | 249 | |
| 250 | 250 | switch (ref_direction) { |
| | 251 | case NORTH: |
| | 252 | case EAST: |
| 251 | 253 | case FORWARD: |
| 252 | 254 | refNodes.add(way_ref.lastNode()); |
| 253 | 255 | break; |
| | 256 | case SOUTH: |
| | 257 | case WEST: |
| 254 | 258 | case BACKWARD: |
| 255 | 259 | refNodes.add(way_ref.firstNode()); |
| 256 | 260 | break; |
diff --git a/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java b/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java
index da1b136..4ee0dc4 100644
|
a
|
b
|
public final class TaggingPresetItems {
|
| 172 | 172 | public boolean required = false; |
| 173 | 173 | public long count = 0; |
| 174 | 174 | |
| | 175 | @Override |
| | 176 | public String toString() { |
| | 177 | return "[Role key = " + key + ", text = " + text + "]"; |
| | 178 | } |
| | 179 | |
| 175 | 180 | public void setType(String types) throws SAXException { |
| 176 | 181 | this.types = getType(types); |
| 177 | 182 | } |