Ticket #3910: lassoOnS-5966.patch

File lassoOnS-5966.patch, 4.4 KB (added by Cobra, 13 years ago)

updated the latest patch again after r5965 moving some parts around

  • src/org/openstreetmap/josm/gui/MapFrame.java

     
    131131    private final Map<Layer, MapMode> lastMapMode = new HashMap<Layer, MapMode>();
    132132    private final MapMode mapModeDraw;
    133133    private final MapMode mapModeZoom;
     134    public final MapMode mapModeLassoSelect;
    134135
    135136    /**
    136137     * The status line below the map
     
    207208
    208209        // toolBarActions, map mode buttons
    209210        addMapMode(new IconToggleButton(mapModeSelect = new SelectAction(this)));
    210         addMapMode(new IconToggleButton(new LassoModeAction(), true));
     211        addMapMode(new IconToggleButton(mapModeLassoSelect = new LassoModeAction(), true))  ;
    211212        addMapMode(new IconToggleButton(mapModeDraw = new DrawAction(this)));
    212213        addMapMode(new IconToggleButton(mapModeZoom = new ZoomAction(this)));
    213214        addMapMode(new IconToggleButton(new DeleteAction(this), true));
     
    375376            return false;
    376377
    377378        MapMode oldMapMode = this.mapMode;
    378         if (newMapMode == oldMapMode)
     379        if (newMapMode == oldMapMode) {
     380            newMapMode.reenterMode();
    379381            return true;
     382        }
    380383        if (oldMapMode != null) {
    381384            oldMapMode.exitMode();
    382385        }
  • src/org/openstreetmap/josm/actions/LassoModeAction.java

     
    55
    66import org.openstreetmap.josm.Main;
    77import org.openstreetmap.josm.actions.mapmode.MapMode;
     8import org.openstreetmap.josm.tools.ImageProvider;
    89
    910public class LassoModeAction extends MapMode {
    1011
     
    1314                "rope",
    1415                tr("Lasso selection mode: select objects within a hand-drawn region"),
    1516                null,
    16                 null);
     17                ImageProvider.getCursor("normal", "rope"));
    1718    }
    1819
    1920    @Override
     
    3334        }
    3435        super.exitMode();
    3536    }
     37   
     38    @Override
     39    public void reenterMode() {
     40        if (Main.map != null && Main.map.mapModeSelect.repeatedKeySwitchLassoOption) {
     41            Main.map.selectMapMode(Main.map.mapModeSelect);
     42        }
     43    }
    3644}
  • src/org/openstreetmap/josm/actions/mapmode/SelectAction.java

     
    104104    }
    105105
    106106    private boolean lassoMode = false;
     107    public boolean repeatedKeySwitchLassoOption;
    107108
    108109    // Cache previous mouse event (needed when only the modifier keys are
    109110    // pressed but the mouse isn't moved)
     
    184185        mv.addMouseMotionListener(this);
    185186        mv.setVirtualNodesEnabled(Main.pref.getInteger("mappaint.node.virtual-size", 8) != 0);
    186187        drawTargetHighlight = Main.pref.getBoolean("draw.target-highlight", true);
     188        repeatedKeySwitchLassoOption = Main.pref.getBoolean("mappaint.select.toggle-lasso-on-repeated-S", true);
    187189        cycleManager.init();
    188190        virtualManager.init();
    189191        // This is required to update the cursors when ctrl/shift/alt is pressed
     
    890892        this.lassoMode = lassoMode;
    891893    }
    892894   
     895    @Override
     896    public void reenterMode() {
     897        if (Main.map!=null && repeatedKeySwitchLassoOption) {
     898            Main.map.selectMapMode(Main.map.mapModeLassoSelect);
     899        }
     900    }
     901   
    893902    CycleManager cycleManager = new CycleManager();
    894903    VirtualManager virtualManager = new VirtualManager();
    895904   
  • src/org/openstreetmap/josm/actions/mapmode/MapMode.java

     
    6464        putValue("active", false);
    6565        Main.map.mapView.resetCursor(this);
    6666    }
     67    /**
     68     * For optionlal overloading - called when action is repeated while mapmode
     69     * is already active
     70     */
     71    public void reenterMode() {
     72    }
    6773
    6874    protected void updateStatusLine() {
    6975        Main.map.statusLine.setHelpText(getModeHelpText());