Ignore:
Timestamp:
2012-01-16T06:00:27+01:00 (13 years ago)
Author:
joshdoe
Message:

ImproveWayAccuracy: draw preview line when deleting node, and change key modifier

Use Alt or AltGr for deleting nodes rather than Ctrl+Alt

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/ImproveWayAccuracy/src/org/openstreetmap/josm/plugins/iwa/IWAMode.java

    r27474 r27475  
    9595    private final BasicStroke moveNodeStroke;
    9696    private final BasicStroke addNodeStroke;
     97    private final BasicStroke deleteNodeStroke;
    9798
    9899    private boolean selectionChangedBlocked = false;
     
    125126        addNodeStroke = new BasicStroke(1, BasicStroke.CAP_BUTT,
    126127                BasicStroke.JOIN_MITER);
     128        deleteNodeStroke = new BasicStroke(1, BasicStroke.CAP_BUTT,
     129                BasicStroke.JOIN_MITER);
    127130    }
    128131
     
    193196                return tr("Select a way that you want to make more accurate.");
    194197        } else {
    195             if (!ctrl)
    196                 return tr("Click to move the highlighted node. Hold Ctrl to add new nodes.");
     198            if (ctrl)
     199                return tr("Click to add a new node. Release Ctrl to move existing nodes or hold Alt to delete.");
     200            else if (alt)
     201                return tr("Click to delete the highlighted node. Release Alt to move existing nodes or hold Ctrl to add new nodes.");
    197202            else
    198                 return tr("Click to add a new node. Release Ctrl to move existing nodes.");
     203                return tr("Click to move the highlighted node. Hold Ctrl to add new nodes, or Alt to delete.");
    199204        }
    200205    }
     
    255260            // Finding endpoints
    256261            Point p1 = null, p2 = null;
    257             if (candidateSegment != null) {
     262            if (ctrl && candidateSegment != null) {
    258263                g.setStroke(addNodeStroke);
    259264                p1 = mv.getPoint(candidateSegment.getFirstNode());
    260265                p2 = mv.getPoint(candidateSegment.getSecondNode());
    261             } else if (candidateNode != null) {
     266            } else if (!alt && !ctrl && candidateNode != null) {
    262267                g.setStroke(moveNodeStroke);
    263268                List<Pair<Node, Node>> wpps = targetWay.getNodePairs(false);
     
    270275                        break;
    271276                }
    272             }
     277            } else if (alt && !ctrl && candidateNode != null) {
     278                g.setStroke(deleteNodeStroke);
     279                List<Node> nodes = targetWay.getNodes();
     280                int index = nodes.indexOf(candidateNode);
     281               
     282                // Only draw line if node is not first and/or last
     283                if (index != 0 && index != (nodes.size() - 1)) {
     284                    p1 = mv.getPoint(nodes.get(index - 1));
     285                    p2 = mv.getPoint(nodes.get(index + 1));
     286            }
     287                // TODO: indicate what part that will be deleted? (for end nodes)
     288            }
     289           
    273290
    274291            // Drawing preview lines
    275292            GeneralPath b = new GeneralPath();
     293            if (alt && !ctrl) {
     294                // In delete mode
     295                if (p1 != null && p2 != null) {
     296                    b.moveTo(p1.x, p1.y);
     297                    b.lineTo(p2.x, p2.y);
     298                }
     299            }
     300            else {
     301                // In add or move mode
    276302            if (p1 != null) {
    277303                b.moveTo(mousePos.x, mousePos.y);
     
    281307                b.moveTo(mousePos.x, mousePos.y);
    282308                b.lineTo(p2.x, p2.y);
     309            }
    283310            }
    284311            g.draw(b);
     
    417444                Main.main.undoRedo.add(new SequenceCommand(text, virtualCmds));
    418445
    419             } else if(alt && ctrl && candidateNode != null) {
     446            } else if(alt && !ctrl && candidateNode != null) {
     447                // Deleting the highlighted node
    420448               
    421449                //check to see if node has interesting keys
     
    490518        ctrl = (e.getModifiers() & ActionEvent.CTRL_MASK) != 0;
    491519        shift = (e.getModifiers() & ActionEvent.SHIFT_MASK) != 0;
    492         alt = (e.getModifiers() & ActionEvent.ALT_MASK) != 0;
     520        // accept either Alt key (including AltGr)
     521        alt = ((e.getModifiers() & (ActionEvent.ALT_MASK|InputEvent.ALT_GRAPH_MASK)) != 0);
    493522    }
    494523
     
    506535                    : cursorSelectHover, this);
    507536        } else if (state == State.improving) {
    508                 if(alt && ctrl) {
     537                if(alt && !ctrl) {
    509538                        mv.setNewCursor(cursorImproveDelete, this);
    510539                } else if(shift || dragging) {
Note: See TracChangeset for help on using the changeset viewer.