Index: src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 18947)
+++ src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(working copy)
@@ -125,8 +125,6 @@
 
     private boolean snap;
 
-    private final MapView mv;
-
     // Mouse tracking state
     private Point mousePressedPos;
     private boolean mouseIsDown;
@@ -145,13 +143,12 @@
      * Constructs a new {@code ParallelWayAction}.
      * @param mapFrame Map frame
      */
-    public ParallelWayAction(MapFrame mapFrame) {
+    public ParallelWayAction() {
         super(tr("Parallel"), "parallel", tr("Make parallel copies of ways"),
             Shortcut.registerShortcut("mapmode:parallel", tr("Mode: {0}",
                 tr("Parallel")), KeyEvent.VK_P, Shortcut.SHIFT),
             ImageProvider.getCursor("normal", "parallel"));
         setHelpId(ht("/Action/Parallel"));
-        mv = mapFrame.mapView;
     }
 
     @Override
@@ -163,7 +160,7 @@
 
         // #19887: overwrite default: we want to show the distance to the original way
         MainApplication.getMap().statusLine.setAutoLength(false);
-
+        MapView mv = MainApplication.getMap().mapView;
         mv.addMouseListener(this);
         mv.addMouseMotionListener(this);
         mv.addTemporaryLayer(temporaryLayer);
@@ -179,6 +176,7 @@
     @Override
     public void exitMode() {
         super.exitMode();
+        MapView mv = MainApplication.getMap().mapView;
         mv.removeMouseListener(this);
         mv.removeMouseMotionListener(this);
         mv.removeTemporaryLayer(temporaryLayer);
@@ -213,7 +211,7 @@
 
     @Override
     public void modifiersExChanged(int modifiers) {
-        if (MainApplication.getMap() == null || mv == null || !mv.isActiveLayerDrawable())
+        if (!MainApplication.isDisplayingMapView() || !MainApplication.getMap().mapView.isActiveLayerDrawable())
             return;
 
         // Should only get InputEvents due to the mask in enterMode
@@ -247,7 +245,7 @@
         default: throw new AssertionError();
         }
         if (newCursor != null) {
-            mv.setNewCursor(newCursor, this);
+            MainApplication.getMap().mapView.setNewCursor(newCursor, this);
         }
     }
 
@@ -258,6 +256,7 @@
     }
 
     private boolean sanityCheck() {
+        MapView mv = MainApplication.getMap().mapView;
         // @formatter:off
         boolean areWeSane =
             mv.isActiveLayerVisible() &&
@@ -303,7 +302,7 @@
 
         if (!mouseHasBeenDragged) {
             // use point from press or click event? (or are these always the same)
-            Way nearestWay = mv.getNearestWay(e.getPoint(), OsmPrimitive::isSelectable);
+            Way nearestWay = MainApplication.getMap().mapView.getNearestWay(e.getPoint(), OsmPrimitive::isSelectable);
             if (nearestWay == null) {
                 if (matchesCurrentModifiers(SET_SELECTED_MODIFIER_COMBO)) {
                     clearSourceWays();
@@ -381,6 +380,7 @@
 
         // Calculate distance to the reference line
         Point p = e.getPoint();
+        MapView mv = MainApplication.getMap().mapView;
         EastNorth enp = mv.getEastNorth((int) p.getX(), (int) p.getY());
         EastNorth nearestPointOnRefLine = Geometry.closestPointToLine(referenceSegment.getFirstNode().getEastNorth(),
                 referenceSegment.getSecondNode().getEastNorth(), enp);
@@ -498,7 +498,7 @@
 
     // TODO: rename
     private boolean initParallelWays(Point p, boolean copyTags) {
-        referenceSegment = mv.getNearestWaySegment(p, OsmPrimitive::isUsable, true);
+        referenceSegment = MainApplication.getMap().mapView.getNearestWaySegment(p, OsmPrimitive::isUsable, true);
         if (referenceSegment == null)
             return false;
 
Index: src/org/openstreetmap/josm/gui/MapFrame.java
===================================================================
--- src/org/openstreetmap/josm/gui/MapFrame.java	(revision 18947)
+++ src/org/openstreetmap/josm/gui/MapFrame.java	(working copy)
@@ -251,7 +251,7 @@
         addMapMode(new IconToggleButton(mapModeDraw, false));
         addMapMode(new IconToggleButton(mapModeZoom, true));
         addMapMode(new IconToggleButton(mapModeDelete, true));
-        addMapMode(new IconToggleButton(new ParallelWayAction(this), true));
+        addMapMode(new IconToggleButton(new ParallelWayAction(), true));
         addMapMode(new IconToggleButton(new ExtrudeAction(), true));
         addMapMode(new IconToggleButton(new ImproveWayAccuracyAction(), false));
         addMapMode(new IconToggleButton(new SplitMode(), false));
Index: test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java	(revision 18947)
+++ test/unit/org/openstreetmap/josm/actions/mapmode/ParallelWayActionTest.java	(working copy)
@@ -30,7 +30,7 @@
         try {
             MainApplication.getLayerManager().addLayer(layer);
             MapFrame map = MainApplication.getMap();
-            ParallelWayAction mapMode = new ParallelWayAction(map);
+            ParallelWayAction mapMode = new ParallelWayAction();
             MapMode oldMapMode = map.mapMode;
             assertTrue(map.selectMapMode(mapMode));
             assertEquals(mapMode, map.mapMode);
