Changeset 2317 in josm for trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
- Timestamp:
- 2009-10-25T15:13:08+01:00 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
r2301 r2317 1203 1203 if (!isEnabled()) 1204 1204 return; 1205 Main.worker.submit(new DownloadTask(GenericRelationEditor.this)); 1205 Main.worker.submit(new DownloadTask( 1206 Collections.singletonList(getRelation()), 1207 getLayer(), 1208 memberTableModel, 1209 GenericRelationEditor.this) 1210 ); 1206 1211 } 1207 1212 … … 1369 1374 * 1370 1375 */ 1371 class DownloadTask extends PleaseWaitRunnable { 1376 public static class DownloadTask extends PleaseWaitRunnable { 1372 1377 private boolean cancelled; 1373 1378 private int conflictsCount; 1374 1379 private Exception lastException; 1375 1376 public DownloadTask(Dialog parent) { 1380 private List<Relation> relations; 1381 private OsmDataLayer curLayer; 1382 private MemberTableModel memberTableModel; 1383 1384 public DownloadTask(List<Relation> relations, OsmDataLayer curLayer, MemberTableModel memberTableModel, Dialog parent) { 1377 1385 super(tr("Download relation members"), new PleaseWaitProgressMonitor(parent), false /* 1378 1386 * don't … … 1380 1388 * exception 1381 1389 */); 1390 this.relations = relations; 1391 this.curLayer = curLayer; 1392 this.memberTableModel = memberTableModel; 1393 } 1394 1395 public DownloadTask(List<Relation> relations, OsmDataLayer curLayer, MemberTableModel memberTableModel) { 1396 super(tr("Download relation members"), new PleaseWaitProgressMonitor(), false /* 1397 * don't 1398 * ignore 1399 * exception 1400 */); 1401 this.relations = relations; 1402 this.curLayer = curLayer; 1403 this.memberTableModel = memberTableModel; 1382 1404 } 1383 1405 … … 1390 1412 @Override 1391 1413 protected void finish() { 1414 Main.map.repaint(); 1392 1415 if (cancelled) 1393 1416 return; 1394 memberTableModel.updateMemberReferences(getLayer().data); 1417 if (memberTableModel != null) { 1418 memberTableModel.fireTableDataChanged(); 1419 } 1395 1420 if (lastException != null) { 1396 1421 ExceptionDialogUtil.explainException(lastException); … … 1410 1435 protected void realRun() throws SAXException, IOException, OsmTransferException { 1411 1436 try { 1412 progressMonitor.indeterminateSubTask(""); 1413 OsmServerObjectReader reader = new OsmServerObjectReader(getRelation().getId(), OsmPrimitiveType.RELATION, 1414 true); 1415 DataSet dataSet = reader.parseOsm(progressMonitor 1416 .createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)); 1417 if (dataSet != null) { 1418 final MergeVisitor visitor = new MergeVisitor(getLayer().data, dataSet); 1419 visitor.merge(); 1420 1421 // copy the merged layer's data source info 1422 for (DataSource src : dataSet.dataSources) { 1423 getLayer().data.dataSources.add(src); 1437 boolean changed = false; 1438 for (Relation relation : relations) { 1439 progressMonitor.indeterminateSubTask(""); 1440 OsmServerObjectReader reader = new OsmServerObjectReader(relation.getId(), OsmPrimitiveType.RELATION, 1441 true); 1442 DataSet dataSet = reader.parseOsm(progressMonitor 1443 .createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)); 1444 if (dataSet != null) { 1445 changed = true; 1446 final MergeVisitor visitor = new MergeVisitor(curLayer.data, dataSet); 1447 visitor.merge(); 1448 1449 // copy the merged layer's data source info 1450 for (DataSource src : dataSet.dataSources) { 1451 curLayer.data.dataSources.add(src); 1452 } 1453 if (!visitor.getConflicts().isEmpty()) { 1454 curLayer.getConflicts().add(visitor.getConflicts()); 1455 conflictsCount = visitor.getConflicts().size(); 1456 } 1424 1457 } 1425 // FIXME: this is necessary because there are dialogs listening 1426 // for DataChangeEvents which manipulate Swing components on this 1427 // thread. 1428 // 1458 } 1459 // FIXME: this is necessary because there are dialogs listening 1460 // for DataChangeEvents which manipulate Swing components on this 1461 // thread. 1462 // 1463 if (changed) { 1429 1464 SwingUtilities.invokeLater(new Runnable() { 1430 1465 public void run() { 1431 getLayer().fireDataChange();1466 curLayer.fireDataChange(); 1432 1467 } 1433 1468 }); 1434 if (!visitor.getConflicts().isEmpty()) {1435 getLayer().getConflicts().add(visitor.getConflicts());1436 conflictsCount = visitor.getConflicts().size();1437 }1438 1469 } 1439 1470 } catch (Exception e) {
Note:
See TracChangeset
for help on using the changeset viewer.
