Ticket #2643: linkedmembers2.diff
File linkedmembers2.diff, 3.9 KB (added by , 16 years ago) |
---|
-
src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
337 337 338 338 RelationMember em = clone.members.get(i); 339 339 boolean linked = false; 340 Node n1 = null;341 Node n2 = null;342 340 RelationMember m = em; 341 RelationMember way1 = null; 342 RelationMember way2 = null; 343 343 344 while (m != null) { 344 345 if (m.member instanceof Way) { 345 n1 = ((Way) m.member).lastNode();346 way1 = m; 346 347 break; 347 348 } else if (m.member instanceof Relation) { 348 349 m = ((Relation)m.member).lastMember(); … … 350 351 break; 351 352 } 352 353 } 353 if (i<clone.members.size()-1) { 354 m = clone.members.get(i+1); 355 while (m != null) { 356 if (m.member instanceof Way) { 357 n2 = ((Way) (m.member)).firstNode(); 358 break; 359 } else if (m.member instanceof Relation) { 360 m = ((Relation)(m.member)).firstMember(); 361 } else { 362 break; 354 if (way1 != null) { 355 int next = i+1; 356 while (next < clone.members.size()) { 357 m = clone.members.get(next++); 358 while (m != null) { 359 if (m.member instanceof Way) { 360 way2 = m; 361 break; 362 } else if (m.member instanceof Relation) { 363 m = ((Relation)(m.member)).firstMember(); 364 } else { 365 break; 366 } 363 367 } 368 if (way2 != null) 369 break; 370 } 371 } 372 373 if (way2 != null) { 374 Node way1first = ((Way)(way1.member)).firstNode(); 375 Node way1last = ((Way)(way1.member)).lastNode(); 376 Node way2first = ((Way)(way2.member)).firstNode(); 377 Node way2last = ((Way)(way2.member)).lastNode(); 378 if (way1.role.equals("forward")) { 379 way1first = null; 380 } else if (way1.role.equals("backward")) { 381 way1last = null; 364 382 } 383 if (way2.role.equals("forward")) { 384 way2last = null; 385 } else if (way2.role.equals("backward")) { 386 way2first = null; 387 } 388 389 if (way1first != null && way2first != null && way1first.equals(way2first)) { 390 linked = true; 391 } else if (way1first != null && way2last != null && way1first.equals(way2last)) { 392 linked = true; 393 } else if (way1last != null && way2first != null && way1last.equals(way2first)) { 394 linked = true; 395 } else if (way1last != null && way2last != null && way1last.equals(way2last)) { 396 linked = true; 397 } 398 399 memberData.addRow(new Object[]{em.role, em.member, linked ? tr("yes") : tr("no")}); 400 } else { 401 memberData.addRow(new Object[]{em.role, em.member, ""}); 365 402 } 366 linked = (n1 != null) && n1.equals(n2);367 403 368 404 // end of section to determine linkedness. 369 370 memberData.addRow(new Object[]{em.role, em.member, linked ? tr("yes") : tr("no")});371 405 } 372 406 status.setText(tr("Members: {0}", clone.members.size())); 373 407 }