Ticket #2801: junction_nodes.patch

File junction_nodes.patch, 4.7 KB (added by anonymous, 16 years ago)

First attempt of a junction nodes mappaint patch

  • src/org/openstreetmap/josm/gui/mappaint/ElemStyle.java

     
    1616    public String code;
    1717    Collection<Rule> rules = null;
    1818
     19    public enum NodeBorderStyle {
     20        NONE, SQUARE, TRIANGLE
     21    }
     22
    1923    @Override
    2024    public boolean equals(Object o) {
    2125        return (o instanceof ElemStyle) && (((ElemStyle) o).getCode().equals(getCode()));
  • src/org/openstreetmap/josm/gui/mappaint/SimpleNodeElemStyle.java

     
    2020            boolean selected) {
    2121        Node n = (Node)primitive;
    2222        String name = painter.isShowNames()?painter.getNodeName(n):null;
     23        NodeBorderStyle border = NodeBorderStyle.NONE;
     24        if (n.isConnection()) {
     25            border = NodeBorderStyle.SQUARE;
     26        }
    2327        if (n.isHighlighted()) {
    24             painter.drawNode(n, settings.getHighlightColor(), settings.getSelectedNodeSize(), settings.isFillSelectedNode(), name);
     28            painter.drawNode(n, settings.getHighlightColor(), settings.getSelectedNodeSize(), settings.isFillSelectedNode(), name, border);
    2529        } else if (selected) {
    26             painter.drawNode(n, settings.getSelectedColor(), settings.getSelectedNodeSize(), settings.isFillSelectedNode(), name);
     30            painter.drawNode(n, settings.getSelectedColor(), settings.getSelectedNodeSize(), settings.isFillSelectedNode(), name, border);
    2731        } else if (n.isTagged()) {
    28             painter.drawNode(n, settings.getNodeColor(), settings.getTaggedNodeSize(), settings.isFillUnselectedNode(), name);
     32            painter.drawNode(n, settings.getNodeColor(), settings.getTaggedNodeSize(), settings.isFillUnselectedNode(), name, border);
    2933        } else if (painter.isInactive() || n.isDisabled()) {
    30             painter.drawNode(n, settings.getInactiveColor(), settings.getUnselectedNodeSize(), settings.isFillUnselectedNode(), name);
     34            painter.drawNode(n, settings.getInactiveColor(), settings.getUnselectedNodeSize(), settings.isFillUnselectedNode(), name, border);
    3135        } else {
    32             painter.drawNode(n, settings.getNodeColor(), settings.getUnselectedNodeSize(), settings.isFillUnselectedNode(), name);
     36            painter.drawNode(n, settings.getNodeColor(), settings.getUnselectedNodeSize(), settings.isFillUnselectedNode(), name, border);
    3337        }
    3438    }
    3539
  • src/org/openstreetmap/josm/data/osm/Node.java

     
    195195    public void updatePosition() {
    196196        // Do nothing for now, but in future replace CachedLatLon with simple doubles and update precalculated EastNorth value here
    197197    }
     198
     199    public boolean isConnection() {
     200        return (OsmPrimitive.getFilteredList(getReferrers(), Way.class)).size() > 1;
     201    }
    198202}
  • src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java

     
    2222import org.openstreetmap.josm.data.osm.Node;
    2323import org.openstreetmap.josm.data.osm.Way;
    2424import org.openstreetmap.josm.gui.NavigatableComponent;
     25import org.openstreetmap.josm.gui.mappaint.ElemStyle.NodeBorderStyle;
    2526import org.openstreetmap.josm.tools.ImageProvider;
    2627import org.openstreetmap.josm.tools.LanguageInfo;
    2728
     
    210211     * @param color The color of the node.
    211212     */
    212213    public void drawNode(Node n, Color color, int size, boolean fill, String name) {
     214        drawNode(n, color, size, fill, name, NodeBorderStyle.NONE);
     215    }
     216
     217    public void drawNode(Node n, Color color, int size, boolean fill, String name, NodeBorderStyle border) {
    213218        if (size > 1) {
    214219            int radius = size / 2;
    215220            Point p = nc.getPoint(n);
     
    229234                g.drawRect(p.x - radius, p.y - radius, size, size);
    230235            }
    231236
     237            if (border == NodeBorderStyle.SQUARE) {
     238                g.drawRect(p.x - 2*radius, p.y - 2*radius, 2*size, 2*size);
     239            }
     240
    232241            if(name != null)            {
    233242                if (inactive || n.isDisabled()) {
    234243                    g.setColor(inactiveColor);