Changeset 1405 in josm


Ignore:
Timestamp:
Feb 14, 2009 4:11:24 PM (4 years ago)
Author:
stoecker
Message:

final patch for modeless drawing by xeen. Closes #1937

Location:
trunk/src/org/openstreetmap/josm
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java

    r1400 r1405  
    3434 
    3535import org.openstreetmap.josm.Main; 
    36 import org.openstreetmap.josm.actions.mapmode.SelectAction; 
    3736import org.openstreetmap.josm.command.AddCommand; 
    3837import org.openstreetmap.josm.command.ChangeCommand; 
     
    4948import org.openstreetmap.josm.gui.MapFrame; 
    5049import org.openstreetmap.josm.gui.MapView; 
     50import org.openstreetmap.josm.gui.layer.Layer; 
    5151import org.openstreetmap.josm.gui.layer.MapViewPaintable; 
    52 import org.openstreetmap.josm.gui.layer.Layer; 
    5352import org.openstreetmap.josm.gui.layer.OsmDataLayer; 
    5453import org.openstreetmap.josm.tools.ImageProvider; 
     
    6968    private boolean mouseOnExistingNode; 
    7069    private boolean drawHelperLine; 
     70    private boolean wayIsFinished = false; 
    7171    private Point mousePos; 
    7272    private Color selectedColor; 
     
    9797        selectedColor = Main.pref.getColor(marktr("selected"), Color.red); 
    9898        drawHelperLine = Main.pref.getBoolean("draw.helper-line", true); 
    99  
     99        wayIsFinished = false; 
     100         
    100101        Main.map.mapView.addMouseListener(this); 
    101102        Main.map.mapView.addMouseMotionListener(this); 
     
    161162            // A double click equals "user clicked last node again, finish way" 
    162163            lastUsedNode = null; 
     164            wayIsFinished = true; 
     165            Main.map.selectSelectTool(true); 
    163166            return; 
    164167        } 
     
    178181        boolean newNode = false; 
    179182        Node n = null; 
    180         boolean wayIsFinished = false; 
    181183 
    182184        if (!ctrl) 
     
    252254        // If the above does not apply, the selection is cleared and a new try is started 
    253255        boolean extendedWay = false; 
    254         if (!shift && selection.size() > 0) { 
     256        boolean wayIsFinishedTemp = wayIsFinished; 
     257        wayIsFinished = false; 
     258        if (!shift && selection.size() > 0 && !wayIsFinishedTemp) { 
    255259            Node selectedNode = null; 
    256260            Way selectedWay = null; 
     
    326330            if(n0 == n) { 
    327331                lastUsedNode = null; 
     332                wayIsFinished = true; 
     333                Main.map.selectSelectTool(true); 
    328334                return; 
    329335            } 
     
    373379            Main.ds.setSelected(way); 
    374380        } 
    375                  
     381       
    376382        String title; 
    377383        if (!extendedWay) { 
     
    505511        updateStatusLine(); 
    506512 
    507         if (!drawHelperLine) return; 
     513        if (!drawHelperLine || wayIsFinished) return; 
    508514 
    509515        Main.map.mapView.repaint(); 
  • trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java

    r1398 r1405  
    1919import org.openstreetmap.josm.actions.MergeNodesAction; 
    2020import org.openstreetmap.josm.command.AddCommand; 
     21import org.openstreetmap.josm.command.ChangeCommand; 
    2122import org.openstreetmap.josm.command.Command; 
    22 import org.openstreetmap.josm.command.ChangeCommand; 
    2323import org.openstreetmap.josm.command.MoveCommand; 
    2424import org.openstreetmap.josm.command.RotateCommand; 
     
    3232import org.openstreetmap.josm.data.osm.visitor.AllNodesVisitor; 
    3333import org.openstreetmap.josm.data.osm.visitor.SimplePaintVisitor; 
    34 import org.openstreetmap.josm.gui.layer.Layer; 
    35 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 
    3634import org.openstreetmap.josm.gui.MapFrame; 
    3735import org.openstreetmap.josm.gui.MapView; 
    3836import org.openstreetmap.josm.gui.SelectionManager; 
    3937import org.openstreetmap.josm.gui.SelectionManager.SelectionEnded; 
     38import org.openstreetmap.josm.gui.layer.Layer; 
     39import org.openstreetmap.josm.gui.layer.OsmDataLayer; 
    4040import org.openstreetmap.josm.tools.ImageProvider; 
    4141import org.openstreetmap.josm.tools.Shortcut; 
     
    329329        if (mode == Mode.select) { 
    330330            selectionManager.unregister(Main.map.mapView); 
     331            if(Main.ds.getSelected().size() == 0) 
     332                Main.map.selectDrawTool(true); 
     333                return; 
    331334        } 
    332335        restoreCursor(); 
  • trunk/src/org/openstreetmap/josm/gui/MapFrame.java

    r1332 r1405  
    112112        statusLine = new MapStatus(this); 
    113113    } 
     114     
     115    public void selectSelectTool(boolean onlyIfModeless) { 
     116        if(onlyIfModeless && !Main.pref.getBoolean("modeless", false)) 
     117            return; 
     118         
     119        selectMapMode((MapMode)getDefaultButtonAction()); 
     120    } 
     121     
     122    public void selectDrawTool(boolean onlyIfModeless) { 
     123        if(onlyIfModeless && !Main.pref.getBoolean("modeless", false)) 
     124            return; 
     125         
     126        Action drawAction = ((AbstractButton)toolBarActions.getComponent(1)).getAction(); 
     127        selectMapMode((MapMode)drawAction); 
     128    } 
    114129 
    115130    /** 
  • trunk/src/org/openstreetmap/josm/gui/preferences/LafPreference.java

    r1262 r1405  
    3333    private JCheckBox showID = new JCheckBox(tr("Show object ID in selection lists")); 
    3434    private JCheckBox drawHelperLine = new JCheckBox(tr("Draw rubber-band helper line")); 
     35    private JCheckBox modeless = new JCheckBox(tr("Modeless working (Potlatch style)")); 
    3536 
    3637    public void addGui(PreferenceDialog gui) { 
     
    8283        panel.add(drawHelperLine, GBC.eop().insets(20, 0, 0, 0)); 
    8384 
     85        modeless.setToolTipText(tr("Do not require to switch modes (potlatch style workflow)")); 
     86        modeless.setSelected(Main.pref.getBoolean("modeless", false)); 
     87        panel.add(modeless, GBC.eop().insets(20, 0, 0, 0)); 
     88 
    8489        panel.add(Box.createVerticalGlue(), GBC.eol().insets(0, 20, 0, 0)); 
    8590 
     
    97102        Main.pref.put("osm-primitives.showid", showID.isSelected()); 
    98103        Main.pref.put("draw.helper-line", drawHelperLine.isSelected()); 
     104        Main.pref.put("modeless", modeless.isSelected()); 
    99105        return Main.pref.put("laf", ((LookAndFeelInfo)lafCombo.getSelectedItem()).getClassName()); 
    100106    } 
Note: See TracChangeset for help on using the changeset viewer.