Changeset 1405 in josm


Ignore:
Timestamp:
2009-02-14T16:11:24+01:00 (15 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.