Ticket #1937: look ma, no modes!.patch
| File look ma, no modes!.patch, 6.2 KB (added by , 17 years ago) |
|---|
-
src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
33 33 import javax.swing.JOptionPane; 34 34 35 35 import org.openstreetmap.josm.Main; 36 import org.openstreetmap.josm.actions.mapmode.SelectAction;37 36 import org.openstreetmap.josm.command.AddCommand; 38 37 import org.openstreetmap.josm.command.ChangeCommand; 39 38 import org.openstreetmap.josm.command.Command; … … 48 47 import org.openstreetmap.josm.data.osm.WaySegment; 49 48 import org.openstreetmap.josm.gui.MapFrame; 50 49 import org.openstreetmap.josm.gui.MapView; 50 import org.openstreetmap.josm.gui.layer.Layer; 51 51 import org.openstreetmap.josm.gui.layer.MapViewPaintable; 52 import org.openstreetmap.josm.gui.layer.Layer;53 52 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 54 53 import org.openstreetmap.josm.tools.ImageProvider; 55 54 import org.openstreetmap.josm.tools.Pair; … … 68 67 private boolean shift; 69 68 private boolean mouseOnExistingNode; 70 69 private boolean drawHelperLine; 70 private boolean wayIsFinished = false; 71 71 private Point mousePos; 72 72 private Color selectedColor; 73 73 … … 96 96 super.enterMode(); 97 97 selectedColor = Main.pref.getColor(marktr("selected"), Color.red); 98 98 drawHelperLine = Main.pref.getBoolean("draw.helper-line", true); 99 99 wayIsFinished = false; 100 100 101 Main.map.mapView.addMouseListener(this); 101 102 Main.map.mapView.addMouseMotionListener(this); 102 103 Main.map.mapView.addTemporaryLayer(this); … … 160 161 if(e.getClickCount() > 1) { 161 162 // A double click equals "user clicked last node again, finish way" 162 163 lastUsedNode = null; 164 wayIsFinished = true; 165 Main.map.selectSelectTool(true); 163 166 return; 164 167 } 165 168 // we copy ctrl/alt/shift from the event just in case our global … … 177 180 replacedWays = new ArrayList<Way>(); 178 181 boolean newNode = false; 179 182 Node n = null; 180 boolean wayIsFinished = false;181 183 182 184 if (!ctrl) 183 185 n = Main.map.mapView.getNearestNode(mousePos); … … 251 253 252 254 // If the above does not apply, the selection is cleared and a new try is started 253 255 boolean extendedWay = false; 254 if (!shift && selection.size() > 0) { 256 boolean wayIsFinishedTemp = wayIsFinished; 257 wayIsFinished = false; 258 if (!shift && selection.size() > 0 && !wayIsFinishedTemp) { 255 259 Node selectedNode = null; 256 260 Way selectedWay = null; 257 261 … … 325 329 // User clicked last node again, finish way 326 330 if(n0 == n) { 327 331 lastUsedNode = null; 332 wayIsFinished = true; 333 Main.map.selectSelectTool(true); 328 334 return; 329 335 } 330 336 … … 372 378 extendedWay = true; 373 379 Main.ds.setSelected(way); 374 380 } 375 381 376 382 String title; 377 383 if (!extendedWay) { 378 384 if (!newNode) { … … 504 510 Main.map.statusLine.setDist(distance); 505 511 updateStatusLine(); 506 512 507 if (!drawHelperLine ) return;513 if (!drawHelperLine || wayIsFinished) return; 508 514 509 515 Main.map.mapView.repaint(); 510 516 } -
src/org/openstreetmap/josm/actions/mapmode/SelectAction.java
18 18 import org.openstreetmap.josm.Main; 19 19 import org.openstreetmap.josm.actions.MergeNodesAction; 20 20 import org.openstreetmap.josm.command.AddCommand; 21 import org.openstreetmap.josm.command.ChangeCommand; 21 22 import org.openstreetmap.josm.command.Command; 22 import org.openstreetmap.josm.command.ChangeCommand;23 23 import org.openstreetmap.josm.command.MoveCommand; 24 24 import org.openstreetmap.josm.command.RotateCommand; 25 25 import org.openstreetmap.josm.command.SequenceCommand; … … 31 31 import org.openstreetmap.josm.data.osm.WaySegment; 32 32 import org.openstreetmap.josm.data.osm.visitor.AllNodesVisitor; 33 33 import org.openstreetmap.josm.data.osm.visitor.SimplePaintVisitor; 34 import org.openstreetmap.josm.gui.layer.Layer;35 import org.openstreetmap.josm.gui.layer.OsmDataLayer;36 34 import org.openstreetmap.josm.gui.MapFrame; 37 35 import org.openstreetmap.josm.gui.MapView; 38 36 import org.openstreetmap.josm.gui.SelectionManager; 39 37 import org.openstreetmap.josm.gui.SelectionManager.SelectionEnded; 38 import org.openstreetmap.josm.gui.layer.Layer; 39 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 40 40 import org.openstreetmap.josm.tools.ImageProvider; 41 41 import org.openstreetmap.josm.tools.Shortcut; 42 42 … … 328 328 @Override public void mouseReleased(MouseEvent e) { 329 329 if (mode == Mode.select) { 330 330 selectionManager.unregister(Main.map.mapView); 331 if(Main.ds.getSelected().size() == 0) 332 Main.map.selectDrawTool(true); 333 return; 331 334 } 332 335 restoreCursor(); 333 336 -
src/org/openstreetmap/josm/gui/MapFrame.java
111 111 // status line below the map 112 112 statusLine = new MapStatus(this); 113 113 } 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 } 114 129 115 130 /** 116 131 * Called as some kind of destructor when the last layer has been removed.
