Ticket #4120: OrthogonalizeGroups.patch
| File OrthogonalizeGroups.patch, 2.7 KB (added by , 16 years ago) |
|---|
-
src/org/openstreetmap/josm/actions/OrthogonalizeAction.java
10 10 import java.util.ArrayList; 11 11 import java.util.Arrays; 12 12 import java.util.Collection; 13 import java.util.Collections; 13 14 import java.util.HashMap; 14 15 import java.util.HashSet; 15 16 import java.util.LinkedList; … … 141 142 } 142 143 else if (p instanceof Way) { 143 144 wayDataList.add(new WayData((Way) p)); 144 } 145 else { // maybe a relation got selected... 145 } else 146 146 throw new InvalidUserInputException("Selection must consist only of ways and nodes."); 147 }148 147 } 149 if (wayDataList.isEmpty()) {148 if (wayDataList.isEmpty()) 150 149 throw new InvalidUserInputException("usage"); 151 }152 150 else { 153 151 if (nodeList.size() == 2) { 154 152 orthogonalize(wayDataList, nodeList); 155 153 } 156 154 else if (nodeList.isEmpty()) { 157 orthogonalize(wayDataList, nodeList); 158 } 159 else { 155 ArrayList<ArrayList<WayData>> groups = new ArrayList<ArrayList<WayData>>(); 156 for (WayData w: wayDataList) { 157 boolean add = false; 158 for (ArrayList<WayData> g: groups) { 159 for (WayData groupedWay: g) { 160 if (!Collections.disjoint(w.way.getNodes(), groupedWay.way.getNodes())) { 161 add = true; 162 break; 163 } 164 } 165 if (add) { 166 g.add(w); 167 } 168 } 169 if (!add) { 170 ArrayList<WayData> newGroup = new ArrayList<WayData>(); 171 newGroup.add(w); 172 groups.add(newGroup); 173 } 174 } 175 for (ArrayList<WayData> g: groups) { 176 orthogonalize(g, nodeList); 177 } 178 } else 160 179 throw new InvalidUserInputException("usage"); 161 }162 180 } 163 181 } catch (InvalidUserInputException ex) { 164 182 if (ex.getMessage().equals("usage")) {
