Ticket #3407: osb_npe_and_warnings.patch

File osb_npe_and_warnings.patch, 5.0 KB (added by xeen, 17 years ago)
  • src/org/openstreetmap/josm/plugins/osb/api/DownloadAction.java

     
    8484            double lat = Double.parseDouble(m.group(3));
    8585            double lon = Double.parseDouble(m.group(2));
    8686            LatLon latlon = new LatLon(lat, lon);
    87             Node osmNode = new Node(latlon);
    88             osmNode.id = Long.parseLong(m.group(1));
     87            Node osmNode = new Node(Long.parseLong(m.group(1)));
     88            osmNode.setCoor(latlon);
     89            osmNode.incomplete = false;
    8990            osmNode.put("id", m.group(1));
    9091            osmNode.put("note", m.group(4));
    9192            osmNode.put("openstreetbug", "FIXME");
  • src/org/openstreetmap/josm/plugins/osb/gui/OsbDialog.java

     
    187187        Collections.sort(sortedList, new BugComparator());
    188188
    189189        for (Node node : sortedList) {
    190             if (!node.deleted) {
     190            if (!node.isDeleted()) {
    191191                model.addElement(new OsbListItem(node));
    192192            }
    193193        }
     
    202202            OsbAction.setSelectedNode(null);
    203203            return;
    204204        }
    205 
     205       
     206       
    206207        List<OsmPrimitive> selected = new ArrayList<OsmPrimitive>();
    207208        for (Object listItem : list.getSelectedValues()) {
    208209            Node node = ((OsbListItem) listItem).getNode();
     
    217218            }
    218219
    219220            OsbAction.setSelectedNode(node);
    220 
    221             scrollToSelected(node);
    222 
    223             if (fireSelectionChanged) {
    224                 Main.main.getCurrentDataSet().setSelected(selected);
    225             }
     221            scrollToSelected(node);     
     222        }
     223       
     224        // CurrentDataSet may be null if there is no normal, edible map
     225        // If so, a temporary DataSet is created because it's the simplest way
     226        // to fire all necessary events so OSB updates its popups.
     227        DataSet ds = Main.main.getCurrentDataSet();
     228        if (fireSelectionChanged) {
     229            if(ds == null)
     230                ds = new DataSet();
     231            ds.setSelected(selected);
    226232        }
    227233    }
    228234
    229235    private void scrollToSelected(Node node) {
    230236        for (int i = 0; i < model.getSize(); i++) {
    231237            Node current = ((OsbListItem) model.get(i)).getNode();
    232             if (current.id == node.id) {
     238            if (current.getId()== node.getId()) {
    233239                list.scrollRectToVisible(list.getCellBounds(i, i));
    234240                list.setSelectedIndex(i);
    235241                return;
  • src/org/openstreetmap/josm/plugins/osb/gui/OsbListItem.java

     
    6262        if(obj instanceof OsbListItem) {
    6363            OsbListItem other = (OsbListItem)obj;
    6464            if(getNode() != null && other.getNode() != null) {
    65                 return getNode().id == other.getNode().id;
     65                return getNode().getId() == other.getNode().getId();
    6666            }
    6767        }
    6868
  • src/org/openstreetmap/josm/plugins/osb/OsbLayer.java

     
    124124            Node node = (Node) nodes[i];
    125125
    126126            // don't paint deleted nodes
    127             if(node.deleted)
     127            if(node.isDeleted())
    128128                continue;
    129129
    130130            Point p = mv.getPoint(node);
     
    148148        for (int i = 0; i < nodes.length; i++) {
    149149            Node node = (Node) nodes[i];
    150150           
    151             if(node.deleted || !selection.contains(node))
     151            if(node.isDeleted() || !selection.contains(node))
    152152                continue;
    153153           
    154154            // draw selection border
     
    159159            int height = icon.getIconHeight();
    160160           
    161161            g.setColor(ColorHelper.html2color(Main.pref.get("color.selected")));
    162             g.drawRect(p.x - (width / 2), p.y - (height / 2), 16, 16);
     162            g.drawRect(p.x-(width/2), p.y-(height/2), width-1, height-1);
    163163           
    164164            // draw description
    165165            String desc = node.get("note");
     
    209209        double minDistanceSq = Double.MAX_VALUE;
    210210        Node minPrimitive = null;
    211211        for (Node n : data.nodes) {
    212             if (n.deleted || n.incomplete)
     212            if (!n.isUsable())
    213213                continue;
    214214            Point sp = Main.map.mapView.getPoint(n);
    215215            double dist = p.distanceSq(sp);