Ignore:
Timestamp:
2015-04-18T15:33:28+02:00 (9 years ago)
Author:
simon04
Message:

fix #6994 - History dialog: handle reversed ways better

This is achieved by comparing the reference elements in reversed order and
testing whether this diff requires less deletions+inserts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/history/HistoryBrowserModel.java

    r7299 r8219  
    8484    private HistoryOsmPrimitive latest;
    8585
    86     private VersionTableModel versionTableModel;
    87     private TagTableModel currentTagTableModel;
    88     private TagTableModel referenceTagTableModel;
    89     private DiffTableModel currentRelationMemberTableModel;
    90     private DiffTableModel referenceRelationMemberTableModel;
    91     private DiffTableModel referenceNodeListTableModel;
    92     private DiffTableModel currentNodeListTableModel;
     86    private final VersionTableModel versionTableModel;
     87    private final TagTableModel currentTagTableModel;
     88    private final TagTableModel referenceTagTableModel;
     89    private final DiffTableModel currentRelationMemberTableModel;
     90    private final DiffTableModel referenceRelationMemberTableModel;
     91    private final DiffTableModel referenceNodeListTableModel;
     92    private final DiffTableModel currentNodeListTableModel;
    9393
    9494    /**
     
    223223     */
    224224    protected void initNodeListTableModels() {
    225 
    226225        if(current.getType() != OsmPrimitiveType.WAY || reference.getType() != OsmPrimitiveType.WAY)
    227226            return;
     
    229228                ((HistoryWay)reference).getNodes().toArray(),
    230229                ((HistoryWay)current).getNodes().toArray());
    231         referenceNodeListTableModel.setRows(diff.referenceDiff);
    232         currentNodeListTableModel.setRows(diff.currentDiff);
    233 
    234         referenceNodeListTableModel.fireTableDataChanged();
    235         currentNodeListTableModel.fireTableDataChanged();
     230        referenceNodeListTableModel.setRows(diff.referenceDiff, diff.referenceReversed);
     231        currentNodeListTableModel.setRows(diff.currentDiff, false);
    236232    }
    237233
     
    239235        if(current.getType() != OsmPrimitiveType.RELATION || reference.getType() != OsmPrimitiveType.RELATION)
    240236            return;
    241 
    242237        TwoColumnDiff diff = new TwoColumnDiff(
    243238                ((HistoryRelation)reference).getMembers().toArray(),
    244239                ((HistoryRelation)current).getMembers().toArray());
    245 
    246         referenceRelationMemberTableModel.setRows(diff.referenceDiff);
    247         currentRelationMemberTableModel.setRows(diff.currentDiff);
    248 
    249         currentRelationMemberTableModel.fireTableDataChanged();
    250         referenceRelationMemberTableModel.fireTableDataChanged();
     240        referenceRelationMemberTableModel.setRows(diff.referenceDiff, diff.referenceReversed);
     241        currentRelationMemberTableModel.setRows(diff.currentDiff, false);
    251242    }
    252243
Note: See TracChangeset for help on using the changeset viewer.