Ticket #3910: lassoOnS-5449.patch

File lassoOnS-5449.patch, 4.5 KB (added by akks, 12 years ago)
  • src/org/openstreetmap/josm/gui/MapFrame.java

     
    112112    public final SelectAction mapModeSelect;
    113113    private final MapMode mapModeDraw;
    114114    private final MapMode mapModeZoom;
     115    public final MapMode mapModeLassoSelect;
    115116
    116117    /**
    117118     * The panel list of all toggle dialog icons. To add new toggle dialog actions, use addToggleDialog
     
    159160        // toolbar
    160161        toolBarActions.setFloatable(false);
    161162        addMapMode(new IconToggleButton(mapModeSelect = new SelectAction(this)));
    162         addMapMode(new IconToggleButton(new LassoModeAction(), true));
     163        addMapMode(new IconToggleButton(mapModeLassoSelect = new LassoModeAction(), true))  ;
    163164        addMapMode(new IconToggleButton(mapModeDraw = new DrawAction(this)));
    164165        addMapMode(new IconToggleButton(mapModeZoom = new ZoomAction(this)));
    165166        addMapMode(new IconToggleButton(new DeleteAction(this), true));
     
    361362            return false;
    362363
    363364        MapMode oldMapMode = this.mapMode;
    364         if (newMapMode == oldMapMode)
     365        if (newMapMode == oldMapMode) {
     366            newMapMode.reenterMode();
    365367            return true;
     368        }
    366369        if (oldMapMode != null) {
    367370            oldMapMode.exitMode();
    368371        }
  • 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
     
    3132        Main.map.mapModeSelect.exitMode();
    3233        super.exitMode();
    3334    }
     35   
     36    @Override
     37    public void reenterMode() {
     38        if (Main.map != null && Main.map.mapModeSelect.repeatedKeySwitchLassoOption) {
     39            Main.map.selectMapMode(Main.map.mapModeSelect);
     40        }
     41    }
    3442}
  • src/org/openstreetmap/josm/actions/mapmode/SelectAction.java

     
    100100    }
    101101
    102102    private boolean lassoMode = false;
     103    public boolean repeatedKeySwitchLassoOption;
    103104
    104105    // Cache previous mouse event (needed when only the modifier keys are
    105106    // pressed but the mouse isn't moved)
     
    180181        mv.addMouseMotionListener(this);
    181182        mv.setVirtualNodesEnabled(Main.pref.getInteger("mappaint.node.virtual-size", 8) != 0);
    182183        drawTargetHighlight = Main.pref.getBoolean("draw.target-highlight", true);
     184        repeatedKeySwitchLassoOption = Main.pref.getBoolean("mappaint.select.toggle-lasso-on-repeated-S", true);
    183185        cycleManager.init();
    184186        virtualManager.init();
    185187        // This is required to update the cursors when ctrl/shift/alt is pressed
     
    873875        this.lassoMode = lassoMode;
    874876    }
    875877   
     878    @Override
     879    public void reenterMode() {
     880        if (Main.map!=null && repeatedKeySwitchLassoOption) {
     881            Main.map.selectMapMode(Main.map.mapModeLassoSelect);
     882        }
     883    }
     884   
    876885    CycleManager cycleManager = new CycleManager();
    877886    VirtualManager virtualManager = new VirtualManager();
    878887   
  • src/org/openstreetmap/josm/actions/mapmode/MapMode.java

     
    5757        putValue("active", false);
    5858        Main.map.mapView.resetCursor(this);
    5959    }
     60    /**
     61     * For optionlal overloading - called when action is repeated while mapmode
     62     * is already active
     63     */
     64    public void reenterMode() {
     65    }
    6066
    6167    protected void updateStatusLine() {
    6268        Main.map.statusLine.setHelpText(getModeHelpText());