Ignore:
Timestamp:
2012-07-17T09:34:34+02:00 (7 years ago)
Author:
Don-vip
Message:

fix #7867, see #7505, see #7847 - Handle deleted nodes without coordinates in history

File:
1 edited

Legend:

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

    r5266 r5346  
    1515
    1616import org.openstreetmap.josm.data.coor.CoordinateFormat;
     17import org.openstreetmap.josm.data.coor.LatLon;
    1718import org.openstreetmap.josm.data.osm.history.HistoryNode;
    1819import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
     
    256257            HistoryNode oppositeNode = (HistoryNode) opposite;
    257258
     259            LatLon coord = node.getCoords();
     260            LatLon oppositeCoord = oppositeNode.getCoords();
     261           
    258262            // display the coordinates
    259263            //
    260             lblLat.setText(node.getCoords().latToString(CoordinateFormat.DECIMAL_DEGREES));
    261             lblLon.setText(node.getCoords().lonToString(CoordinateFormat.DECIMAL_DEGREES));
     264            lblLat.setText(coord != null ? coord.latToString(CoordinateFormat.DECIMAL_DEGREES) : tr("Deleted"));
     265            lblLon.setText(coord != null ? coord.lonToString(CoordinateFormat.DECIMAL_DEGREES) : tr("Deleted"));
    262266
    263267            // update background color to reflect differences in the coordinates
    264268            //
    265             if (node.getCoords().lat() == oppositeNode.getCoords().lat()) {
     269            if (coord == oppositeCoord ||
     270                    (coord != null && oppositeCoord != null && coord.lat() == oppositeCoord.lat())) {
    266271                lblLat.setBackground(Color.WHITE);
    267272            } else {
    268273                lblLat.setBackground(BGCOLOR_DIFFERENCE);
    269274            }
    270             if (node.getCoords().lon() == oppositeNode.getCoords().lon()) {
     275            if (coord == oppositeCoord ||
     276                    (coord != null && oppositeCoord != null && coord.lon() == oppositeCoord.lon())) {
    271277                lblLon.setBackground(Color.WHITE);
    272278            } else {
    273279                lblLon.setBackground(BGCOLOR_DIFFERENCE);
    274280            }
    275 
    276281        }
    277282
     
    322327            HistoryNode oppositeNode = (HistoryNode) opposite;
    323328
     329            LatLon coord = node.getCoords();
     330            LatLon oppositeCoord = oppositeNode.getCoords();
     331           
    324332            // update distance
    325333            //
    326             double distance = node.getCoords().greatCircleDistance(oppositeNode.getCoords());
    327             if (distance > 0) {
    328                 lblDistance.setBackground(BGCOLOR_DIFFERENCE);
     334            if (coord != null && oppositeCoord != null) {
     335                double distance = coord.greatCircleDistance(oppositeCoord);
     336                if (distance > 0) {
     337                    lblDistance.setBackground(BGCOLOR_DIFFERENCE);
     338                } else {
     339                    lblDistance.setBackground(Color.WHITE);
     340                }
     341                lblDistance.setText(NavigatableComponent.getDistText(distance));
    329342            } else {
    330                 lblDistance.setBackground(Color.WHITE);
     343                lblDistance.setBackground(coord != oppositeCoord ? BGCOLOR_DIFFERENCE : Color.WHITE);
     344                lblDistance.setText(tr("Deleted"));
    331345            }
    332             lblDistance.setText(NavigatableComponent.getDistText(distance));
    333346        }
    334347    }
Note: See TracChangeset for help on using the changeset viewer.