Changeset 10382 in josm for trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
- Timestamp:
- 2016-06-15T12:45:52+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
r10342 r10382 256 256 if (mode == Mode.MOVE) { 257 257 if (!dragInProgress() && virtualManager.activateVirtualNodeNearPoint(e.getPoint())) { 258 DataSet ds = get CurrentDataSet();258 DataSet ds = getLayerManager().getEditDataSet(); 259 259 if (ds != null && drawTargetHighlight) { 260 260 ds.setHighlightedVirtualNodes(virtualManager.virtualWays); … … 306 306 // only consider merge if ctrl is pressed and there are nodes in 307 307 // the selection that could be merged 308 if (!ctrl || get CurrentDataSet().getSelectedNodes().isEmpty()) {308 if (!ctrl || getLayerManager().getEditDataSet().getSelectedNodes().isEmpty()) { 309 309 c = "move"; 310 310 break; … … 348 348 private boolean removeHighlighting() { 349 349 boolean needsRepaint = false; 350 DataSet ds = get CurrentDataSet();350 DataSet ds = getLayerManager().getEditDataSet(); 351 351 if (ds != null && !ds.getHighlightedVirtualNodes().isEmpty()) { 352 352 needsRepaint = true; … … 427 427 case SCALE: 428 428 // if nothing was selected, select primitive under cursor for scaling or rotating 429 if (getCurrentDataSet().getSelected().isEmpty()) { 430 getCurrentDataSet().setSelected(asColl(nearestPrimitive)); 429 DataSet ds = getLayerManager().getEditDataSet(); 430 if (ds.getSelected().isEmpty()) { 431 ds.setSelected(asColl(nearestPrimitive)); 431 432 } 432 433 … … 519 520 // If ctrl is pressed we are in merge mode. Look for a nearby node, 520 521 // highlight it and adjust the cursor accordingly. 521 final boolean canMerge = ctrl && !get CurrentDataSet().getSelectedNodes().isEmpty();522 final boolean canMerge = ctrl && !getLayerManager().getEditDataSet().getSelectedNodes().isEmpty(); 522 523 final OsmPrimitive p = canMerge ? findNodeToMergeTo(e.getPoint()) : null; 523 524 boolean needsRepaint = removeHighlighting(); … … 593 594 594 595 // Select Draw Tool if no selection has been made 595 if (get CurrentDataSet().getSelected().isEmpty() && !cancelDrawMode) {596 if (getLayerManager().getEditDataSet().getSelected().isEmpty() && !cancelDrawMode) { 596 597 Main.map.selectDrawTool(true); 597 598 updateStatusLine(); … … 611 612 612 613 // If the user double-clicked a node, change to draw mode 613 Collection<OsmPrimitive> c = get CurrentDataSet().getSelected();614 Collection<OsmPrimitive> c = getLayerManager().getEditDataSet().getSelected(); 614 615 if (e.getClickCount() >= 2 && c.size() == 1 && c.iterator().next() instanceof Node) { 615 616 // We need to do it like this as otherwise drawAction will see a double … … 705 706 // Currently we support only transformations which do not affect relations. 706 707 // So don't add them in the first place to make handling easier 707 Collection<OsmPrimitive> selection = getCurrentDataSet().getSelectedNodesAndWays(); 708 DataSet ds = getLayerManager().getEditDataSet(); 709 Collection<OsmPrimitive> selection = ds.getSelectedNodesAndWays(); 708 710 if (selection.isEmpty()) { // if nothing was selected to drag, just select nearest node/way to the cursor 709 711 OsmPrimitive nearestPrimitive = mv.getNearestNodeOrWay(mv.getPoint(startEN), mv.isSelectablePredicate, true); 710 getCurrentDataSet().setSelected(nearestPrimitive);712 ds.setSelected(nearestPrimitive); 711 713 } 712 714 … … 719 721 if (mode == Mode.MOVE) { 720 722 if (startEN == null) return false; // fix #8128 721 getCurrentDataSet().beginUpdate();723 ds.beginUpdate(); 722 724 if (c instanceof MoveCommand && affectedNodes.equals(((MoveCommand) c).getParticipatingPrimitives())) { 723 725 ((MoveCommand) c).saveCheckpoint(); … … 732 734 // Revert move 733 735 ((MoveCommand) c).resetToCheckpoint(); 734 getCurrentDataSet().endUpdate();736 ds.endUpdate(); 735 737 JOptionPane.showMessageDialog( 736 738 Main.parent, … … 749 751 } 750 752 751 getCurrentDataSet().beginUpdate();753 ds.beginUpdate(); 752 754 753 755 if (mode == Mode.ROTATE) { … … 765 767 } 766 768 767 Collection<Way> ways = getCurrentDataSet().getSelectedWays();769 Collection<Way> ways = ds.getSelectedWays(); 768 770 if (doesImpactStatusLine(affectedNodes, ways)) { 769 771 Main.map.statusLine.setDist(ways); 770 772 } 771 773 } 772 getCurrentDataSet().endUpdate();774 ds.endUpdate(); 773 775 return true; 774 776 } … … 790 792 private void useLastMoveCommandIfPossible() { 791 793 Command c = getLastCommand(); 792 Collection<Node> affectedNodes = AllNodesVisitor.getAllNodes(get CurrentDataSet().getSelected());794 Collection<Node> affectedNodes = AllNodesVisitor.getAllNodes(getLayerManager().getEditDataSet().getSelected()); 793 795 if (c instanceof MoveCommand && affectedNodes.equals(((MoveCommand) c).getParticipatingPrimitives())) { 794 796 // old command was created with different base point of movement, we need to recalculate it … … 829 831 } 830 832 int max = Main.pref.getInteger("warn.move.maxelements", 20), limit = max; 831 for (OsmPrimitive osm : get CurrentDataSet().getSelected()) {833 for (OsmPrimitive osm : getLayerManager().getEditDataSet().getSelected()) { 832 834 if (osm instanceof Way) { 833 835 limit -= ((Way) osm).getNodes().size(); … … 855 857 if (ctrl) mergePrims(e.getPoint()); 856 858 } 857 get CurrentDataSet().fireSelectionChanged();859 getLayerManager().getEditDataSet().fireSelectionChanged(); 858 860 } 859 861 … … 890 892 */ 891 893 private void mergePrims(Point p) { 892 Collection<Node> selNodes = getCurrentDataSet().getSelectedNodes(); 894 DataSet ds = getLayerManager().getEditDataSet(); 895 Collection<Node> selNodes = ds.getSelectedNodes(); 893 896 if (selNodes.isEmpty()) 894 897 return; … … 900 903 if (selNodes.size() == 1) { 901 904 // Move all selected primitive to preserve shape #10748 902 Collection<OsmPrimitive> selection = 903 getCurrentDataSet().getSelectedNodesAndWays(); 905 Collection<OsmPrimitive> selection = ds.getSelectedNodesAndWays(); 904 906 Collection<Node> affectedNodes = AllNodesVisitor.getAllNodes(selection); 905 907 Command c = getLastCommand(); 906 getCurrentDataSet().beginUpdate();908 ds.beginUpdate(); 907 909 if (c instanceof MoveCommand 908 910 && affectedNodes.equals(((MoveCommand) c).getParticipatingPrimitives())) { … … 913 915 targetEN.getY() - selectedEN.getY()); 914 916 } 915 getCurrentDataSet().endUpdate();917 ds.endUpdate(); 916 918 } 917 919 … … 941 943 private Node findNodeToMergeTo(Point p) { 942 944 Collection<Node> target = mv.getNearestNodes(p, 943 get CurrentDataSet().getSelectedNodes(),945 getLayerManager().getEditDataSet().getSelectedNodes(), 944 946 mv.isSelectablePredicate); 945 947 return target.isEmpty() ? null : target.iterator().next(); … … 947 949 948 950 private void selectPrims(Collection<OsmPrimitive> prims, boolean released, boolean area) { 949 DataSet ds = get CurrentDataSet();951 DataSet ds = getLayerManager().getEditDataSet(); 950 952 951 953 // not allowed together: do not change dataset selection, return early … … 996 998 return tr("Release the mouse button to select the objects in the rectangle."); 997 999 else if (mode == Mode.MOVE && (System.currentTimeMillis() - mouseDownTime >= initialMoveDelay)) { 998 final boolean canMerge = getCurrentDataSet() != null && !getCurrentDataSet().getSelectedNodes().isEmpty(); 999 final String mergeHelp = canMerge ? ' ' + tr("Ctrl to merge with nearest node.") : ""; 1000 final DataSet ds = getLayerManager().getEditDataSet(); 1001 final boolean canMerge = ds != null && !ds.getSelectedNodes().isEmpty(); 1002 final String mergeHelp = canMerge ? (' ' + tr("Ctrl to merge with nearest node.")) : ""; 1000 1003 return tr("Release the mouse button to stop moving.") + mergeHelp; 1001 1004 } else if (mode == Mode.ROTATE) … … 1110 1113 // updateKeyModifiers() already called before! 1111 1114 1112 DataSet ds = get CurrentDataSet();1115 DataSet ds = getLayerManager().getEditDataSet(); 1113 1116 OsmPrimitive first = cycleList.iterator().next(), foundInDS = null; 1114 1117 OsmPrimitive nxt = first; … … 1245 1248 virtualWays.size()); 1246 1249 Main.main.undoRedo.add(new SequenceCommand(text, virtualCmds)); 1247 get CurrentDataSet().setSelected(Collections.singleton((OsmPrimitive) virtualNode));1250 getLayerManager().getEditDataSet().setSelected(Collections.singleton((OsmPrimitive) virtualNode)); 1248 1251 clear(); 1249 1252 }
Note:
See TracChangeset
for help on using the changeset viewer.