Changeset 10382 in josm for trunk/src/org/openstreetmap/josm/actions/mapmode
- Timestamp:
- 2016-06-15T12:45:52+02:00 (8 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/actions/mapmode
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
r9496 r10382 211 211 private void repaintIfRequired(Set<OsmPrimitive> newHighlights, WaySegment newHighlightedWaySegment) { 212 212 boolean needsRepaint = false; 213 DataSet ds = get CurrentDataSet();213 DataSet ds = getLayerManager().getEditDataSet(); 214 214 215 215 if (newHighlightedWaySegment == null && oldHighlightedWaySegment != null) { … … 294 294 } 295 295 296 get CurrentDataSet().setSelected();296 getLayerManager().getEditDataSet().setSelected(); 297 297 giveUserFeedback(e); 298 298 } … … 390 390 private Command buildDeleteCommands(MouseEvent e, int modifiers, boolean silent) { 391 391 DeleteParameters parameters = getDeleteParameters(e, modifiers); 392 OsmDataLayer editLayer = getLayerManager().getEditLayer(); 392 393 switch (parameters.mode) { 393 394 case node: 394 return DeleteCommand.delete( getEditLayer(), Collections.singleton(parameters.nearestNode), false, silent);395 return DeleteCommand.delete(editLayer, Collections.singleton(parameters.nearestNode), false, silent); 395 396 case node_with_references: 396 return DeleteCommand.deleteWithReferences( getEditLayer(), Collections.singleton(parameters.nearestNode), silent);397 return DeleteCommand.deleteWithReferences(editLayer, Collections.singleton(parameters.nearestNode), silent); 397 398 case segment: 398 return DeleteCommand.deleteWaySegment( getEditLayer(), parameters.nearestSegment);399 return DeleteCommand.deleteWaySegment(editLayer, parameters.nearestSegment); 399 400 case way: 400 return DeleteCommand.delete( getEditLayer(), Collections.singleton(parameters.nearestSegment.way), false, silent);401 return DeleteCommand.delete(editLayer, Collections.singleton(parameters.nearestSegment.way), false, silent); 401 402 case way_with_nodes: 402 return DeleteCommand.delete( getEditLayer(), Collections.singleton(parameters.nearestSegment.way), true, silent);403 return DeleteCommand.delete(editLayer, Collections.singleton(parameters.nearestSegment.way), true, silent); 403 404 case way_with_references: 404 return DeleteCommand.deleteWithReferences( getEditLayer(), Collections.singleton(parameters.nearestSegment.way), true);405 return DeleteCommand.deleteWithReferences(editLayer, Collections.singleton(parameters.nearestSegment.way), true); 405 406 default: 406 407 return null; -
trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
r10378 r10382 185 185 186 186 // update selection to reflect which way being modified 187 DataSet currentDataSet = get CurrentDataSet();187 DataSet currentDataSet = getLayerManager().getEditDataSet(); 188 188 if (getCurrentBaseNode() != null && currentDataSet != null && !currentDataSet.getSelected().isEmpty()) { 189 189 Way continueFrom = getWayForNode(getCurrentBaseNode()); … … 219 219 // determine if selection is suitable to continue drawing. If it 220 220 // isn't, set wayIsFinished to true to avoid superfluous repaints. 221 determineCurrentBaseNodeAndPreviousNode(get CurrentDataSet().getSelected());221 determineCurrentBaseNodeAndPreviousNode(getLayerManager().getEditDataSet().getSelected()); 222 222 wayIsFinished = getCurrentBaseNode() == null; 223 223 … … 272 272 // primitives 273 273 // 274 DataSet ds = get CurrentDataSet();274 DataSet ds = getLayerManager().getEditDataSet(); 275 275 if (ds != null) { 276 276 ds.fireSelectionChanged(); … … 324 324 325 325 private void tryAgain(MouseEvent e) { 326 get CurrentDataSet().setSelected();326 getLayerManager().getEditDataSet().setSelected(); 327 327 mouseReleased(e); 328 328 } … … 394 394 mousePos = e.getPoint(); 395 395 396 DataSet ds = get CurrentDataSet();396 DataSet ds = getLayerManager().getEditDataSet(); 397 397 Collection<OsmPrimitive> selection = new ArrayList<>(ds.getSelected()); 398 398 … … 400 400 Node n = Main.map.mapView.getNearestNode(mousePos, OsmPrimitive.isSelectablePredicate); 401 401 if (ctrl) { 402 Iterator<Way> it = getCurrentDataSet().getSelectedWays().iterator();402 Iterator<Way> it = ds.getSelectedWays().iterator(); 403 403 if (it.hasNext()) { 404 404 // ctrl-click on node of selected way = reuse node despite of ctrl … … 416 416 // have to switch modes) 417 417 418 getCurrentDataSet().setSelected(n);418 ds.setSelected(n); 419 419 // If we extend/continue an existing way, select it already now to make it obvious 420 420 Way continueFrom = getWayForNode(n); 421 421 if (continueFrom != null) { 422 getCurrentDataSet().addSelected(continueFrom);422 ds.addSelected(continueFrom); 423 423 } 424 424 … … 615 615 } 616 616 617 getCurrentDataSet().setSelected(newSelection);617 ds.setSelected(newSelection); 618 618 619 619 // "viewport following" mode for tracing long features … … 695 695 (posn0 < selectedWay.getNodesCount()-1) && targetNode.equals(selectedWay.getNode(posn0+1))) { // next node 696 696 // CHECKSTYLE.ON: SingleSpaceSeparator 697 get CurrentDataSet().setSelected(targetNode);697 getLayerManager().getEditDataSet().setSelected(targetNode); 698 698 lastUsedNode = targetNode; 699 699 return true; … … 779 779 } 780 780 781 Collection<OsmPrimitive> selection = get CurrentDataSet().getSelected();781 Collection<OsmPrimitive> selection = getLayerManager().getEditDataSet().getSelected(); 782 782 783 783 MapView mv = Main.map.mapView; … … 1085 1085 1086 1086 // This happens when nothing is selected, but we still want to highlight the "target node" 1087 if (mouseOnExistingNode == null && get CurrentDataSet().getSelected().isEmpty()1087 if (mouseOnExistingNode == null && getLayerManager().getEditDataSet().getSelected().isEmpty() 1088 1088 && mousePos != null) { 1089 1089 mouseOnExistingNode = Main.map.mapView.getNearestNode(mousePos, OsmPrimitive.isSelectablePredicate); … … 1209 1209 1210 1210 Node n = mouseOnExistingNode; 1211 DataSet ds = getLayerManager().getEditDataSet(); 1211 1212 /* 1212 1213 * Handle special case: Highlighted node == selected node => finish drawing 1213 1214 */ 1214 if (n != null && getCurrentDataSet() != null && getCurrentDataSet().getSelectedNodes().contains(n)) {1215 if (n != null && ds != null && ds.getSelectedNodes().contains(n)) { 1215 1216 if (wayIsFinished) { 1216 1217 rv = new StringBuilder(tr("Select node under cursor.")); … … 1223 1224 * Handle special case: Self-Overlapping or closing way 1224 1225 */ 1225 if ( getCurrentDataSet() != null && !getCurrentDataSet().getSelectedWays().isEmpty() && !wayIsFinished && !alt) {1226 Way w = getCurrentDataSet().getSelectedWays().iterator().next();1226 if (ds != null && !ds.getSelectedWays().isEmpty() && !wayIsFinished && !alt) { 1227 Way w = ds.getSelectedWays().iterator().next(); 1227 1228 for (Node m : w.getNodes()) { 1228 1229 if (m.equals(mouseOnExistingNode) || mouseOnExistingWays.contains(w)) { … … 1246 1247 */ 1247 1248 public Collection<OsmPrimitive> getInProgressSelection() { 1248 DataSet ds = get CurrentDataSet();1249 DataSet ds = getLayerManager().getEditDataSet(); 1249 1250 if (ds == null) return null; 1250 1251 if (getCurrentBaseNode() != null && !ds.getSelected().isEmpty()) { … … 1263 1264 @Override 1264 1265 protected void updateEnabledState() { 1265 setEnabled(get EditLayer() != null);1266 setEnabled(getLayerManager().getEditLayer() != null); 1266 1267 } 1267 1268 … … 1295 1296 // select last added node - maybe we will continue drawing from it 1296 1297 if (n != null) { 1297 get CurrentDataSet().addSelected(n);1298 getLayerManager().getEditDataSet().addSelected(n); 1298 1299 } 1299 1300 } … … 1635 1636 projectionSource = null; 1636 1637 if (snapToProjections) { 1637 DataSet ds = get CurrentDataSet();1638 DataSet ds = getLayerManager().getEditDataSet(); 1638 1639 Collection<Way> selectedWays = ds.getSelectedWays(); 1639 1640 if (selectedWays.size() == 1) { -
trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java
r10378 r10382 427 427 mode = Mode.create_new; 428 428 // create a new segment and then select and extrude the new segment 429 get CurrentDataSet().setSelected(selectedSegment.way);429 getLayerManager().getEditDataSet().setSelected(selectedSegment.way); 430 430 alwaysCreateNodes = true; 431 431 } else { 432 432 mode = Mode.extrude; 433 get CurrentDataSet().setSelected(selectedSegment.way);433 getLayerManager().getEditDataSet().setSelected(selectedSegment.way); 434 434 alwaysCreateNodes = shift; 435 435 } … … 611 611 Command c = new SequenceCommand(tr("Extrude Way"), cmds); 612 612 Main.main.undoRedo.add(c); 613 get CurrentDataSet().setSelected(wnew);613 getLayerManager().getEditDataSet().setSelected(wnew); 614 614 } 615 615 -
trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java
r10214 r10382 135 135 oldModeHelpText = ""; 136 136 137 if (get CurrentDataSet() == null) {137 if (getLayerManager().getEditDataSet() == null) { 138 138 return; 139 139 } … … 211 211 @Override 212 212 protected void updateEnabledState() { 213 setEnabled(get EditLayer() != null);213 setEnabled(getLayerManager().getEditLayer() != null); 214 214 } 215 215 … … 410 410 if (state == State.selecting) { 411 411 if (targetWay != null) { 412 get CurrentDataSet().setSelected(targetWay.getPrimitiveId());412 getLayerManager().getEditDataSet().setSelected(targetWay.getPrimitiveId()); 413 413 updateStateByCurrentSelection(); 414 414 } … … 501 501 List<Node> nodeList = new ArrayList<>(); 502 502 nodeList.add(candidateNode); 503 Command deleteCmd = DeleteCommand.delete(get EditLayer(), nodeList, true);503 Command deleteCmd = DeleteCommand.delete(getLayerManager().getEditLayer(), nodeList, true); 504 504 if (deleteCmd != null) { 505 505 Main.main.undoRedo.add(deleteCmd); … … 513 513 EastNorth cursorEN = mv.getEastNorth(mousePos.x, mousePos.y); 514 514 515 Main.main.undoRedo.add(new MoveCommand(candidateNode, cursorEN.east() - nodeEN.east(), cursorEN.north() 516 - nodeEN.north())); 515 Main.main.undoRedo.add(new MoveCommand(candidateNode, cursorEN.east() - nodeEN.east(), cursorEN.north() - nodeEN.north())); 517 516 } 518 517 } … … 619 618 state = State.improving; 620 619 621 Collection<OsmPrimitive> currentSelection = getCurrentDataSet().getSelected(); 620 DataSet ds = getLayerManager().getEditDataSet(); 621 Collection<OsmPrimitive> currentSelection = ds.getSelected(); 622 622 if (currentSelection.size() != 1 623 623 || !currentSelection.iterator().next().equals(targetWay)) { 624 624 selectionChangedBlocked = true; 625 getCurrentDataSet().clearSelection();626 getCurrentDataSet().setSelected(targetWay.getPrimitiveId());625 ds.clearSelection(); 626 ds.setSelected(targetWay.getPrimitiveId()); 627 627 selectionChangedBlocked = false; 628 628 } … … 645 645 final List<Node> nodeList = new ArrayList<>(); 646 646 final List<Way> wayList = new ArrayList<>(); 647 final Collection<OsmPrimitive> sel = get CurrentDataSet().getSelected();647 final Collection<OsmPrimitive> sel = getLayerManager().getEditDataSet().getSelected(); 648 648 649 649 // Collecting nodes and ways from the selection -
trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
r10378 r10382 160 160 //// Needed to update the mouse cursor if modifiers are changed when the mouse is motionless 161 161 Main.map.keyDetector.addModifierListener(this); 162 sourceWays = new LinkedHashSet<>(get CurrentDataSet().getSelectedWays());162 sourceWays = new LinkedHashSet<>(getLayerManager().getEditDataSet().getSelectedWays()); 163 163 for (Way w : sourceWays) { 164 164 w.setHighlighted(true); … … 302 302 // Since the created way is left selected, we need to unselect again here 303 303 if (pWays != null && pWays.getWays() != null) { 304 get CurrentDataSet().clearSelection(pWays.getWays());304 getLayerManager().getEditDataSet().clearSelection(pWays.getWays()); 305 305 pWays = null; 306 306 } … … 490 490 } 491 491 492 // //We keep the source ways and the selection in sync so the user can see the source way's tags492 // We keep the source ways and the selection in sync so the user can see the source way's tags 493 493 private void addSourceWay(Way w) { 494 494 assert sourceWays != null; 495 get CurrentDataSet().addSelected(w);495 getLayerManager().getEditDataSet().addSelected(w); 496 496 w.setHighlighted(true); 497 497 sourceWays.add(w); … … 500 500 private void removeSourceWay(Way w) { 501 501 assert sourceWays != null; 502 get CurrentDataSet().clearSelection(w);502 getLayerManager().getEditDataSet().clearSelection(w); 503 503 w.setHighlighted(false); 504 504 sourceWays.remove(w); … … 507 507 private void clearSourceWays() { 508 508 assert sourceWays != null; 509 get CurrentDataSet().clearSelection(sourceWays);509 getLayerManager().getEditDataSet().clearSelection(sourceWays); 510 510 for (Way w : sourceWays) { 511 511 w.setHighlighted(false); … … 543 543 pWays = new ParallelWays(sourceWays, copyTags, referenceWayIndex); 544 544 pWays.commit(); 545 get CurrentDataSet().setSelected(pWays.getWays());545 getLayerManager().getEditDataSet().setSelected(pWays.getWays()); 546 546 return true; 547 547 } catch (IllegalArgumentException e) { -
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.